aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.gitignore13
-rw-r--r--COPYING (renamed from trunk/COPYING)0
-rw-r--r--LICENSE (renamed from trunk/README)6
-rw-r--r--README.hooks24
-rw-r--r--README.md6
-rw-r--r--branches/test.txt1
-rw-r--r--etherpad/.gitignore (renamed from trunk/etherpad/.gitignore)0
-rw-r--r--etherpad/bin/.gitignore (renamed from trunk/etherpad/bin/.gitignore)0
-rwxr-xr-xetherpad/bin/rebuildjar.sh (renamed from trunk/etherpad/bin/rebuildjar.sh)0
-rwxr-xr-xetherpad/bin/run-local.sh (renamed from trunk/etherpad/bin/run-local.sh)0
-rwxr-xr-xetherpad/bin/setup-mysql-db.sh (renamed from trunk/etherpad/bin/setup-mysql-db.sh)0
-rw-r--r--etherpad/etc/etherpad.localdev-default.properties (renamed from trunk/etherpad/etc/etherpad.localdev-default.properties)1
-rw-r--r--etherpad/lib/dnsjava-2.0.6.jar (renamed from trunk/etherpad/lib/dnsjava-2.0.6.jar)bin268823 -> 268823 bytes
-rw-r--r--etherpad/lib/jbcrypt-0.2.jar (renamed from trunk/etherpad/lib/jbcrypt-0.2.jar)bin26222 -> 26222 bytes
-rw-r--r--etherpad/lib/jcommon-1.0.15.jar (renamed from trunk/etherpad/lib/jcommon-1.0.15.jar)bin309294 -> 309294 bytes
-rw-r--r--etherpad/lib/jfreechart-1.0.12.jar (renamed from trunk/etherpad/lib/jfreechart-1.0.12.jar)bin1368681 -> 1368681 bytes
-rw-r--r--etherpad/src/etherpad/admin/plugins.js247
-rw-r--r--etherpad/src/etherpad/admin/shell.js (renamed from trunk/etherpad/src/etherpad/admin/shell.js)0
-rw-r--r--etherpad/src/etherpad/billing/billing.js (renamed from trunk/etherpad/src/etherpad/billing/billing.js)0
-rw-r--r--etherpad/src/etherpad/billing/fields.js (renamed from trunk/etherpad/src/etherpad/billing/fields.js)0
-rw-r--r--etherpad/src/etherpad/billing/team_billing.js (renamed from trunk/etherpad/src/etherpad/billing/team_billing.js)0
-rw-r--r--etherpad/src/etherpad/collab/collab_server.js (renamed from trunk/etherpad/src/etherpad/collab/collab_server.js)0
-rw-r--r--etherpad/src/etherpad/collab/collabroom_server.js (renamed from trunk/etherpad/src/etherpad/collab/collabroom_server.js)0
-rw-r--r--etherpad/src/etherpad/collab/genimg.js (renamed from trunk/etherpad/src/etherpad/collab/genimg.js)0
-rw-r--r--etherpad/src/etherpad/collab/json_sans_eval.js (renamed from trunk/etherpad/src/etherpad/collab/json_sans_eval.js)0
-rw-r--r--etherpad/src/etherpad/collab/readonly_server.js (renamed from trunk/etherpad/src/etherpad/collab/readonly_server.js)0
-rw-r--r--etherpad/src/etherpad/collab/server_utils.js (renamed from trunk/etherpad/src/etherpad/collab/server_utils.js)0
-rw-r--r--etherpad/src/etherpad/control/aboutcontrol.js (renamed from trunk/etherpad/src/etherpad/control/aboutcontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/admin/pluginmanager.js66
-rw-r--r--etherpad/src/etherpad/control/admincontrol.js (renamed from trunk/etherpad/src/etherpad/control/admincontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/blogcontrol.js (renamed from trunk/etherpad/src/etherpad/control/blogcontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/connection_diagnostics_control.js (renamed from trunk/etherpad/src/etherpad/control/connection_diagnostics_control.js)0
-rw-r--r--etherpad/src/etherpad/control/global_pro_account_control.js (renamed from trunk/etherpad/src/etherpad/control/global_pro_account_control.js)0
-rw-r--r--etherpad/src/etherpad/control/historycontrol.js (renamed from trunk/etherpad/src/etherpad/control/historycontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/loadtestcontrol.js (renamed from trunk/etherpad/src/etherpad/control/loadtestcontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/maincontrol.js (renamed from trunk/etherpad/src/etherpad/control/maincontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/pad/pad_changeset_control.js (renamed from trunk/etherpad/src/etherpad/control/pad/pad_changeset_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pad/pad_control.js (renamed from trunk/etherpad/src/etherpad/control/pad/pad_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pad/pad_importexport_control.js (renamed from trunk/etherpad/src/etherpad/control/pad/pad_importexport_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pad/pad_view_control.js (renamed from trunk/etherpad/src/etherpad/control/pad/pad_view_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pne_manual_control.js (renamed from trunk/etherpad/src/etherpad/control/pne_manual_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pne_tracker_control.js (renamed from trunk/etherpad/src/etherpad/control/pne_tracker_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/account_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/account_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/admin/account_manager_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/admin/account_manager_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/admin/license_manager_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/admin/license_manager_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/admin/pro_admin_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/admin/pro_config_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/admin/pro_config_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/admin/team_billing_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/admin/team_billing_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/pro_main_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/pro_main_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro/pro_padlist_control.js (renamed from trunk/etherpad/src/etherpad/control/pro/pro_padlist_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro_beta_control.js (renamed from trunk/etherpad/src/etherpad/control/pro_beta_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro_help_control.js (renamed from trunk/etherpad/src/etherpad/control/pro_help_control.js)0
-rw-r--r--etherpad/src/etherpad/control/pro_signup_control.js (renamed from trunk/etherpad/src/etherpad/control/pro_signup_control.js)0
-rw-r--r--etherpad/src/etherpad/control/scriptcontrol.js (renamed from trunk/etherpad/src/etherpad/control/scriptcontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/static_control.js (renamed from trunk/etherpad/src/etherpad/control/static_control.js)15
-rw-r--r--etherpad/src/etherpad/control/statscontrol.js (renamed from trunk/etherpad/src/etherpad/control/statscontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/store/eepnet_checkout_control.js (renamed from trunk/etherpad/src/etherpad/control/store/eepnet_checkout_control.js)0
-rw-r--r--etherpad/src/etherpad/control/store/storecontrol.js (renamed from trunk/etherpad/src/etherpad/control/store/storecontrol.js)0
-rw-r--r--etherpad/src/etherpad/control/testcontrol.js (renamed from trunk/etherpad/src/etherpad/control/testcontrol.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0000_test.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0000_test.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0009_pad_tables.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0024_statistics_table.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0027_pro_config.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0027_pro_config.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js (renamed from trunk/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js)0
-rw-r--r--etherpad/src/etherpad/db_migrations/migration_runner.js (renamed from trunk/etherpad/src/etherpad/db_migrations/migration_runner.js)0
-rw-r--r--etherpad/src/etherpad/debug.js (renamed from trunk/etherpad/src/etherpad/debug.js)0
-rw-r--r--etherpad/src/etherpad/globals.js (renamed from trunk/etherpad/src/etherpad/globals.js)0
-rw-r--r--etherpad/src/etherpad/helpers.js (renamed from trunk/etherpad/src/etherpad/helpers.js)0
-rw-r--r--etherpad/src/etherpad/importexport/importexport.js (renamed from trunk/etherpad/src/etherpad/importexport/importexport.js)0
-rw-r--r--etherpad/src/etherpad/legacy_urls.js (renamed from trunk/etherpad/src/etherpad/legacy_urls.js)0
-rw-r--r--etherpad/src/etherpad/licensing.js (renamed from trunk/etherpad/src/etherpad/licensing.js)0
-rw-r--r--etherpad/src/etherpad/log.js (renamed from trunk/etherpad/src/etherpad/log.js)0
-rw-r--r--etherpad/src/etherpad/metrics/metrics.js (renamed from trunk/etherpad/src/etherpad/metrics/metrics.js)0
-rw-r--r--etherpad/src/etherpad/pad/activepads.js (renamed from trunk/etherpad/src/etherpad/pad/activepads.js)0
-rw-r--r--etherpad/src/etherpad/pad/chatarchive.js (renamed from trunk/etherpad/src/etherpad/pad/chatarchive.js)0
-rw-r--r--etherpad/src/etherpad/pad/dbwriter.js (renamed from trunk/etherpad/src/etherpad/pad/dbwriter.js)0
-rw-r--r--etherpad/src/etherpad/pad/easysync2migration.js (renamed from trunk/etherpad/src/etherpad/pad/easysync2migration.js)0
-rw-r--r--etherpad/src/etherpad/pad/exporthtml.js (renamed from trunk/etherpad/src/etherpad/pad/exporthtml.js)0
-rw-r--r--etherpad/src/etherpad/pad/importhtml.js (renamed from trunk/etherpad/src/etherpad/pad/importhtml.js)0
-rw-r--r--etherpad/src/etherpad/pad/model.js (renamed from trunk/etherpad/src/etherpad/pad/model.js)38
-rw-r--r--etherpad/src/etherpad/pad/noprowatcher.js (renamed from trunk/etherpad/src/etherpad/pad/noprowatcher.js)0
-rw-r--r--etherpad/src/etherpad/pad/pad_migrations.js (renamed from trunk/etherpad/src/etherpad/pad/pad_migrations.js)0
-rw-r--r--etherpad/src/etherpad/pad/pad_security.js (renamed from trunk/etherpad/src/etherpad/pad/pad_security.js)0
-rw-r--r--etherpad/src/etherpad/pad/padevents.js (renamed from trunk/etherpad/src/etherpad/pad/padevents.js)0
-rw-r--r--etherpad/src/etherpad/pad/padusers.js (renamed from trunk/etherpad/src/etherpad/pad/padusers.js)0
-rw-r--r--etherpad/src/etherpad/pad/padutils.js (renamed from trunk/etherpad/src/etherpad/pad/padutils.js)0
-rw-r--r--etherpad/src/etherpad/pad/revisions.js (renamed from trunk/etherpad/src/etherpad/pad/revisions.js)0
-rw-r--r--etherpad/src/etherpad/pne/pne_utils.js (renamed from trunk/etherpad/src/etherpad/pne/pne_utils.js)0
-rw-r--r--etherpad/src/etherpad/pro/domains.js (renamed from trunk/etherpad/src/etherpad/pro/domains.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_account_auto_signin.js (renamed from trunk/etherpad/src/etherpad/pro/pro_account_auto_signin.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_accounts.js (renamed from trunk/etherpad/src/etherpad/pro/pro_accounts.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_config.js (renamed from trunk/etherpad/src/etherpad/pro/pro_config.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_ldap_support.js (renamed from trunk/etherpad/src/etherpad/pro/pro_ldap_support.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_pad_db.js (renamed from trunk/etherpad/src/etherpad/pro/pro_pad_db.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_pad_editors.js (renamed from trunk/etherpad/src/etherpad/pro/pro_pad_editors.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_padlist.js (renamed from trunk/etherpad/src/etherpad/pro/pro_padlist.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_padmeta.js (renamed from trunk/etherpad/src/etherpad/pro/pro_padmeta.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_quotas.js (renamed from trunk/etherpad/src/etherpad/pro/pro_quotas.js)0
-rw-r--r--etherpad/src/etherpad/pro/pro_utils.js (renamed from trunk/etherpad/src/etherpad/pro/pro_utils.js)0
-rw-r--r--etherpad/src/etherpad/quotas.js (renamed from trunk/etherpad/src/etherpad/quotas.js)0
-rw-r--r--etherpad/src/etherpad/sessions.js (renamed from trunk/etherpad/src/etherpad/sessions.js)0
-rw-r--r--etherpad/src/etherpad/statistics/exceptions.js (renamed from trunk/etherpad/src/etherpad/statistics/exceptions.js)0
-rw-r--r--etherpad/src/etherpad/statistics/statistics.js (renamed from trunk/etherpad/src/etherpad/statistics/statistics.js)0
-rw-r--r--etherpad/src/etherpad/store/checkout.js (renamed from trunk/etherpad/src/etherpad/store/checkout.js)0
-rw-r--r--etherpad/src/etherpad/store/eepnet_checkout.js (renamed from trunk/etherpad/src/etherpad/store/eepnet_checkout.js)0
-rw-r--r--etherpad/src/etherpad/store/eepnet_trial.js (renamed from trunk/etherpad/src/etherpad/store/eepnet_trial.js)0
-rw-r--r--etherpad/src/etherpad/testing/testutils.js (renamed from trunk/etherpad/src/etherpad/testing/testutils.js)0
-rw-r--r--etherpad/src/etherpad/testing/unit_tests/t0000_test.js (renamed from trunk/etherpad/src/etherpad/testing/unit_tests/t0000_test.js)0
-rw-r--r--etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js (renamed from trunk/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js)0
-rw-r--r--etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js (renamed from trunk/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js)0
-rw-r--r--etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js (renamed from trunk/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js)0
-rw-r--r--etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js (renamed from trunk/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js)0
-rw-r--r--etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js (renamed from trunk/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js)0
-rw-r--r--etherpad/src/etherpad/usage_stats/usage_stats.js (renamed from trunk/etherpad/src/etherpad/usage_stats/usage_stats.js)0
-rw-r--r--etherpad/src/etherpad/utils.js (renamed from trunk/etherpad/src/etherpad/utils.js)52
-rw-r--r--etherpad/src/main.js (renamed from trunk/etherpad/src/main.js)16
-rw-r--r--etherpad/src/plugins/kafoo/main.js16
-rw-r--r--etherpad/src/plugins/testplugin/controllers/testplugin.js57
-rw-r--r--etherpad/src/plugins/testplugin/hooks.js15
-rw-r--r--etherpad/src/plugins/testplugin/main.js23
-rw-r--r--etherpad/src/plugins/testplugin/static/js/main.js11
-rw-r--r--etherpad/src/plugins/testplugin/static/js/test.js1
-rw-r--r--etherpad/src/plugins/testplugin/templates/testplugin.ejs29
-rw-r--r--etherpad/src/plugins/twitterStyleTags/controllers/tagBrowser.js (renamed from trunk/etherpad/src/etherpad/control/tag/tag_control.js)8
-rw-r--r--etherpad/src/plugins/twitterStyleTags/hooks.js47
-rw-r--r--etherpad/src/plugins/twitterStyleTags/main.js43
-rw-r--r--etherpad/src/plugins/twitterStyleTags/static/js/main.js29
-rw-r--r--etherpad/src/plugins/twitterStyleTags/templates/tagBrowser.ejs (renamed from trunk/etherpad/src/templates/tag/tag_search.ejs)0
-rw-r--r--etherpad/src/static/crossdomain.xml (renamed from trunk/etherpad/src/static/crossdomain.xml)0
-rw-r--r--etherpad/src/static/css/admin/admin-stats.css (renamed from trunk/etherpad/src/static/css/admin/admin-stats.css)0
-rw-r--r--etherpad/src/static/css/beta.css (renamed from trunk/etherpad/src/static/css/beta.css)0
-rw-r--r--etherpad/src/static/css/broadcast.css (renamed from trunk/etherpad/src/static/css/broadcast.css)0
-rw-r--r--etherpad/src/static/css/connection_diagnostics.css (renamed from trunk/etherpad/src/static/css/connection_diagnostics.css)0
-rw-r--r--etherpad/src/static/css/etherpad.css (renamed from trunk/etherpad/src/static/css/etherpad.css)0
-rw-r--r--etherpad/src/static/css/fluxbb.css (renamed from trunk/etherpad/src/static/css/fluxbb.css)0
-rw-r--r--etherpad/src/static/css/framedpage.css (renamed from trunk/etherpad/src/static/css/framedpage.css)0
-rw-r--r--etherpad/src/static/css/global-pro-account.css (renamed from trunk/etherpad/src/static/css/global-pro-account.css)0
-rw-r--r--etherpad/src/static/css/home-opensource.css (renamed from trunk/etherpad/src/static/css/home-opensource.css)0
-rw-r--r--etherpad/src/static/css/home.css (renamed from trunk/etherpad/src/static/css/home.css)0
-rw-r--r--etherpad/src/static/css/lib/jquery.contextmenu.css (renamed from trunk/etherpad/src/static/css/lib/jquery.contextmenu.css)0
-rw-r--r--etherpad/src/static/css/pad.css (renamed from trunk/etherpad/src/static/css/pad.css)0
-rw-r--r--etherpad/src/static/css/pad2_ejs.css (renamed from trunk/etherpad/src/static/css/pad2_ejs.css)0
-rw-r--r--etherpad/src/static/css/pne-manual.css (renamed from trunk/etherpad/src/static/css/pne-manual.css)0
-rw-r--r--etherpad/src/static/css/pricing.css (renamed from trunk/etherpad/src/static/css/pricing.css)0
-rw-r--r--etherpad/src/static/css/pro-help.css (renamed from trunk/etherpad/src/static/css/pro-help.css)0
-rw-r--r--etherpad/src/static/css/pro-signup.css (renamed from trunk/etherpad/src/static/css/pro-signup.css)0
-rw-r--r--etherpad/src/static/css/pro/account.css (renamed from trunk/etherpad/src/static/css/pro/account.css)0
-rw-r--r--etherpad/src/static/css/pro/framedpage-pro.css (renamed from trunk/etherpad/src/static/css/pro/framedpage-pro.css)0
-rw-r--r--etherpad/src/static/css/pro/padlist.css (renamed from trunk/etherpad/src/static/css/pro/padlist.css)0
-rw-r--r--etherpad/src/static/css/pro/payment-required.css (renamed from trunk/etherpad/src/static/css/pro/payment-required.css)0
-rw-r--r--etherpad/src/static/css/pro/pro-admin.css (renamed from trunk/etherpad/src/static/css/pro/pro-admin.css)0
-rw-r--r--etherpad/src/static/css/pro/pro-home.css (renamed from trunk/etherpad/src/static/css/pro/pro-home.css)0
-rw-r--r--etherpad/src/static/css/stats.css (renamed from trunk/etherpad/src/static/css/stats.css)0
-rw-r--r--etherpad/src/static/css/store/eepnet-checkout.css (renamed from trunk/etherpad/src/static/css/store/eepnet-checkout.css)0
-rw-r--r--etherpad/src/static/css/store/ondemand-billing.css (renamed from trunk/etherpad/src/static/css/store/ondemand-billing.css)0
-rw-r--r--etherpad/src/static/css/store/store.css (renamed from trunk/etherpad/src/static/css/store/store.css)0
-rw-r--r--etherpad/src/static/favicon.ico (renamed from trunk/etherpad/src/static/favicon.ico)bin1150 -> 1150 bytes
-rw-r--r--etherpad/src/static/img/about/appjet-logo-large.gif (renamed from trunk/etherpad/src/static/img/about/appjet-logo-large.gif)bin11045 -> 11045 bytes
-rw-r--r--etherpad/src/static/img/about/appjet-logo-medium.png (renamed from trunk/etherpad/src/static/img/about/appjet-logo-medium.png)bin4127 -> 4127 bytes
-rw-r--r--etherpad/src/static/img/about/investors/mitchkapor.jpg (renamed from trunk/etherpad/src/static/img/about/investors/mitchkapor.jpg)bin30223 -> 30223 bytes
-rw-r--r--etherpad/src/static/img/about/investors/pb.jpg (renamed from trunk/etherpad/src/static/img/about/investors/pb.jpg)bin23929 -> 23929 bytes
-rw-r--r--etherpad/src/static/img/about/investors/pg.jpg (renamed from trunk/etherpad/src/static/img/about/investors/pg.jpg)bin28915 -> 28915 bytes
-rw-r--r--etherpad/src/static/img/about/investors/sanjeev.jpg (renamed from trunk/etherpad/src/static/img/about/investors/sanjeev.jpg)bin23342 -> 23342 bytes
-rw-r--r--etherpad/src/static/img/about/investors/seth.jpg (renamed from trunk/etherpad/src/static/img/about/investors/seth.jpg)bin27346 -> 27346 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg)bin145654 -> 145654 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-david-iphones.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-david-iphones.jpg)bin145654 -> 145654 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-google-air.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-google-air.jpg)bin163592 -> 163592 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg)bin11310 -> 11310 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-headshot.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-headshot.jpg)bin83517 -> 83517 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg)bin29884 -> 29884 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-headshot2.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-headshot2.jpg)bin99738 -> 99738 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg)bin27864 -> 27864 bytes
-rw-r--r--etherpad/src/static/img/about/people/aaron-headshot3.jpg (renamed from trunk/etherpad/src/static/img/about/people/aaron-headshot3.jpg)bin195114 -> 195114 bytes
-rw-r--r--etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg)bin21991 -> 21991 bytes
-rw-r--r--etherpad/src/static/img/about/people/david-headshot-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/david-headshot-thumb.jpg)bin18650 -> 18650 bytes
-rw-r--r--etherpad/src/static/img/about/people/david-headshot.jpg (renamed from trunk/etherpad/src/static/img/about/people/david-headshot.jpg)bin63296 -> 63296 bytes
-rw-r--r--etherpad/src/static/img/about/people/davy-headshot.jpg (renamed from trunk/etherpad/src/static/img/about/people/davy-headshot.jpg)bin20175 -> 20175 bytes
-rw-r--r--etherpad/src/static/img/about/people/jd-headshot-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg)bin13008 -> 13008 bytes
-rw-r--r--etherpad/src/static/img/about/people/jd-headshot.jpg (renamed from trunk/etherpad/src/static/img/about/people/jd-headshot.jpg)bin37777 -> 37777 bytes
-rw-r--r--etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg (renamed from trunk/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg)bin17360 -> 17360 bytes
-rw-r--r--etherpad/src/static/img/about/people/rhonda-headshot.jpg (renamed from trunk/etherpad/src/static/img/about/people/rhonda-headshot.jpg)bin133259 -> 133259 bytes
-rw-r--r--etherpad/src/static/img/about/pier38.png (renamed from trunk/etherpad/src/static/img/about/pier38.png)bin66877 -> 66877 bytes
-rw-r--r--etherpad/src/static/img/about/quote-close.png (renamed from trunk/etherpad/src/static/img/about/quote-close.png)bin1361 -> 1361 bytes
-rw-r--r--etherpad/src/static/img/about/quote-open.png (renamed from trunk/etherpad/src/static/img/about/quote-open.png)bin1341 -> 1341 bytes
-rw-r--r--etherpad/src/static/img/about/screencastpreview800x600.jpg (renamed from trunk/etherpad/src/static/img/about/screencastpreview800x600.jpg)bin248364 -> 248364 bytes
-rw-r--r--etherpad/src/static/img/account/betawarn.jpg (renamed from trunk/etherpad/src/static/img/account/betawarn.jpg)bin13535 -> 13535 bytes
-rw-r--r--etherpad/src/static/img/acecarets/000000.gif (renamed from trunk/etherpad/src/static/img/acecarets/000000.gif)bin41 -> 41 bytes
-rw-r--r--etherpad/src/static/img/acecarets/666666.gif (renamed from trunk/etherpad/src/static/img/acecarets/666666.gif)bin41 -> 41 bytes
-rw-r--r--etherpad/src/static/img/acecarets/999999.gif (renamed from trunk/etherpad/src/static/img/acecarets/999999.gif)bin41 -> 41 bytes
-rw-r--r--etherpad/src/static/img/acecarets/default.gif (renamed from trunk/etherpad/src/static/img/acecarets/default.gif)bin43 -> 43 bytes
-rw-r--r--etherpad/src/static/img/apr09/backgrad.png (renamed from trunk/etherpad/src/static/img/apr09/backgrad.png)bin2276 -> 2276 bytes
-rw-r--r--etherpad/src/static/img/apr09/black35.png (renamed from trunk/etherpad/src/static/img/apr09/black35.png)bin221 -> 221 bytes
-rw-r--r--etherpad/src/static/img/apr09/blank.gif (renamed from trunk/etherpad/src/static/img/apr09/blank.gif)bin129 -> 129 bytes
-rw-r--r--etherpad/src/static/img/apr09/modalbar.gif (renamed from trunk/etherpad/src/static/img/apr09/modalbar.gif)bin145 -> 145 bytes
-rw-r--r--etherpad/src/static/img/apr09/newpadicon.gif (renamed from trunk/etherpad/src/static/img/apr09/newpadicon.gif)bin89 -> 89 bytes
-rw-r--r--etherpad/src/static/img/apr09/shadbot.png (renamed from trunk/etherpad/src/static/img/apr09/shadbot.png)bin149 -> 149 bytes
-rw-r--r--etherpad/src/static/img/apr09/shadleft.png (renamed from trunk/etherpad/src/static/img/apr09/shadleft.png)bin142 -> 142 bytes
-rw-r--r--etherpad/src/static/img/apr09/shadleftbot.png (renamed from trunk/etherpad/src/static/img/apr09/shadleftbot.png)bin172 -> 172 bytes
-rw-r--r--etherpad/src/static/img/apr09/shadlefttop.png (renamed from trunk/etherpad/src/static/img/apr09/shadlefttop.png)bin929 -> 929 bytes
-rw-r--r--etherpad/src/static/img/apr09/shadright.png (renamed from trunk/etherpad/src/static/img/apr09/shadright.png)bin136 -> 136 bytes
-rw-r--r--etherpad/src/static/img/apr09/shadrightbot.png (renamed from trunk/etherpad/src/static/img/apr09/shadrightbot.png)bin174 -> 174 bytes
-rw-r--r--etherpad/src/static/img/apr09/shadrighttop.png (renamed from trunk/etherpad/src/static/img/apr09/shadrighttop.png)bin954 -> 954 bytes
-rw-r--r--etherpad/src/static/img/apr09/topbar.gif (renamed from trunk/etherpad/src/static/img/apr09/topbar.gif)bin180 -> 180 bytes
-rw-r--r--etherpad/src/static/img/apr09/topbarlogo.gif (renamed from trunk/etherpad/src/static/img/apr09/topbarlogo.gif)bin1784 -> 1784 bytes
-rw-r--r--etherpad/src/static/img/apr09/widthfull.gif (renamed from trunk/etherpad/src/static/img/apr09/widthfull.gif)bin104 -> 104 bytes
-rw-r--r--etherpad/src/static/img/apr09/widthfullactive.gif (renamed from trunk/etherpad/src/static/img/apr09/widthfullactive.gif)bin104 -> 104 bytes
-rw-r--r--etherpad/src/static/img/apr09/widthlim.gif (renamed from trunk/etherpad/src/static/img/apr09/widthlim.gif)bin102 -> 102 bytes
-rw-r--r--etherpad/src/static/img/apr09/widthlimactive.gif (renamed from trunk/etherpad/src/static/img/apr09/widthlimactive.gif)bin102 -> 102 bytes
-rw-r--r--etherpad/src/static/img/billing/amex.gif (renamed from trunk/etherpad/src/static/img/billing/amex.gif)bin995 -> 995 bytes
-rw-r--r--etherpad/src/static/img/billing/creditcard.gif (renamed from trunk/etherpad/src/static/img/billing/creditcard.gif)bin1229 -> 1229 bytes
-rw-r--r--etherpad/src/static/img/billing/csc-help.gif (renamed from trunk/etherpad/src/static/img/billing/csc-help.gif)bin9430 -> 9430 bytes
-rw-r--r--etherpad/src/static/img/billing/disc.gif (renamed from trunk/etherpad/src/static/img/billing/disc.gif)bin370 -> 370 bytes
-rw-r--r--etherpad/src/static/img/billing/invoice.gif (renamed from trunk/etherpad/src/static/img/billing/invoice.gif)bin424 -> 424 bytes
-rw-r--r--etherpad/src/static/img/billing/mc.gif (renamed from trunk/etherpad/src/static/img/billing/mc.gif)bin1370 -> 1370 bytes
-rw-r--r--etherpad/src/static/img/billing/paypal.gif (renamed from trunk/etherpad/src/static/img/billing/paypal.gif)bin812 -> 812 bytes
-rw-r--r--etherpad/src/static/img/billing/visa.gif (renamed from trunk/etherpad/src/static/img/billing/visa.gif)bin724 -> 724 bytes
-rw-r--r--etherpad/src/static/img/blog/posts/new-features/fullwidth.gif (renamed from trunk/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif)bin7328 -> 7328 bytes
-rw-r--r--etherpad/src/static/img/blog/posts/new-features/importexport.gif (renamed from trunk/etherpad/src/static/img/blog/posts/new-features/importexport.gif)bin9758 -> 9758 bytes
-rw-r--r--etherpad/src/static/img/blog/posts/new-features/richtext.gif (renamed from trunk/etherpad/src/static/img/blog/posts/new-features/richtext.gif)bin2146 -> 2146 bytes
-rw-r--r--etherpad/src/static/img/blog/posts/new-features/viewzoom.gif (renamed from trunk/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif)bin8257 -> 8257 bytes
-rw-r--r--etherpad/src/static/img/blog/posts/pricing-survey-results.png (renamed from trunk/etherpad/src/static/img/blog/posts/pricing-survey-results.png)bin12994 -> 12994 bytes
-rw-r--r--etherpad/src/static/img/blog/posts/pricing-survey.png (renamed from trunk/etherpad/src/static/img/blog/posts/pricing-survey.png)bin10589 -> 10589 bytes
-rw-r--r--etherpad/src/static/img/blog/posts/time-slider-screenshot.gif (renamed from trunk/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif)bin6544 -> 6544 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home-createpad.png (renamed from trunk/etherpad/src/static/img/davy/bg/home-createpad.png)bin4327 -> 4327 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home-features-bottom.gif (renamed from trunk/etherpad/src/static/img/davy/bg/home-features-bottom.gif)bin308 -> 308 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home-features-free-bottom.gif (renamed from trunk/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif)bin298 -> 298 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home-features-paid-top.gif (renamed from trunk/etherpad/src/static/img/davy/bg/home-features-paid-top.gif)bin459 -> 459 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home-features-top.gif (renamed from trunk/etherpad/src/static/img/davy/bg/home-features-top.gif)bin489 -> 489 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home-nav-selected.png (renamed from trunk/etherpad/src/static/img/davy/bg/home-nav-selected.png)bin195 -> 195 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home-screencast.png (renamed from trunk/etherpad/src/static/img/davy/bg/home-screencast.png)bin5738 -> 5738 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/home2.png (renamed from trunk/etherpad/src/static/img/davy/bg/home2.png)bin367 -> 367 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/product-nav-selected-white.png (renamed from trunk/etherpad/src/static/img/davy/bg/product-nav-selected-white.png)bin196 -> 196 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/product-nav-selected.png (renamed from trunk/etherpad/src/static/img/davy/bg/product-nav-selected.png)bin198 -> 198 bytes
-rw-r--r--etherpad/src/static/img/davy/bg/product.png (renamed from trunk/etherpad/src/static/img/davy/bg/product.png)bin161 -> 161 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/createpad-home.gif (renamed from trunk/etherpad/src/static/img/davy/btn/createpad-home.gif)bin5839 -> 5839 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/createpad-large.gif (renamed from trunk/etherpad/src/static/img/davy/btn/createpad-large.gif)bin6614 -> 6614 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/createpad-small.gif (renamed from trunk/etherpad/src/static/img/davy/btn/createpad-small.gif)bin3148 -> 3148 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/intro-screencast.png (renamed from trunk/etherpad/src/static/img/davy/btn/intro-screencast.png)bin815 -> 815 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/intro-testimonials.png (renamed from trunk/etherpad/src/static/img/davy/btn/intro-testimonials.png)bin816 -> 816 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/learnmore.gif (renamed from trunk/etherpad/src/static/img/davy/btn/learnmore.gif)bin3103 -> 3103 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/signup-home-2.gif (renamed from trunk/etherpad/src/static/img/davy/btn/signup-home-2.gif)bin5827 -> 5827 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/signup-home-3.gif (renamed from trunk/etherpad/src/static/img/davy/btn/signup-home-3.gif)bin5735 -> 5735 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/signup-home-4.gif (renamed from trunk/etherpad/src/static/img/davy/btn/signup-home-4.gif)bin5818 -> 5818 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/signup-home.gif (renamed from trunk/etherpad/src/static/img/davy/btn/signup-home.gif)bin5815 -> 5815 bytes
-rw-r--r--etherpad/src/static/img/davy/btn/uses-more.gif (renamed from trunk/etherpad/src/static/img/davy/btn/uses-more.gif)bin1485 -> 1485 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/32/114.png (renamed from trunk/etherpad/src/static/img/davy/gfx/32/114.png)bin2424 -> 2424 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/32/15.png (renamed from trunk/etherpad/src/static/img/davy/gfx/32/15.png)bin2904 -> 2904 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/32/65.png (renamed from trunk/etherpad/src/static/img/davy/gfx/32/65.png)bin3028 -> 3028 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/32/78.png (renamed from trunk/etherpad/src/static/img/davy/gfx/32/78.png)bin2208 -> 2208 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/bullet.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/bullet.gif)bin55 -> 55 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/home-logo2.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/home-logo2.gif)bin7136 -> 7136 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/home-screencast.png (renamed from trunk/etherpad/src/static/img/davy/gfx/home-screencast.png)bin65832 -> 65832 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/plane.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/plane.gif)bin56 -> 56 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/product-logo.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/product-logo.gif)bin2222 -> 2222 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/screenshot.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/screenshot.gif)bin23708 -> 23708 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/use-meetings.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/use-meetings.gif)bin10521 -> 10521 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/use-meetings.png (renamed from trunk/etherpad/src/static/img/davy/gfx/use-meetings.png)bin25506 -> 25506 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/use-programming.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/use-programming.gif)bin13655 -> 13655 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/use-programming.png (renamed from trunk/etherpad/src/static/img/davy/gfx/use-programming.png)bin56154 -> 56154 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/use-writing.gif (renamed from trunk/etherpad/src/static/img/davy/gfx/use-writing.gif)bin22275 -> 22275 bytes
-rw-r--r--etherpad/src/static/img/davy/gfx/use-writing.png (renamed from trunk/etherpad/src/static/img/davy/gfx/use-writing.png)bin38264 -> 38264 bytes
-rw-r--r--etherpad/src/static/img/davy/txt/home-button.gif (renamed from trunk/etherpad/src/static/img/davy/txt/home-button.gif)bin4749 -> 4749 bytes
-rw-r--r--etherpad/src/static/img/featuretour/code.gif (renamed from trunk/etherpad/src/static/img/featuretour/code.gif)bin27794 -> 27794 bytes
-rw-r--r--etherpad/src/static/img/featuretour/edits.gif (renamed from trunk/etherpad/src/static/img/featuretour/edits.gif)bin24788 -> 24788 bytes
-rw-r--r--etherpad/src/static/img/featuretour/editsandusers.gif (renamed from trunk/etherpad/src/static/img/featuretour/editsandusers.gif)bin21815 -> 21815 bytes
-rw-r--r--etherpad/src/static/img/featuretour/padlock.png (renamed from trunk/etherpad/src/static/img/featuretour/padlock.png)bin13061 -> 13061 bytes
-rw-r--r--etherpad/src/static/img/featuretour/revisions.gif (renamed from trunk/etherpad/src/static/img/featuretour/revisions.gif)bin20820 -> 20820 bytes
-rw-r--r--etherpad/src/static/img/featuretour/users.gif (renamed from trunk/etherpad/src/static/img/featuretour/users.gif)bin8843 -> 8843 bytes
-rw-r--r--etherpad/src/static/img/feb09/framedheaderback.gif (renamed from trunk/etherpad/src/static/img/feb09/framedheaderback.gif)bin606 -> 606 bytes
-rw-r--r--etherpad/src/static/img/feb09/framedheaderlogo.gif (renamed from trunk/etherpad/src/static/img/feb09/framedheaderlogo.gif)bin8177 -> 8177 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_firstp.gif (renamed from trunk/etherpad/src/static/img/feb09/home_firstp.gif)bin7754 -> 7754 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_firstp.png (renamed from trunk/etherpad/src/static/img/feb09/home_firstp.png)bin15320 -> 15320 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_firstp2.gif (renamed from trunk/etherpad/src/static/img/feb09/home_firstp2.gif)bin7919 -> 7919 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_h1.gif (renamed from trunk/etherpad/src/static/img/feb09/home_h1.gif)bin11332 -> 11332 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_h1.png (renamed from trunk/etherpad/src/static/img/feb09/home_h1.png)bin28857 -> 28857 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_newpadbutton.gif (renamed from trunk/etherpad/src/static/img/feb09/home_newpadbutton.gif)bin6828 -> 6828 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_newpadbutton.png (renamed from trunk/etherpad/src/static/img/feb09/home_newpadbutton.png)bin10554 -> 10554 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_newpadbutton2.gif (renamed from trunk/etherpad/src/static/img/feb09/home_newpadbutton2.gif)bin7112 -> 7112 bytes
-rw-r--r--etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif (renamed from trunk/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif)bin5442 -> 5442 bytes
-rw-r--r--etherpad/src/static/img/feb09/hometop_back.gif (renamed from trunk/etherpad/src/static/img/feb09/hometop_back.gif)bin2743 -> 2743 bytes
-rw-r--r--etherpad/src/static/img/feb09/nav1.gif (renamed from trunk/etherpad/src/static/img/feb09/nav1.gif)bin10901 -> 10901 bytes
-rw-r--r--etherpad/src/static/img/feb09/nav1_back.gif (renamed from trunk/etherpad/src/static/img/feb09/nav1_back.gif)bin150 -> 150 bytes
-rw-r--r--etherpad/src/static/img/feb09/nav2.gif (renamed from trunk/etherpad/src/static/img/feb09/nav2.gif)bin17028 -> 17028 bytes
-rw-r--r--etherpad/src/static/img/feb09/screencast.gif (renamed from trunk/etherpad/src/static/img/feb09/screencast.gif)bin20091 -> 20091 bytes
-rw-r--r--etherpad/src/static/img/home/etherpad-mainheader1.jpg (renamed from trunk/etherpad/src/static/img/home/etherpad-mainheader1.jpg)bin48871 -> 48871 bytes
-rw-r--r--etherpad/src/static/img/home/headergradient.gif (renamed from trunk/etherpad/src/static/img/home/headergradient.gif)bin246 -> 246 bytes
-rw-r--r--etherpad/src/static/img/home/homeheader1.jpg (renamed from trunk/etherpad/src/static/img/home/homeheader1.jpg)bin33227 -> 33227 bytes
-rw-r--r--etherpad/src/static/img/home/homeheader2.jpg (renamed from trunk/etherpad/src/static/img/home/homeheader2.jpg)bin33259 -> 33259 bytes
-rw-r--r--etherpad/src/static/img/home/leftgrad.gif (renamed from trunk/etherpad/src/static/img/home/leftgrad.gif)bin113 -> 113 bytes
-rw-r--r--etherpad/src/static/img/home/pencilpaperback.png (renamed from trunk/etherpad/src/static/img/home/pencilpaperback.png)bin83487 -> 83487 bytes
-rw-r--r--etherpad/src/static/img/home/screencapture1.gif (renamed from trunk/etherpad/src/static/img/home/screencapture1.gif)bin106694 -> 106694 bytes
-rw-r--r--etherpad/src/static/img/home/underdevicon.gif (renamed from trunk/etherpad/src/static/img/home/underdevicon.gif)bin98 -> 98 bytes
-rw-r--r--etherpad/src/static/img/icon/downarrow.gif (renamed from trunk/etherpad/src/static/img/icon/downarrow.gif)bin376 -> 376 bytes
-rw-r--r--etherpad/src/static/img/icon/feed.gif (renamed from trunk/etherpad/src/static/img/icon/feed.gif)bin1135 -> 1135 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/backgrad.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/backgrad.gif)bin697 -> 697 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/bottomareagfx.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/bottomareagfx.gif)bin1045 -> 1045 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/colorpicker.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/colorpicker.gif)bin1806 -> 1806 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/connectingbar.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/connectingbar.gif)bin10819 -> 10819 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/connectionindicator.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/connectionindicator.gif)bin1185 -> 1185 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/docbarstates.png (renamed from trunk/etherpad/src/static/img/jun09/pad/docbarstates.png)bin3314 -> 3314 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/docbarstates2.png (renamed from trunk/etherpad/src/static/img/jun09/pad/docbarstates2.png)bin4902 -> 4902 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/docbarstates3.png (renamed from trunk/etherpad/src/static/img/jun09/pad/docbarstates3.png)bin4990 -> 4990 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/docpaneledge.png (renamed from trunk/etherpad/src/static/img/jun09/pad/docpaneledge.png)bin589 -> 589 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/docpaneledge2.png (renamed from trunk/etherpad/src/static/img/jun09/pad/docpaneledge2.png)bin635 -> 635 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/docpanelmiddle.png (renamed from trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle.png)bin240 -> 240 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/docpanelmiddle2.png (renamed from trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png)bin295 -> 295 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/editbar.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/editbar.gif)bin4667 -> 4667 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/editbar2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/editbar2.gif)bin9156 -> 9156 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/editbar3.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/editbar3.gif)bin9587 -> 9587 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/editbarback.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/editbarback.gif)bin368 -> 368 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/feedbackbox2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/feedbackbox2.gif)bin6262 -> 6262 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/fileicons.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/fileicons.gif)bin1397 -> 1397 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/hdraggie.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/hdraggie.gif)bin453 -> 453 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/inviteshare.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/inviteshare.gif)bin511 -> 511 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/inviteshare2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/inviteshare2.gif)bin1836 -> 1836 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/layoutbuttons.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/layoutbuttons.gif)bin3750 -> 3750 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/overlay.png (renamed from trunk/etherpad/src/static/img/jun09/pad/overlay.png)bin141 -> 141 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/overlay2.png (renamed from trunk/etherpad/src/static/img/jun09/pad/overlay2.png)bin149 -> 149 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/padtop.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/padtop.gif)bin8055 -> 8055 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/padtop2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/padtop2.gif)bin6168 -> 6168 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/padtop3.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/padtop3.gif)bin7511 -> 7511 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/padtop4.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/padtop4.gif)bin8192 -> 8192 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/padtop5.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/padtop5.gif)bin8964 -> 8964 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/padtopback.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/padtopback.gif)bin553 -> 553 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/padtopback2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/padtopback2.gif)bin384 -> 384 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/protop.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/protop.gif)bin3374 -> 3374 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/public.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/public.gif)bin1141 -> 1141 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/savedrevarrows.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/savedrevarrows.gif)bin866 -> 866 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif)bin1904 -> 1904 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/sharebox2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/sharebox2.gif)bin8836 -> 8836 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/sharebox3.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/sharebox3.gif)bin6056 -> 6056 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/sharebox4.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/sharebox4.gif)bin5788 -> 5788 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/sharedistri.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/sharedistri.gif)bin85 -> 85 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/syncdone.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/syncdone.gif)bin211 -> 211 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/syncing.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/syncing.gif)bin673 -> 673 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/syncing2.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/syncing2.gif)bin172 -> 172 bytes
-rw-r--r--etherpad/src/static/img/jun09/pad/viewbargfx.gif (renamed from trunk/etherpad/src/static/img/jun09/pad/viewbargfx.gif)bin155 -> 155 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif)bin52 -> 52 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif)bin52 -> 52 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png)bin2837 -> 2837 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif)bin195 -> 195 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif)bin87 -> 87 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif)bin64 -> 64 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif)bin347 -> 347 bytes
-rw-r--r--etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif (renamed from trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif)bin223 -> 223 bytes
-rw-r--r--etherpad/src/static/img/may09/bold.gif (renamed from trunk/etherpad/src/static/img/may09/bold.gif)bin70 -> 70 bytes
-rw-r--r--etherpad/src/static/img/may09/doc.gif (renamed from trunk/etherpad/src/static/img/may09/doc.gif)bin632 -> 632 bytes
-rw-r--r--etherpad/src/static/img/may09/doc.png (renamed from trunk/etherpad/src/static/img/may09/doc.png)bin3317 -> 3317 bytes
-rw-r--r--etherpad/src/static/img/may09/html.gif (renamed from trunk/etherpad/src/static/img/may09/html.gif)bin1040 -> 1040 bytes
-rw-r--r--etherpad/src/static/img/may09/html.png (renamed from trunk/etherpad/src/static/img/may09/html.png)bin3468 -> 3468 bytes
-rw-r--r--etherpad/src/static/img/may09/italic.gif (renamed from trunk/etherpad/src/static/img/may09/italic.gif)bin73 -> 73 bytes
-rw-r--r--etherpad/src/static/img/may09/leftarrow.gif (renamed from trunk/etherpad/src/static/img/may09/leftarrow.gif)bin1016 -> 1016 bytes
-rw-r--r--etherpad/src/static/img/may09/leftarrow2.gif (renamed from trunk/etherpad/src/static/img/may09/leftarrow2.gif)bin950 -> 950 bytes
-rw-r--r--etherpad/src/static/img/may09/link.gif (renamed from trunk/etherpad/src/static/img/may09/link.gif)bin622 -> 622 bytes
-rw-r--r--etherpad/src/static/img/may09/link.png (renamed from trunk/etherpad/src/static/img/may09/link.png)bin3323 -> 3323 bytes
-rw-r--r--etherpad/src/static/img/may09/odt.gif (renamed from trunk/etherpad/src/static/img/may09/odt.gif)bin405 -> 405 bytes
-rw-r--r--etherpad/src/static/img/may09/odt.png (renamed from trunk/etherpad/src/static/img/may09/odt.png)bin3341 -> 3341 bytes
-rw-r--r--etherpad/src/static/img/may09/padlock.gif (renamed from trunk/etherpad/src/static/img/may09/padlock.gif)bin1053 -> 1053 bytes
-rw-r--r--etherpad/src/static/img/may09/padlockopen.gif (renamed from trunk/etherpad/src/static/img/may09/padlockopen.gif)bin109 -> 109 bytes
-rw-r--r--etherpad/src/static/img/may09/passwordlocked.gif (renamed from trunk/etherpad/src/static/img/may09/passwordlocked.gif)bin1053 -> 1053 bytes
-rw-r--r--etherpad/src/static/img/may09/passwordlocked_cropped.gif (renamed from trunk/etherpad/src/static/img/may09/passwordlocked_cropped.gif)bin114 -> 114 bytes
-rw-r--r--etherpad/src/static/img/may09/passwordnone.gif (renamed from trunk/etherpad/src/static/img/may09/passwordnone.gif)bin636 -> 636 bytes
-rw-r--r--etherpad/src/static/img/may09/paypal.gif (renamed from trunk/etherpad/src/static/img/may09/paypal.gif)bin3794 -> 3794 bytes
-rw-r--r--etherpad/src/static/img/may09/pdf.gif (renamed from trunk/etherpad/src/static/img/may09/pdf.gif)bin398 -> 398 bytes
-rw-r--r--etherpad/src/static/img/may09/pdf.png (renamed from trunk/etherpad/src/static/img/may09/pdf.png)bin3320 -> 3320 bytes
-rw-r--r--etherpad/src/static/img/may09/redo.gif (renamed from trunk/etherpad/src/static/img/may09/redo.gif)bin78 -> 78 bytes
-rw-r--r--etherpad/src/static/img/may09/txt.gif (renamed from trunk/etherpad/src/static/img/may09/txt.gif)bin381 -> 381 bytes
-rw-r--r--etherpad/src/static/img/may09/txt.png (renamed from trunk/etherpad/src/static/img/may09/txt.png)bin3139 -> 3139 bytes
-rw-r--r--etherpad/src/static/img/may09/underline.gif (renamed from trunk/etherpad/src/static/img/may09/underline.gif)bin81 -> 81 bytes
-rw-r--r--etherpad/src/static/img/may09/undo.gif (renamed from trunk/etherpad/src/static/img/may09/undo.gif)bin79 -> 79 bytes
-rw-r--r--etherpad/src/static/img/miniplane.gif (renamed from trunk/etherpad/src/static/img/miniplane.gif)bin70 -> 70 bytes
-rw-r--r--etherpad/src/static/img/misc/diagnostic-links.gif (renamed from trunk/etherpad/src/static/img/misc/diagnostic-links.gif)bin10132 -> 10132 bytes
-rw-r--r--etherpad/src/static/img/misc/status-ball.gif (renamed from trunk/etherpad/src/static/img/misc/status-ball.gif)bin1553 -> 1553 bytes
-rw-r--r--etherpad/src/static/img/misc/traclogo.gif (renamed from trunk/etherpad/src/static/img/misc/traclogo.gif)bin5684 -> 5684 bytes
-rw-r--r--etherpad/src/static/img/oct/atlonglast.gif (renamed from trunk/etherpad/src/static/img/oct/atlonglast.gif)bin4901 -> 4901 bytes
-rw-r--r--etherpad/src/static/img/oct/banner1.jpg (renamed from trunk/etherpad/src/static/img/oct/banner1.jpg)bin19897 -> 19897 bytes
-rw-r--r--etherpad/src/static/img/oct/banner2.jpg (renamed from trunk/etherpad/src/static/img/oct/banner2.jpg)bin45052 -> 45052 bytes
-rw-r--r--etherpad/src/static/img/oct/banner3.jpg (renamed from trunk/etherpad/src/static/img/oct/banner3.jpg)bin38726 -> 38726 bytes
-rw-r--r--etherpad/src/static/img/oct/banner4.jpg (renamed from trunk/etherpad/src/static/img/oct/banner4.jpg)bin39563 -> 39563 bytes
-rw-r--r--etherpad/src/static/img/oct/banner5.gif (renamed from trunk/etherpad/src/static/img/oct/banner5.gif)bin24046 -> 24046 bytes
-rw-r--r--etherpad/src/static/img/oct/banner6.gif (renamed from trunk/etherpad/src/static/img/oct/banner6.gif)bin23655 -> 23655 bytes
-rw-r--r--etherpad/src/static/img/oct/banner7.gif (renamed from trunk/etherpad/src/static/img/oct/banner7.gif)bin24352 -> 24352 bytes
-rw-r--r--etherpad/src/static/img/oct/banner8.gif (renamed from trunk/etherpad/src/static/img/oct/banner8.gif)bin24724 -> 24724 bytes
-rw-r--r--etherpad/src/static/img/oct/banner9.gif (renamed from trunk/etherpad/src/static/img/oct/banner9.gif)bin24363 -> 24363 bytes
-rw-r--r--etherpad/src/static/img/oct/bannerback5.gif (renamed from trunk/etherpad/src/static/img/oct/bannerback5.gif)bin2957 -> 2957 bytes
-rw-r--r--etherpad/src/static/img/oct/bannerback6.gif (renamed from trunk/etherpad/src/static/img/oct/bannerback6.gif)bin2140 -> 2140 bytes
-rw-r--r--etherpad/src/static/img/oct/bodyback1.gif (renamed from trunk/etherpad/src/static/img/oct/bodyback1.gif)bin488 -> 488 bytes
-rw-r--r--etherpad/src/static/img/oct/bodyback2.gif (renamed from trunk/etherpad/src/static/img/oct/bodyback2.gif)bin560 -> 560 bytes
-rw-r--r--etherpad/src/static/img/oct/bodyback3.gif (renamed from trunk/etherpad/src/static/img/oct/bodyback3.gif)bin608 -> 608 bytes
-rw-r--r--etherpad/src/static/img/oct/bodyback4.gif (renamed from trunk/etherpad/src/static/img/oct/bodyback4.gif)bin964 -> 964 bytes
-rw-r--r--etherpad/src/static/img/oct/bodyback5.gif (renamed from trunk/etherpad/src/static/img/oct/bodyback5.gif)bin579 -> 579 bytes
-rw-r--r--etherpad/src/static/img/oct/bodybacktop1.gif (renamed from trunk/etherpad/src/static/img/oct/bodybacktop1.gif)bin2991 -> 2991 bytes
-rw-r--r--etherpad/src/static/img/oct/computers.gif (renamed from trunk/etherpad/src/static/img/oct/computers.gif)bin27542 -> 27542 bytes
-rw-r--r--etherpad/src/static/img/oct/computers2.gif (renamed from trunk/etherpad/src/static/img/oct/computers2.gif)bin27434 -> 27434 bytes
-rw-r--r--etherpad/src/static/img/oct/glossyblue.gif (renamed from trunk/etherpad/src/static/img/oct/glossyblue.gif)bin1521 -> 1521 bytes
-rw-r--r--etherpad/src/static/img/oct/glossyblue2.gif (renamed from trunk/etherpad/src/static/img/oct/glossyblue2.gif)bin994 -> 994 bytes
-rw-r--r--etherpad/src/static/img/oct/glossyblueh.gif (renamed from trunk/etherpad/src/static/img/oct/glossyblueh.gif)bin920 -> 920 bytes
-rw-r--r--etherpad/src/static/img/oct/insetrect.gif (renamed from trunk/etherpad/src/static/img/oct/insetrect.gif)bin7056 -> 7056 bytes
-rw-r--r--etherpad/src/static/img/oct/minilogo1-05e.gif (renamed from trunk/etherpad/src/static/img/oct/minilogo1-05e.gif)bin2201 -> 2201 bytes
-rw-r--r--etherpad/src/static/img/oct/minilogo1-07f.gif (renamed from trunk/etherpad/src/static/img/oct/minilogo1-07f.gif)bin2252 -> 2252 bytes
-rw-r--r--etherpad/src/static/img/oct/minilogo3.jpg (renamed from trunk/etherpad/src/static/img/oct/minilogo3.jpg)bin12805 -> 12805 bytes
-rw-r--r--etherpad/src/static/img/oct/minitopback1.gif (renamed from trunk/etherpad/src/static/img/oct/minitopback1.gif)bin954 -> 954 bytes
-rw-r--r--etherpad/src/static/img/oct/minitopback2.gif (renamed from trunk/etherpad/src/static/img/oct/minitopback2.gif)bin1598 -> 1598 bytes
-rw-r--r--etherpad/src/static/img/oct/minitopbar1-05e.gif (renamed from trunk/etherpad/src/static/img/oct/minitopbar1-05e.gif)bin284 -> 284 bytes
-rw-r--r--etherpad/src/static/img/oct/minitopbar2-05e.gif (renamed from trunk/etherpad/src/static/img/oct/minitopbar2-05e.gif)bin330 -> 330 bytes
-rw-r--r--etherpad/src/static/img/oct/minitopbar2-07f.gif (renamed from trunk/etherpad/src/static/img/oct/minitopbar2-07f.gif)bin330 -> 330 bytes
-rw-r--r--etherpad/src/static/img/oct/minitopbar3.jpg (renamed from trunk/etherpad/src/static/img/oct/minitopbar3.jpg)bin12805 -> 12805 bytes
-rw-r--r--etherpad/src/static/img/oct/minitopbar4.gif (renamed from trunk/etherpad/src/static/img/oct/minitopbar4.gif)bin2818 -> 2818 bytes
-rw-r--r--etherpad/src/static/img/oct/minitoplogo1.gif (renamed from trunk/etherpad/src/static/img/oct/minitoplogo1.gif)bin4184 -> 4184 bytes
-rw-r--r--etherpad/src/static/img/oct/minitoplogo2.gif (renamed from trunk/etherpad/src/static/img/oct/minitoplogo2.gif)bin3255 -> 3255 bytes
-rw-r--r--etherpad/src/static/img/oct/newpadmain.gif (renamed from trunk/etherpad/src/static/img/oct/newpadmain.gif)bin1172 -> 1172 bytes
-rw-r--r--etherpad/src/static/img/oct/newpadmainback.gif (renamed from trunk/etherpad/src/static/img/oct/newpadmainback.gif)bin801 -> 801 bytes
-rw-r--r--etherpad/src/static/img/oct/newpadmainbackh.gif (renamed from trunk/etherpad/src/static/img/oct/newpadmainbackh.gif)bin801 -> 801 bytes
-rw-r--r--etherpad/src/static/img/oct/pageshot.png (renamed from trunk/etherpad/src/static/img/oct/pageshot.png)bin151570 -> 151570 bytes
-rw-r--r--etherpad/src/static/img/oct/pageshotmini.png (renamed from trunk/etherpad/src/static/img/oct/pageshotmini.png)bin80505 -> 80505 bytes
-rw-r--r--etherpad/src/static/img/oct/sidehead-gradhilite.gif (renamed from trunk/etherpad/src/static/img/oct/sidehead-gradhilite.gif)bin288 -> 288 bytes
-rw-r--r--etherpad/src/static/img/oct/tinytriangle.gif (renamed from trunk/etherpad/src/static/img/oct/tinytriangle.gif)bin62 -> 62 bytes
-rw-r--r--etherpad/src/static/img/oct/topnav1.gif (renamed from trunk/etherpad/src/static/img/oct/topnav1.gif)bin12521 -> 12521 bytes
-rw-r--r--etherpad/src/static/img/oct/topnav2.gif (renamed from trunk/etherpad/src/static/img/oct/topnav2.gif)bin11286 -> 11286 bytes
-rw-r--r--etherpad/src/static/img/oct/topnav3.gif (renamed from trunk/etherpad/src/static/img/oct/topnav3.gif)bin12363 -> 12363 bytes
-rw-r--r--etherpad/src/static/img/oct/topnav4.gif (renamed from trunk/etherpad/src/static/img/oct/topnav4.gif)bin11803 -> 11803 bytes
-rw-r--r--etherpad/src/static/img/oct/topnav5.gif (renamed from trunk/etherpad/src/static/img/oct/topnav5.gif)bin11650 -> 11650 bytes
-rw-r--r--etherpad/src/static/img/oct/topnav6.gif (renamed from trunk/etherpad/src/static/img/oct/topnav6.gif)bin11295 -> 11295 bytes
-rw-r--r--etherpad/src/static/img/oct/topnavback1.gif (renamed from trunk/etherpad/src/static/img/oct/topnavback1.gif)bin1594 -> 1594 bytes
-rw-r--r--etherpad/src/static/img/oct/topnavback2.gif (renamed from trunk/etherpad/src/static/img/oct/topnavback2.gif)bin1299 -> 1299 bytes
-rw-r--r--etherpad/src/static/img/oct/topnavback3.gif (renamed from trunk/etherpad/src/static/img/oct/topnavback3.gif)bin380 -> 380 bytes
-rw-r--r--etherpad/src/static/img/oct/usecasesnavdown.gif (renamed from trunk/etherpad/src/static/img/oct/usecasesnavdown.gif)bin1388 -> 1388 bytes
-rw-r--r--etherpad/src/static/img/oct/usecasesnavdownh.gif (renamed from trunk/etherpad/src/static/img/oct/usecasesnavdownh.gif)bin1337 -> 1337 bytes
-rw-r--r--etherpad/src/static/img/oct/usecasesnavup.gif (renamed from trunk/etherpad/src/static/img/oct/usecasesnavup.gif)bin1119 -> 1119 bytes
-rw-r--r--etherpad/src/static/img/oct/usecasesnavuph.gif (renamed from trunk/etherpad/src/static/img/oct/usecasesnavuph.gif)bin720 -> 720 bytes
-rw-r--r--etherpad/src/static/img/oct/watchscreencast.gif (renamed from trunk/etherpad/src/static/img/oct/watchscreencast.gif)bin25840 -> 25840 bytes
-rw-r--r--etherpad/src/static/img/pad/animated-orb-orange-12.gif (renamed from trunk/etherpad/src/static/img/pad/animated-orb-orange-12.gif)bin2614 -> 2614 bytes
-rw-r--r--etherpad/src/static/img/pad/backgrad.png (renamed from trunk/etherpad/src/static/img/pad/backgrad.png)bin1290 -> 1290 bytes
-rw-r--r--etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif (renamed from trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif)bin1052 -> 1052 bytes
-rw-r--r--etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif (renamed from trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif)bin1052 -> 1052 bytes
-rw-r--r--etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif (renamed from trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif)bin1009 -> 1009 bytes
-rw-r--r--etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif (renamed from trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif)bin1123 -> 1123 bytes
-rw-r--r--etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif (renamed from trunk/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif)bin1746 -> 1746 bytes
-rw-r--r--etherpad/src/static/img/pad/etherpad-logo-small-grad.gif (renamed from trunk/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif)bin1537 -> 1537 bytes
-rw-r--r--etherpad/src/static/img/pad/etherpad-logo-small.gif (renamed from trunk/etherpad/src/static/img/pad/etherpad-logo-small.gif)bin6664 -> 6664 bytes
-rw-r--r--etherpad/src/static/img/pad/etherpad-logo-small2.gif (renamed from trunk/etherpad/src/static/img/pad/etherpad-logo-small2.gif)bin6646 -> 6646 bytes
-rw-r--r--etherpad/src/static/img/pad/expandy-arrow-down.gif (renamed from trunk/etherpad/src/static/img/pad/expandy-arrow-down.gif)bin500 -> 500 bytes
-rw-r--r--etherpad/src/static/img/pad/expandy-arrow-right.gif (renamed from trunk/etherpad/src/static/img/pad/expandy-arrow-right.gif)bin296 -> 296 bytes
-rw-r--r--etherpad/src/static/img/pad/expandy-arrow6-down-active.gif (renamed from trunk/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif)bin57 -> 57 bytes
-rw-r--r--etherpad/src/static/img/pad/expandy-arrow6-down.gif (renamed from trunk/etherpad/src/static/img/pad/expandy-arrow6-down.gif)bin57 -> 57 bytes
-rw-r--r--etherpad/src/static/img/pad/expandy-arrow6-right-active.gif (renamed from trunk/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif)bin61 -> 61 bytes
-rw-r--r--etherpad/src/static/img/pad/expandy-arrow6-right.gif (renamed from trunk/etherpad/src/static/img/pad/expandy-arrow6-right.gif)bin61 -> 61 bytes
-rw-r--r--etherpad/src/static/img/pad/header-revgrad.gif (renamed from trunk/etherpad/src/static/img/pad/header-revgrad.gif)bin598 -> 598 bytes
-rw-r--r--etherpad/src/static/img/pad/newpad.gif (renamed from trunk/etherpad/src/static/img/pad/newpad.gif)bin251 -> 251 bytes
-rw-r--r--etherpad/src/static/img/pad/orb-greenred-12.gif (renamed from trunk/etherpad/src/static/img/pad/orb-greenred-12.gif)bin1105 -> 1105 bytes
-rw-r--r--etherpad/src/static/img/pad/padbg1.jpg (renamed from trunk/etherpad/src/static/img/pad/padbg1.jpg)bin120888 -> 120888 bytes
-rw-r--r--etherpad/src/static/img/pad/padbg2.jpg (renamed from trunk/etherpad/src/static/img/pad/padbg2.jpg)bin44119 -> 44119 bytes
-rw-r--r--etherpad/src/static/img/pad/padbg3.jpg (renamed from trunk/etherpad/src/static/img/pad/padbg3.jpg)bin12577 -> 12577 bytes
-rw-r--r--etherpad/src/static/img/pad/padbg4.jpg (renamed from trunk/etherpad/src/static/img/pad/padbg4.jpg)bin12696 -> 12696 bytes
-rw-r--r--etherpad/src/static/img/pad/padbg5.jpg (renamed from trunk/etherpad/src/static/img/pad/padbg5.jpg)bin8158 -> 8158 bytes
-rw-r--r--etherpad/src/static/img/pad/padhead1.jpg (renamed from trunk/etherpad/src/static/img/pad/padhead1.jpg)bin13413 -> 13413 bytes
-rw-r--r--etherpad/src/static/img/pad/padhead2.jpg (renamed from trunk/etherpad/src/static/img/pad/padhead2.jpg)bin14104 -> 14104 bytes
-rw-r--r--etherpad/src/static/img/pad/padhead3.jpg (renamed from trunk/etherpad/src/static/img/pad/padhead3.jpg)bin6750 -> 6750 bytes
-rw-r--r--etherpad/src/static/img/pad/pencil-icon-small-blue.gif (renamed from trunk/etherpad/src/static/img/pad/pencil-icon-small-blue.gif)bin84 -> 84 bytes
-rw-r--r--etherpad/src/static/img/pad/sidehead-grad.gif (renamed from trunk/etherpad/src/static/img/pad/sidehead-grad.gif)bin292 -> 292 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/button_depressed.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/button_depressed.png)bin4610 -> 4610 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/button_undepressed.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/button_undepressed.png)bin4625 -> 4625 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png)bin4134 -> 4134 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png)bin4166 -> 4166 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/crushed_current_location.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/crushed_current_location.png)bin1009 -> 1009 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/crushed_pause.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/crushed_pause.png)bin2876 -> 2876 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/crushed_play.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/crushed_play.png)bin2946 -> 2946 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/crushed_play_button.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/crushed_play_button.png)bin4305 -> 4305 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png)bin8164 -> 8164 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/current_location.gif (renamed from trunk/etherpad/src/static/img/pad/timeslider/current_location.gif)bin1502 -> 1502 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/current_location.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/current_location.png)bin1100 -> 1100 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/pause.gif (renamed from trunk/etherpad/src/static/img/pad/timeslider/pause.gif)bin3320 -> 3320 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/pause.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/pause.png)bin2883 -> 2883 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/play.gif (renamed from trunk/etherpad/src/static/img/pad/timeslider/play.gif)bin3297 -> 3297 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/play.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/play.png)bin3017 -> 3017 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/play_button.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/play_button.png)bin4867 -> 4867 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/star.gif (renamed from trunk/etherpad/src/static/img/pad/timeslider/star.gif)bin3511 -> 3511 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/star.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/star.png)bin3241 -> 3241 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/star_selected.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/star_selected.png)bin3242 -> 3242 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/stepper_buttons.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/stepper_buttons.png)bin4858 -> 4858 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/timeslider_background.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/timeslider_background.png)bin915 -> 915 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/timeslider_left.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/timeslider_left.png)bin1653 -> 1653 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/timeslider_mockup.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png)bin4860 -> 4860 bytes
-rw-r--r--etherpad/src/static/img/pad/timeslider/timeslider_right.png (renamed from trunk/etherpad/src/static/img/pad/timeslider/timeslider_right.png)bin1581 -> 1581 bytes
-rw-r--r--etherpad/src/static/img/pricing/free.gif (renamed from trunk/etherpad/src/static/img/pricing/free.gif)bin7419 -> 7419 bytes
-rw-r--r--etherpad/src/static/img/pricing/group.gif (renamed from trunk/etherpad/src/static/img/pricing/group.gif)bin6783 -> 6783 bytes
-rw-r--r--etherpad/src/static/img/pricing/on-demand.gif (renamed from trunk/etherpad/src/static/img/pricing/on-demand.gif)bin5791 -> 5791 bytes
-rw-r--r--etherpad/src/static/img/pricing/private-network.gif (renamed from trunk/etherpad/src/static/img/pricing/private-network.gif)bin4677 -> 4677 bytes
-rw-r--r--etherpad/src/static/img/pricing/support.gif (renamed from trunk/etherpad/src/static/img/pricing/support.gif)bin2028 -> 2028 bytes
-rw-r--r--etherpad/src/static/img/pro/billing/cards-button.gif (renamed from trunk/etherpad/src/static/img/pro/billing/cards-button.gif)bin9524 -> 9524 bytes
-rw-r--r--etherpad/src/static/img/pro/box/blue-boxtop.gif (renamed from trunk/etherpad/src/static/img/pro/box/blue-boxtop.gif)bin523 -> 523 bytes
-rw-r--r--etherpad/src/static/img/pro/buttons/bluebutton120.gif (renamed from trunk/etherpad/src/static/img/pro/buttons/bluebutton120.gif)bin951 -> 951 bytes
-rw-r--r--etherpad/src/static/img/pro/header/pro-header-back.gif (renamed from trunk/etherpad/src/static/img/pro/header/pro-header-back.gif)bin213 -> 213 bytes
-rw-r--r--etherpad/src/static/img/pro/header/pro-header-logo.png (renamed from trunk/etherpad/src/static/img/pro/header/pro-header-logo.png)bin2213 -> 2213 bytes
-rw-r--r--etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif (renamed from trunk/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif)bin474 -> 474 bytes
-rw-r--r--etherpad/src/static/img/pro/padlist/gear-drop.gif (renamed from trunk/etherpad/src/static/img/pro/padlist/gear-drop.gif)bin300 -> 300 bytes
-rw-r--r--etherpad/src/static/img/pro/padlist/paper-icon.gif (renamed from trunk/etherpad/src/static/img/pro/padlist/paper-icon.gif)bin619 -> 619 bytes
-rw-r--r--etherpad/src/static/img/pro/padlist/trash-icon.gif (renamed from trunk/etherpad/src/static/img/pro/padlist/trash-icon.gif)bin1080 -> 1080 bytes
-rw-r--r--etherpad/src/static/img/pro/topnav/pro-topnav-back.gif (renamed from trunk/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif)bin137 -> 137 bytes
-rw-r--r--etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif (renamed from trunk/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif)bin92 -> 92 bytes
-rw-r--r--etherpad/src/static/img/tinyplane.gif (renamed from trunk/etherpad/src/static/img/tinyplane.gif)bin59 -> 59 bytes
-rw-r--r--etherpad/src/static/img/wavejet.jpg (renamed from trunk/etherpad/src/static/img/wavejet.jpg)bin55379 -> 55379 bytes
-rw-r--r--etherpad/src/static/js/billing.js (renamed from trunk/etherpad/src/static/js/billing.js)0
-rw-r--r--etherpad/src/static/js/billing_shared.js (renamed from trunk/etherpad/src/static/js/billing_shared.js)0
-rw-r--r--etherpad/src/static/js/broadcast.js (renamed from trunk/etherpad/src/static/js/broadcast.js)0
-rw-r--r--etherpad/src/static/js/broadcast_revisions.js (renamed from trunk/etherpad/src/static/js/broadcast_revisions.js)0
-rw-r--r--etherpad/src/static/js/broadcast_slider.js (renamed from trunk/etherpad/src/static/js/broadcast_slider.js)0
-rw-r--r--etherpad/src/static/js/collab_client.js (renamed from trunk/etherpad/src/static/js/collab_client.js)0
-rw-r--r--etherpad/src/static/js/confirmation.js (renamed from trunk/etherpad/src/static/js/confirmation.js)0
-rw-r--r--etherpad/src/static/js/connection_diagnostics.js (renamed from trunk/etherpad/src/static/js/connection_diagnostics.js)0
-rw-r--r--etherpad/src/static/js/draggable.js (renamed from trunk/etherpad/src/static/js/draggable.js)0
-rw-r--r--etherpad/src/static/js/etherpad.js (renamed from trunk/etherpad/src/static/js/etherpad.js)0
-rwxr-xr-xetherpad/src/static/js/jquery-1.2.6.js (renamed from trunk/etherpad/src/static/js/jquery-1.2.6.js)0
-rw-r--r--etherpad/src/static/js/jquery-1.3.2.js (renamed from trunk/etherpad/src/static/js/jquery-1.3.2.js)0
-rw-r--r--etherpad/src/static/js/json2.js (renamed from trunk/etherpad/src/static/js/json2.js)0
-rw-r--r--etherpad/src/static/js/lib/jquery.contextmenu.js (renamed from trunk/etherpad/src/static/js/lib/jquery.contextmenu.js)0
-rw-r--r--etherpad/src/static/js/pad.js.old (renamed from trunk/etherpad/src/static/js/pad.js.old)0
-rw-r--r--etherpad/src/static/js/pad2.js (renamed from trunk/etherpad/src/static/js/pad2.js)0
-rw-r--r--etherpad/src/static/js/pad_chat.js (renamed from trunk/etherpad/src/static/js/pad_chat.js)0
-rw-r--r--etherpad/src/static/js/pad_connectionstatus.js (renamed from trunk/etherpad/src/static/js/pad_connectionstatus.js)0
-rw-r--r--etherpad/src/static/js/pad_cookie.js (renamed from trunk/etherpad/src/static/js/pad_cookie.js)0
-rw-r--r--etherpad/src/static/js/pad_docbar.js (renamed from trunk/etherpad/src/static/js/pad_docbar.js)0
-rw-r--r--etherpad/src/static/js/pad_editbar.js (renamed from trunk/etherpad/src/static/js/pad_editbar.js)0
-rw-r--r--etherpad/src/static/js/pad_editor.js (renamed from trunk/etherpad/src/static/js/pad_editor.js)0
-rw-r--r--etherpad/src/static/js/pad_impexp.js (renamed from trunk/etherpad/src/static/js/pad_impexp.js)0
-rw-r--r--etherpad/src/static/js/pad_modals.js (renamed from trunk/etherpad/src/static/js/pad_modals.js)0
-rw-r--r--etherpad/src/static/js/pad_savedrevs.js (renamed from trunk/etherpad/src/static/js/pad_savedrevs.js)0
-rw-r--r--etherpad/src/static/js/pad_userlist.js (renamed from trunk/etherpad/src/static/js/pad_userlist.js)0
-rw-r--r--etherpad/src/static/js/pad_utils.js (renamed from trunk/etherpad/src/static/js/pad_utils.js)24
-rw-r--r--etherpad/src/static/js/plugins.js21
-rw-r--r--etherpad/src/static/js/pricing.js (renamed from trunk/etherpad/src/static/js/pricing.js)0
-rw-r--r--etherpad/src/static/js/pro/guest-knock-client.js (renamed from trunk/etherpad/src/static/js/pro/guest-knock-client.js)0
-rw-r--r--etherpad/src/static/js/pro/pro-padlist-client.js (renamed from trunk/etherpad/src/static/js/pro/pro-padlist-client.js)0
-rw-r--r--etherpad/src/static/js/pro/signin-client.js (renamed from trunk/etherpad/src/static/js/pro/signin-client.js)0
-rw-r--r--etherpad/src/static/js/pulse.jquery.js (renamed from trunk/etherpad/src/static/js/pulse.jquery.js)0
-rw-r--r--etherpad/src/static/js/statpage.js (renamed from trunk/etherpad/src/static/js/statpage.js)0
-rw-r--r--etherpad/src/static/js/store.js (renamed from trunk/etherpad/src/static/js/store.js)0
-rw-r--r--etherpad/src/static/js/swfobject.js (renamed from trunk/etherpad/src/static/js/swfobject.js)0
-rw-r--r--etherpad/src/static/js/timeslider.js (renamed from trunk/etherpad/src/static/js/timeslider.js)0
-rw-r--r--etherpad/src/static/js/undo-xpopup.js (renamed from trunk/etherpad/src/static/js/undo-xpopup.js)0
-rwxr-xr-xetherpad/src/static/swf/vidplayer.swf (renamed from trunk/etherpad/src/static/swf/vidplayer.swf)bin41390 -> 41390 bytes
-rw-r--r--etherpad/src/templates/500_body.ejs (renamed from trunk/etherpad/src/templates/500_body.ejs)0
-rw-r--r--etherpad/src/templates/admin/pluginmanager.ejs126
-rw-r--r--etherpad/src/templates/beta/signup.ejs (renamed from trunk/etherpad/src/templates/beta/signup.ejs)0
-rw-r--r--etherpad/src/templates/email/eepnet_license_info.ejs (renamed from trunk/etherpad/src/templates/email/eepnet_license_info.ejs)0
-rw-r--r--etherpad/src/templates/email/eepnet_purchase_receipt.ejs (renamed from trunk/etherpad/src/templates/email/eepnet_purchase_receipt.ejs)0
-rw-r--r--etherpad/src/templates/email/padinvite.ejs (renamed from trunk/etherpad/src/templates/email/padinvite.ejs)0
-rw-r--r--etherpad/src/templates/email/pro_beta_invite.ejs (renamed from trunk/etherpad/src/templates/email/pro_beta_invite.ejs)0
-rw-r--r--etherpad/src/templates/email/pro_payment_failure.ejs (renamed from trunk/etherpad/src/templates/email/pro_payment_failure.ejs)0
-rw-r--r--etherpad/src/templates/email/pro_payment_receipt.ejs (renamed from trunk/etherpad/src/templates/email/pro_payment_receipt.ejs)0
-rw-r--r--etherpad/src/templates/framed/framedfooter.ejs (renamed from trunk/etherpad/src/templates/framed/framedfooter.ejs)0
-rw-r--r--etherpad/src/templates/framed/framedheader-pro.ejs (renamed from trunk/etherpad/src/templates/framed/framedheader-pro.ejs)0
-rw-r--r--etherpad/src/templates/framed/framedheader.ejs (renamed from trunk/etherpad/src/templates/framed/framedheader.ejs)0
-rw-r--r--etherpad/src/templates/framed/framedpage-pro.ejs (renamed from trunk/etherpad/src/templates/framed/framedpage-pro.ejs)0
-rw-r--r--etherpad/src/templates/framed/framedpage.ejs (renamed from trunk/etherpad/src/templates/framed/framedpage.ejs)0
-rw-r--r--etherpad/src/templates/html.ejs (renamed from trunk/etherpad/src/templates/html.ejs)0
-rw-r--r--etherpad/src/templates/main/home.ejs (renamed from trunk/etherpad/src/templates/main/home.ejs)0
-rw-r--r--etherpad/src/templates/main/pro_signup_body.ejs (renamed from trunk/etherpad/src/templates/main/pro_signup_body.ejs)0
-rw-r--r--etherpad/src/templates/misc/pad_default.ejs (renamed from trunk/etherpad/src/templates/misc/pad_default.ejs)3
-rw-r--r--etherpad/src/templates/notice.ejs (renamed from trunk/etherpad/src/templates/notice.ejs)0
-rw-r--r--etherpad/src/templates/pad/create_body.ejs (renamed from trunk/etherpad/src/templates/pad/create_body.ejs)0
-rw-r--r--etherpad/src/templates/pad/create_body_rafter.ejs (renamed from trunk/etherpad/src/templates/pad/create_body_rafter.ejs)0
-rw-r--r--etherpad/src/templates/pad/exporthtml.ejs (renamed from trunk/etherpad/src/templates/pad/exporthtml.ejs)0
-rw-r--r--etherpad/src/templates/pad/pad_body.ejs (renamed from trunk/etherpad/src/templates/pad/pad_body.ejs)0
-rw-r--r--etherpad/src/templates/pad/pad_body2.ejs (renamed from trunk/etherpad/src/templates/pad/pad_body2.ejs)0
-rw-r--r--etherpad/src/templates/pad/pad_content.ejs (renamed from trunk/etherpad/src/templates/pad/pad_content.ejs)0
-rw-r--r--etherpad/src/templates/pad/pad_download_link.ejs (renamed from trunk/etherpad/src/templates/pad/pad_download_link.ejs)0
-rw-r--r--etherpad/src/templates/pad/pad_iphone_body.ejs (renamed from trunk/etherpad/src/templates/pad/pad_iphone_body.ejs)0
-rw-r--r--etherpad/src/templates/pad/padfull_body.ejs (renamed from trunk/etherpad/src/templates/pad/padfull_body.ejs)0
-rw-r--r--etherpad/src/templates/pad/padslider_body.ejs (renamed from trunk/etherpad/src/templates/pad/padslider_body.ejs)0
-rw-r--r--etherpad/src/templates/pad/padview_body.ejs (renamed from trunk/etherpad/src/templates/pad/padview_body.ejs)0
-rw-r--r--etherpad/src/templates/pad/total_users_exceeded.ejs (renamed from trunk/etherpad/src/templates/pad/total_users_exceeded.ejs)0
-rw-r--r--etherpad/src/templates/pro-account/recover.ejs (renamed from trunk/etherpad/src/templates/pro-account/recover.ejs)0
-rw-r--r--etherpad/src/templates/pro-account/sign-in.ejs (renamed from trunk/etherpad/src/templates/pro-account/sign-in.ejs)0
-rw-r--r--etherpad/src/templates/pro-help/billing.ejs (renamed from trunk/etherpad/src/templates/pro-help/billing.ejs)0
-rw-r--r--etherpad/src/templates/pro-help/essentials.ejs (renamed from trunk/etherpad/src/templates/pro-help/essentials.ejs)0
-rw-r--r--etherpad/src/templates/pro-help/main.ejs (renamed from trunk/etherpad/src/templates/pro-help/main.ejs)0
-rw-r--r--etherpad/src/templates/pro-help/pro-help-template.ejs (renamed from trunk/etherpad/src/templates/pro-help/pro-help-template.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/account-welcome-email.ejs (renamed from trunk/etherpad/src/templates/pro/account/account-welcome-email.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/create-admin-account.ejs (renamed from trunk/etherpad/src/templates/pro/account/create-admin-account.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/forgot-password-email.ejs (renamed from trunk/etherpad/src/templates/pro/account/forgot-password-email.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/forgot-password.ejs (renamed from trunk/etherpad/src/templates/pro/account/forgot-password.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs (renamed from trunk/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/guest-knock.ejs (renamed from trunk/etherpad/src/templates/pro/account/guest-knock.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/my-account.ejs (renamed from trunk/etherpad/src/templates/pro/account/my-account.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/signin-guest.ejs (renamed from trunk/etherpad/src/templates/pro/account/signin-guest.ejs)0
-rw-r--r--etherpad/src/templates/pro/account/signin.ejs (renamed from trunk/etherpad/src/templates/pro/account/signin.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/account-manager.ejs (renamed from trunk/etherpad/src/templates/pro/admin/account-manager.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/admin-template.ejs (renamed from trunk/etherpad/src/templates/pro/admin/admin-template.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/admin.ejs (renamed from trunk/etherpad/src/templates/pro/admin/admin.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/billing-invoices.ejs (renamed from trunk/etherpad/src/templates/pro/admin/billing-invoices.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/delete-account.ejs (renamed from trunk/etherpad/src/templates/pro/admin/delete-account.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/manage-account.ejs (renamed from trunk/etherpad/src/templates/pro/admin/manage-account.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/manage-billing.ejs (renamed from trunk/etherpad/src/templates/pro/admin/manage-billing.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/new-account.ejs (renamed from trunk/etherpad/src/templates/pro/admin/new-account.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/pne-config.ejs (renamed from trunk/etherpad/src/templates/pro/admin/pne-config.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/pne-dashboard.ejs (renamed from trunk/etherpad/src/templates/pro/admin/pne-dashboard.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/pne-license-manager.ejs (renamed from trunk/etherpad/src/templates/pro/admin/pne-license-manager.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/pne-shell.ejs (renamed from trunk/etherpad/src/templates/pro/admin/pne-shell.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/pro-config.ejs (renamed from trunk/etherpad/src/templates/pro/admin/pro-config.ejs)0
-rw-r--r--etherpad/src/templates/pro/admin/single-invoice.ejs (renamed from trunk/etherpad/src/templates/pro/admin/single-invoice.ejs)0
-rw-r--r--etherpad/src/templates/pro/padlist/pro-padlist.ejs (renamed from trunk/etherpad/src/templates/pro/padlist/pro-padlist.ejs)0
-rw-r--r--etherpad/src/templates/pro/pro-payment-required.ejs (renamed from trunk/etherpad/src/templates/pro/pro-payment-required.ejs)0
-rw-r--r--etherpad/src/templates/pro/pro_home.ejs (renamed from trunk/etherpad/src/templates/pro/pro_home.ejs)0
-rw-r--r--etherpad/src/templates/statistics/stat_page.ejs (renamed from trunk/etherpad/src/templates/statistics/stat_page.ejs)0
-rw-r--r--etherpad/src/templates/store/csc-help.ejs (renamed from trunk/etherpad/src/templates/store/csc-help.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/billing-info.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/cart.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/cart.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/confirmation.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/license-info.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/license-info.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/purchase.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/purchase.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/receipt.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/receipt.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/summary.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/summary.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet-checkout/support-contract.ejs (renamed from trunk/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet_download.ejs (renamed from trunk/etherpad/src/templates/store/eepnet_download.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet_eval_nextsteps.ejs (renamed from trunk/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs)0
-rw-r--r--etherpad/src/templates/store/eepnet_eval_signup.ejs (renamed from trunk/etherpad/src/templates/store/eepnet_eval_signup.ejs)0
-rw-r--r--infrastructure/.gitignore (renamed from trunk/infrastructure/.gitignore)0
-rw-r--r--infrastructure/ace/.gitignore (renamed from trunk/infrastructure/ace/.gitignore)0
-rw-r--r--infrastructure/ace/README (renamed from trunk/infrastructure/ace/README)0
-rwxr-xr-xinfrastructure/ace/bin/make (renamed from trunk/infrastructure/ace/bin/make)2
-rwxr-xr-xinfrastructure/ace/bin/serve (renamed from trunk/infrastructure/ace/bin/serve)0
-rw-r--r--infrastructure/ace/blog.txt (renamed from trunk/infrastructure/ace/blog.txt)0
-rw-r--r--infrastructure/ace/build/.gitignore (renamed from trunk/infrastructure/ace/build/.gitignore)0
-rw-r--r--infrastructure/ace/build/index.html (renamed from trunk/infrastructure/ace/build/index.html)0
-rw-r--r--infrastructure/ace/build/jquery-1.2.1.js (renamed from trunk/infrastructure/ace/build/jquery-1.2.1.js)0
-rw-r--r--infrastructure/ace/build/testcode.js (renamed from trunk/infrastructure/ace/build/testcode.js)0
-rw-r--r--infrastructure/ace/easysync-notes.txt (renamed from trunk/infrastructure/ace/easysync-notes.txt)0
l---------infrastructure/ace/lib/rhino-js-1.7r1.jar (renamed from trunk/infrastructure/ace/lib/rhino-js-1.7r1.jar)0
l---------infrastructure/ace/lib/yuicompressor-2.4-appjet.jar (renamed from trunk/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar)0
-rw-r--r--infrastructure/ace/notes.txt (renamed from trunk/infrastructure/ace/notes.txt)0
-rw-r--r--infrastructure/ace/www/ace2_common.js (renamed from trunk/infrastructure/ace/www/ace2_common.js)0
-rw-r--r--infrastructure/ace/www/ace2_common_dev.js (renamed from trunk/infrastructure/ace/www/ace2_common_dev.js)0
-rw-r--r--infrastructure/ace/www/ace2_inner.js (renamed from trunk/infrastructure/ace/www/ace2_inner.js)0
-rw-r--r--infrastructure/ace/www/ace2_outer.js (renamed from trunk/infrastructure/ace/www/ace2_outer.js)0
-rw-r--r--infrastructure/ace/www/ace2_wrapper.js (renamed from trunk/infrastructure/ace/www/ace2_wrapper.js)0
-rw-r--r--infrastructure/ace/www/bbtree.js (renamed from trunk/infrastructure/ace/www/bbtree.js)0
-rw-r--r--infrastructure/ace/www/changesettracker.js (renamed from trunk/infrastructure/ace/www/changesettracker.js)0
-rw-r--r--infrastructure/ace/www/colorutils.js (renamed from trunk/infrastructure/ace/www/colorutils.js)0
-rw-r--r--infrastructure/ace/www/contentcollector.js (renamed from trunk/infrastructure/ace/www/contentcollector.js)0
-rw-r--r--infrastructure/ace/www/cssmanager.js (renamed from trunk/infrastructure/ace/www/cssmanager.js)0
-rw-r--r--infrastructure/ace/www/dev.html (renamed from trunk/infrastructure/ace/www/dev.html)0
-rw-r--r--infrastructure/ace/www/domline.js (renamed from trunk/infrastructure/ace/www/domline.js)25
-rw-r--r--infrastructure/ace/www/easy_sync.js (renamed from trunk/infrastructure/ace/www/easy_sync.js)0
-rw-r--r--infrastructure/ace/www/easysync2.js (renamed from trunk/infrastructure/ace/www/easysync2.js)0
-rw-r--r--infrastructure/ace/www/easysync2_tests.js (renamed from trunk/infrastructure/ace/www/easysync2_tests.js)0
-rw-r--r--infrastructure/ace/www/editor.css (renamed from trunk/infrastructure/ace/www/editor.css)0
-rw-r--r--infrastructure/ace/www/firebug/errorIcon.png (renamed from trunk/infrastructure/ace/www/firebug/errorIcon.png)bin457 -> 457 bytes
-rw-r--r--infrastructure/ace/www/firebug/firebug.css (renamed from trunk/infrastructure/ace/www/firebug/firebug.css)0
-rw-r--r--infrastructure/ace/www/firebug/firebug.html (renamed from trunk/infrastructure/ace/www/firebug/firebug.html)0
-rw-r--r--infrastructure/ace/www/firebug/firebug.js (renamed from trunk/infrastructure/ace/www/firebug/firebug.js)0
-rw-r--r--infrastructure/ace/www/firebug/firebugx.js (renamed from trunk/infrastructure/ace/www/firebug/firebugx.js)0
-rw-r--r--infrastructure/ace/www/firebug/infoIcon.png (renamed from trunk/infrastructure/ace/www/firebug/infoIcon.png)bin524 -> 524 bytes
-rw-r--r--infrastructure/ace/www/firebug/warningIcon.png (renamed from trunk/infrastructure/ace/www/firebug/warningIcon.png)bin516 -> 516 bytes
-rw-r--r--infrastructure/ace/www/index.html (renamed from trunk/infrastructure/ace/www/index.html)0
-rw-r--r--infrastructure/ace/www/inner.css (renamed from trunk/infrastructure/ace/www/inner.css)0
-rw-r--r--infrastructure/ace/www/jquery-1.2.1.js (renamed from trunk/infrastructure/ace/www/jquery-1.2.1.js)0
-rw-r--r--infrastructure/ace/www/lang_html.js (renamed from trunk/infrastructure/ace/www/lang_html.js)0
-rw-r--r--infrastructure/ace/www/lang_js.js (renamed from trunk/infrastructure/ace/www/lang_js.js)0
-rw-r--r--infrastructure/ace/www/lexer_support.js (renamed from trunk/infrastructure/ace/www/lexer_support.js)0
-rw-r--r--infrastructure/ace/www/linestylefilter.js (renamed from trunk/infrastructure/ace/www/linestylefilter.js)148
-rw-r--r--infrastructure/ace/www/magicdom.js (renamed from trunk/infrastructure/ace/www/magicdom.js)0
-rw-r--r--infrastructure/ace/www/multilang_lexer.js (renamed from trunk/infrastructure/ace/www/multilang_lexer.js)0
-rw-r--r--infrastructure/ace/www/processing.js (renamed from trunk/infrastructure/ace/www/processing.js)0
-rw-r--r--infrastructure/ace/www/profiler.js (renamed from trunk/infrastructure/ace/www/profiler.js)0
-rw-r--r--infrastructure/ace/www/skiplist.js (renamed from trunk/infrastructure/ace/www/skiplist.js)0
-rw-r--r--infrastructure/ace/www/spanlist.js (renamed from trunk/infrastructure/ace/www/spanlist.js)0
-rw-r--r--infrastructure/ace/www/syntax-new.css (renamed from trunk/infrastructure/ace/www/syntax-new.css)0
-rw-r--r--infrastructure/ace/www/syntax.css (renamed from trunk/infrastructure/ace/www/syntax.css)0
-rw-r--r--infrastructure/ace/www/test.html (renamed from trunk/infrastructure/ace/www/test.html)0
-rw-r--r--infrastructure/ace/www/testcode.js (renamed from trunk/infrastructure/ace/www/testcode.js)0
-rw-r--r--infrastructure/ace/www/toSource.js (renamed from trunk/infrastructure/ace/www/toSource.js)0
-rw-r--r--infrastructure/ace/www/undomodule.js (renamed from trunk/infrastructure/ace/www/undomodule.js)0
-rw-r--r--infrastructure/ace/www/virtual_lines.js (renamed from trunk/infrastructure/ace/www/virtual_lines.js)0
-rwxr-xr-xinfrastructure/bin/classpath.sh (renamed from trunk/infrastructure/bin/classpath.sh)0
-rwxr-xr-xinfrastructure/bin/comp.sh (renamed from trunk/infrastructure/bin/comp.sh)0
-rw-r--r--infrastructure/bin/compilecache.sh (renamed from trunk/infrastructure/bin/compilecache.sh)0
-rwxr-xr-xinfrastructure/bin/jscomp.sh (renamed from trunk/infrastructure/bin/jscomp.sh)0
-rwxr-xr-xinfrastructure/bin/makejar.sh (renamed from trunk/infrastructure/bin/makejar.sh)0
-rwxr-xr-xinfrastructure/bin/makesars.sh (renamed from trunk/infrastructure/bin/makesars.sh)0
-rwxr-xr-xinfrastructure/bin/run.sh (renamed from trunk/infrastructure/bin/run.sh)0
-rw-r--r--infrastructure/com.etherpad.openofficeservice/importexport.scala (renamed from trunk/infrastructure/com.etherpad.openofficeservice/importexport.scala)0
-rw-r--r--infrastructure/com.etherpad/easysync2support.scala (renamed from trunk/infrastructure/com.etherpad/easysync2support.scala)0
-rw-r--r--infrastructure/com.etherpad/licensing.scala (renamed from trunk/infrastructure/com.etherpad/licensing.scala)0
-rw-r--r--infrastructure/com.etherpad/main.scala (renamed from trunk/infrastructure/com.etherpad/main.scala)0
-rw-r--r--infrastructure/framework-src/modules/atomfeed.js (renamed from trunk/infrastructure/framework-src/modules/atomfeed.js)0
-rw-r--r--infrastructure/framework-src/modules/blob.js (renamed from trunk/infrastructure/framework-src/modules/blob.js)0
-rw-r--r--infrastructure/framework-src/modules/cache_utils.js (renamed from trunk/infrastructure/framework-src/modules/cache_utils.js)0
-rw-r--r--infrastructure/framework-src/modules/comet.js (renamed from trunk/infrastructure/framework-src/modules/comet.js)0
-rw-r--r--infrastructure/framework-src/modules/dateutils.js (renamed from trunk/infrastructure/framework-src/modules/dateutils.js)0
-rw-r--r--infrastructure/framework-src/modules/dispatch.js (renamed from trunk/infrastructure/framework-src/modules/dispatch.js)0
-rw-r--r--infrastructure/framework-src/modules/ejs.js (renamed from trunk/infrastructure/framework-src/modules/ejs.js)0
-rw-r--r--infrastructure/framework-src/modules/email.js (renamed from trunk/infrastructure/framework-src/modules/email.js)0
-rw-r--r--infrastructure/framework-src/modules/exceptionutils.js (renamed from trunk/infrastructure/framework-src/modules/exceptionutils.js)0
-rw-r--r--infrastructure/framework-src/modules/execution.js (renamed from trunk/infrastructure/framework-src/modules/execution.js)5
-rw-r--r--infrastructure/framework-src/modules/fastJSON.js (renamed from trunk/infrastructure/framework-src/modules/fastJSON.js)0
-rw-r--r--infrastructure/framework-src/modules/faststatic.js (renamed from trunk/infrastructure/framework-src/modules/faststatic.js)0
-rw-r--r--infrastructure/framework-src/modules/fileutils.js (renamed from trunk/infrastructure/framework-src/modules/fileutils.js)0
-rw-r--r--infrastructure/framework-src/modules/funhtml.js (renamed from trunk/infrastructure/framework-src/modules/funhtml.js)0
-rw-r--r--infrastructure/framework-src/modules/global/appjet.js (renamed from trunk/infrastructure/framework-src/modules/global/appjet.js)0
-rw-r--r--infrastructure/framework-src/modules/global/request.js (renamed from trunk/infrastructure/framework-src/modules/global/request.js)0
-rw-r--r--infrastructure/framework-src/modules/global/response.js (renamed from trunk/infrastructure/framework-src/modules/global/response.js)0
-rw-r--r--infrastructure/framework-src/modules/image.js (renamed from trunk/infrastructure/framework-src/modules/image.js)0
-rw-r--r--infrastructure/framework-src/modules/jsutils.js (renamed from trunk/infrastructure/framework-src/modules/jsutils.js)0
-rw-r--r--infrastructure/framework-src/modules/netutils.js (renamed from trunk/infrastructure/framework-src/modules/netutils.js)0
-rw-r--r--infrastructure/framework-src/modules/process.js (renamed from trunk/infrastructure/framework-src/modules/process.js)0
-rw-r--r--infrastructure/framework-src/modules/profiler.js (renamed from trunk/infrastructure/framework-src/modules/profiler.js)0
-rw-r--r--infrastructure/framework-src/modules/sessions.js (renamed from trunk/infrastructure/framework-src/modules/sessions.js)0
-rw-r--r--infrastructure/framework-src/modules/sqlbase/persistent_vars.js (renamed from trunk/infrastructure/framework-src/modules/sqlbase/persistent_vars.js)0
-rw-r--r--infrastructure/framework-src/modules/sqlbase/sqlbase.js (renamed from trunk/infrastructure/framework-src/modules/sqlbase/sqlbase.js)0
-rw-r--r--infrastructure/framework-src/modules/sqlbase/sqlcommon.js (renamed from trunk/infrastructure/framework-src/modules/sqlbase/sqlcommon.js)0
-rw-r--r--infrastructure/framework-src/modules/sqlbase/sqlobj.js (renamed from trunk/infrastructure/framework-src/modules/sqlbase/sqlobj.js)0
-rw-r--r--infrastructure/framework-src/modules/stringutils.js (renamed from trunk/infrastructure/framework-src/modules/stringutils.js)0
-rw-r--r--infrastructure/framework-src/modules/sync.js (renamed from trunk/infrastructure/framework-src/modules/sync.js)0
-rw-r--r--infrastructure/framework-src/modules/timer.js (renamed from trunk/infrastructure/framework-src/modules/timer.js)0
-rw-r--r--infrastructure/framework-src/modules/varz.js (renamed from trunk/infrastructure/framework-src/modules/varz.js)0
-rw-r--r--infrastructure/framework-src/modules/yuicompressor.js (renamed from trunk/infrastructure/framework-src/modules/yuicompressor.js)0
-rw-r--r--infrastructure/framework-src/oncomet.js (renamed from trunk/infrastructure/framework-src/oncomet.js)0
-rw-r--r--infrastructure/framework-src/onerror.js (renamed from trunk/infrastructure/framework-src/onerror.js)0
-rw-r--r--infrastructure/framework-src/onprint.js (renamed from trunk/infrastructure/framework-src/onprint.js)0
-rw-r--r--infrastructure/framework-src/onrequest.js (renamed from trunk/infrastructure/framework-src/onrequest.js)0
-rw-r--r--infrastructure/framework-src/onreset.js (renamed from trunk/infrastructure/framework-src/onreset.js)0
-rw-r--r--infrastructure/framework-src/onsars.js (renamed from trunk/infrastructure/framework-src/onsars.js)0
-rw-r--r--infrastructure/framework-src/onscheduledtask.js (renamed from trunk/infrastructure/framework-src/onscheduledtask.js)0
-rw-r--r--infrastructure/framework-src/onshutdown.js (renamed from trunk/infrastructure/framework-src/onshutdown.js)0
-rw-r--r--infrastructure/framework-src/onstartup.js (renamed from trunk/infrastructure/framework-src/onstartup.js)0
-rw-r--r--infrastructure/framework-src/onsyntaxerror.js (renamed from trunk/infrastructure/framework-src/onsyntaxerror.js)0
-rw-r--r--infrastructure/framework-src/postamble.js (renamed from trunk/infrastructure/framework-src/postamble.js)0
-rw-r--r--infrastructure/framework-src/preamble.js (renamed from trunk/infrastructure/framework-src/preamble.js)0
-rw-r--r--infrastructure/framework-src/syntaxerror.js (renamed from trunk/infrastructure/framework-src/syntaxerror.js)0
-rw-r--r--infrastructure/lib/activation.jar (renamed from trunk/infrastructure/lib/activation.jar)bin56290 -> 56290 bytes
-rw-r--r--infrastructure/lib/c3p0-0.9.1.2.jar (renamed from trunk/infrastructure/lib/c3p0-0.9.1.2.jar)bin610790 -> 610790 bytes
-rw-r--r--infrastructure/lib/commons-lang-2.4.jar (renamed from trunk/infrastructure/lib/commons-lang-2.4.jar)bin261809 -> 261809 bytes
-rw-r--r--infrastructure/lib/derby-10.5.1.1.jar (renamed from trunk/infrastructure/lib/derby-10.5.1.1.jar)bin2513361 -> 2513361 bytes
-rw-r--r--infrastructure/lib/derbytools.jar (renamed from trunk/infrastructure/lib/derbytools.jar)bin155796 -> 155796 bytes
-rw-r--r--infrastructure/lib/dnsjava-2.0.6.jar (renamed from trunk/infrastructure/lib/dnsjava-2.0.6.jar)bin268823 -> 268823 bytes
-rw-r--r--infrastructure/lib/jetty-6.1.20.jar (renamed from trunk/infrastructure/lib/jetty-6.1.20.jar)bin533605 -> 533605 bytes
-rw-r--r--infrastructure/lib/jetty-sslengine-6.1.20.jar (renamed from trunk/infrastructure/lib/jetty-sslengine-6.1.20.jar)bin18285 -> 18285 bytes
-rw-r--r--infrastructure/lib/jetty-util-6.1.20.jar (renamed from trunk/infrastructure/lib/jetty-util-6.1.20.jar)bin176016 -> 176016 bytes
-rw-r--r--infrastructure/lib/json.jar (renamed from trunk/infrastructure/lib/json.jar)bin42335 -> 42335 bytes
-rw-r--r--infrastructure/lib/mail.jar (renamed from trunk/infrastructure/lib/mail.jar)bin356519 -> 356519 bytes
-rw-r--r--infrastructure/lib/manifest (renamed from trunk/infrastructure/lib/manifest)0
-rw-r--r--infrastructure/lib/rhino-js-1.7r1.jar (renamed from trunk/infrastructure/lib/rhino-js-1.7r1.jar)bin769000 -> 769000 bytes
-rw-r--r--infrastructure/lib/sanselan-0.94aj.jar (renamed from trunk/infrastructure/lib/sanselan-0.94aj.jar)bin390426 -> 390426 bytes
-rw-r--r--infrastructure/lib/servlet-api-2.5-20081211.jar (renamed from trunk/infrastructure/lib/servlet-api-2.5-20081211.jar)bin134190 -> 134190 bytes
-rw-r--r--infrastructure/lib/tagsoup-1.2.jar (renamed from trunk/infrastructure/lib/tagsoup-1.2.jar)bin90023 -> 90023 bytes
-rw-r--r--infrastructure/lib/yuicompressor-2.4-appjet.jar (renamed from trunk/infrastructure/lib/yuicompressor-2.4-appjet.jar)bin574932 -> 574932 bytes
-rw-r--r--infrastructure/net.appjet.ajstdlib/ajstdlib.scala (renamed from trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala)0
-rw-r--r--infrastructure/net.appjet.ajstdlib/sqlbase.scala (renamed from trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala)0
-rw-r--r--infrastructure/net.appjet.ajstdlib/streaming-client.js (renamed from trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js)0
-rw-r--r--infrastructure/net.appjet.ajstdlib/streaming-iframe.html (renamed from trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html)0
-rw-r--r--infrastructure/net.appjet.ajstdlib/streaming.scala (renamed from trunk/infrastructure/net.appjet.ajstdlib/streaming.scala)0
-rw-r--r--infrastructure/net.appjet.ajstdlib/timer.scala (renamed from trunk/infrastructure/net.appjet.ajstdlib/timer.scala)0
-rw-r--r--infrastructure/net.appjet.bodylock/bodylock.scala (renamed from trunk/infrastructure/net.appjet.bodylock/bodylock.scala)0
-rw-r--r--infrastructure/net.appjet.bodylock/compressor.scala (renamed from trunk/infrastructure/net.appjet.bodylock/compressor.scala)0
-rw-r--r--infrastructure/net.appjet.common.cli/cli.scala (renamed from trunk/infrastructure/net.appjet.common.cli/cli.scala)0
-rw-r--r--infrastructure/net.appjet.common.sars/sars.scala (renamed from trunk/infrastructure/net.appjet.common.sars/sars.scala)0
-rw-r--r--infrastructure/net.appjet.common.sars/sha1.scala (renamed from trunk/infrastructure/net.appjet.common.sars/sha1.scala)0
-rw-r--r--infrastructure/net.appjet.common/rhino/rhinospect.scala (renamed from trunk/infrastructure/net.appjet.common/rhino/rhinospect.scala)0
-rw-r--r--infrastructure/net.appjet.common/util/BCrypt.java (renamed from trunk/infrastructure/net.appjet.common/util/BCrypt.java)0
-rw-r--r--infrastructure/net.appjet.common/util/BetterFile.java (renamed from trunk/infrastructure/net.appjet.common/util/BetterFile.java)0
-rw-r--r--infrastructure/net.appjet.common/util/ClassReload.java (renamed from trunk/infrastructure/net.appjet.common/util/ClassReload.java)0
-rw-r--r--infrastructure/net.appjet.common/util/ExpiringMapping.java (renamed from trunk/infrastructure/net.appjet.common/util/ExpiringMapping.java)0
-rw-r--r--infrastructure/net.appjet.common/util/HttpServletRequestFactory.java (renamed from trunk/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java)0
-rw-r--r--infrastructure/net.appjet.common/util/LenientFormatter.java (renamed from trunk/infrastructure/net.appjet.common/util/LenientFormatter.java)0
-rw-r--r--infrastructure/net.appjet.common/util/LimitedSizeMapping.java (renamed from trunk/infrastructure/net.appjet.common/util/LimitedSizeMapping.java)0
-rw-r--r--infrastructure/net.appjet.oui/ConfigParam.java (renamed from trunk/infrastructure/net.appjet.oui/ConfigParam.java)0
-rw-r--r--infrastructure/net.appjet.oui/FastJSON.scala (renamed from trunk/infrastructure/net.appjet.oui/FastJSON.scala)0
-rw-r--r--infrastructure/net.appjet.oui/GeneratedConfigParam.java (renamed from trunk/infrastructure/net.appjet.oui/GeneratedConfigParam.java)0
-rw-r--r--infrastructure/net.appjet.oui/config.scala (renamed from trunk/infrastructure/net.appjet.oui/config.scala)0
-rw-r--r--infrastructure/net.appjet.oui/dynamicvar.scala (renamed from trunk/infrastructure/net.appjet.oui/dynamicvar.scala)0
-rw-r--r--infrastructure/net.appjet.oui/encryption.scala (renamed from trunk/infrastructure/net.appjet.oui/encryption.scala)0
-rw-r--r--infrastructure/net.appjet.oui/execution.scala (renamed from trunk/infrastructure/net.appjet.oui/execution.scala)0
-rw-r--r--infrastructure/net.appjet.oui/files.scala (renamed from trunk/infrastructure/net.appjet.oui/files.scala)0
-rw-r--r--infrastructure/net.appjet.oui/logging.scala (renamed from trunk/infrastructure/net.appjet.oui/logging.scala)0
-rw-r--r--infrastructure/net.appjet.oui/main.scala (renamed from trunk/infrastructure/net.appjet.oui/main.scala)0
-rw-r--r--infrastructure/net.appjet.oui/monitoring.scala (renamed from trunk/infrastructure/net.appjet.oui/monitoring.scala)0
-rw-r--r--infrastructure/net.appjet.oui/network.scala (renamed from trunk/infrastructure/net.appjet.oui/network.scala)0
-rw-r--r--infrastructure/net.appjet.oui/servermodel.scala (renamed from trunk/infrastructure/net.appjet.oui/servermodel.scala)0
-rw-r--r--infrastructure/net.appjet.oui/stats.scala (renamed from trunk/infrastructure/net.appjet.oui/stats.scala)0
-rw-r--r--infrastructure/net.appjet.oui/synchronizer.scala (renamed from trunk/infrastructure/net.appjet.oui/synchronizer.scala)0
-rw-r--r--infrastructure/net.appjet.oui/util.scala (renamed from trunk/infrastructure/net.appjet.oui/util.scala)0
-rw-r--r--infrastructure/rhino1_7R1/apiClasses.properties (renamed from trunk/infrastructure/rhino1_7R1/apiClasses.properties)0
-rw-r--r--infrastructure/rhino1_7R1/build-date (renamed from trunk/infrastructure/rhino1_7R1/build-date)0
-rw-r--r--infrastructure/rhino1_7R1/build.properties (renamed from trunk/infrastructure/rhino1_7R1/build.properties)0
-rw-r--r--infrastructure/rhino1_7R1/build.xml (renamed from trunk/infrastructure/rhino1_7R1/build.xml)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/build.xml (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/build.xml)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java)0
-rw-r--r--infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java (renamed from trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/Control.java (renamed from trunk/infrastructure/rhino1_7R1/examples/Control.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/Counter.java (renamed from trunk/infrastructure/rhino1_7R1/examples/Counter.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/CounterTest.java (renamed from trunk/infrastructure/rhino1_7R1/examples/CounterTest.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/DynamicScopes.java (renamed from trunk/infrastructure/rhino1_7R1/examples/DynamicScopes.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/E4X/e4x_example.js (renamed from trunk/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js)0
-rw-r--r--infrastructure/rhino1_7R1/examples/File.java (renamed from trunk/infrastructure/rhino1_7R1/examples/File.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/Foo.java (renamed from trunk/infrastructure/rhino1_7R1/examples/Foo.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/Matrix.java (renamed from trunk/infrastructure/rhino1_7R1/examples/Matrix.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/NervousText.html (renamed from trunk/infrastructure/rhino1_7R1/examples/NervousText.html)0
-rw-r--r--infrastructure/rhino1_7R1/examples/NervousText.js (renamed from trunk/infrastructure/rhino1_7R1/examples/NervousText.js)0
-rw-r--r--infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java (renamed from trunk/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/RunScript.java (renamed from trunk/infrastructure/rhino1_7R1/examples/RunScript.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/RunScript2.java (renamed from trunk/infrastructure/rhino1_7R1/examples/RunScript2.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/RunScript3.java (renamed from trunk/infrastructure/rhino1_7R1/examples/RunScript3.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/RunScript4.java (renamed from trunk/infrastructure/rhino1_7R1/examples/RunScript4.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/Shell.java (renamed from trunk/infrastructure/rhino1_7R1/examples/Shell.java)0
-rw-r--r--infrastructure/rhino1_7R1/examples/SwingApplication.js (renamed from trunk/infrastructure/rhino1_7R1/examples/SwingApplication.js)0
-rw-r--r--infrastructure/rhino1_7R1/examples/checkParam.js (renamed from trunk/infrastructure/rhino1_7R1/examples/checkParam.js)0
-rw-r--r--infrastructure/rhino1_7R1/examples/enum.js (renamed from trunk/infrastructure/rhino1_7R1/examples/enum.js)0
-rw-r--r--infrastructure/rhino1_7R1/examples/jsdoc.js (renamed from trunk/infrastructure/rhino1_7R1/examples/jsdoc.js)0
-rw-r--r--infrastructure/rhino1_7R1/examples/liveConnect.js (renamed from trunk/infrastructure/rhino1_7R1/examples/liveConnect.js)0
-rw-r--r--infrastructure/rhino1_7R1/examples/unique.js (renamed from trunk/infrastructure/rhino1_7R1/examples/unique.js)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/allclasses-frame.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/constant-values.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/constant-values.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/deprecated-list.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/deprecated-list.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/help-doc.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/help-doc.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/index-all.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/index-all.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/index.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/index.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/overview-frame.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/overview-frame.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/overview-summary.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/overview-summary.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/overview-tree.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/overview-tree.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/package-list (renamed from trunk/infrastructure/rhino1_7R1/javadoc/package-list)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/resources/inherit.gif (renamed from trunk/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif)bin57 -> 57 bytes
-rw-r--r--infrastructure/rhino1_7R1/javadoc/serialized-form.html (renamed from trunk/infrastructure/rhino1_7R1/javadoc/serialized-form.html)0
-rw-r--r--infrastructure/rhino1_7R1/javadoc/stylesheet.css (renamed from trunk/infrastructure/rhino1_7R1/javadoc/stylesheet.css)0
-rw-r--r--infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar (renamed from trunk/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar)bin23630 -> 23630 bytes
-rw-r--r--infrastructure/rhino1_7R1/lib/xbean.jar (renamed from trunk/infrastructure/rhino1_7R1/lib/xbean.jar)bin2664574 -> 2664574 bytes
-rw-r--r--infrastructure/rhino1_7R1/src/build.xml (renamed from trunk/infrastructure/rhino1_7R1/src/build.xml)0
-rw-r--r--infrastructure/rhino1_7R1/src/manifest (renamed from trunk/infrastructure/rhino1_7R1/src/manifest)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java)0
-rw-r--r--infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java (renamed from trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/base.skip (renamed from trunk/infrastructure/rhino1_7R1/testsrc/base.skip)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/build.xml (renamed from trunk/infrastructure/rhino1_7R1/testsrc/build.xml)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/opt1.skip (renamed from trunk/infrastructure/rhino1_7R1/testsrc/opt1.skip)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java (renamed from trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java (renamed from trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java (renamed from trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html (renamed from trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java (renamed from trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java (renamed from trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java)0
-rw-r--r--infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java (renamed from trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/build.xml (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/build.xml)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java)0
-rw-r--r--infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java (renamed from trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/build.xml (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/build.xml)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java)0
-rw-r--r--infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java (renamed from trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java)0
-rw-r--r--infrastructure/yuicompressor/lib/jargs-1.0.jar (renamed from trunk/infrastructure/yuicompressor/lib/jargs-1.0.jar)bin11406 -> 11406 bytes
-rw-r--r--infrastructure/yuicompressor/lib/rhino-yuicompressor.jar (renamed from trunk/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar)bin538064 -> 538064 bytes
-rwxr-xr-xinfrastructure/yuicompressor/make.sh (renamed from trunk/infrastructure/yuicompressor/make.sh)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java)0
-rw-r--r--infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java (renamed from trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java)0
-rw-r--r--infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig (renamed from trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig)0
-rw-r--r--trunk/etherpad/src/etherpad/collab/ace/contentcollector.js509
-rw-r--r--trunk/etherpad/src/etherpad/collab/ace/domline.js210
-rw-r--r--trunk/etherpad/src/etherpad/collab/ace/easysync1.js923
-rw-r--r--trunk/etherpad/src/etherpad/collab/ace/easysync2.js1968
-rw-r--r--trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js877
-rw-r--r--trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js247
-rw-r--r--trunk/etherpad/src/etherpad/db_migrations/m0038_pad_tag_tables.js35
-rw-r--r--trunk/etherpad/src/static/js/ace.js29
-rw-r--r--trunk/etherpad/src/static/js/colorutils.js91
-rw-r--r--trunk/etherpad/src/static/js/cssmanager_client.js88
-rw-r--r--trunk/etherpad/src/static/js/domline_client.js210
-rw-r--r--trunk/etherpad/src/static/js/easysync2_client.js1777
-rw-r--r--trunk/etherpad/src/static/js/linestylefilter_client.js246
1115 files changed, 918 insertions, 7410 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e48532d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,13 @@
+*~
+etherpad/src/etherpad/collab/ace/contentcollector.js
+etherpad/src/etherpad/collab/ace/domline.js
+etherpad/src/etherpad/collab/ace/easysync1.js
+etherpad/src/etherpad/collab/ace/easysync2.js
+etherpad/src/etherpad/collab/ace/easysync2_tests.js
+etherpad/src/etherpad/collab/ace/linestylefilter.js
+etherpad/src/static/js/ace.js
+etherpad/src/static/js/colorutils.js
+etherpad/src/static/js/cssmanager_client.js
+etherpad/src/static/js/domline_client.js
+etherpad/src/static/js/easysync2_client.js
+etherpad/src/static/js/linestylefilter_client.js
diff --git a/trunk/COPYING b/COPYING
index d645695..d645695 100644
--- a/trunk/COPYING
+++ b/COPYING
diff --git a/trunk/README b/LICENSE
index a214853..c069ad6 100644
--- a/trunk/README
+++ b/LICENSE
@@ -1,9 +1,3 @@
-EtherPad is a web-based realtime collaborative document editor.
-
-EtherPad currently lives at http://code.google.com/p/etherpad
-
-For instructions to build and run EtherPad, see: http://code.google.com/p/etherpad/wiki/Instructions
-
This distribution includes some code written by other organizations.
The rest is Copyright 2007-2009 Google Inc. and licensed under the Apache License 2.0.
diff --git a/README.hooks b/README.hooks
new file mode 100644
index 0000000..d15949c
--- /dev/null
+++ b/README.hooks
@@ -0,0 +1,24 @@
+Hooks that plugins can provide
+
+All hooks must return either undefined/null or a list of return values. This might be an empty list or a list of just one value.
+
+handlePath
+ Registers new urls to serve
+ Parameters: None
+ Returns: Parameter suitable for Dispatcher
+renderPageBodyPre
+ Adds extra html before the body of a page
+ Parameters: bodyFileName, data, plugin
+ Returns: String(s) of html
+renderPageBodyPost
+ Adds extra html after the body of a page
+ Parameters: bodyFileName, data, plugin
+ Returns: String(s) of html
+serverStartup
+ Run right after server startup
+ Parameters: None
+ Returns: None
+serverShutdown
+ Run before server shutdown
+ Parameters: None
+ Returns: None
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e8df528
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+# About Etherpad
+EtherPad is a web-based realtime collaborative document editor.
+
+EtherPad currently lives at http://etherpad.org
+
+For instructions to build and run EtherPad, see: http://doc.etherpad.org/ep/tag/?query=installation
diff --git a/branches/test.txt b/branches/test.txt
deleted file mode 100644
index faab00e..0000000
--- a/branches/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-this is a test.
diff --git a/trunk/etherpad/.gitignore b/etherpad/.gitignore
index 5f41ae6..5f41ae6 100644
--- a/trunk/etherpad/.gitignore
+++ b/etherpad/.gitignore
diff --git a/trunk/etherpad/bin/.gitignore b/etherpad/bin/.gitignore
index 00fd678..00fd678 100644
--- a/trunk/etherpad/bin/.gitignore
+++ b/etherpad/bin/.gitignore
diff --git a/trunk/etherpad/bin/rebuildjar.sh b/etherpad/bin/rebuildjar.sh
index 9e802c2..9e802c2 100755
--- a/trunk/etherpad/bin/rebuildjar.sh
+++ b/etherpad/bin/rebuildjar.sh
diff --git a/trunk/etherpad/bin/run-local.sh b/etherpad/bin/run-local.sh
index 72b0cc1..72b0cc1 100755
--- a/trunk/etherpad/bin/run-local.sh
+++ b/etherpad/bin/run-local.sh
diff --git a/trunk/etherpad/bin/setup-mysql-db.sh b/etherpad/bin/setup-mysql-db.sh
index d823a9e..d823a9e 100755
--- a/trunk/etherpad/bin/setup-mysql-db.sh
+++ b/etherpad/bin/setup-mysql-db.sh
diff --git a/trunk/etherpad/etc/etherpad.localdev-default.properties b/etherpad/etc/etherpad.localdev-default.properties
index 89c9c4f..c2a2122 100644
--- a/trunk/etherpad/etc/etherpad.localdev-default.properties
+++ b/etherpad/etc/etherpad.localdev-default.properties
@@ -14,4 +14,3 @@ modulePath = ./src
transportPrefix = /comet
transportUseWildcardSubdomains = true
useVirtualFileRoot = ./src
-motdPage = http://localhost:9000/ep/pad/view/ro.7zur9ouBTk9/latest?fullScreen=1&slider=0&sidebar=0
diff --git a/trunk/etherpad/lib/dnsjava-2.0.6.jar b/etherpad/lib/dnsjava-2.0.6.jar
index e41f9b0..e41f9b0 100644
--- a/trunk/etherpad/lib/dnsjava-2.0.6.jar
+++ b/etherpad/lib/dnsjava-2.0.6.jar
Binary files differ
diff --git a/trunk/etherpad/lib/jbcrypt-0.2.jar b/etherpad/lib/jbcrypt-0.2.jar
index 109033c..109033c 100644
--- a/trunk/etherpad/lib/jbcrypt-0.2.jar
+++ b/etherpad/lib/jbcrypt-0.2.jar
Binary files differ
diff --git a/trunk/etherpad/lib/jcommon-1.0.15.jar b/etherpad/lib/jcommon-1.0.15.jar
index d0dc26d..d0dc26d 100644
--- a/trunk/etherpad/lib/jcommon-1.0.15.jar
+++ b/etherpad/lib/jcommon-1.0.15.jar
Binary files differ
diff --git a/trunk/etherpad/lib/jfreechart-1.0.12.jar b/etherpad/lib/jfreechart-1.0.12.jar
index 73be90f..73be90f 100644
--- a/trunk/etherpad/lib/jfreechart-1.0.12.jar
+++ b/etherpad/lib/jfreechart-1.0.12.jar
Binary files differ
diff --git a/etherpad/src/etherpad/admin/plugins.js b/etherpad/src/etherpad/admin/plugins.js
new file mode 100644
index 0000000..6fc21f3
--- /dev/null
+++ b/etherpad/src/etherpad/admin/plugins.js
@@ -0,0 +1,247 @@
+/**
+ * Copyright 2009 RedHog, Egil Möller <egil.moller@piratpartiet.se>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import("faststatic");
+import("dispatch.{Dispatcher,PrefixMatcher,forward}");
+
+import("etherpad.utils.*");
+import("etherpad.collab.server_utils");
+import("etherpad.globals.*");
+import("etherpad.log");
+import("etherpad.pad.padusers");
+import("etherpad.pro.pro_utils");
+import("etherpad.helpers");
+import("etherpad.pro.pro_accounts.getSessionProAccount");
+import("sqlbase.sqlbase");
+import("sqlbase.sqlcommon");
+import("sqlbase.sqlobj");
+import("exceptionutils");
+import("execution");
+
+jimport("java.io.File",
+ "java.io.DataInputStream",
+ "java.io.FileInputStream",
+ "java.lang.Byte",
+ "java.io.FileReader",
+ "java.io.BufferedReader",
+ "net.appjet.oui.JarVirtualFile");
+
+pluginsLoaded = false;
+pluginModules = {};
+plugins = {};
+hooks = {};
+clientHooks = {};
+
+function loadAvailablePlugin(pluginName) {
+ if (plugins[pluginName] != undefined)
+ return plugins[pluginName];
+
+ var pluginsDir = new Packages.java.io.File("src/plugins");
+
+ var pluginFile = new Packages.java.io.File(pluginsDir, pluginName + '/main.js');
+ if (pluginFile.exists()) {
+ var pluginModulePath = pluginFile.getPath().replace(new RegExp("src/\(.*\)\.js"), "$1").replace("/", ".", "g");
+ var importStmt = "import('" + pluginModulePath + "')";
+ try {
+ var res = execution.fancyAssEval(importStmt, "main;");
+ res = new res.init();
+ return res;
+ } catch (e) {
+ log.info({errorLoadingPlugin:exceptionutils.getStackTracePlain(e)});
+ }
+ }
+ return null;
+}
+
+function loadAvailablePlugins() {
+ var pluginsDir = new Packages.java.io.File("src/plugins");
+
+ var pluginNames = pluginsDir.list();
+
+ for (i = 0; i < pluginNames.length; i++) {
+ var plugin = loadAvailablePlugin(pluginNames[i]);
+ if (plugin != null)
+ pluginModules[pluginNames[i]] = plugin
+ }
+}
+
+function loadPluginHooks(pluginName) {
+ function registerHookNames(hookSet, type) {
+ return function (hook) {
+ var row = {hook:hook, type:type, plugin:pluginName};
+ if (hookSet[hook] == undefined) hookSet[hook] = [];
+ hookSet[hook].push(row);
+ return row;
+ }
+ }
+ plugins[pluginName] = pluginModules[pluginName].hooks.map(registerHookNames(hooks, 'server'));
+ if (pluginModules[pluginName].client != undefined && pluginModules[pluginName].client.hooks != undefined)
+ plugins[pluginName] = plugins[pluginName].concat(pluginModules[pluginName].client.hooks.map(registerHookNames(clientHooks, 'client')));
+}
+
+function unloadPluginHooks(pluginName) {
+ for (var hookSet in [hooks, clientHooks])
+ for (var hookName in hookSet) {
+ var hook = hookSet[hookName];
+ for (i = hook.length - 1; i >= 0; i--)
+ if (hook[i].plugin == pluginName)
+ hook.splice(i, 1);
+ }
+ delete plugins[pluginName];
+}
+
+function loadInstalledHooks() {
+ var sql = '' +
+ 'select ' +
+ ' hook.name as hook, ' +
+ ' hook_type.name as type, ' +
+ ' plugin.name as plugin, ' +
+ ' plugin_hook.original_name as original ' +
+ 'from ' +
+ ' plugin ' +
+ ' left outer join plugin_hook on ' +
+ ' plugin.id = plugin_hook.plugin_id ' +
+ ' left outer join hook on ' +
+ ' plugin_hook.hook_id = hook.id ' +
+ ' left outer join hook_type on ' +
+ ' hook.type_id = hook_type.id ' +
+ 'order by hook.name, plugin.name';
+
+ var rows = sqlobj.executeRaw(sql, {});
+ for (var i = 0; i < rows.length; i++) {
+ var row = rows[i];
+
+ if (plugins[row.plugin] == undefined)
+ plugins[row.plugin] = [];
+ plugins[row.plugin].push(row);
+
+ var hookSet;
+
+ if (row.type == 'server')
+ hookSet = hooks;
+ else if (row.type == 'client')
+ hookSet = clientHooks;
+
+ if (hookSet[row.hook] == undefined)
+ hookSet[row.hook] = [];
+ if (row.hook != 'null')
+ hookSet[row.hook].push(row);
+ }
+}
+
+function selectOrInsert(table, columns) {
+ var res = sqlobj.selectSingle(table, columns);
+ if (res !== null)
+ return res;
+ sqlobj.insert(table, columns);
+ return sqlobj.selectSingle(table, columns);
+}
+
+function saveInstalledHooks(pluginName) {
+ var plugin = sqlobj.selectSingle('plugin', {name:pluginName});
+
+ if (plugin !== null) {
+ sqlobj.deleteRows('plugin_hook', {plugin_id:plugin.id});
+ if (plugins[pluginName] === undefined)
+ sqlobj.deleteRows('plugin', {name:pluginName});
+ }
+
+ if (plugins[pluginName] !== undefined) {
+ if (plugin === null)
+ plugin = selectOrInsert('plugin', {name:pluginName});
+
+ for (var i = 0; i < plugins[pluginName].length; i++) {
+ var row = plugins[pluginName][i];
+
+ var hook_type = selectOrInsert('hook_type', {name:row.type});
+ var hook = selectOrInsert('hook', {name:row.hook, type_id:hook_type.id});
+
+ sqlobj.insert("plugin_hook", {plugin_id:plugin.id, hook_id:hook.id});
+ }
+ }
+}
+
+
+function loadPlugins(force) {
+ if (pluginsLoaded && force == undefined) return;
+ pluginsLoaded = true;
+ loadAvailablePlugins();
+ loadInstalledHooks();
+}
+
+
+/* User API */
+function enablePlugin(pluginName) {
+ loadPlugins();
+ loadPluginHooks(pluginName);
+ saveInstalledHooks(pluginName);
+ try {
+ pluginModules[pluginName].install();
+ } catch (e) {
+ unloadPluginHooks(pluginName);
+ saveInstalledHooks(pluginName);
+ throw e;
+ }
+ log.info({PLUGINS:plugins, HOOKS:hooks});
+}
+
+function disablePlugin(pluginName) {
+ loadPlugins();
+ try {
+ pluginModules[pluginName].uninstall();
+ } catch (e) {
+ log.info({errorUninstallingPlugin:exceptionutils.getStackTracePlain(e)});
+ }
+ unloadPluginHooks(pluginName);
+ saveInstalledHooks(pluginName);
+ log.info({PLUGINS:plugins, HOOKS:hooks});
+}
+
+function registerClientHandlerJS() {
+ loadPlugins();
+ for (pluginName in plugins) {
+ var plugin = pluginModules[pluginName];
+ if (plugin.client !== undefined) {
+ helpers.includeJs("plugins/" + pluginName + "/main.js");
+ if (plugin.client.modules != undefined)
+ for (j = 0; j < client.modules.length; j++)
+ helpers.includeJs("plugins/" + pluginName + "/" + plugin.client.modules[j] + ".js");
+ }
+ }
+ helpers.addClientVars({hooks:clientHooks});
+ helpers.includeJs("plugins.js");
+}
+
+function callHook(hookName, args) {
+ loadPlugins();
+ if (hooks[hookName] === undefined)
+ return [];
+ var res = [];
+ for (i = 0; i < hooks[hookName].length; i++) {
+ var plugin = hooks[hookName][i];
+ var pluginRes = pluginModules[plugin.plugin][plugin.original || hookName](args);
+ if (pluginRes != undefined && pluginRes != null)
+ res = res.concat(pluginRes);
+ }
+ return res;
+}
+
+function callHookStr(hookName, args, sep, pre, post) {
+ if (sep == undefined) sep = '';
+ if (pre == undefined) pre = '';
+ if (post == undefined) post = '';
+ return callHook(hookName, args).map(function (x) { return pre + x + post}).join(sep || "");
+}
diff --git a/trunk/etherpad/src/etherpad/admin/shell.js b/etherpad/src/etherpad/admin/shell.js
index 391d524..391d524 100644
--- a/trunk/etherpad/src/etherpad/admin/shell.js
+++ b/etherpad/src/etherpad/admin/shell.js
diff --git a/trunk/etherpad/src/etherpad/billing/billing.js b/etherpad/src/etherpad/billing/billing.js
index 444c233..444c233 100644
--- a/trunk/etherpad/src/etherpad/billing/billing.js
+++ b/etherpad/src/etherpad/billing/billing.js
diff --git a/trunk/etherpad/src/etherpad/billing/fields.js b/etherpad/src/etherpad/billing/fields.js
index 4a307ac..4a307ac 100644
--- a/trunk/etherpad/src/etherpad/billing/fields.js
+++ b/etherpad/src/etherpad/billing/fields.js
diff --git a/trunk/etherpad/src/etherpad/billing/team_billing.js b/etherpad/src/etherpad/billing/team_billing.js
index 54fd62a..54fd62a 100644
--- a/trunk/etherpad/src/etherpad/billing/team_billing.js
+++ b/etherpad/src/etherpad/billing/team_billing.js
diff --git a/trunk/etherpad/src/etherpad/collab/collab_server.js b/etherpad/src/etherpad/collab/collab_server.js
index 78c9921..78c9921 100644
--- a/trunk/etherpad/src/etherpad/collab/collab_server.js
+++ b/etherpad/src/etherpad/collab/collab_server.js
diff --git a/trunk/etherpad/src/etherpad/collab/collabroom_server.js b/etherpad/src/etherpad/collab/collabroom_server.js
index ab1f844..ab1f844 100644
--- a/trunk/etherpad/src/etherpad/collab/collabroom_server.js
+++ b/etherpad/src/etherpad/collab/collabroom_server.js
diff --git a/trunk/etherpad/src/etherpad/collab/genimg.js b/etherpad/src/etherpad/collab/genimg.js
index 04d1b3b..04d1b3b 100644
--- a/trunk/etherpad/src/etherpad/collab/genimg.js
+++ b/etherpad/src/etherpad/collab/genimg.js
diff --git a/trunk/etherpad/src/etherpad/collab/json_sans_eval.js b/etherpad/src/etherpad/collab/json_sans_eval.js
index 6cbd497..6cbd497 100644
--- a/trunk/etherpad/src/etherpad/collab/json_sans_eval.js
+++ b/etherpad/src/etherpad/collab/json_sans_eval.js
diff --git a/trunk/etherpad/src/etherpad/collab/readonly_server.js b/etherpad/src/etherpad/collab/readonly_server.js
index e367f04..e367f04 100644
--- a/trunk/etherpad/src/etherpad/collab/readonly_server.js
+++ b/etherpad/src/etherpad/collab/readonly_server.js
diff --git a/trunk/etherpad/src/etherpad/collab/server_utils.js b/etherpad/src/etherpad/collab/server_utils.js
index ece3aea..ece3aea 100644
--- a/trunk/etherpad/src/etherpad/collab/server_utils.js
+++ b/etherpad/src/etherpad/collab/server_utils.js
diff --git a/trunk/etherpad/src/etherpad/control/aboutcontrol.js b/etherpad/src/etherpad/control/aboutcontrol.js
index 12265cf..12265cf 100644
--- a/trunk/etherpad/src/etherpad/control/aboutcontrol.js
+++ b/etherpad/src/etherpad/control/aboutcontrol.js
diff --git a/etherpad/src/etherpad/control/admin/pluginmanager.js b/etherpad/src/etherpad/control/admin/pluginmanager.js
new file mode 100644
index 0000000..e293592
--- /dev/null
+++ b/etherpad/src/etherpad/control/admin/pluginmanager.js
@@ -0,0 +1,66 @@
+/**
+ * Copyright 2009 RedHog, Egil Möller <egil.moller@piratpartiet.se>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import("faststatic");
+import("dispatch.{Dispatcher,PrefixMatcher,forward}");
+
+import("etherpad.utils.*");
+import("etherpad.collab.server_utils");
+import("etherpad.globals.*");
+import("etherpad.log");
+import("etherpad.pad.padusers");
+import("etherpad.pro.pro_utils");
+import("etherpad.helpers");
+import("etherpad.pro.pro_accounts.getSessionProAccount");
+import("etherpad.admin.plugins");
+
+
+function onRequest() {
+ plugins.loadPlugins();
+
+ if (request.params.action == 'install') {
+ plugins.enablePlugin(request.params.plugin);
+ } else if (request.params.action == 'uninstall') {
+ plugins.disablePlugin(request.params.plugin);
+ } else if (request.params.action == 'reinstall') {
+ plugins.disablePlugin(request.params.plugin);
+ plugins.loadPlugins(1);
+ plugins.enablePlugin(request.params.plugin);
+ }
+
+ helpers.addClientVars({
+ userAgent: request.headers["User-Agent"],
+ debugEnabled: request.params.djs,
+ clientIp: request.clientAddr,
+ colorPalette: COLOR_PALETTE,
+ serverTimestamp: +(new Date),
+ isProPad: pro_utils.isProDomainRequest(),
+ userIsGuest: padusers.isGuest(padusers.getUserId()),
+ userId: padusers.getUserId(),
+ });
+
+ renderHtml("admin/pluginmanager.ejs",
+ {
+ pluginModules: plugins.pluginModules,
+ plugins: plugins.plugins,
+ config: appjet.config,
+ bodyClass: 'nonpropad',
+ isPro: pro_utils.isProDomainRequest(),
+ isProAccountHolder: pro_utils.isProDomainRequest() && ! padusers.isGuest(padusers.getUserId()),
+ account: getSessionProAccount(), // may be falsy
+ });
+ return true;
+}
diff --git a/trunk/etherpad/src/etherpad/control/admincontrol.js b/etherpad/src/etherpad/control/admincontrol.js
index 02f6428..02f6428 100644
--- a/trunk/etherpad/src/etherpad/control/admincontrol.js
+++ b/etherpad/src/etherpad/control/admincontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/blogcontrol.js b/etherpad/src/etherpad/control/blogcontrol.js
index 9ec485d..9ec485d 100644
--- a/trunk/etherpad/src/etherpad/control/blogcontrol.js
+++ b/etherpad/src/etherpad/control/blogcontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/connection_diagnostics_control.js b/etherpad/src/etherpad/control/connection_diagnostics_control.js
index aaa1bb3..aaa1bb3 100644
--- a/trunk/etherpad/src/etherpad/control/connection_diagnostics_control.js
+++ b/etherpad/src/etherpad/control/connection_diagnostics_control.js
diff --git a/trunk/etherpad/src/etherpad/control/global_pro_account_control.js b/etherpad/src/etherpad/control/global_pro_account_control.js
index abc2994..abc2994 100644
--- a/trunk/etherpad/src/etherpad/control/global_pro_account_control.js
+++ b/etherpad/src/etherpad/control/global_pro_account_control.js
diff --git a/trunk/etherpad/src/etherpad/control/historycontrol.js b/etherpad/src/etherpad/control/historycontrol.js
index 56fcb8e..56fcb8e 100644
--- a/trunk/etherpad/src/etherpad/control/historycontrol.js
+++ b/etherpad/src/etherpad/control/historycontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/loadtestcontrol.js b/etherpad/src/etherpad/control/loadtestcontrol.js
index 2a4e3f7..2a4e3f7 100644
--- a/trunk/etherpad/src/etherpad/control/loadtestcontrol.js
+++ b/etherpad/src/etherpad/control/loadtestcontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/maincontrol.js b/etherpad/src/etherpad/control/maincontrol.js
index 261ddaf..261ddaf 100644
--- a/trunk/etherpad/src/etherpad/control/maincontrol.js
+++ b/etherpad/src/etherpad/control/maincontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/pad/pad_changeset_control.js b/etherpad/src/etherpad/control/pad/pad_changeset_control.js
index 5af7ed0..5af7ed0 100644
--- a/trunk/etherpad/src/etherpad/control/pad/pad_changeset_control.js
+++ b/etherpad/src/etherpad/control/pad/pad_changeset_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pad/pad_control.js b/etherpad/src/etherpad/control/pad/pad_control.js
index 3d32355..3d32355 100644
--- a/trunk/etherpad/src/etherpad/control/pad/pad_control.js
+++ b/etherpad/src/etherpad/control/pad/pad_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pad/pad_importexport_control.js b/etherpad/src/etherpad/control/pad/pad_importexport_control.js
index b7e5f4d..b7e5f4d 100644
--- a/trunk/etherpad/src/etherpad/control/pad/pad_importexport_control.js
+++ b/etherpad/src/etherpad/control/pad/pad_importexport_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pad/pad_view_control.js b/etherpad/src/etherpad/control/pad/pad_view_control.js
index 0606d2c..0606d2c 100644
--- a/trunk/etherpad/src/etherpad/control/pad/pad_view_control.js
+++ b/etherpad/src/etherpad/control/pad/pad_view_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pne_manual_control.js b/etherpad/src/etherpad/control/pne_manual_control.js
index 0dd65f8..0dd65f8 100644
--- a/trunk/etherpad/src/etherpad/control/pne_manual_control.js
+++ b/etherpad/src/etherpad/control/pne_manual_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pne_tracker_control.js b/etherpad/src/etherpad/control/pne_tracker_control.js
index ee36645..ee36645 100644
--- a/trunk/etherpad/src/etherpad/control/pne_tracker_control.js
+++ b/etherpad/src/etherpad/control/pne_tracker_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/account_control.js b/etherpad/src/etherpad/control/pro/account_control.js
index 031dbe6..031dbe6 100644
--- a/trunk/etherpad/src/etherpad/control/pro/account_control.js
+++ b/etherpad/src/etherpad/control/pro/account_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/admin/account_manager_control.js b/etherpad/src/etherpad/control/pro/admin/account_manager_control.js
index 8f93b2e..8f93b2e 100644
--- a/trunk/etherpad/src/etherpad/control/pro/admin/account_manager_control.js
+++ b/etherpad/src/etherpad/control/pro/admin/account_manager_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/admin/license_manager_control.js b/etherpad/src/etherpad/control/pro/admin/license_manager_control.js
index ca6d6a6..ca6d6a6 100644
--- a/trunk/etherpad/src/etherpad/control/pro/admin/license_manager_control.js
+++ b/etherpad/src/etherpad/control/pro/admin/license_manager_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js b/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js
index 6d482ce..6d482ce 100644
--- a/trunk/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js
+++ b/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/admin/pro_config_control.js b/etherpad/src/etherpad/control/pro/admin/pro_config_control.js
index b03da45..b03da45 100644
--- a/trunk/etherpad/src/etherpad/control/pro/admin/pro_config_control.js
+++ b/etherpad/src/etherpad/control/pro/admin/pro_config_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/admin/team_billing_control.js b/etherpad/src/etherpad/control/pro/admin/team_billing_control.js
index 9c5b4d0..9c5b4d0 100644
--- a/trunk/etherpad/src/etherpad/control/pro/admin/team_billing_control.js
+++ b/etherpad/src/etherpad/control/pro/admin/team_billing_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/pro_main_control.js b/etherpad/src/etherpad/control/pro/pro_main_control.js
index 6a04655..6a04655 100644
--- a/trunk/etherpad/src/etherpad/control/pro/pro_main_control.js
+++ b/etherpad/src/etherpad/control/pro/pro_main_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro/pro_padlist_control.js b/etherpad/src/etherpad/control/pro/pro_padlist_control.js
index 9a90c67..9a90c67 100644
--- a/trunk/etherpad/src/etherpad/control/pro/pro_padlist_control.js
+++ b/etherpad/src/etherpad/control/pro/pro_padlist_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro_beta_control.js b/etherpad/src/etherpad/control/pro_beta_control.js
index 518e710..518e710 100644
--- a/trunk/etherpad/src/etherpad/control/pro_beta_control.js
+++ b/etherpad/src/etherpad/control/pro_beta_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro_help_control.js b/etherpad/src/etherpad/control/pro_help_control.js
index 675e976..675e976 100644
--- a/trunk/etherpad/src/etherpad/control/pro_help_control.js
+++ b/etherpad/src/etherpad/control/pro_help_control.js
diff --git a/trunk/etherpad/src/etherpad/control/pro_signup_control.js b/etherpad/src/etherpad/control/pro_signup_control.js
index 9729d75..9729d75 100644
--- a/trunk/etherpad/src/etherpad/control/pro_signup_control.js
+++ b/etherpad/src/etherpad/control/pro_signup_control.js
diff --git a/trunk/etherpad/src/etherpad/control/scriptcontrol.js b/etherpad/src/etherpad/control/scriptcontrol.js
index 16efc60..16efc60 100644
--- a/trunk/etherpad/src/etherpad/control/scriptcontrol.js
+++ b/etherpad/src/etherpad/control/scriptcontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/static_control.js b/etherpad/src/etherpad/control/static_control.js
index 5c087b6..d938b26 100644
--- a/trunk/etherpad/src/etherpad/control/static_control.js
+++ b/etherpad/src/etherpad/control/static_control.js
@@ -19,12 +19,25 @@ import("dispatch.{Dispatcher,PrefixMatcher,forward}");
import("etherpad.utils.*");
import("etherpad.globals.*");
+import("etherpad.admin.plugins");
function onRequest() {
var staticBase = '/static';
var opts = {cache: isProduction()};
+ var disp = new Dispatcher();
+
+ /* FIXME: Is there a more effective way to do this? */
+ for (plugin in plugins.plugins) {
+ disp.addLocations([
+ [PrefixMatcher('/static/js/plugins/'+plugin+'/'), faststatic.directoryServer('/plugins/' + plugin + '/static/js/', opts)],
+ [PrefixMatcher('/static/css/plugins/'+plugin+'/'), faststatic.directoryServer('/plugins/' + plugin + '/static/css/', opts)],
+ [PrefixMatcher('/static/swf/plugins/'+plugin+'/'), faststatic.directoryServer('/plugins/' + plugin + '/static/swf/', opts)],
+ [PrefixMatcher('/static/html/plugins/'+plugin+'/'), faststatic.directoryServer('/plugins/' + plugin + '/static/html/', opts)],
+ [PrefixMatcher('/static/zip/plugins/'+plugin+'/'), faststatic.directoryServer('/plugins/' + plugin + '/static/zip/', opts)]]);
+ }
+
var serveFavicon = faststatic.singleFileServer(staticBase + '/favicon.ico', opts);
var serveCrossDomain = faststatic.singleFileServer(staticBase + '/crossdomain.xml', opts);
var serveStaticDir = faststatic.directoryServer(staticBase, opts);
@@ -35,8 +48,6 @@ function onRequest() {
var serveHtml = faststatic.directoryServer(staticBase+'/html/', opts);
var serveZip = faststatic.directoryServer(staticBase+'/zip/', opts);
- var disp = new Dispatcher();
-
disp.addLocations([
['/favicon.ico', serveFavicon],
['/robots.txt', serveRobotsTxt],
diff --git a/trunk/etherpad/src/etherpad/control/statscontrol.js b/etherpad/src/etherpad/control/statscontrol.js
index 435b7ac..435b7ac 100644
--- a/trunk/etherpad/src/etherpad/control/statscontrol.js
+++ b/etherpad/src/etherpad/control/statscontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/store/eepnet_checkout_control.js b/etherpad/src/etherpad/control/store/eepnet_checkout_control.js
index eb18381..eb18381 100644
--- a/trunk/etherpad/src/etherpad/control/store/eepnet_checkout_control.js
+++ b/etherpad/src/etherpad/control/store/eepnet_checkout_control.js
diff --git a/trunk/etherpad/src/etherpad/control/store/storecontrol.js b/etherpad/src/etherpad/control/store/storecontrol.js
index 43569e4..43569e4 100644
--- a/trunk/etherpad/src/etherpad/control/store/storecontrol.js
+++ b/etherpad/src/etherpad/control/store/storecontrol.js
diff --git a/trunk/etherpad/src/etherpad/control/testcontrol.js b/etherpad/src/etherpad/control/testcontrol.js
index ed13006..ed13006 100644
--- a/trunk/etherpad/src/etherpad/control/testcontrol.js
+++ b/etherpad/src/etherpad/control/testcontrol.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0000_test.js b/etherpad/src/etherpad/db_migrations/m0000_test.js
index 7df9bfd..7df9bfd 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0000_test.js
+++ b/etherpad/src/etherpad/db_migrations/m0000_test.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js b/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js
index 0e65779..0e65779 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js
+++ b/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js b/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js
index 786e4e9..786e4e9 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js
+++ b/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js b/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js
index f121145..f121145 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js
+++ b/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js b/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js
index 959865d..959865d 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js
+++ b/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js b/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js
index 0dfd37e..0dfd37e 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js
+++ b/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js b/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js
index 349b27a..349b27a 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js
+++ b/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js b/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js
index bda5853..bda5853 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js
+++ b/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js b/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js
index 30e379a..30e379a 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js
+++ b/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js b/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js
index 93f5a62..93f5a62 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js
+++ b/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js b/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js
index 36150b1..36150b1 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js
+++ b/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js b/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js
index 5ac8b26..5ac8b26 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js
+++ b/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js b/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js
index ddd4cf6..ddd4cf6 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js
+++ b/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js b/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js
index 146923a..146923a 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js
+++ b/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js b/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js
index 445b32d..445b32d 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js
+++ b/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js b/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js
index 8fa98bb..8fa98bb 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js
+++ b/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js b/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js
index abcc93f..abcc93f 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js
+++ b/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js b/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js
index 1067840..1067840 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js
+++ b/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js b/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js
index 6e10000..6e10000 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js
+++ b/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js b/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js
index 1f9ecbb..1f9ecbb 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js
+++ b/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js b/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js
index a776622..a776622 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js
+++ b/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js b/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js
index 9f357b7..9f357b7 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js
+++ b/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js b/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js
index 23ca8d3..23ca8d3 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js
+++ b/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js b/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js
index 927cdc9..927cdc9 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js
+++ b/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js b/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js
index 9d6e58c..9d6e58c 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js
+++ b/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js b/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js
index a429f41..a429f41 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js
+++ b/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js b/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js
index 7c41309..7c41309 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js
+++ b/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0027_pro_config.js b/etherpad/src/etherpad/db_migrations/m0027_pro_config.js
index 9cbb629..9cbb629 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0027_pro_config.js
+++ b/etherpad/src/etherpad/db_migrations/m0027_pro_config.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js b/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js
index f708363..f708363 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js
+++ b/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js b/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js
index 36b76ab..36b76ab 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js
+++ b/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js b/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js
index aeaa40f..aeaa40f 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js
+++ b/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js b/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js
index b9744a3..b9744a3 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js
+++ b/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js b/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js
index 5e748f5..5e748f5 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js
+++ b/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js b/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js
index 4b33f52..4b33f52 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js
+++ b/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js b/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js
index 491581b..491581b 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js
+++ b/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js b/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js
index a49e9f9..a49e9f9 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js
+++ b/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js b/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js
index ce77734..ce77734 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js
+++ b/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js b/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js
index 7a9982c..7a9982c 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js
+++ b/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js b/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js
index 1e9a53c..1e9a53c 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js
+++ b/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js
diff --git a/trunk/etherpad/src/etherpad/db_migrations/migration_runner.js b/etherpad/src/etherpad/db_migrations/migration_runner.js
index ddf201d..ddf201d 100644
--- a/trunk/etherpad/src/etherpad/db_migrations/migration_runner.js
+++ b/etherpad/src/etherpad/db_migrations/migration_runner.js
diff --git a/trunk/etherpad/src/etherpad/debug.js b/etherpad/src/etherpad/debug.js
index 069ad14..069ad14 100644
--- a/trunk/etherpad/src/etherpad/debug.js
+++ b/etherpad/src/etherpad/debug.js
diff --git a/trunk/etherpad/src/etherpad/globals.js b/etherpad/src/etherpad/globals.js
index 3475b88..3475b88 100644
--- a/trunk/etherpad/src/etherpad/globals.js
+++ b/etherpad/src/etherpad/globals.js
diff --git a/trunk/etherpad/src/etherpad/helpers.js b/etherpad/src/etherpad/helpers.js
index e16c2f7..e16c2f7 100644
--- a/trunk/etherpad/src/etherpad/helpers.js
+++ b/etherpad/src/etherpad/helpers.js
diff --git a/trunk/etherpad/src/etherpad/importexport/importexport.js b/etherpad/src/etherpad/importexport/importexport.js
index 304a1f4..304a1f4 100644
--- a/trunk/etherpad/src/etherpad/importexport/importexport.js
+++ b/etherpad/src/etherpad/importexport/importexport.js
diff --git a/trunk/etherpad/src/etherpad/legacy_urls.js b/etherpad/src/etherpad/legacy_urls.js
index 458f3b6..458f3b6 100644
--- a/trunk/etherpad/src/etherpad/legacy_urls.js
+++ b/etherpad/src/etherpad/legacy_urls.js
diff --git a/trunk/etherpad/src/etherpad/licensing.js b/etherpad/src/etherpad/licensing.js
index d57fa4c..d57fa4c 100644
--- a/trunk/etherpad/src/etherpad/licensing.js
+++ b/etherpad/src/etherpad/licensing.js
diff --git a/trunk/etherpad/src/etherpad/log.js b/etherpad/src/etherpad/log.js
index cfc82de..cfc82de 100644
--- a/trunk/etherpad/src/etherpad/log.js
+++ b/etherpad/src/etherpad/log.js
diff --git a/trunk/etherpad/src/etherpad/metrics/metrics.js b/etherpad/src/etherpad/metrics/metrics.js
index 1bc8666..1bc8666 100644
--- a/trunk/etherpad/src/etherpad/metrics/metrics.js
+++ b/etherpad/src/etherpad/metrics/metrics.js
diff --git a/trunk/etherpad/src/etherpad/pad/activepads.js b/etherpad/src/etherpad/pad/activepads.js
index 07f5e2e..07f5e2e 100644
--- a/trunk/etherpad/src/etherpad/pad/activepads.js
+++ b/etherpad/src/etherpad/pad/activepads.js
diff --git a/trunk/etherpad/src/etherpad/pad/chatarchive.js b/etherpad/src/etherpad/pad/chatarchive.js
index 2f8e33a..2f8e33a 100644
--- a/trunk/etherpad/src/etherpad/pad/chatarchive.js
+++ b/etherpad/src/etherpad/pad/chatarchive.js
diff --git a/trunk/etherpad/src/etherpad/pad/dbwriter.js b/etherpad/src/etherpad/pad/dbwriter.js
index 233622b..233622b 100644
--- a/trunk/etherpad/src/etherpad/pad/dbwriter.js
+++ b/etherpad/src/etherpad/pad/dbwriter.js
diff --git a/trunk/etherpad/src/etherpad/pad/easysync2migration.js b/etherpad/src/etherpad/pad/easysync2migration.js
index c2a1523..c2a1523 100644
--- a/trunk/etherpad/src/etherpad/pad/easysync2migration.js
+++ b/etherpad/src/etherpad/pad/easysync2migration.js
diff --git a/trunk/etherpad/src/etherpad/pad/exporthtml.js b/etherpad/src/etherpad/pad/exporthtml.js
index 48ea1a4..48ea1a4 100644
--- a/trunk/etherpad/src/etherpad/pad/exporthtml.js
+++ b/etherpad/src/etherpad/pad/exporthtml.js
diff --git a/trunk/etherpad/src/etherpad/pad/importhtml.js b/etherpad/src/etherpad/pad/importhtml.js
index 4a48c6f..4a48c6f 100644
--- a/trunk/etherpad/src/etherpad/pad/importhtml.js
+++ b/etherpad/src/etherpad/pad/importhtml.js
diff --git a/trunk/etherpad/src/etherpad/pad/model.js b/etherpad/src/etherpad/pad/model.js
index c557a2c..3f44dfa 100644
--- a/trunk/etherpad/src/etherpad/pad/model.js
+++ b/etherpad/src/etherpad/pad/model.js
@@ -30,6 +30,8 @@ import("etherpad.pad.pad_migrations");
import("etherpad.pad.pad_security");
import("etherpad.collab.collab_server");
import("cache_utils.syncedWithCache");
+import("etherpad.admin.plugins");
+
jimport("net.appjet.common.util.LimitedSizeMapping");
jimport("java.lang.System.out.println");
@@ -258,41 +260,7 @@ function accessPadGlobal(padId, padFunc, rwMode) {
delete meta2.status;
sqlbase.putJSON("PAD_META", padId, meta2);
- /* Update tags for the pad. Should maybe be in a separate function? */
- var new_tags = pad.text().match(new RegExp("#[^,#!\\s][^,#!\\s]*", "g"));
- if (new_tags == null) new_tags = new Array();
- for (i = 0; i < new_tags.length; i++)
- new_tags[i] = new_tags[i].substring(1);
- var new_tags_str = new_tags.join('#')
-
- var old_tags_row = sqlobj.selectSingle("PAD_TAG_CACHE", { id: padId });
- var old_tags_str;
- if (old_tags_row !== null)
- old_tags_str = old_tags_row['TAGS'];
- else
- old_tags_str = '';
-
- var old_tags = old_tags_str != '' ? old_tags_str.split('#') : new Array();
-
- if (new_tags_str != old_tags_str) {
- log.info({message: 'Updating tags', new_tags:new_tags, old_tags:old_tags});
-
- if (old_tags_row)
- sqlobj.update("PAD_TAG_CACHE", { id: padId }, {tags: new_tags.join('#')});
- else
- sqlobj.insert("PAD_TAG_CACHE", {id: padId, tags: new_tags.join('#')});
-
- sqlobj.deleteRows("PAD_TAG", {pad_id: padId});
-
- for (i = 0; i < new_tags.length; i++) {
- var tag_row = sqlobj.selectSingle("TAG", { name: new_tags[i] });
- if (tag_row === null) {
- sqlobj.insert("TAG", {name: new_tags[i]});
- tag_row = sqlobj.selectSingle("TAG", { name: new_tags[i] });
- }
- sqlobj.insert("PAD_TAG", {pad_id: padId, tag_id: tag_row['ID']});
- }
- }
+ plugins.callHook("padModelWriteToDB", {pad:pad, padId:padId});
_getPadStringArray(padId, "revs").writeToDB();
_getPadStringArray(padId, "revs10").writeToDB();
diff --git a/trunk/etherpad/src/etherpad/pad/noprowatcher.js b/etherpad/src/etherpad/pad/noprowatcher.js
index 8eb2a92..8eb2a92 100644
--- a/trunk/etherpad/src/etherpad/pad/noprowatcher.js
+++ b/etherpad/src/etherpad/pad/noprowatcher.js
diff --git a/trunk/etherpad/src/etherpad/pad/pad_migrations.js b/etherpad/src/etherpad/pad/pad_migrations.js
index f502bdf..f502bdf 100644
--- a/trunk/etherpad/src/etherpad/pad/pad_migrations.js
+++ b/etherpad/src/etherpad/pad/pad_migrations.js
diff --git a/trunk/etherpad/src/etherpad/pad/pad_security.js b/etherpad/src/etherpad/pad/pad_security.js
index 0ff8783..0ff8783 100644
--- a/trunk/etherpad/src/etherpad/pad/pad_security.js
+++ b/etherpad/src/etherpad/pad/pad_security.js
diff --git a/trunk/etherpad/src/etherpad/pad/padevents.js b/etherpad/src/etherpad/pad/padevents.js
index 52b303c..52b303c 100644
--- a/trunk/etherpad/src/etherpad/pad/padevents.js
+++ b/etherpad/src/etherpad/pad/padevents.js
diff --git a/trunk/etherpad/src/etherpad/pad/padusers.js b/etherpad/src/etherpad/pad/padusers.js
index f04f0eb..f04f0eb 100644
--- a/trunk/etherpad/src/etherpad/pad/padusers.js
+++ b/etherpad/src/etherpad/pad/padusers.js
diff --git a/trunk/etherpad/src/etherpad/pad/padutils.js b/etherpad/src/etherpad/pad/padutils.js
index 2fdf579..2fdf579 100644
--- a/trunk/etherpad/src/etherpad/pad/padutils.js
+++ b/etherpad/src/etherpad/pad/padutils.js
diff --git a/trunk/etherpad/src/etherpad/pad/revisions.js b/etherpad/src/etherpad/pad/revisions.js
index c7c84e8..c7c84e8 100644
--- a/trunk/etherpad/src/etherpad/pad/revisions.js
+++ b/etherpad/src/etherpad/pad/revisions.js
diff --git a/trunk/etherpad/src/etherpad/pne/pne_utils.js b/etherpad/src/etherpad/pne/pne_utils.js
index 3169407..3169407 100644
--- a/trunk/etherpad/src/etherpad/pne/pne_utils.js
+++ b/etherpad/src/etherpad/pne/pne_utils.js
diff --git a/trunk/etherpad/src/etherpad/pro/domains.js b/etherpad/src/etherpad/pro/domains.js
index e56a408..e56a408 100644
--- a/trunk/etherpad/src/etherpad/pro/domains.js
+++ b/etherpad/src/etherpad/pro/domains.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_account_auto_signin.js b/etherpad/src/etherpad/pro/pro_account_auto_signin.js
index ebcd227..ebcd227 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_account_auto_signin.js
+++ b/etherpad/src/etherpad/pro/pro_account_auto_signin.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_accounts.js b/etherpad/src/etherpad/pro/pro_accounts.js
index cdecd0d..cdecd0d 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_accounts.js
+++ b/etherpad/src/etherpad/pro/pro_accounts.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_config.js b/etherpad/src/etherpad/pro/pro_config.js
index d2d119f..d2d119f 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_config.js
+++ b/etherpad/src/etherpad/pro/pro_config.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_ldap_support.js b/etherpad/src/etherpad/pro/pro_ldap_support.js
index a657af1..a657af1 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_ldap_support.js
+++ b/etherpad/src/etherpad/pro/pro_ldap_support.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_pad_db.js b/etherpad/src/etherpad/pro/pro_pad_db.js
index dbb412c..dbb412c 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_pad_db.js
+++ b/etherpad/src/etherpad/pro/pro_pad_db.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_pad_editors.js b/etherpad/src/etherpad/pro/pro_pad_editors.js
index a90f05b..a90f05b 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_pad_editors.js
+++ b/etherpad/src/etherpad/pro/pro_pad_editors.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_padlist.js b/etherpad/src/etherpad/pro/pro_padlist.js
index 73b179c..73b179c 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_padlist.js
+++ b/etherpad/src/etherpad/pro/pro_padlist.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_padmeta.js b/etherpad/src/etherpad/pro/pro_padmeta.js
index 6f911b2..6f911b2 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_padmeta.js
+++ b/etherpad/src/etherpad/pro/pro_padmeta.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_quotas.js b/etherpad/src/etherpad/pro/pro_quotas.js
index ed69e1c..ed69e1c 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_quotas.js
+++ b/etherpad/src/etherpad/pro/pro_quotas.js
diff --git a/trunk/etherpad/src/etherpad/pro/pro_utils.js b/etherpad/src/etherpad/pro/pro_utils.js
index 787f424..787f424 100644
--- a/trunk/etherpad/src/etherpad/pro/pro_utils.js
+++ b/etherpad/src/etherpad/pro/pro_utils.js
diff --git a/trunk/etherpad/src/etherpad/quotas.js b/etherpad/src/etherpad/quotas.js
index 99ce205..99ce205 100644
--- a/trunk/etherpad/src/etherpad/quotas.js
+++ b/etherpad/src/etherpad/quotas.js
diff --git a/trunk/etherpad/src/etherpad/sessions.js b/etherpad/src/etherpad/sessions.js
index 633bf0b..633bf0b 100644
--- a/trunk/etherpad/src/etherpad/sessions.js
+++ b/etherpad/src/etherpad/sessions.js
diff --git a/trunk/etherpad/src/etherpad/statistics/exceptions.js b/etherpad/src/etherpad/statistics/exceptions.js
index 723085d..723085d 100644
--- a/trunk/etherpad/src/etherpad/statistics/exceptions.js
+++ b/etherpad/src/etherpad/statistics/exceptions.js
diff --git a/trunk/etherpad/src/etherpad/statistics/statistics.js b/etherpad/src/etherpad/statistics/statistics.js
index 8174405..8174405 100644
--- a/trunk/etherpad/src/etherpad/statistics/statistics.js
+++ b/etherpad/src/etherpad/statistics/statistics.js
diff --git a/trunk/etherpad/src/etherpad/store/checkout.js b/etherpad/src/etherpad/store/checkout.js
index 7b8e224..7b8e224 100644
--- a/trunk/etherpad/src/etherpad/store/checkout.js
+++ b/etherpad/src/etherpad/store/checkout.js
diff --git a/trunk/etherpad/src/etherpad/store/eepnet_checkout.js b/etherpad/src/etherpad/store/eepnet_checkout.js
index cdf32a1..cdf32a1 100644
--- a/trunk/etherpad/src/etherpad/store/eepnet_checkout.js
+++ b/etherpad/src/etherpad/store/eepnet_checkout.js
diff --git a/trunk/etherpad/src/etherpad/store/eepnet_trial.js b/etherpad/src/etherpad/store/eepnet_trial.js
index 20fccdc..20fccdc 100644
--- a/trunk/etherpad/src/etherpad/store/eepnet_trial.js
+++ b/etherpad/src/etherpad/store/eepnet_trial.js
diff --git a/trunk/etherpad/src/etherpad/testing/testutils.js b/etherpad/src/etherpad/testing/testutils.js
index eac7840..eac7840 100644
--- a/trunk/etherpad/src/etherpad/testing/testutils.js
+++ b/etherpad/src/etherpad/testing/testutils.js
diff --git a/trunk/etherpad/src/etherpad/testing/unit_tests/t0000_test.js b/etherpad/src/etherpad/testing/unit_tests/t0000_test.js
index 9e0e78b..9e0e78b 100644
--- a/trunk/etherpad/src/etherpad/testing/unit_tests/t0000_test.js
+++ b/etherpad/src/etherpad/testing/unit_tests/t0000_test.js
diff --git a/trunk/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js b/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js
index 96a74e4..96a74e4 100644
--- a/trunk/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js
+++ b/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js
diff --git a/trunk/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js b/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js
index 67c79d8..67c79d8 100644
--- a/trunk/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js
+++ b/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js
diff --git a/trunk/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js b/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js
index 0898fbe..0898fbe 100644
--- a/trunk/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js
+++ b/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js
diff --git a/trunk/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js b/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js
index 7f8c996..7f8c996 100644
--- a/trunk/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js
+++ b/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js
diff --git a/trunk/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js b/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js
index 9cd3f21..9cd3f21 100644
--- a/trunk/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js
+++ b/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js
diff --git a/trunk/etherpad/src/etherpad/usage_stats/usage_stats.js b/etherpad/src/etherpad/usage_stats/usage_stats.js
index 59074ed..59074ed 100644
--- a/trunk/etherpad/src/etherpad/usage_stats/usage_stats.js
+++ b/etherpad/src/etherpad/usage_stats/usage_stats.js
diff --git a/trunk/etherpad/src/etherpad/utils.js b/etherpad/src/etherpad/utils.js
index da9972f..e60c08a 100644
--- a/trunk/etherpad/src/etherpad/utils.js
+++ b/etherpad/src/etherpad/utils.js
@@ -34,6 +34,8 @@ import("etherpad.pro.pro_utils");
import("etherpad.pro.pro_config");
import("etherpad.pro.pro_accounts");
import("etherpad.pro.pro_accounts.getSessionProAccount");
+import("etherpad.log");
+import("etherpad.admin.plugins");
jimport("java.lang.System.out.print");
jimport("java.lang.System.out.println");
@@ -55,11 +57,18 @@ function randomUniquePadId() {
// template rendering
//----------------------------------------------------------------
-function renderTemplateAsString(filename, data) {
+function findTemplate(filename, plugin) {
+ if (plugin != undefined)
+ return '/plugins/' + plugin + '/templates/' + filename;
+ else
+ return '/templates/' + filename;
+}
+
+function renderTemplateAsString(filename, data, plugin) {
data = data || {};
data.helpers = helpers; // global helpers
- var f = "/templates/"+filename;
+ var f = findTemplate(filename, plugin); //"/templates/"+filename;
if (! appjet.scopeCache.ejs) {
appjet.scopeCache.ejs = {};
}
@@ -75,22 +84,25 @@ function renderTemplateAsString(filename, data) {
return html;
}
-function renderTemplate(filename, data) {
- response.write(renderTemplateAsString(filename, data));
+function renderTemplate(filename, data, plugin) {
+ response.write(renderTemplateAsString(filename, data, plugin));
if (request.acceptsGzip) {
response.setGzip(true);
}
}
-function renderHtml(bodyFileName, data) {
- var bodyHtml = renderTemplateAsString(bodyFileName, data);
+function renderHtml(bodyFileName, data, plugin) {
+ var bodyHtml = renderTemplateAsString(bodyFileName, data, plugin);
+ bodyHtml = plugins.callHookStr("renderPageBodyPre", {bodyFileName:bodyFileName, data:data, plugin:plugin}) +
+ bodyHtml +
+ plugins.callHookStr("renderPageBodyPost", {bodyFileName:bodyFileName, data:data, plugin:plugin});
response.write(renderTemplateAsString("html.ejs", {bodyHtml: bodyHtml}));
if (request.acceptsGzip) {
response.setGzip(true);
}
}
-function renderFramedHtml(contentHtml) {
+function renderFramedHtml(contentHtml, plugin) {
var getContentHtml;
if (typeof(contentHtml) == 'function') {
getContentHtml = contentHtml;
@@ -109,52 +121,52 @@ function renderFramedHtml(contentHtml) {
getContentHtml: getContentHtml,
isProDomainRequest: isProDomainRequest(),
renderGlobalProNotice: pro_utils.renderGlobalProNotice
- });
+ }, plugin);
}
-function renderFramed(bodyFileName, data) {
+function renderFramed(bodyFileName, data, plugin) {
function _getContentHtml() {
- return renderTemplateAsString(bodyFileName, data);
+ return renderTemplateAsString(bodyFileName, data, plugin);
}
renderFramedHtml(_getContentHtml);
}
-function renderFramedError(error) {
+function renderFramedError(error, plugin) {
var content = DIV({className: 'fpcontent'},
DIV({style: "padding: 2em 1em;"},
DIV({style: "padding: 1em; border: 1px solid #faa; background: #fdd;"},
B("Error: "), error)));
- renderFramedHtml(content);
+ renderFramedHtml(content, plugin);
}
-function renderNotice(bodyFileName, data) {
- renderNoticeString(renderTemplateAsString(bodyFileName, data));
+function renderNotice(bodyFileName, data, plugin) {
+ renderNoticeString(renderTemplateAsString(bodyFileName, data, plugin), plugin);
}
-function renderNoticeString(contentHtml) {
- renderFramed("notice.ejs", {content: contentHtml});
+function renderNoticeString(contentHtml, plugin) {
+ renderFramed("notice.ejs", {content: contentHtml}, plugin);
}
-function render404(noStop) {
+function render404(noStop, plugin) {
response.reset();
response.setStatusCode(404);
renderFramedHtml(DIV({className: "fpcontent"},
DIV({style: "padding: 2em 1em;"},
DIV({style: "border: 1px solid #aaf; background: #def; padding: 1em; font-size: 150%;"},
- "404 not found: "+request.path))));
+ "404 not found: "+request.path))), plugin);
if (! noStop) {
response.stop();
}
}
-function render500(ex) {
+function render500(ex, plugin) {
response.reset();
response.setStatusCode(500);
var trace = null;
if (ex && (!isProduction())) {
trace = exceptionutils.getStackTracePlain(ex);
}
- renderFramed("500_body.ejs", {trace: trace});
+ renderFramed("500_body.ejs", {trace: trace}, plugin);
}
function _renderEtherpadDotComHeader(data) {
diff --git a/trunk/etherpad/src/main.js b/etherpad/src/main.js
index 0bba1f0..8b08abb 100644
--- a/trunk/etherpad/src/main.js
+++ b/etherpad/src/main.js
@@ -34,6 +34,7 @@ import("etherpad.importexport.importexport");
import("etherpad.legacy_urls");
import("etherpad.control.aboutcontrol");
+import("etherpad.control.admin.pluginmanager");
import("etherpad.control.admincontrol");
import("etherpad.control.blogcontrol");
import("etherpad.control.connection_diagnostics_control");
@@ -42,7 +43,6 @@ import("etherpad.control.historycontrol");
import("etherpad.control.loadtestcontrol");
import("etherpad.control.maincontrol");
import("etherpad.control.pad.pad_control");
-import("etherpad.control.tag.tag_control");
import("etherpad.control.pne_manual_control");
import("etherpad.control.pne_tracker_control");
import("etherpad.control.pro.admin.license_manager_control");
@@ -69,6 +69,8 @@ import("etherpad.pad.dbwriter");
import("etherpad.pad.pad_migrations");
import("etherpad.pad.noprowatcher");
+import("etherpad.admin.plugins");
+
jimport("java.lang.System.out.println");
serverhandlers.startupHandler = function() {
@@ -93,6 +95,8 @@ serverhandlers.startupHandler = function() {
team_billing.onStartup();
collabroom_server.onStartup();
readLatestSessionsFromDisk();
+
+ plugins.callHook('serverStartup');
};
serverhandlers.resetHandler = function() {
@@ -100,6 +104,8 @@ serverhandlers.resetHandler = function() {
}
serverhandlers.shutdownHandler = function() {
+ plugins.callHook('serverShutdown');
+
appjet.cache.shutdownHandlerIsRunning = true;
log.callCatchingExceptions(writeSessionsToDisk);
@@ -354,6 +360,8 @@ function handlePath() {
// Default. Can be overridden in case of static files.
response.neverCache();
+ plugins.registerClientHandlerJS();
+
// these paths are handled identically on all sites/subdomains.
var commonDispatcher = new Dispatcher();
commonDispatcher.addLocations([
@@ -363,20 +371,20 @@ function handlePath() {
[PrefixMatcher('/static/'), forward(static_control)],
[PrefixMatcher('/ep/genimg/'), genimg.renderPath],
[PrefixMatcher('/ep/pad/'), forward(pad_control)],
- [PrefixMatcher('/ep/tag'), forward(tag_control)],
[PrefixMatcher('/ep/script/'), forward(scriptcontrol)],
[/^\/([^\/]+)$/, pad_control.render_pad],
[DirMatcher('/ep/unit-tests/'), forward(testcontrol)],
[DirMatcher('/ep/pne-manual/'), forward(pne_manual_control)],
[DirMatcher('/ep/pro-help/'), forward(pro_help_control)]
- ]);
+ ].concat(plugins.callHook('handlePath')));
var etherpadDotComDispatcher = new Dispatcher();
etherpadDotComDispatcher.addLocations([
- ['/', forward(tag_control)], // maincontrol.render_main],
+ ['/', maincontrol.render_main],
[DirMatcher('/ep/beta-account/'), forward(pro_beta_control)],
[DirMatcher('/ep/pro-signup/'), forward(pro_signup_control)],
[DirMatcher('/ep/about/'), forward(aboutcontrol)],
+ [DirMatcher('/ep/admin/pluginmanager'), forward(pluginmanager)],
[DirMatcher('/ep/admin/'), forward(admincontrol)],
[DirMatcher('/ep/blog/posts/'), blogcontrol.render_post],
[DirMatcher('/ep/blog/'), forward(blogcontrol)],
diff --git a/etherpad/src/plugins/kafoo/main.js b/etherpad/src/plugins/kafoo/main.js
new file mode 100644
index 0000000..f645576
--- /dev/null
+++ b/etherpad/src/plugins/kafoo/main.js
@@ -0,0 +1,16 @@
+import("etherpad.log");
+
+function init() {
+ this.hooks = [];
+ this.description = 'KaBar plugin';
+ this.install = install;
+ this.uninstall = uninstall;
+}
+
+function install() {
+ log.info("Installing testplugin");
+}
+
+function uninstall() {
+ log.info("Uninstalling testplugin");
+}
diff --git a/etherpad/src/plugins/testplugin/controllers/testplugin.js b/etherpad/src/plugins/testplugin/controllers/testplugin.js
new file mode 100644
index 0000000..0c79e06
--- /dev/null
+++ b/etherpad/src/plugins/testplugin/controllers/testplugin.js
@@ -0,0 +1,57 @@
+/**
+ * Copyright 2009 RedHog, Egil Möller <egil.moller@piratpartiet.se>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import("faststatic");
+import("dispatch.{Dispatcher,PrefixMatcher,forward}");
+
+import("etherpad.utils.*");
+import("etherpad.collab.server_utils");
+import("etherpad.globals.*");
+import("etherpad.log");
+import("etherpad.pad.padusers");
+import("etherpad.pro.pro_utils");
+import("etherpad.helpers");
+import("etherpad.pro.pro_accounts.getSessionProAccount");
+import("sqlbase.sqlbase");
+import("sqlbase.sqlcommon");
+import("sqlbase.sqlobj");
+
+
+function onRequest() {
+ var isPro = pro_utils.isProDomainRequest();
+ var userId = padusers.getUserId();
+
+ helpers.addClientVars({
+ userAgent: request.headers["User-Agent"],
+ debugEnabled: request.params.djs,
+ clientIp: request.clientAddr,
+ colorPalette: COLOR_PALETTE,
+ serverTimestamp: +(new Date),
+ isProPad: isPro,
+ userIsGuest: padusers.isGuest(userId),
+ userId: userId,
+ });
+
+ var isProUser = (isPro && ! padusers.isGuest(userId));
+
+ renderHtml("testplugin.ejs",
+ {
+ isPro: isPro,
+ isProAccountHolder: isProUser,
+ account: getSessionProAccount(), // may be falsy
+ }, 'testplugin');
+ return true;
+}
diff --git a/etherpad/src/plugins/testplugin/hooks.js b/etherpad/src/plugins/testplugin/hooks.js
new file mode 100644
index 0000000..493a2c2
--- /dev/null
+++ b/etherpad/src/plugins/testplugin/hooks.js
@@ -0,0 +1,15 @@
+import("etherpad.log");
+import("dispatch.{Dispatcher,PrefixMatcher,forward}");
+import("plugins.testplugin.controllers.testplugin");
+
+function serverStartup() {
+ log.info("Server startup for testplugin");
+}
+
+function serverShutdown() {
+ log.info("Server shutdown for testplugin");
+}
+
+function handlePath() {
+ return [[PrefixMatcher('/ep/testplugin/'), forward(testplugin)]];
+}
diff --git a/etherpad/src/plugins/testplugin/main.js b/etherpad/src/plugins/testplugin/main.js
new file mode 100644
index 0000000..49b447c
--- /dev/null
+++ b/etherpad/src/plugins/testplugin/main.js
@@ -0,0 +1,23 @@
+import("etherpad.log");
+import("plugins.testplugin.hooks");
+import("plugins.testplugin.static.js.main");
+
+function init() {
+ this.hooks = ['serverStartup', 'serverShutdown', 'handlePath'];
+ this.client = new main.init();
+ this.description = 'Test Plugin';
+ this.serverStartup = hooks.serverStartup;
+ this.serverShutdown = hooks.serverShutdown;
+ this.handlePath = hooks.handlePath;
+ this.install = install;
+ this.uninstall = uninstall;
+}
+
+function install() {
+ log.info("Installing testplugin");
+}
+
+function uninstall() {
+ log.info("Uninstalling testplugin");
+}
+
diff --git a/etherpad/src/plugins/testplugin/static/js/main.js b/etherpad/src/plugins/testplugin/static/js/main.js
new file mode 100644
index 0000000..f08b8f7
--- /dev/null
+++ b/etherpad/src/plugins/testplugin/static/js/main.js
@@ -0,0 +1,11 @@
+function init() {
+ this.hooks = ['kafoo'];
+ this.kafoo = kafoo;
+}
+
+function kafoo() {
+ alert('hej');
+}
+
+/* used on the client side only */
+testplugin = new init();
diff --git a/etherpad/src/plugins/testplugin/static/js/test.js b/etherpad/src/plugins/testplugin/static/js/test.js
new file mode 100644
index 0000000..83fb40c
--- /dev/null
+++ b/etherpad/src/plugins/testplugin/static/js/test.js
@@ -0,0 +1 @@
+plugins.callHook("kafoo");
diff --git a/etherpad/src/plugins/testplugin/templates/testplugin.ejs b/etherpad/src/plugins/testplugin/templates/testplugin.ejs
new file mode 100644
index 0000000..f70ca8d
--- /dev/null
+++ b/etherpad/src/plugins/testplugin/templates/testplugin.ejs
@@ -0,0 +1,29 @@
+<% /* Copyright 2009 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS-IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */ %>
+<%
+ helpers.setHtmlTitle("Test plugin");
+ helpers.setBodyId("padbody");
+ helpers.addBodyClass("limwidth nonpropad nonprouser");
+ helpers.includeCss("pad2_ejs.css");
+ helpers.setRobotsPolicy({index: false, follow: false})
+ helpers.includeJQuery();
+ helpers.includeCometJs();
+ helpers.includeJs("json2.js");
+ helpers.includeJs("plugins/testplugin/test.js");
+ helpers.addToHead('\n<style type="text/css" title="dynamicsyntax"></style>\n');
+%>
+
+<div id="padpage">
+ Welcome to the test plugin
+</div>
diff --git a/trunk/etherpad/src/etherpad/control/tag/tag_control.js b/etherpad/src/plugins/twitterStyleTags/controllers/tagBrowser.js
index 7d38270..f5e63f7 100644
--- a/trunk/etherpad/src/etherpad/control/tag/tag_control.js
+++ b/etherpad/src/plugins/twitterStyleTags/controllers/tagBrowser.js
@@ -190,14 +190,14 @@ function onRequest() {
}
var querySql = getQueryToSql(tags.concat(['public']), antiTags);
- log.info(querySql.sql);
+ //log.info(querySql.sql);
var queryNewTagsSql = newTagsSql(querySql);
var newTags = sqlobj.executeRaw(queryNewTagsSql.sql, queryNewTagsSql.params);
var matchingPads;
if (tags.length > 0 || antiTags.length > 0) {
- var sql = "select p.ID, p.TAGS from PAD_TAG_CACHE as p, " + querySql.sql + " as q where p.ID = q.ID limit 10"
+ var sql = "select p.PAD_ID as ID, p.TAGS from PAD_TAG_CACHE as p, " + querySql.sql + " as q where p.PAD_ID = q.ID limit 10"
matchingPads = sqlobj.executeRaw(sql, querySql.params);
} else {
matchingPads = [];
@@ -223,7 +223,7 @@ function onRequest() {
var isProUser = (isPro && ! padusers.isGuest(userId));
- renderHtml("tag/tag_search.ejs",
+ renderHtml("tagBrowser.ejs",
{
config: appjet.config,
tagsToQuery: tagsToQuery,
@@ -236,6 +236,6 @@ function onRequest() {
isPro: isPro,
isProAccountHolder: isProUser,
account: getSessionProAccount(), // may be falsy
- });
+ }, 'twitterStyleTags');
return true;
}
diff --git a/etherpad/src/plugins/twitterStyleTags/hooks.js b/etherpad/src/plugins/twitterStyleTags/hooks.js
new file mode 100644
index 0000000..a5513f0
--- /dev/null
+++ b/etherpad/src/plugins/twitterStyleTags/hooks.js
@@ -0,0 +1,47 @@
+import("etherpad.log");
+import("dispatch.{Dispatcher,PrefixMatcher,forward}");
+import("plugins.twitterStyleTags.controllers.tagBrowser");
+import("sqlbase.sqlobj");
+
+function handlePath() {
+ return [[PrefixMatcher('/ep/tag/'), forward(tagBrowser)]];
+}
+
+function padModelWriteToDB(args) {
+ /* Update tags for the pad */
+
+ var new_tags = args.pad.text().match(new RegExp("#[^,#!\\s][^,#!\\s]*", "g"));
+ if (new_tags == null) new_tags = new Array();
+ for (i = 0; i < new_tags.length; i++)
+ new_tags[i] = new_tags[i].substring(1);
+ var new_tags_str = new_tags.join('#')
+
+ var old_tags_row = sqlobj.selectSingle("PAD_TAG_CACHE", { PAD_ID: args.padId });
+ var old_tags_str;
+ if (old_tags_row !== null)
+ old_tags_str = old_tags_row['TAGS'];
+ else
+ old_tags_str = '';
+
+ var old_tags = old_tags_str != '' ? old_tags_str.split('#') : new Array();
+
+ if (new_tags_str != old_tags_str) {
+ log.info({message: 'Updating tags', new_tags:new_tags, old_tags:old_tags});
+
+ if (old_tags_row)
+ sqlobj.update("PAD_TAG_CACHE", {PAD_ID: args.padId }, {TAGS: new_tags.join('#')});
+ else
+ sqlobj.insert("PAD_TAG_CACHE", {PAD_ID: args.padId, TAGS: new_tags.join('#')});
+
+ sqlobj.deleteRows("PAD_TAG", {PAD_ID: args.padId});
+
+ for (i = 0; i < new_tags.length; i++) {
+ var tag_row = sqlobj.selectSingle("TAG", { NAME: new_tags[i] });
+ if (tag_row === null) {
+ sqlobj.insert("TAG", {NAME: new_tags[i]});
+ tag_row = sqlobj.selectSingle("TAG", { NAME: new_tags[i] });
+ }
+ sqlobj.insert("PAD_TAG", {PAD_ID: args.padId, TAG_ID: tag_row['ID']});
+ }
+ }
+} \ No newline at end of file
diff --git a/etherpad/src/plugins/twitterStyleTags/main.js b/etherpad/src/plugins/twitterStyleTags/main.js
new file mode 100644
index 0000000..5f42dea
--- /dev/null
+++ b/etherpad/src/plugins/twitterStyleTags/main.js
@@ -0,0 +1,43 @@
+import("etherpad.log");
+import("plugins.twitterStyleTags.hooks");
+import("plugins.twitterStyleTags.static.js.main");
+import("sqlbase.sqlobj");
+import("sqlbase.sqlcommon");
+
+function init() {
+ this.hooks = ['handlePath', 'aceGetFilterStack', 'aceCreateDomLine', 'padModelWriteToDB'];
+ this.client = new main.init();
+ this.description = 'Twitter-style tags';
+ this.handlePath = hooks.handlePath;
+ this.aceGetFilterStack = main.aceGetFilterStack;
+ this.aceCreateDomLine = main.aceCreateDomLine;
+ this.padModelWriteToDB = hooks.padModelWriteToDB;
+
+ this.install = install;
+ this.uninstall = uninstall;
+}
+
+function install() {
+ log.info("Installing Twitter-style tags");
+
+ sqlobj.createTable('TAG', {
+ ID: 'int not null '+sqlcommon.autoIncrementClause()+' primary key',
+ NAME: 'varchar(128) character set utf8 collate utf8_bin not null',
+ });
+
+ sqlobj.createTable('PAD_TAG', {
+ PAD_ID: 'varchar(128) character set utf8 collate utf8_bin not null references PAD_META(ID)',
+ TAG_ID: 'int default NULL references TAG(ID)',
+ });
+
+ sqlobj.createTable('PAD_TAG_CACHE', {
+ PAD_ID: 'varchar(128) character set utf8 collate utf8_bin unique not null references PAD_META(ID)',
+ TAGS: 'varchar(1024) collate utf8_bin not null',
+ });
+
+}
+
+function uninstall() {
+ log.info("Uninstalling Twitter-style tags");
+}
+
diff --git a/etherpad/src/plugins/twitterStyleTags/static/js/main.js b/etherpad/src/plugins/twitterStyleTags/static/js/main.js
new file mode 100644
index 0000000..eae0c4f
--- /dev/null
+++ b/etherpad/src/plugins/twitterStyleTags/static/js/main.js
@@ -0,0 +1,29 @@
+function init() {
+ this.hooks = ['aceGetFilterStack', 'aceCreateDomLine'];
+ this.aceGetFilterStack = aceGetFilterStack;
+ this.aceCreateDomLine = aceCreateDomLine;
+}
+
+function aceGetFilterStack(args) {
+ return [args.linestylefilter.getRegexpFilter(
+ new RegExp("#[^,#!\\s][^,#!\\s]*", "g"), 'padtag')];
+}
+
+function aceCreateDomLine(args) {
+ if (args.cls.indexOf('padtag') < 0)
+ return;
+
+ var href;
+ cls = args.cls.replace(/(^| )padtag:(\S+)/g, function(x0, space, padtag) {
+ href = '/ep/tag/?query=' + padtag.substring(1);
+ return space + "padtag padtag_" + padtag.substring(1);
+ });
+
+ return [{
+ cls: cls,
+ extraOpenTags: '<a href="' + href.replace(/\"/g, '&quot;') + '">',
+ extraCloseTags: '</a>'}];
+}
+
+/* used on the client side only */
+twitterStyleTags = new init();
diff --git a/trunk/etherpad/src/templates/tag/tag_search.ejs b/etherpad/src/plugins/twitterStyleTags/templates/tagBrowser.ejs
index ba00aa2..ba00aa2 100644
--- a/trunk/etherpad/src/templates/tag/tag_search.ejs
+++ b/etherpad/src/plugins/twitterStyleTags/templates/tagBrowser.ejs
diff --git a/trunk/etherpad/src/static/crossdomain.xml b/etherpad/src/static/crossdomain.xml
index 1074b2a..1074b2a 100644
--- a/trunk/etherpad/src/static/crossdomain.xml
+++ b/etherpad/src/static/crossdomain.xml
diff --git a/trunk/etherpad/src/static/css/admin/admin-stats.css b/etherpad/src/static/css/admin/admin-stats.css
index 94e0d19..94e0d19 100644
--- a/trunk/etherpad/src/static/css/admin/admin-stats.css
+++ b/etherpad/src/static/css/admin/admin-stats.css
diff --git a/trunk/etherpad/src/static/css/beta.css b/etherpad/src/static/css/beta.css
index afba271..afba271 100644
--- a/trunk/etherpad/src/static/css/beta.css
+++ b/etherpad/src/static/css/beta.css
diff --git a/trunk/etherpad/src/static/css/broadcast.css b/etherpad/src/static/css/broadcast.css
index 9114f8e..9114f8e 100644
--- a/trunk/etherpad/src/static/css/broadcast.css
+++ b/etherpad/src/static/css/broadcast.css
diff --git a/trunk/etherpad/src/static/css/connection_diagnostics.css b/etherpad/src/static/css/connection_diagnostics.css
index fc040d0..fc040d0 100644
--- a/trunk/etherpad/src/static/css/connection_diagnostics.css
+++ b/etherpad/src/static/css/connection_diagnostics.css
diff --git a/trunk/etherpad/src/static/css/etherpad.css b/etherpad/src/static/css/etherpad.css
index 70bf464..70bf464 100644
--- a/trunk/etherpad/src/static/css/etherpad.css
+++ b/etherpad/src/static/css/etherpad.css
diff --git a/trunk/etherpad/src/static/css/fluxbb.css b/etherpad/src/static/css/fluxbb.css
index 844ceca..844ceca 100644
--- a/trunk/etherpad/src/static/css/fluxbb.css
+++ b/etherpad/src/static/css/fluxbb.css
diff --git a/trunk/etherpad/src/static/css/framedpage.css b/etherpad/src/static/css/framedpage.css
index a99554b..a99554b 100644
--- a/trunk/etherpad/src/static/css/framedpage.css
+++ b/etherpad/src/static/css/framedpage.css
diff --git a/trunk/etherpad/src/static/css/global-pro-account.css b/etherpad/src/static/css/global-pro-account.css
index 6c34446..6c34446 100644
--- a/trunk/etherpad/src/static/css/global-pro-account.css
+++ b/etherpad/src/static/css/global-pro-account.css
diff --git a/trunk/etherpad/src/static/css/home-opensource.css b/etherpad/src/static/css/home-opensource.css
index 41e7996..41e7996 100644
--- a/trunk/etherpad/src/static/css/home-opensource.css
+++ b/etherpad/src/static/css/home-opensource.css
diff --git a/trunk/etherpad/src/static/css/home.css b/etherpad/src/static/css/home.css
index 797a8a7..797a8a7 100644
--- a/trunk/etherpad/src/static/css/home.css
+++ b/etherpad/src/static/css/home.css
diff --git a/trunk/etherpad/src/static/css/lib/jquery.contextmenu.css b/etherpad/src/static/css/lib/jquery.contextmenu.css
index 15a69aa..15a69aa 100644
--- a/trunk/etherpad/src/static/css/lib/jquery.contextmenu.css
+++ b/etherpad/src/static/css/lib/jquery.contextmenu.css
diff --git a/trunk/etherpad/src/static/css/pad.css b/etherpad/src/static/css/pad.css
index 02c341f..02c341f 100644
--- a/trunk/etherpad/src/static/css/pad.css
+++ b/etherpad/src/static/css/pad.css
diff --git a/trunk/etherpad/src/static/css/pad2_ejs.css b/etherpad/src/static/css/pad2_ejs.css
index 3b9269e..3b9269e 100644
--- a/trunk/etherpad/src/static/css/pad2_ejs.css
+++ b/etherpad/src/static/css/pad2_ejs.css
diff --git a/trunk/etherpad/src/static/css/pne-manual.css b/etherpad/src/static/css/pne-manual.css
index 19f1ba0..19f1ba0 100644
--- a/trunk/etherpad/src/static/css/pne-manual.css
+++ b/etherpad/src/static/css/pne-manual.css
diff --git a/trunk/etherpad/src/static/css/pricing.css b/etherpad/src/static/css/pricing.css
index 0b7c9d5..0b7c9d5 100644
--- a/trunk/etherpad/src/static/css/pricing.css
+++ b/etherpad/src/static/css/pricing.css
diff --git a/trunk/etherpad/src/static/css/pro-help.css b/etherpad/src/static/css/pro-help.css
index 9237b62..9237b62 100644
--- a/trunk/etherpad/src/static/css/pro-help.css
+++ b/etherpad/src/static/css/pro-help.css
diff --git a/trunk/etherpad/src/static/css/pro-signup.css b/etherpad/src/static/css/pro-signup.css
index b58d86d..b58d86d 100644
--- a/trunk/etherpad/src/static/css/pro-signup.css
+++ b/etherpad/src/static/css/pro-signup.css
diff --git a/trunk/etherpad/src/static/css/pro/account.css b/etherpad/src/static/css/pro/account.css
index 212a847..212a847 100644
--- a/trunk/etherpad/src/static/css/pro/account.css
+++ b/etherpad/src/static/css/pro/account.css
diff --git a/trunk/etherpad/src/static/css/pro/framedpage-pro.css b/etherpad/src/static/css/pro/framedpage-pro.css
index cffa58b..cffa58b 100644
--- a/trunk/etherpad/src/static/css/pro/framedpage-pro.css
+++ b/etherpad/src/static/css/pro/framedpage-pro.css
diff --git a/trunk/etherpad/src/static/css/pro/padlist.css b/etherpad/src/static/css/pro/padlist.css
index 13d3171..13d3171 100644
--- a/trunk/etherpad/src/static/css/pro/padlist.css
+++ b/etherpad/src/static/css/pro/padlist.css
diff --git a/trunk/etherpad/src/static/css/pro/payment-required.css b/etherpad/src/static/css/pro/payment-required.css
index 44d55b2..44d55b2 100644
--- a/trunk/etherpad/src/static/css/pro/payment-required.css
+++ b/etherpad/src/static/css/pro/payment-required.css
diff --git a/trunk/etherpad/src/static/css/pro/pro-admin.css b/etherpad/src/static/css/pro/pro-admin.css
index e7462c9..e7462c9 100644
--- a/trunk/etherpad/src/static/css/pro/pro-admin.css
+++ b/etherpad/src/static/css/pro/pro-admin.css
diff --git a/trunk/etherpad/src/static/css/pro/pro-home.css b/etherpad/src/static/css/pro/pro-home.css
index 03f163a..03f163a 100644
--- a/trunk/etherpad/src/static/css/pro/pro-home.css
+++ b/etherpad/src/static/css/pro/pro-home.css
diff --git a/trunk/etherpad/src/static/css/stats.css b/etherpad/src/static/css/stats.css
index 25dd074..25dd074 100644
--- a/trunk/etherpad/src/static/css/stats.css
+++ b/etherpad/src/static/css/stats.css
diff --git a/trunk/etherpad/src/static/css/store/eepnet-checkout.css b/etherpad/src/static/css/store/eepnet-checkout.css
index 20254af..20254af 100644
--- a/trunk/etherpad/src/static/css/store/eepnet-checkout.css
+++ b/etherpad/src/static/css/store/eepnet-checkout.css
diff --git a/trunk/etherpad/src/static/css/store/ondemand-billing.css b/etherpad/src/static/css/store/ondemand-billing.css
index 7c4afe3..7c4afe3 100644
--- a/trunk/etherpad/src/static/css/store/ondemand-billing.css
+++ b/etherpad/src/static/css/store/ondemand-billing.css
diff --git a/trunk/etherpad/src/static/css/store/store.css b/etherpad/src/static/css/store/store.css
index f228698..f228698 100644
--- a/trunk/etherpad/src/static/css/store/store.css
+++ b/etherpad/src/static/css/store/store.css
diff --git a/trunk/etherpad/src/static/favicon.ico b/etherpad/src/static/favicon.ico
index a19a1cb..a19a1cb 100644
--- a/trunk/etherpad/src/static/favicon.ico
+++ b/etherpad/src/static/favicon.ico
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/appjet-logo-large.gif b/etherpad/src/static/img/about/appjet-logo-large.gif
index 11351b2..11351b2 100644
--- a/trunk/etherpad/src/static/img/about/appjet-logo-large.gif
+++ b/etherpad/src/static/img/about/appjet-logo-large.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/appjet-logo-medium.png b/etherpad/src/static/img/about/appjet-logo-medium.png
index f6297e1..f6297e1 100644
--- a/trunk/etherpad/src/static/img/about/appjet-logo-medium.png
+++ b/etherpad/src/static/img/about/appjet-logo-medium.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/investors/mitchkapor.jpg b/etherpad/src/static/img/about/investors/mitchkapor.jpg
index 5a65938..5a65938 100644
--- a/trunk/etherpad/src/static/img/about/investors/mitchkapor.jpg
+++ b/etherpad/src/static/img/about/investors/mitchkapor.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/investors/pb.jpg b/etherpad/src/static/img/about/investors/pb.jpg
index bd59c5c..bd59c5c 100644
--- a/trunk/etherpad/src/static/img/about/investors/pb.jpg
+++ b/etherpad/src/static/img/about/investors/pb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/investors/pg.jpg b/etherpad/src/static/img/about/investors/pg.jpg
index 184155d..184155d 100644
--- a/trunk/etherpad/src/static/img/about/investors/pg.jpg
+++ b/etherpad/src/static/img/about/investors/pg.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/investors/sanjeev.jpg b/etherpad/src/static/img/about/investors/sanjeev.jpg
index 9073b50..9073b50 100644
--- a/trunk/etherpad/src/static/img/about/investors/sanjeev.jpg
+++ b/etherpad/src/static/img/about/investors/sanjeev.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/investors/seth.jpg b/etherpad/src/static/img/about/investors/seth.jpg
index 00f2aa9..00f2aa9 100644
--- a/trunk/etherpad/src/static/img/about/investors/seth.jpg
+++ b/etherpad/src/static/img/about/investors/seth.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg b/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg
index 70c17db..70c17db 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg
+++ b/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-david-iphones.jpg b/etherpad/src/static/img/about/people/aaron-david-iphones.jpg
index 70c17db..70c17db 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-david-iphones.jpg
+++ b/etherpad/src/static/img/about/people/aaron-david-iphones.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-google-air.jpg b/etherpad/src/static/img/about/people/aaron-google-air.jpg
index 5948454..5948454 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-google-air.jpg
+++ b/etherpad/src/static/img/about/people/aaron-google-air.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg b/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg
index b0cffcd..b0cffcd 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg
+++ b/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-headshot.jpg b/etherpad/src/static/img/about/people/aaron-headshot.jpg
index 2b88437..2b88437 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-headshot.jpg
+++ b/etherpad/src/static/img/about/people/aaron-headshot.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg b/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg
index d6c1a97..d6c1a97 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg
+++ b/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-headshot2.jpg b/etherpad/src/static/img/about/people/aaron-headshot2.jpg
index e4b2a77..e4b2a77 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-headshot2.jpg
+++ b/etherpad/src/static/img/about/people/aaron-headshot2.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg b/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg
index cca1b68..cca1b68 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg
+++ b/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/aaron-headshot3.jpg b/etherpad/src/static/img/about/people/aaron-headshot3.jpg
index 13c433d..13c433d 100644
--- a/trunk/etherpad/src/static/img/about/people/aaron-headshot3.jpg
+++ b/etherpad/src/static/img/about/people/aaron-headshot3.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg b/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg
index 567316c..567316c 100644
--- a/trunk/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg
+++ b/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/david-headshot-thumb.jpg b/etherpad/src/static/img/about/people/david-headshot-thumb.jpg
index 5f9da44..5f9da44 100644
--- a/trunk/etherpad/src/static/img/about/people/david-headshot-thumb.jpg
+++ b/etherpad/src/static/img/about/people/david-headshot-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/david-headshot.jpg b/etherpad/src/static/img/about/people/david-headshot.jpg
index 89ab3ea..89ab3ea 100644
--- a/trunk/etherpad/src/static/img/about/people/david-headshot.jpg
+++ b/etherpad/src/static/img/about/people/david-headshot.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/davy-headshot.jpg b/etherpad/src/static/img/about/people/davy-headshot.jpg
index 9430186..9430186 100644
--- a/trunk/etherpad/src/static/img/about/people/davy-headshot.jpg
+++ b/etherpad/src/static/img/about/people/davy-headshot.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg b/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg
index b399a57..b399a57 100644
--- a/trunk/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg
+++ b/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/jd-headshot.jpg b/etherpad/src/static/img/about/people/jd-headshot.jpg
index 182d534..182d534 100644
--- a/trunk/etherpad/src/static/img/about/people/jd-headshot.jpg
+++ b/etherpad/src/static/img/about/people/jd-headshot.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg b/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg
index 8d9358b..8d9358b 100644
--- a/trunk/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg
+++ b/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/people/rhonda-headshot.jpg b/etherpad/src/static/img/about/people/rhonda-headshot.jpg
index b4c4ec8..b4c4ec8 100644
--- a/trunk/etherpad/src/static/img/about/people/rhonda-headshot.jpg
+++ b/etherpad/src/static/img/about/people/rhonda-headshot.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/pier38.png b/etherpad/src/static/img/about/pier38.png
index d15b3a8..d15b3a8 100644
--- a/trunk/etherpad/src/static/img/about/pier38.png
+++ b/etherpad/src/static/img/about/pier38.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/quote-close.png b/etherpad/src/static/img/about/quote-close.png
index de4b18b..de4b18b 100644
--- a/trunk/etherpad/src/static/img/about/quote-close.png
+++ b/etherpad/src/static/img/about/quote-close.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/quote-open.png b/etherpad/src/static/img/about/quote-open.png
index e637705..e637705 100644
--- a/trunk/etherpad/src/static/img/about/quote-open.png
+++ b/etherpad/src/static/img/about/quote-open.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/about/screencastpreview800x600.jpg b/etherpad/src/static/img/about/screencastpreview800x600.jpg
index 2a4ed39..2a4ed39 100644
--- a/trunk/etherpad/src/static/img/about/screencastpreview800x600.jpg
+++ b/etherpad/src/static/img/about/screencastpreview800x600.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/account/betawarn.jpg b/etherpad/src/static/img/account/betawarn.jpg
index c3cec1b..c3cec1b 100644
--- a/trunk/etherpad/src/static/img/account/betawarn.jpg
+++ b/etherpad/src/static/img/account/betawarn.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/acecarets/000000.gif b/etherpad/src/static/img/acecarets/000000.gif
index f67bd3d..f67bd3d 100644
--- a/trunk/etherpad/src/static/img/acecarets/000000.gif
+++ b/etherpad/src/static/img/acecarets/000000.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/acecarets/666666.gif b/etherpad/src/static/img/acecarets/666666.gif
index cd8e264..cd8e264 100644
--- a/trunk/etherpad/src/static/img/acecarets/666666.gif
+++ b/etherpad/src/static/img/acecarets/666666.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/acecarets/999999.gif b/etherpad/src/static/img/acecarets/999999.gif
index fa75d25..fa75d25 100644
--- a/trunk/etherpad/src/static/img/acecarets/999999.gif
+++ b/etherpad/src/static/img/acecarets/999999.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/acecarets/default.gif b/etherpad/src/static/img/acecarets/default.gif
index 196d9ff..196d9ff 100644
--- a/trunk/etherpad/src/static/img/acecarets/default.gif
+++ b/etherpad/src/static/img/acecarets/default.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/backgrad.png b/etherpad/src/static/img/apr09/backgrad.png
index c61d830..c61d830 100644
--- a/trunk/etherpad/src/static/img/apr09/backgrad.png
+++ b/etherpad/src/static/img/apr09/backgrad.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/black35.png b/etherpad/src/static/img/apr09/black35.png
index 9d82846..9d82846 100644
--- a/trunk/etherpad/src/static/img/apr09/black35.png
+++ b/etherpad/src/static/img/apr09/black35.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/blank.gif b/etherpad/src/static/img/apr09/blank.gif
index 8fb6fb0..8fb6fb0 100644
--- a/trunk/etherpad/src/static/img/apr09/blank.gif
+++ b/etherpad/src/static/img/apr09/blank.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/modalbar.gif b/etherpad/src/static/img/apr09/modalbar.gif
index 3e86759..3e86759 100644
--- a/trunk/etherpad/src/static/img/apr09/modalbar.gif
+++ b/etherpad/src/static/img/apr09/modalbar.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/newpadicon.gif b/etherpad/src/static/img/apr09/newpadicon.gif
index a282728..a282728 100644
--- a/trunk/etherpad/src/static/img/apr09/newpadicon.gif
+++ b/etherpad/src/static/img/apr09/newpadicon.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/shadbot.png b/etherpad/src/static/img/apr09/shadbot.png
index 9506058..9506058 100644
--- a/trunk/etherpad/src/static/img/apr09/shadbot.png
+++ b/etherpad/src/static/img/apr09/shadbot.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/shadleft.png b/etherpad/src/static/img/apr09/shadleft.png
index 72049e0..72049e0 100644
--- a/trunk/etherpad/src/static/img/apr09/shadleft.png
+++ b/etherpad/src/static/img/apr09/shadleft.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/shadleftbot.png b/etherpad/src/static/img/apr09/shadleftbot.png
index 7d3fb5b..7d3fb5b 100644
--- a/trunk/etherpad/src/static/img/apr09/shadleftbot.png
+++ b/etherpad/src/static/img/apr09/shadleftbot.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/shadlefttop.png b/etherpad/src/static/img/apr09/shadlefttop.png
index 9af4e90..9af4e90 100644
--- a/trunk/etherpad/src/static/img/apr09/shadlefttop.png
+++ b/etherpad/src/static/img/apr09/shadlefttop.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/shadright.png b/etherpad/src/static/img/apr09/shadright.png
index 41d099c..41d099c 100644
--- a/trunk/etherpad/src/static/img/apr09/shadright.png
+++ b/etherpad/src/static/img/apr09/shadright.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/shadrightbot.png b/etherpad/src/static/img/apr09/shadrightbot.png
index 6770ec5..6770ec5 100644
--- a/trunk/etherpad/src/static/img/apr09/shadrightbot.png
+++ b/etherpad/src/static/img/apr09/shadrightbot.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/shadrighttop.png b/etherpad/src/static/img/apr09/shadrighttop.png
index 0f7a0ba..0f7a0ba 100644
--- a/trunk/etherpad/src/static/img/apr09/shadrighttop.png
+++ b/etherpad/src/static/img/apr09/shadrighttop.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/topbar.gif b/etherpad/src/static/img/apr09/topbar.gif
index 65ed7c8..65ed7c8 100644
--- a/trunk/etherpad/src/static/img/apr09/topbar.gif
+++ b/etherpad/src/static/img/apr09/topbar.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/topbarlogo.gif b/etherpad/src/static/img/apr09/topbarlogo.gif
index 9a3aa77..9a3aa77 100644
--- a/trunk/etherpad/src/static/img/apr09/topbarlogo.gif
+++ b/etherpad/src/static/img/apr09/topbarlogo.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/widthfull.gif b/etherpad/src/static/img/apr09/widthfull.gif
index 8850ec2..8850ec2 100644
--- a/trunk/etherpad/src/static/img/apr09/widthfull.gif
+++ b/etherpad/src/static/img/apr09/widthfull.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/widthfullactive.gif b/etherpad/src/static/img/apr09/widthfullactive.gif
index 36b566f..36b566f 100644
--- a/trunk/etherpad/src/static/img/apr09/widthfullactive.gif
+++ b/etherpad/src/static/img/apr09/widthfullactive.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/widthlim.gif b/etherpad/src/static/img/apr09/widthlim.gif
index 551e741..551e741 100644
--- a/trunk/etherpad/src/static/img/apr09/widthlim.gif
+++ b/etherpad/src/static/img/apr09/widthlim.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/apr09/widthlimactive.gif b/etherpad/src/static/img/apr09/widthlimactive.gif
index 8cf0194..8cf0194 100644
--- a/trunk/etherpad/src/static/img/apr09/widthlimactive.gif
+++ b/etherpad/src/static/img/apr09/widthlimactive.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/amex.gif b/etherpad/src/static/img/billing/amex.gif
index 96e2cbb..96e2cbb 100644
--- a/trunk/etherpad/src/static/img/billing/amex.gif
+++ b/etherpad/src/static/img/billing/amex.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/creditcard.gif b/etherpad/src/static/img/billing/creditcard.gif
index ac2353e..ac2353e 100644
--- a/trunk/etherpad/src/static/img/billing/creditcard.gif
+++ b/etherpad/src/static/img/billing/creditcard.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/csc-help.gif b/etherpad/src/static/img/billing/csc-help.gif
index 1afb6b7..1afb6b7 100644
--- a/trunk/etherpad/src/static/img/billing/csc-help.gif
+++ b/etherpad/src/static/img/billing/csc-help.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/disc.gif b/etherpad/src/static/img/billing/disc.gif
index a5e3a90..a5e3a90 100644
--- a/trunk/etherpad/src/static/img/billing/disc.gif
+++ b/etherpad/src/static/img/billing/disc.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/invoice.gif b/etherpad/src/static/img/billing/invoice.gif
index cee681a..cee681a 100644
--- a/trunk/etherpad/src/static/img/billing/invoice.gif
+++ b/etherpad/src/static/img/billing/invoice.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/mc.gif b/etherpad/src/static/img/billing/mc.gif
index 2331849..2331849 100644
--- a/trunk/etherpad/src/static/img/billing/mc.gif
+++ b/etherpad/src/static/img/billing/mc.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/paypal.gif b/etherpad/src/static/img/billing/paypal.gif
index 25333b1..25333b1 100644
--- a/trunk/etherpad/src/static/img/billing/paypal.gif
+++ b/etherpad/src/static/img/billing/paypal.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/billing/visa.gif b/etherpad/src/static/img/billing/visa.gif
index 4769f0c..4769f0c 100644
--- a/trunk/etherpad/src/static/img/billing/visa.gif
+++ b/etherpad/src/static/img/billing/visa.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif b/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif
index 73f427d..73f427d 100644
--- a/trunk/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif
+++ b/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/blog/posts/new-features/importexport.gif b/etherpad/src/static/img/blog/posts/new-features/importexport.gif
index f0d2bac..f0d2bac 100644
--- a/trunk/etherpad/src/static/img/blog/posts/new-features/importexport.gif
+++ b/etherpad/src/static/img/blog/posts/new-features/importexport.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/blog/posts/new-features/richtext.gif b/etherpad/src/static/img/blog/posts/new-features/richtext.gif
index 5d03bdc..5d03bdc 100644
--- a/trunk/etherpad/src/static/img/blog/posts/new-features/richtext.gif
+++ b/etherpad/src/static/img/blog/posts/new-features/richtext.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif b/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif
index 47e1caa..47e1caa 100644
--- a/trunk/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif
+++ b/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/blog/posts/pricing-survey-results.png b/etherpad/src/static/img/blog/posts/pricing-survey-results.png
index 668dd72..668dd72 100644
--- a/trunk/etherpad/src/static/img/blog/posts/pricing-survey-results.png
+++ b/etherpad/src/static/img/blog/posts/pricing-survey-results.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/blog/posts/pricing-survey.png b/etherpad/src/static/img/blog/posts/pricing-survey.png
index 7289aa8..7289aa8 100644
--- a/trunk/etherpad/src/static/img/blog/posts/pricing-survey.png
+++ b/etherpad/src/static/img/blog/posts/pricing-survey.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif b/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif
index 782ac15..782ac15 100644
--- a/trunk/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif
+++ b/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home-createpad.png b/etherpad/src/static/img/davy/bg/home-createpad.png
index e34e643..e34e643 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home-createpad.png
+++ b/etherpad/src/static/img/davy/bg/home-createpad.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home-features-bottom.gif b/etherpad/src/static/img/davy/bg/home-features-bottom.gif
index 7dc7644..7dc7644 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home-features-bottom.gif
+++ b/etherpad/src/static/img/davy/bg/home-features-bottom.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif b/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif
index 3bd7ba8..3bd7ba8 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif
+++ b/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home-features-paid-top.gif b/etherpad/src/static/img/davy/bg/home-features-paid-top.gif
index faed96c..faed96c 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home-features-paid-top.gif
+++ b/etherpad/src/static/img/davy/bg/home-features-paid-top.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home-features-top.gif b/etherpad/src/static/img/davy/bg/home-features-top.gif
index 2db70a6..2db70a6 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home-features-top.gif
+++ b/etherpad/src/static/img/davy/bg/home-features-top.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home-nav-selected.png b/etherpad/src/static/img/davy/bg/home-nav-selected.png
index 01c0a99..01c0a99 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home-nav-selected.png
+++ b/etherpad/src/static/img/davy/bg/home-nav-selected.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home-screencast.png b/etherpad/src/static/img/davy/bg/home-screencast.png
index e03b83d..e03b83d 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home-screencast.png
+++ b/etherpad/src/static/img/davy/bg/home-screencast.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/home2.png b/etherpad/src/static/img/davy/bg/home2.png
index 814c339..814c339 100644
--- a/trunk/etherpad/src/static/img/davy/bg/home2.png
+++ b/etherpad/src/static/img/davy/bg/home2.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/product-nav-selected-white.png b/etherpad/src/static/img/davy/bg/product-nav-selected-white.png
index 4365d4a..4365d4a 100644
--- a/trunk/etherpad/src/static/img/davy/bg/product-nav-selected-white.png
+++ b/etherpad/src/static/img/davy/bg/product-nav-selected-white.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/product-nav-selected.png b/etherpad/src/static/img/davy/bg/product-nav-selected.png
index a3094d0..a3094d0 100644
--- a/trunk/etherpad/src/static/img/davy/bg/product-nav-selected.png
+++ b/etherpad/src/static/img/davy/bg/product-nav-selected.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/bg/product.png b/etherpad/src/static/img/davy/bg/product.png
index 5a6f6f2..5a6f6f2 100644
--- a/trunk/etherpad/src/static/img/davy/bg/product.png
+++ b/etherpad/src/static/img/davy/bg/product.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/createpad-home.gif b/etherpad/src/static/img/davy/btn/createpad-home.gif
index 5a46f02..5a46f02 100644
--- a/trunk/etherpad/src/static/img/davy/btn/createpad-home.gif
+++ b/etherpad/src/static/img/davy/btn/createpad-home.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/createpad-large.gif b/etherpad/src/static/img/davy/btn/createpad-large.gif
index 9e37808..9e37808 100644
--- a/trunk/etherpad/src/static/img/davy/btn/createpad-large.gif
+++ b/etherpad/src/static/img/davy/btn/createpad-large.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/createpad-small.gif b/etherpad/src/static/img/davy/btn/createpad-small.gif
index 5df6502..5df6502 100644
--- a/trunk/etherpad/src/static/img/davy/btn/createpad-small.gif
+++ b/etherpad/src/static/img/davy/btn/createpad-small.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/intro-screencast.png b/etherpad/src/static/img/davy/btn/intro-screencast.png
index 8343ddf..8343ddf 100644
--- a/trunk/etherpad/src/static/img/davy/btn/intro-screencast.png
+++ b/etherpad/src/static/img/davy/btn/intro-screencast.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/intro-testimonials.png b/etherpad/src/static/img/davy/btn/intro-testimonials.png
index b1df4f2..b1df4f2 100644
--- a/trunk/etherpad/src/static/img/davy/btn/intro-testimonials.png
+++ b/etherpad/src/static/img/davy/btn/intro-testimonials.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/learnmore.gif b/etherpad/src/static/img/davy/btn/learnmore.gif
index 9f0f612..9f0f612 100644
--- a/trunk/etherpad/src/static/img/davy/btn/learnmore.gif
+++ b/etherpad/src/static/img/davy/btn/learnmore.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/signup-home-2.gif b/etherpad/src/static/img/davy/btn/signup-home-2.gif
index 1aea6ff..1aea6ff 100644
--- a/trunk/etherpad/src/static/img/davy/btn/signup-home-2.gif
+++ b/etherpad/src/static/img/davy/btn/signup-home-2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/signup-home-3.gif b/etherpad/src/static/img/davy/btn/signup-home-3.gif
index a237242..a237242 100644
--- a/trunk/etherpad/src/static/img/davy/btn/signup-home-3.gif
+++ b/etherpad/src/static/img/davy/btn/signup-home-3.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/signup-home-4.gif b/etherpad/src/static/img/davy/btn/signup-home-4.gif
index 966371e..966371e 100644
--- a/trunk/etherpad/src/static/img/davy/btn/signup-home-4.gif
+++ b/etherpad/src/static/img/davy/btn/signup-home-4.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/signup-home.gif b/etherpad/src/static/img/davy/btn/signup-home.gif
index 0a83858..0a83858 100644
--- a/trunk/etherpad/src/static/img/davy/btn/signup-home.gif
+++ b/etherpad/src/static/img/davy/btn/signup-home.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/btn/uses-more.gif b/etherpad/src/static/img/davy/btn/uses-more.gif
index 6a73bbc..6a73bbc 100644
--- a/trunk/etherpad/src/static/img/davy/btn/uses-more.gif
+++ b/etherpad/src/static/img/davy/btn/uses-more.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/32/114.png b/etherpad/src/static/img/davy/gfx/32/114.png
index cbab795..cbab795 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/32/114.png
+++ b/etherpad/src/static/img/davy/gfx/32/114.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/32/15.png b/etherpad/src/static/img/davy/gfx/32/15.png
index 596fd0f..596fd0f 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/32/15.png
+++ b/etherpad/src/static/img/davy/gfx/32/15.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/32/65.png b/etherpad/src/static/img/davy/gfx/32/65.png
index c331ee1..c331ee1 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/32/65.png
+++ b/etherpad/src/static/img/davy/gfx/32/65.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/32/78.png b/etherpad/src/static/img/davy/gfx/32/78.png
index fae3f29..fae3f29 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/32/78.png
+++ b/etherpad/src/static/img/davy/gfx/32/78.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/bullet.gif b/etherpad/src/static/img/davy/gfx/bullet.gif
index cb2e123..cb2e123 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/bullet.gif
+++ b/etherpad/src/static/img/davy/gfx/bullet.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/home-logo2.gif b/etherpad/src/static/img/davy/gfx/home-logo2.gif
index 24b67bd..24b67bd 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/home-logo2.gif
+++ b/etherpad/src/static/img/davy/gfx/home-logo2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/home-screencast.png b/etherpad/src/static/img/davy/gfx/home-screencast.png
index b5516d3..b5516d3 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/home-screencast.png
+++ b/etherpad/src/static/img/davy/gfx/home-screencast.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/plane.gif b/etherpad/src/static/img/davy/gfx/plane.gif
index cf3226e..cf3226e 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/plane.gif
+++ b/etherpad/src/static/img/davy/gfx/plane.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/product-logo.gif b/etherpad/src/static/img/davy/gfx/product-logo.gif
index 72975bb..72975bb 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/product-logo.gif
+++ b/etherpad/src/static/img/davy/gfx/product-logo.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/screenshot.gif b/etherpad/src/static/img/davy/gfx/screenshot.gif
index ba87f99..ba87f99 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/screenshot.gif
+++ b/etherpad/src/static/img/davy/gfx/screenshot.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/use-meetings.gif b/etherpad/src/static/img/davy/gfx/use-meetings.gif
index 3451969..3451969 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/use-meetings.gif
+++ b/etherpad/src/static/img/davy/gfx/use-meetings.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/use-meetings.png b/etherpad/src/static/img/davy/gfx/use-meetings.png
index 4e41581..4e41581 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/use-meetings.png
+++ b/etherpad/src/static/img/davy/gfx/use-meetings.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/use-programming.gif b/etherpad/src/static/img/davy/gfx/use-programming.gif
index 795e7fd..795e7fd 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/use-programming.gif
+++ b/etherpad/src/static/img/davy/gfx/use-programming.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/use-programming.png b/etherpad/src/static/img/davy/gfx/use-programming.png
index 825095d..825095d 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/use-programming.png
+++ b/etherpad/src/static/img/davy/gfx/use-programming.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/use-writing.gif b/etherpad/src/static/img/davy/gfx/use-writing.gif
index 0e2d11b..0e2d11b 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/use-writing.gif
+++ b/etherpad/src/static/img/davy/gfx/use-writing.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/gfx/use-writing.png b/etherpad/src/static/img/davy/gfx/use-writing.png
index c6e267c..c6e267c 100644
--- a/trunk/etherpad/src/static/img/davy/gfx/use-writing.png
+++ b/etherpad/src/static/img/davy/gfx/use-writing.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/davy/txt/home-button.gif b/etherpad/src/static/img/davy/txt/home-button.gif
index bdf4945..bdf4945 100644
--- a/trunk/etherpad/src/static/img/davy/txt/home-button.gif
+++ b/etherpad/src/static/img/davy/txt/home-button.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/featuretour/code.gif b/etherpad/src/static/img/featuretour/code.gif
index abff862..abff862 100644
--- a/trunk/etherpad/src/static/img/featuretour/code.gif
+++ b/etherpad/src/static/img/featuretour/code.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/featuretour/edits.gif b/etherpad/src/static/img/featuretour/edits.gif
index d38f83a..d38f83a 100644
--- a/trunk/etherpad/src/static/img/featuretour/edits.gif
+++ b/etherpad/src/static/img/featuretour/edits.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/featuretour/editsandusers.gif b/etherpad/src/static/img/featuretour/editsandusers.gif
index 90c36f8..90c36f8 100644
--- a/trunk/etherpad/src/static/img/featuretour/editsandusers.gif
+++ b/etherpad/src/static/img/featuretour/editsandusers.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/featuretour/padlock.png b/etherpad/src/static/img/featuretour/padlock.png
index f6d6c05..f6d6c05 100644
--- a/trunk/etherpad/src/static/img/featuretour/padlock.png
+++ b/etherpad/src/static/img/featuretour/padlock.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/featuretour/revisions.gif b/etherpad/src/static/img/featuretour/revisions.gif
index a0d8220..a0d8220 100644
--- a/trunk/etherpad/src/static/img/featuretour/revisions.gif
+++ b/etherpad/src/static/img/featuretour/revisions.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/featuretour/users.gif b/etherpad/src/static/img/featuretour/users.gif
index 48b4470..48b4470 100644
--- a/trunk/etherpad/src/static/img/featuretour/users.gif
+++ b/etherpad/src/static/img/featuretour/users.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/framedheaderback.gif b/etherpad/src/static/img/feb09/framedheaderback.gif
index 5b17b9f..5b17b9f 100644
--- a/trunk/etherpad/src/static/img/feb09/framedheaderback.gif
+++ b/etherpad/src/static/img/feb09/framedheaderback.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/framedheaderlogo.gif b/etherpad/src/static/img/feb09/framedheaderlogo.gif
index 01de8cd..01de8cd 100644
--- a/trunk/etherpad/src/static/img/feb09/framedheaderlogo.gif
+++ b/etherpad/src/static/img/feb09/framedheaderlogo.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_firstp.gif b/etherpad/src/static/img/feb09/home_firstp.gif
index af0a2cd..af0a2cd 100644
--- a/trunk/etherpad/src/static/img/feb09/home_firstp.gif
+++ b/etherpad/src/static/img/feb09/home_firstp.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_firstp.png b/etherpad/src/static/img/feb09/home_firstp.png
index cb7fc8c..cb7fc8c 100644
--- a/trunk/etherpad/src/static/img/feb09/home_firstp.png
+++ b/etherpad/src/static/img/feb09/home_firstp.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_firstp2.gif b/etherpad/src/static/img/feb09/home_firstp2.gif
index 9e0ed1e..9e0ed1e 100644
--- a/trunk/etherpad/src/static/img/feb09/home_firstp2.gif
+++ b/etherpad/src/static/img/feb09/home_firstp2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_h1.gif b/etherpad/src/static/img/feb09/home_h1.gif
index 1fe08cb..1fe08cb 100644
--- a/trunk/etherpad/src/static/img/feb09/home_h1.gif
+++ b/etherpad/src/static/img/feb09/home_h1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_h1.png b/etherpad/src/static/img/feb09/home_h1.png
index 1b5784d..1b5784d 100644
--- a/trunk/etherpad/src/static/img/feb09/home_h1.png
+++ b/etherpad/src/static/img/feb09/home_h1.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_newpadbutton.gif b/etherpad/src/static/img/feb09/home_newpadbutton.gif
index 8706407..8706407 100644
--- a/trunk/etherpad/src/static/img/feb09/home_newpadbutton.gif
+++ b/etherpad/src/static/img/feb09/home_newpadbutton.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_newpadbutton.png b/etherpad/src/static/img/feb09/home_newpadbutton.png
index ead253c..ead253c 100644
--- a/trunk/etherpad/src/static/img/feb09/home_newpadbutton.png
+++ b/etherpad/src/static/img/feb09/home_newpadbutton.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_newpadbutton2.gif b/etherpad/src/static/img/feb09/home_newpadbutton2.gif
index ba5d478..ba5d478 100644
--- a/trunk/etherpad/src/static/img/feb09/home_newpadbutton2.gif
+++ b/etherpad/src/static/img/feb09/home_newpadbutton2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif b/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif
index a365351..a365351 100644
--- a/trunk/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif
+++ b/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/hometop_back.gif b/etherpad/src/static/img/feb09/hometop_back.gif
index 7cdd406..7cdd406 100644
--- a/trunk/etherpad/src/static/img/feb09/hometop_back.gif
+++ b/etherpad/src/static/img/feb09/hometop_back.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/nav1.gif b/etherpad/src/static/img/feb09/nav1.gif
index 4af4869..4af4869 100644
--- a/trunk/etherpad/src/static/img/feb09/nav1.gif
+++ b/etherpad/src/static/img/feb09/nav1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/nav1_back.gif b/etherpad/src/static/img/feb09/nav1_back.gif
index d2db7ee..d2db7ee 100644
--- a/trunk/etherpad/src/static/img/feb09/nav1_back.gif
+++ b/etherpad/src/static/img/feb09/nav1_back.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/nav2.gif b/etherpad/src/static/img/feb09/nav2.gif
index f43a40e..f43a40e 100644
--- a/trunk/etherpad/src/static/img/feb09/nav2.gif
+++ b/etherpad/src/static/img/feb09/nav2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/feb09/screencast.gif b/etherpad/src/static/img/feb09/screencast.gif
index 3819082..3819082 100644
--- a/trunk/etherpad/src/static/img/feb09/screencast.gif
+++ b/etherpad/src/static/img/feb09/screencast.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/etherpad-mainheader1.jpg b/etherpad/src/static/img/home/etherpad-mainheader1.jpg
index ed7e830..ed7e830 100644
--- a/trunk/etherpad/src/static/img/home/etherpad-mainheader1.jpg
+++ b/etherpad/src/static/img/home/etherpad-mainheader1.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/headergradient.gif b/etherpad/src/static/img/home/headergradient.gif
index d6526dc..d6526dc 100644
--- a/trunk/etherpad/src/static/img/home/headergradient.gif
+++ b/etherpad/src/static/img/home/headergradient.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/homeheader1.jpg b/etherpad/src/static/img/home/homeheader1.jpg
index 3436158..3436158 100644
--- a/trunk/etherpad/src/static/img/home/homeheader1.jpg
+++ b/etherpad/src/static/img/home/homeheader1.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/homeheader2.jpg b/etherpad/src/static/img/home/homeheader2.jpg
index e19ba41..e19ba41 100644
--- a/trunk/etherpad/src/static/img/home/homeheader2.jpg
+++ b/etherpad/src/static/img/home/homeheader2.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/leftgrad.gif b/etherpad/src/static/img/home/leftgrad.gif
index ff3931a..ff3931a 100644
--- a/trunk/etherpad/src/static/img/home/leftgrad.gif
+++ b/etherpad/src/static/img/home/leftgrad.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/pencilpaperback.png b/etherpad/src/static/img/home/pencilpaperback.png
index e0d2f9d..e0d2f9d 100644
--- a/trunk/etherpad/src/static/img/home/pencilpaperback.png
+++ b/etherpad/src/static/img/home/pencilpaperback.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/screencapture1.gif b/etherpad/src/static/img/home/screencapture1.gif
index 7c3ce5a..7c3ce5a 100644
--- a/trunk/etherpad/src/static/img/home/screencapture1.gif
+++ b/etherpad/src/static/img/home/screencapture1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/home/underdevicon.gif b/etherpad/src/static/img/home/underdevicon.gif
index 5b75fd1..5b75fd1 100644
--- a/trunk/etherpad/src/static/img/home/underdevicon.gif
+++ b/etherpad/src/static/img/home/underdevicon.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/icon/downarrow.gif b/etherpad/src/static/img/icon/downarrow.gif
index 6389439..6389439 100644
--- a/trunk/etherpad/src/static/img/icon/downarrow.gif
+++ b/etherpad/src/static/img/icon/downarrow.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/icon/feed.gif b/etherpad/src/static/img/icon/feed.gif
index fb9b66c..fb9b66c 100644
--- a/trunk/etherpad/src/static/img/icon/feed.gif
+++ b/etherpad/src/static/img/icon/feed.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/backgrad.gif b/etherpad/src/static/img/jun09/pad/backgrad.gif
index 8fee1a5..8fee1a5 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/backgrad.gif
+++ b/etherpad/src/static/img/jun09/pad/backgrad.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/bottomareagfx.gif b/etherpad/src/static/img/jun09/pad/bottomareagfx.gif
index c499a62..c499a62 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/bottomareagfx.gif
+++ b/etherpad/src/static/img/jun09/pad/bottomareagfx.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/colorpicker.gif b/etherpad/src/static/img/jun09/pad/colorpicker.gif
index 602e7e6..602e7e6 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/colorpicker.gif
+++ b/etherpad/src/static/img/jun09/pad/colorpicker.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/connectingbar.gif b/etherpad/src/static/img/jun09/pad/connectingbar.gif
index 34f54e9..34f54e9 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/connectingbar.gif
+++ b/etherpad/src/static/img/jun09/pad/connectingbar.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/connectionindicator.gif b/etherpad/src/static/img/jun09/pad/connectionindicator.gif
index ecc270d..ecc270d 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/connectionindicator.gif
+++ b/etherpad/src/static/img/jun09/pad/connectionindicator.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/docbarstates.png b/etherpad/src/static/img/jun09/pad/docbarstates.png
index 13a5913..13a5913 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/docbarstates.png
+++ b/etherpad/src/static/img/jun09/pad/docbarstates.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/docbarstates2.png b/etherpad/src/static/img/jun09/pad/docbarstates2.png
index 9e26b1d..9e26b1d 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/docbarstates2.png
+++ b/etherpad/src/static/img/jun09/pad/docbarstates2.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/docbarstates3.png b/etherpad/src/static/img/jun09/pad/docbarstates3.png
index cdc6a45..cdc6a45 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/docbarstates3.png
+++ b/etherpad/src/static/img/jun09/pad/docbarstates3.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/docpaneledge.png b/etherpad/src/static/img/jun09/pad/docpaneledge.png
index de22d6a..de22d6a 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/docpaneledge.png
+++ b/etherpad/src/static/img/jun09/pad/docpaneledge.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/docpaneledge2.png b/etherpad/src/static/img/jun09/pad/docpaneledge2.png
index c119c74..c119c74 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/docpaneledge2.png
+++ b/etherpad/src/static/img/jun09/pad/docpaneledge2.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle.png b/etherpad/src/static/img/jun09/pad/docpanelmiddle.png
index 9290e86..9290e86 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle.png
+++ b/etherpad/src/static/img/jun09/pad/docpanelmiddle.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png b/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png
index d251c23..d251c23 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png
+++ b/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/editbar.gif b/etherpad/src/static/img/jun09/pad/editbar.gif
index eb7100c..eb7100c 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/editbar.gif
+++ b/etherpad/src/static/img/jun09/pad/editbar.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/editbar2.gif b/etherpad/src/static/img/jun09/pad/editbar2.gif
index d222fb8..d222fb8 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/editbar2.gif
+++ b/etherpad/src/static/img/jun09/pad/editbar2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/editbar3.gif b/etherpad/src/static/img/jun09/pad/editbar3.gif
index e73c505..e73c505 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/editbar3.gif
+++ b/etherpad/src/static/img/jun09/pad/editbar3.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/editbarback.gif b/etherpad/src/static/img/jun09/pad/editbarback.gif
index ab51802..ab51802 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/editbarback.gif
+++ b/etherpad/src/static/img/jun09/pad/editbarback.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/feedbackbox2.gif b/etherpad/src/static/img/jun09/pad/feedbackbox2.gif
index f1b8f5b..f1b8f5b 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/feedbackbox2.gif
+++ b/etherpad/src/static/img/jun09/pad/feedbackbox2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/fileicons.gif b/etherpad/src/static/img/jun09/pad/fileicons.gif
index 26f6388..26f6388 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/fileicons.gif
+++ b/etherpad/src/static/img/jun09/pad/fileicons.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/hdraggie.gif b/etherpad/src/static/img/jun09/pad/hdraggie.gif
index 0a6fe3e..0a6fe3e 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/hdraggie.gif
+++ b/etherpad/src/static/img/jun09/pad/hdraggie.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/inviteshare.gif b/etherpad/src/static/img/jun09/pad/inviteshare.gif
index 55345e5..55345e5 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/inviteshare.gif
+++ b/etherpad/src/static/img/jun09/pad/inviteshare.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/inviteshare2.gif b/etherpad/src/static/img/jun09/pad/inviteshare2.gif
index 98d4c85..98d4c85 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/inviteshare2.gif
+++ b/etherpad/src/static/img/jun09/pad/inviteshare2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/layoutbuttons.gif b/etherpad/src/static/img/jun09/pad/layoutbuttons.gif
index ea43432..ea43432 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/layoutbuttons.gif
+++ b/etherpad/src/static/img/jun09/pad/layoutbuttons.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/overlay.png b/etherpad/src/static/img/jun09/pad/overlay.png
index 46abff3..46abff3 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/overlay.png
+++ b/etherpad/src/static/img/jun09/pad/overlay.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/overlay2.png b/etherpad/src/static/img/jun09/pad/overlay2.png
index c3d3f1c..c3d3f1c 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/overlay2.png
+++ b/etherpad/src/static/img/jun09/pad/overlay2.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/padtop.gif b/etherpad/src/static/img/jun09/pad/padtop.gif
index 9e77b07..9e77b07 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/padtop.gif
+++ b/etherpad/src/static/img/jun09/pad/padtop.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/padtop2.gif b/etherpad/src/static/img/jun09/pad/padtop2.gif
index 1e3d8c2..1e3d8c2 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/padtop2.gif
+++ b/etherpad/src/static/img/jun09/pad/padtop2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/padtop3.gif b/etherpad/src/static/img/jun09/pad/padtop3.gif
index b6bc589..b6bc589 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/padtop3.gif
+++ b/etherpad/src/static/img/jun09/pad/padtop3.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/padtop4.gif b/etherpad/src/static/img/jun09/pad/padtop4.gif
index d896250..d896250 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/padtop4.gif
+++ b/etherpad/src/static/img/jun09/pad/padtop4.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/padtop5.gif b/etherpad/src/static/img/jun09/pad/padtop5.gif
index ce41dcb..ce41dcb 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/padtop5.gif
+++ b/etherpad/src/static/img/jun09/pad/padtop5.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/padtopback.gif b/etherpad/src/static/img/jun09/pad/padtopback.gif
index 335979b..335979b 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/padtopback.gif
+++ b/etherpad/src/static/img/jun09/pad/padtopback.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/padtopback2.gif b/etherpad/src/static/img/jun09/pad/padtopback2.gif
index eb92358..eb92358 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/padtopback2.gif
+++ b/etherpad/src/static/img/jun09/pad/padtopback2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/protop.gif b/etherpad/src/static/img/jun09/pad/protop.gif
index 9171646..9171646 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/protop.gif
+++ b/etherpad/src/static/img/jun09/pad/protop.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/public.gif b/etherpad/src/static/img/jun09/pad/public.gif
index e6f09c7..e6f09c7 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/public.gif
+++ b/etherpad/src/static/img/jun09/pad/public.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/savedrevarrows.gif b/etherpad/src/static/img/jun09/pad/savedrevarrows.gif
index 2aa2e41..2aa2e41 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/savedrevarrows.gif
+++ b/etherpad/src/static/img/jun09/pad/savedrevarrows.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif b/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif
index 45c3459..45c3459 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif
+++ b/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/sharebox2.gif b/etherpad/src/static/img/jun09/pad/sharebox2.gif
index 8e89925..8e89925 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/sharebox2.gif
+++ b/etherpad/src/static/img/jun09/pad/sharebox2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/sharebox3.gif b/etherpad/src/static/img/jun09/pad/sharebox3.gif
index 6f8f03c..6f8f03c 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/sharebox3.gif
+++ b/etherpad/src/static/img/jun09/pad/sharebox3.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/sharebox4.gif b/etherpad/src/static/img/jun09/pad/sharebox4.gif
index eccaa7e..eccaa7e 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/sharebox4.gif
+++ b/etherpad/src/static/img/jun09/pad/sharebox4.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/sharedistri.gif b/etherpad/src/static/img/jun09/pad/sharedistri.gif
index 8eb5891..8eb5891 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/sharedistri.gif
+++ b/etherpad/src/static/img/jun09/pad/sharedistri.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/syncdone.gif b/etherpad/src/static/img/jun09/pad/syncdone.gif
index e4d971b..e4d971b 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/syncdone.gif
+++ b/etherpad/src/static/img/jun09/pad/syncdone.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/syncing.gif b/etherpad/src/static/img/jun09/pad/syncing.gif
index bbc731f..bbc731f 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/syncing.gif
+++ b/etherpad/src/static/img/jun09/pad/syncing.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/syncing2.gif b/etherpad/src/static/img/jun09/pad/syncing2.gif
index 29470e3..29470e3 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/syncing2.gif
+++ b/etherpad/src/static/img/jun09/pad/syncing2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/jun09/pad/viewbargfx.gif b/etherpad/src/static/img/jun09/pad/viewbargfx.gif
index 396483a..396483a 100644
--- a/trunk/etherpad/src/static/img/jun09/pad/viewbargfx.gif
+++ b/etherpad/src/static/img/jun09/pad/viewbargfx.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif
index d0e428e..d0e428e 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif
index 8240ba3..8240ba3 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png
index 6314d53..6314d53 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif
index 7e70aae..7e70aae 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif
index aa802e0..aa802e0 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif
index 565e771..565e771 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif
index 2825eb1..2825eb1 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif
index 11b238c..11b238c 100644
--- a/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif
+++ b/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/bold.gif b/etherpad/src/static/img/may09/bold.gif
index 49e0d17..49e0d17 100644
--- a/trunk/etherpad/src/static/img/may09/bold.gif
+++ b/etherpad/src/static/img/may09/bold.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/doc.gif b/etherpad/src/static/img/may09/doc.gif
index 2b62080..2b62080 100644
--- a/trunk/etherpad/src/static/img/may09/doc.gif
+++ b/etherpad/src/static/img/may09/doc.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/doc.png b/etherpad/src/static/img/may09/doc.png
index b374d0d..b374d0d 100644
--- a/trunk/etherpad/src/static/img/may09/doc.png
+++ b/etherpad/src/static/img/may09/doc.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/html.gif b/etherpad/src/static/img/may09/html.gif
index f7837e5..f7837e5 100644
--- a/trunk/etherpad/src/static/img/may09/html.gif
+++ b/etherpad/src/static/img/may09/html.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/html.png b/etherpad/src/static/img/may09/html.png
index 917f1a4..917f1a4 100644
--- a/trunk/etherpad/src/static/img/may09/html.png
+++ b/etherpad/src/static/img/may09/html.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/italic.gif b/etherpad/src/static/img/may09/italic.gif
index 2876ed9..2876ed9 100644
--- a/trunk/etherpad/src/static/img/may09/italic.gif
+++ b/etherpad/src/static/img/may09/italic.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/leftarrow.gif b/etherpad/src/static/img/may09/leftarrow.gif
index c26475f..c26475f 100644
--- a/trunk/etherpad/src/static/img/may09/leftarrow.gif
+++ b/etherpad/src/static/img/may09/leftarrow.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/leftarrow2.gif b/etherpad/src/static/img/may09/leftarrow2.gif
index 63bbddc..63bbddc 100644
--- a/trunk/etherpad/src/static/img/may09/leftarrow2.gif
+++ b/etherpad/src/static/img/may09/leftarrow2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/link.gif b/etherpad/src/static/img/may09/link.gif
index 44ffdd2..44ffdd2 100644
--- a/trunk/etherpad/src/static/img/may09/link.gif
+++ b/etherpad/src/static/img/may09/link.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/link.png b/etherpad/src/static/img/may09/link.png
index 4e46fcb..4e46fcb 100644
--- a/trunk/etherpad/src/static/img/may09/link.png
+++ b/etherpad/src/static/img/may09/link.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/odt.gif b/etherpad/src/static/img/may09/odt.gif
index be42352..be42352 100644
--- a/trunk/etherpad/src/static/img/may09/odt.gif
+++ b/etherpad/src/static/img/may09/odt.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/odt.png b/etherpad/src/static/img/may09/odt.png
index 5d630db..5d630db 100644
--- a/trunk/etherpad/src/static/img/may09/odt.png
+++ b/etherpad/src/static/img/may09/odt.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/padlock.gif b/etherpad/src/static/img/may09/padlock.gif
index 167bf75..167bf75 100644
--- a/trunk/etherpad/src/static/img/may09/padlock.gif
+++ b/etherpad/src/static/img/may09/padlock.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/padlockopen.gif b/etherpad/src/static/img/may09/padlockopen.gif
index 0aaf413..0aaf413 100644
--- a/trunk/etherpad/src/static/img/may09/padlockopen.gif
+++ b/etherpad/src/static/img/may09/padlockopen.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/passwordlocked.gif b/etherpad/src/static/img/may09/passwordlocked.gif
index 167bf75..167bf75 100644
--- a/trunk/etherpad/src/static/img/may09/passwordlocked.gif
+++ b/etherpad/src/static/img/may09/passwordlocked.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/passwordlocked_cropped.gif b/etherpad/src/static/img/may09/passwordlocked_cropped.gif
index 969a8bd..969a8bd 100644
--- a/trunk/etherpad/src/static/img/may09/passwordlocked_cropped.gif
+++ b/etherpad/src/static/img/may09/passwordlocked_cropped.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/passwordnone.gif b/etherpad/src/static/img/may09/passwordnone.gif
index 61e38d9..61e38d9 100644
--- a/trunk/etherpad/src/static/img/may09/passwordnone.gif
+++ b/etherpad/src/static/img/may09/passwordnone.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/paypal.gif b/etherpad/src/static/img/may09/paypal.gif
index add5454..add5454 100644
--- a/trunk/etherpad/src/static/img/may09/paypal.gif
+++ b/etherpad/src/static/img/may09/paypal.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/pdf.gif b/etherpad/src/static/img/may09/pdf.gif
index 1614d2c..1614d2c 100644
--- a/trunk/etherpad/src/static/img/may09/pdf.gif
+++ b/etherpad/src/static/img/may09/pdf.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/pdf.png b/etherpad/src/static/img/may09/pdf.png
index ac4fa75..ac4fa75 100644
--- a/trunk/etherpad/src/static/img/may09/pdf.png
+++ b/etherpad/src/static/img/may09/pdf.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/redo.gif b/etherpad/src/static/img/may09/redo.gif
index bb07b8e..bb07b8e 100644
--- a/trunk/etherpad/src/static/img/may09/redo.gif
+++ b/etherpad/src/static/img/may09/redo.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/txt.gif b/etherpad/src/static/img/may09/txt.gif
index c3f026e..c3f026e 100644
--- a/trunk/etherpad/src/static/img/may09/txt.gif
+++ b/etherpad/src/static/img/may09/txt.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/txt.png b/etherpad/src/static/img/may09/txt.png
index f830cc6..f830cc6 100644
--- a/trunk/etherpad/src/static/img/may09/txt.png
+++ b/etherpad/src/static/img/may09/txt.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/underline.gif b/etherpad/src/static/img/may09/underline.gif
index 1d1f573..1d1f573 100644
--- a/trunk/etherpad/src/static/img/may09/underline.gif
+++ b/etherpad/src/static/img/may09/underline.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/may09/undo.gif b/etherpad/src/static/img/may09/undo.gif
index 273e9e6..273e9e6 100644
--- a/trunk/etherpad/src/static/img/may09/undo.gif
+++ b/etherpad/src/static/img/may09/undo.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/miniplane.gif b/etherpad/src/static/img/miniplane.gif
index aeaacb0..aeaacb0 100644
--- a/trunk/etherpad/src/static/img/miniplane.gif
+++ b/etherpad/src/static/img/miniplane.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/misc/diagnostic-links.gif b/etherpad/src/static/img/misc/diagnostic-links.gif
index f76669a..f76669a 100644
--- a/trunk/etherpad/src/static/img/misc/diagnostic-links.gif
+++ b/etherpad/src/static/img/misc/diagnostic-links.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/misc/status-ball.gif b/etherpad/src/static/img/misc/status-ball.gif
index 085ccae..085ccae 100644
--- a/trunk/etherpad/src/static/img/misc/status-ball.gif
+++ b/etherpad/src/static/img/misc/status-ball.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/misc/traclogo.gif b/etherpad/src/static/img/misc/traclogo.gif
index 7ee31d1..7ee31d1 100644
--- a/trunk/etherpad/src/static/img/misc/traclogo.gif
+++ b/etherpad/src/static/img/misc/traclogo.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/atlonglast.gif b/etherpad/src/static/img/oct/atlonglast.gif
index 88e1c98..88e1c98 100644
--- a/trunk/etherpad/src/static/img/oct/atlonglast.gif
+++ b/etherpad/src/static/img/oct/atlonglast.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner1.jpg b/etherpad/src/static/img/oct/banner1.jpg
index 431d2ba..431d2ba 100644
--- a/trunk/etherpad/src/static/img/oct/banner1.jpg
+++ b/etherpad/src/static/img/oct/banner1.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner2.jpg b/etherpad/src/static/img/oct/banner2.jpg
index 50570a8..50570a8 100644
--- a/trunk/etherpad/src/static/img/oct/banner2.jpg
+++ b/etherpad/src/static/img/oct/banner2.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner3.jpg b/etherpad/src/static/img/oct/banner3.jpg
index c0260a3..c0260a3 100644
--- a/trunk/etherpad/src/static/img/oct/banner3.jpg
+++ b/etherpad/src/static/img/oct/banner3.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner4.jpg b/etherpad/src/static/img/oct/banner4.jpg
index e1593b7..e1593b7 100644
--- a/trunk/etherpad/src/static/img/oct/banner4.jpg
+++ b/etherpad/src/static/img/oct/banner4.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner5.gif b/etherpad/src/static/img/oct/banner5.gif
index 82c8eee..82c8eee 100644
--- a/trunk/etherpad/src/static/img/oct/banner5.gif
+++ b/etherpad/src/static/img/oct/banner5.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner6.gif b/etherpad/src/static/img/oct/banner6.gif
index 9016ed8..9016ed8 100644
--- a/trunk/etherpad/src/static/img/oct/banner6.gif
+++ b/etherpad/src/static/img/oct/banner6.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner7.gif b/etherpad/src/static/img/oct/banner7.gif
index a999f93..a999f93 100644
--- a/trunk/etherpad/src/static/img/oct/banner7.gif
+++ b/etherpad/src/static/img/oct/banner7.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner8.gif b/etherpad/src/static/img/oct/banner8.gif
index cc2c436..cc2c436 100644
--- a/trunk/etherpad/src/static/img/oct/banner8.gif
+++ b/etherpad/src/static/img/oct/banner8.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/banner9.gif b/etherpad/src/static/img/oct/banner9.gif
index e7d9043..e7d9043 100644
--- a/trunk/etherpad/src/static/img/oct/banner9.gif
+++ b/etherpad/src/static/img/oct/banner9.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bannerback5.gif b/etherpad/src/static/img/oct/bannerback5.gif
index d748357..d748357 100644
--- a/trunk/etherpad/src/static/img/oct/bannerback5.gif
+++ b/etherpad/src/static/img/oct/bannerback5.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bannerback6.gif b/etherpad/src/static/img/oct/bannerback6.gif
index 416314f..416314f 100644
--- a/trunk/etherpad/src/static/img/oct/bannerback6.gif
+++ b/etherpad/src/static/img/oct/bannerback6.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bodyback1.gif b/etherpad/src/static/img/oct/bodyback1.gif
index 39d3fd7..39d3fd7 100644
--- a/trunk/etherpad/src/static/img/oct/bodyback1.gif
+++ b/etherpad/src/static/img/oct/bodyback1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bodyback2.gif b/etherpad/src/static/img/oct/bodyback2.gif
index 5bbdad8..5bbdad8 100644
--- a/trunk/etherpad/src/static/img/oct/bodyback2.gif
+++ b/etherpad/src/static/img/oct/bodyback2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bodyback3.gif b/etherpad/src/static/img/oct/bodyback3.gif
index a04faf4..a04faf4 100644
--- a/trunk/etherpad/src/static/img/oct/bodyback3.gif
+++ b/etherpad/src/static/img/oct/bodyback3.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bodyback4.gif b/etherpad/src/static/img/oct/bodyback4.gif
index a875cd6..a875cd6 100644
--- a/trunk/etherpad/src/static/img/oct/bodyback4.gif
+++ b/etherpad/src/static/img/oct/bodyback4.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bodyback5.gif b/etherpad/src/static/img/oct/bodyback5.gif
index 66f67ce..66f67ce 100644
--- a/trunk/etherpad/src/static/img/oct/bodyback5.gif
+++ b/etherpad/src/static/img/oct/bodyback5.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/bodybacktop1.gif b/etherpad/src/static/img/oct/bodybacktop1.gif
index 20a9261..20a9261 100644
--- a/trunk/etherpad/src/static/img/oct/bodybacktop1.gif
+++ b/etherpad/src/static/img/oct/bodybacktop1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/computers.gif b/etherpad/src/static/img/oct/computers.gif
index c8f2aff..c8f2aff 100644
--- a/trunk/etherpad/src/static/img/oct/computers.gif
+++ b/etherpad/src/static/img/oct/computers.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/computers2.gif b/etherpad/src/static/img/oct/computers2.gif
index bd8d133..bd8d133 100644
--- a/trunk/etherpad/src/static/img/oct/computers2.gif
+++ b/etherpad/src/static/img/oct/computers2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/glossyblue.gif b/etherpad/src/static/img/oct/glossyblue.gif
index eed77e7..eed77e7 100644
--- a/trunk/etherpad/src/static/img/oct/glossyblue.gif
+++ b/etherpad/src/static/img/oct/glossyblue.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/glossyblue2.gif b/etherpad/src/static/img/oct/glossyblue2.gif
index c323ebb..c323ebb 100644
--- a/trunk/etherpad/src/static/img/oct/glossyblue2.gif
+++ b/etherpad/src/static/img/oct/glossyblue2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/glossyblueh.gif b/etherpad/src/static/img/oct/glossyblueh.gif
index e56ceeb..e56ceeb 100644
--- a/trunk/etherpad/src/static/img/oct/glossyblueh.gif
+++ b/etherpad/src/static/img/oct/glossyblueh.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/insetrect.gif b/etherpad/src/static/img/oct/insetrect.gif
index 1d8124d..1d8124d 100644
--- a/trunk/etherpad/src/static/img/oct/insetrect.gif
+++ b/etherpad/src/static/img/oct/insetrect.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minilogo1-05e.gif b/etherpad/src/static/img/oct/minilogo1-05e.gif
index a09ef16..a09ef16 100644
--- a/trunk/etherpad/src/static/img/oct/minilogo1-05e.gif
+++ b/etherpad/src/static/img/oct/minilogo1-05e.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minilogo1-07f.gif b/etherpad/src/static/img/oct/minilogo1-07f.gif
index 8565272..8565272 100644
--- a/trunk/etherpad/src/static/img/oct/minilogo1-07f.gif
+++ b/etherpad/src/static/img/oct/minilogo1-07f.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minilogo3.jpg b/etherpad/src/static/img/oct/minilogo3.jpg
index d0cd89b..d0cd89b 100644
--- a/trunk/etherpad/src/static/img/oct/minilogo3.jpg
+++ b/etherpad/src/static/img/oct/minilogo3.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitopback1.gif b/etherpad/src/static/img/oct/minitopback1.gif
index da8f575..da8f575 100644
--- a/trunk/etherpad/src/static/img/oct/minitopback1.gif
+++ b/etherpad/src/static/img/oct/minitopback1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitopback2.gif b/etherpad/src/static/img/oct/minitopback2.gif
index a1f43ab..a1f43ab 100644
--- a/trunk/etherpad/src/static/img/oct/minitopback2.gif
+++ b/etherpad/src/static/img/oct/minitopback2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitopbar1-05e.gif b/etherpad/src/static/img/oct/minitopbar1-05e.gif
index 1115749..1115749 100644
--- a/trunk/etherpad/src/static/img/oct/minitopbar1-05e.gif
+++ b/etherpad/src/static/img/oct/minitopbar1-05e.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitopbar2-05e.gif b/etherpad/src/static/img/oct/minitopbar2-05e.gif
index 2c5d10f..2c5d10f 100644
--- a/trunk/etherpad/src/static/img/oct/minitopbar2-05e.gif
+++ b/etherpad/src/static/img/oct/minitopbar2-05e.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitopbar2-07f.gif b/etherpad/src/static/img/oct/minitopbar2-07f.gif
index 5687aed..5687aed 100644
--- a/trunk/etherpad/src/static/img/oct/minitopbar2-07f.gif
+++ b/etherpad/src/static/img/oct/minitopbar2-07f.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitopbar3.jpg b/etherpad/src/static/img/oct/minitopbar3.jpg
index d0cd89b..d0cd89b 100644
--- a/trunk/etherpad/src/static/img/oct/minitopbar3.jpg
+++ b/etherpad/src/static/img/oct/minitopbar3.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitopbar4.gif b/etherpad/src/static/img/oct/minitopbar4.gif
index bf7aec9..bf7aec9 100644
--- a/trunk/etherpad/src/static/img/oct/minitopbar4.gif
+++ b/etherpad/src/static/img/oct/minitopbar4.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitoplogo1.gif b/etherpad/src/static/img/oct/minitoplogo1.gif
index 6317c0f..6317c0f 100644
--- a/trunk/etherpad/src/static/img/oct/minitoplogo1.gif
+++ b/etherpad/src/static/img/oct/minitoplogo1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/minitoplogo2.gif b/etherpad/src/static/img/oct/minitoplogo2.gif
index bbb5e21..bbb5e21 100644
--- a/trunk/etherpad/src/static/img/oct/minitoplogo2.gif
+++ b/etherpad/src/static/img/oct/minitoplogo2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/newpadmain.gif b/etherpad/src/static/img/oct/newpadmain.gif
index 6427037..6427037 100644
--- a/trunk/etherpad/src/static/img/oct/newpadmain.gif
+++ b/etherpad/src/static/img/oct/newpadmain.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/newpadmainback.gif b/etherpad/src/static/img/oct/newpadmainback.gif
index 2016864..2016864 100644
--- a/trunk/etherpad/src/static/img/oct/newpadmainback.gif
+++ b/etherpad/src/static/img/oct/newpadmainback.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/newpadmainbackh.gif b/etherpad/src/static/img/oct/newpadmainbackh.gif
index 3060634..3060634 100644
--- a/trunk/etherpad/src/static/img/oct/newpadmainbackh.gif
+++ b/etherpad/src/static/img/oct/newpadmainbackh.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/pageshot.png b/etherpad/src/static/img/oct/pageshot.png
index cb86428..cb86428 100644
--- a/trunk/etherpad/src/static/img/oct/pageshot.png
+++ b/etherpad/src/static/img/oct/pageshot.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/pageshotmini.png b/etherpad/src/static/img/oct/pageshotmini.png
index 0f8a9d0..0f8a9d0 100644
--- a/trunk/etherpad/src/static/img/oct/pageshotmini.png
+++ b/etherpad/src/static/img/oct/pageshotmini.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/sidehead-gradhilite.gif b/etherpad/src/static/img/oct/sidehead-gradhilite.gif
index 5469d87..5469d87 100644
--- a/trunk/etherpad/src/static/img/oct/sidehead-gradhilite.gif
+++ b/etherpad/src/static/img/oct/sidehead-gradhilite.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/tinytriangle.gif b/etherpad/src/static/img/oct/tinytriangle.gif
index 1821e3b..1821e3b 100644
--- a/trunk/etherpad/src/static/img/oct/tinytriangle.gif
+++ b/etherpad/src/static/img/oct/tinytriangle.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnav1.gif b/etherpad/src/static/img/oct/topnav1.gif
index d801c59..d801c59 100644
--- a/trunk/etherpad/src/static/img/oct/topnav1.gif
+++ b/etherpad/src/static/img/oct/topnav1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnav2.gif b/etherpad/src/static/img/oct/topnav2.gif
index c1ab5c5..c1ab5c5 100644
--- a/trunk/etherpad/src/static/img/oct/topnav2.gif
+++ b/etherpad/src/static/img/oct/topnav2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnav3.gif b/etherpad/src/static/img/oct/topnav3.gif
index fa25e75..fa25e75 100644
--- a/trunk/etherpad/src/static/img/oct/topnav3.gif
+++ b/etherpad/src/static/img/oct/topnav3.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnav4.gif b/etherpad/src/static/img/oct/topnav4.gif
index 1f4c714..1f4c714 100644
--- a/trunk/etherpad/src/static/img/oct/topnav4.gif
+++ b/etherpad/src/static/img/oct/topnav4.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnav5.gif b/etherpad/src/static/img/oct/topnav5.gif
index fa8b737..fa8b737 100644
--- a/trunk/etherpad/src/static/img/oct/topnav5.gif
+++ b/etherpad/src/static/img/oct/topnav5.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnav6.gif b/etherpad/src/static/img/oct/topnav6.gif
index e0e6815..e0e6815 100644
--- a/trunk/etherpad/src/static/img/oct/topnav6.gif
+++ b/etherpad/src/static/img/oct/topnav6.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnavback1.gif b/etherpad/src/static/img/oct/topnavback1.gif
index 55103a3..55103a3 100644
--- a/trunk/etherpad/src/static/img/oct/topnavback1.gif
+++ b/etherpad/src/static/img/oct/topnavback1.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnavback2.gif b/etherpad/src/static/img/oct/topnavback2.gif
index 9b4bdca..9b4bdca 100644
--- a/trunk/etherpad/src/static/img/oct/topnavback2.gif
+++ b/etherpad/src/static/img/oct/topnavback2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/topnavback3.gif b/etherpad/src/static/img/oct/topnavback3.gif
index 327cba1..327cba1 100644
--- a/trunk/etherpad/src/static/img/oct/topnavback3.gif
+++ b/etherpad/src/static/img/oct/topnavback3.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/usecasesnavdown.gif b/etherpad/src/static/img/oct/usecasesnavdown.gif
index c8fc7df..c8fc7df 100644
--- a/trunk/etherpad/src/static/img/oct/usecasesnavdown.gif
+++ b/etherpad/src/static/img/oct/usecasesnavdown.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/usecasesnavdownh.gif b/etherpad/src/static/img/oct/usecasesnavdownh.gif
index e1fa3a5..e1fa3a5 100644
--- a/trunk/etherpad/src/static/img/oct/usecasesnavdownh.gif
+++ b/etherpad/src/static/img/oct/usecasesnavdownh.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/usecasesnavup.gif b/etherpad/src/static/img/oct/usecasesnavup.gif
index 470dcbe..470dcbe 100644
--- a/trunk/etherpad/src/static/img/oct/usecasesnavup.gif
+++ b/etherpad/src/static/img/oct/usecasesnavup.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/usecasesnavuph.gif b/etherpad/src/static/img/oct/usecasesnavuph.gif
index 4207386..4207386 100644
--- a/trunk/etherpad/src/static/img/oct/usecasesnavuph.gif
+++ b/etherpad/src/static/img/oct/usecasesnavuph.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/oct/watchscreencast.gif b/etherpad/src/static/img/oct/watchscreencast.gif
index f52ed17..f52ed17 100644
--- a/trunk/etherpad/src/static/img/oct/watchscreencast.gif
+++ b/etherpad/src/static/img/oct/watchscreencast.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/animated-orb-orange-12.gif b/etherpad/src/static/img/pad/animated-orb-orange-12.gif
index 9db02c6..9db02c6 100644
--- a/trunk/etherpad/src/static/img/pad/animated-orb-orange-12.gif
+++ b/etherpad/src/static/img/pad/animated-orb-orange-12.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/backgrad.png b/etherpad/src/static/img/pad/backgrad.png
index d85f73c..d85f73c 100644
--- a/trunk/etherpad/src/static/img/pad/backgrad.png
+++ b/etherpad/src/static/img/pad/backgrad.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif
index bc3088b..bc3088b 100644
--- a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif
+++ b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif
index 8a87283..8a87283 100644
--- a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif
+++ b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif
index 695ecbe..695ecbe 100644
--- a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif
+++ b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif
index 0005405..0005405 100644
--- a/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif
+++ b/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif b/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif
index 92fb5dc..92fb5dc 100644
--- a/trunk/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif
+++ b/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif b/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif
index a65aa15..a65aa15 100644
--- a/trunk/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif
+++ b/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/etherpad-logo-small.gif b/etherpad/src/static/img/pad/etherpad-logo-small.gif
index 6669f39..6669f39 100644
--- a/trunk/etherpad/src/static/img/pad/etherpad-logo-small.gif
+++ b/etherpad/src/static/img/pad/etherpad-logo-small.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/etherpad-logo-small2.gif b/etherpad/src/static/img/pad/etherpad-logo-small2.gif
index 6e33392..6e33392 100644
--- a/trunk/etherpad/src/static/img/pad/etherpad-logo-small2.gif
+++ b/etherpad/src/static/img/pad/etherpad-logo-small2.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/expandy-arrow-down.gif b/etherpad/src/static/img/pad/expandy-arrow-down.gif
index 4b67c17..4b67c17 100644
--- a/trunk/etherpad/src/static/img/pad/expandy-arrow-down.gif
+++ b/etherpad/src/static/img/pad/expandy-arrow-down.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/expandy-arrow-right.gif b/etherpad/src/static/img/pad/expandy-arrow-right.gif
index 61303e6..61303e6 100644
--- a/trunk/etherpad/src/static/img/pad/expandy-arrow-right.gif
+++ b/etherpad/src/static/img/pad/expandy-arrow-right.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif b/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif
index 5f530b7..5f530b7 100644
--- a/trunk/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif
+++ b/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/expandy-arrow6-down.gif b/etherpad/src/static/img/pad/expandy-arrow6-down.gif
index 42fa9af..42fa9af 100644
--- a/trunk/etherpad/src/static/img/pad/expandy-arrow6-down.gif
+++ b/etherpad/src/static/img/pad/expandy-arrow6-down.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif b/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif
index 4496fad..4496fad 100644
--- a/trunk/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif
+++ b/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/expandy-arrow6-right.gif b/etherpad/src/static/img/pad/expandy-arrow6-right.gif
index 9a8274c..9a8274c 100644
--- a/trunk/etherpad/src/static/img/pad/expandy-arrow6-right.gif
+++ b/etherpad/src/static/img/pad/expandy-arrow6-right.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/header-revgrad.gif b/etherpad/src/static/img/pad/header-revgrad.gif
index e803e2a..e803e2a 100644
--- a/trunk/etherpad/src/static/img/pad/header-revgrad.gif
+++ b/etherpad/src/static/img/pad/header-revgrad.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/newpad.gif b/etherpad/src/static/img/pad/newpad.gif
index c631cc4..c631cc4 100644
--- a/trunk/etherpad/src/static/img/pad/newpad.gif
+++ b/etherpad/src/static/img/pad/newpad.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/orb-greenred-12.gif b/etherpad/src/static/img/pad/orb-greenred-12.gif
index d722168..d722168 100644
--- a/trunk/etherpad/src/static/img/pad/orb-greenred-12.gif
+++ b/etherpad/src/static/img/pad/orb-greenred-12.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padbg1.jpg b/etherpad/src/static/img/pad/padbg1.jpg
index 8e640fd..8e640fd 100644
--- a/trunk/etherpad/src/static/img/pad/padbg1.jpg
+++ b/etherpad/src/static/img/pad/padbg1.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padbg2.jpg b/etherpad/src/static/img/pad/padbg2.jpg
index 1248bc0..1248bc0 100644
--- a/trunk/etherpad/src/static/img/pad/padbg2.jpg
+++ b/etherpad/src/static/img/pad/padbg2.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padbg3.jpg b/etherpad/src/static/img/pad/padbg3.jpg
index 99bba32..99bba32 100644
--- a/trunk/etherpad/src/static/img/pad/padbg3.jpg
+++ b/etherpad/src/static/img/pad/padbg3.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padbg4.jpg b/etherpad/src/static/img/pad/padbg4.jpg
index 2497360..2497360 100644
--- a/trunk/etherpad/src/static/img/pad/padbg4.jpg
+++ b/etherpad/src/static/img/pad/padbg4.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padbg5.jpg b/etherpad/src/static/img/pad/padbg5.jpg
index bc3953c..bc3953c 100644
--- a/trunk/etherpad/src/static/img/pad/padbg5.jpg
+++ b/etherpad/src/static/img/pad/padbg5.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padhead1.jpg b/etherpad/src/static/img/pad/padhead1.jpg
index e263cf4..e263cf4 100644
--- a/trunk/etherpad/src/static/img/pad/padhead1.jpg
+++ b/etherpad/src/static/img/pad/padhead1.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padhead2.jpg b/etherpad/src/static/img/pad/padhead2.jpg
index a2f247d..a2f247d 100644
--- a/trunk/etherpad/src/static/img/pad/padhead2.jpg
+++ b/etherpad/src/static/img/pad/padhead2.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/padhead3.jpg b/etherpad/src/static/img/pad/padhead3.jpg
index 101432f..101432f 100644
--- a/trunk/etherpad/src/static/img/pad/padhead3.jpg
+++ b/etherpad/src/static/img/pad/padhead3.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/pencil-icon-small-blue.gif b/etherpad/src/static/img/pad/pencil-icon-small-blue.gif
index f60b0f2..f60b0f2 100644
--- a/trunk/etherpad/src/static/img/pad/pencil-icon-small-blue.gif
+++ b/etherpad/src/static/img/pad/pencil-icon-small-blue.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/sidehead-grad.gif b/etherpad/src/static/img/pad/sidehead-grad.gif
index 32bac92..32bac92 100644
--- a/trunk/etherpad/src/static/img/pad/sidehead-grad.gif
+++ b/etherpad/src/static/img/pad/sidehead-grad.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/button_depressed.png b/etherpad/src/static/img/pad/timeslider/button_depressed.png
index 1e96692..1e96692 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/button_depressed.png
+++ b/etherpad/src/static/img/pad/timeslider/button_depressed.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/button_undepressed.png b/etherpad/src/static/img/pad/timeslider/button_undepressed.png
index cd2d7a8..cd2d7a8 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/button_undepressed.png
+++ b/etherpad/src/static/img/pad/timeslider/button_undepressed.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png b/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png
index d75dcce..d75dcce 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png
+++ b/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png b/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png
index d86e3f3..d86e3f3 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png
+++ b/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/crushed_current_location.png b/etherpad/src/static/img/pad/timeslider/crushed_current_location.png
index 76e0835..76e0835 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/crushed_current_location.png
+++ b/etherpad/src/static/img/pad/timeslider/crushed_current_location.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/crushed_pause.png b/etherpad/src/static/img/pad/timeslider/crushed_pause.png
index 437b384..437b384 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/crushed_pause.png
+++ b/etherpad/src/static/img/pad/timeslider/crushed_pause.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/crushed_play.png b/etherpad/src/static/img/pad/timeslider/crushed_play.png
index c5b754b..c5b754b 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/crushed_play.png
+++ b/etherpad/src/static/img/pad/timeslider/crushed_play.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/crushed_play_button.png b/etherpad/src/static/img/pad/timeslider/crushed_play_button.png
index 3b112f6..3b112f6 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/crushed_play_button.png
+++ b/etherpad/src/static/img/pad/timeslider/crushed_play_button.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png b/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png
index f4ccbf1..f4ccbf1 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png
+++ b/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/current_location.gif b/etherpad/src/static/img/pad/timeslider/current_location.gif
index 5d5062f..5d5062f 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/current_location.gif
+++ b/etherpad/src/static/img/pad/timeslider/current_location.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/current_location.png b/etherpad/src/static/img/pad/timeslider/current_location.png
index ab02792..ab02792 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/current_location.png
+++ b/etherpad/src/static/img/pad/timeslider/current_location.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/pause.gif b/etherpad/src/static/img/pad/timeslider/pause.gif
index 0fa105b..0fa105b 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/pause.gif
+++ b/etherpad/src/static/img/pad/timeslider/pause.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/pause.png b/etherpad/src/static/img/pad/timeslider/pause.png
index 657782c..657782c 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/pause.png
+++ b/etherpad/src/static/img/pad/timeslider/pause.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/play.gif b/etherpad/src/static/img/pad/timeslider/play.gif
index ae308c2..ae308c2 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/play.gif
+++ b/etherpad/src/static/img/pad/timeslider/play.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/play.png b/etherpad/src/static/img/pad/timeslider/play.png
index 19afe03..19afe03 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/play.png
+++ b/etherpad/src/static/img/pad/timeslider/play.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/play_button.png b/etherpad/src/static/img/pad/timeslider/play_button.png
index bc1736d..bc1736d 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/play_button.png
+++ b/etherpad/src/static/img/pad/timeslider/play_button.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/star.gif b/etherpad/src/static/img/pad/timeslider/star.gif
index f6a2c70..f6a2c70 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/star.gif
+++ b/etherpad/src/static/img/pad/timeslider/star.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/star.png b/etherpad/src/static/img/pad/timeslider/star.png
index e0c7099..e0c7099 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/star.png
+++ b/etherpad/src/static/img/pad/timeslider/star.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/star_selected.png b/etherpad/src/static/img/pad/timeslider/star_selected.png
index c336589..c336589 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/star_selected.png
+++ b/etherpad/src/static/img/pad/timeslider/star_selected.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/stepper_buttons.png b/etherpad/src/static/img/pad/timeslider/stepper_buttons.png
index e011a45..e011a45 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/stepper_buttons.png
+++ b/etherpad/src/static/img/pad/timeslider/stepper_buttons.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_background.png b/etherpad/src/static/img/pad/timeslider/timeslider_background.png
index faa45c6..faa45c6 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_background.png
+++ b/etherpad/src/static/img/pad/timeslider/timeslider_background.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_left.png b/etherpad/src/static/img/pad/timeslider/timeslider_left.png
index 594d86b..594d86b 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_left.png
+++ b/etherpad/src/static/img/pad/timeslider/timeslider_left.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png b/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png
index bc93914..bc93914 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png
+++ b/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_right.png b/etherpad/src/static/img/pad/timeslider/timeslider_right.png
index 3bf10a2..3bf10a2 100644
--- a/trunk/etherpad/src/static/img/pad/timeslider/timeslider_right.png
+++ b/etherpad/src/static/img/pad/timeslider/timeslider_right.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pricing/free.gif b/etherpad/src/static/img/pricing/free.gif
index bce2a0b..bce2a0b 100644
--- a/trunk/etherpad/src/static/img/pricing/free.gif
+++ b/etherpad/src/static/img/pricing/free.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pricing/group.gif b/etherpad/src/static/img/pricing/group.gif
index b839d3e..b839d3e 100644
--- a/trunk/etherpad/src/static/img/pricing/group.gif
+++ b/etherpad/src/static/img/pricing/group.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pricing/on-demand.gif b/etherpad/src/static/img/pricing/on-demand.gif
index 19d2e57..19d2e57 100644
--- a/trunk/etherpad/src/static/img/pricing/on-demand.gif
+++ b/etherpad/src/static/img/pricing/on-demand.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pricing/private-network.gif b/etherpad/src/static/img/pricing/private-network.gif
index 70d197f..70d197f 100644
--- a/trunk/etherpad/src/static/img/pricing/private-network.gif
+++ b/etherpad/src/static/img/pricing/private-network.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pricing/support.gif b/etherpad/src/static/img/pricing/support.gif
index 7f42f76..7f42f76 100644
--- a/trunk/etherpad/src/static/img/pricing/support.gif
+++ b/etherpad/src/static/img/pricing/support.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/billing/cards-button.gif b/etherpad/src/static/img/pro/billing/cards-button.gif
index 2f9c8cf..2f9c8cf 100644
--- a/trunk/etherpad/src/static/img/pro/billing/cards-button.gif
+++ b/etherpad/src/static/img/pro/billing/cards-button.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/box/blue-boxtop.gif b/etherpad/src/static/img/pro/box/blue-boxtop.gif
index 38e3538..38e3538 100644
--- a/trunk/etherpad/src/static/img/pro/box/blue-boxtop.gif
+++ b/etherpad/src/static/img/pro/box/blue-boxtop.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/buttons/bluebutton120.gif b/etherpad/src/static/img/pro/buttons/bluebutton120.gif
index 2f22003..2f22003 100644
--- a/trunk/etherpad/src/static/img/pro/buttons/bluebutton120.gif
+++ b/etherpad/src/static/img/pro/buttons/bluebutton120.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/header/pro-header-back.gif b/etherpad/src/static/img/pro/header/pro-header-back.gif
index 9514dbf..9514dbf 100644
--- a/trunk/etherpad/src/static/img/pro/header/pro-header-back.gif
+++ b/etherpad/src/static/img/pro/header/pro-header-back.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/header/pro-header-logo.png b/etherpad/src/static/img/pro/header/pro-header-logo.png
index c1a003c..c1a003c 100644
--- a/trunk/etherpad/src/static/img/pro/header/pro-header-logo.png
+++ b/etherpad/src/static/img/pro/header/pro-header-logo.png
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif b/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif
index f7398fe..f7398fe 100644
--- a/trunk/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif
+++ b/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/padlist/gear-drop.gif b/etherpad/src/static/img/pro/padlist/gear-drop.gif
index ded0f24..ded0f24 100644
--- a/trunk/etherpad/src/static/img/pro/padlist/gear-drop.gif
+++ b/etherpad/src/static/img/pro/padlist/gear-drop.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/padlist/paper-icon.gif b/etherpad/src/static/img/pro/padlist/paper-icon.gif
index 161b66e..161b66e 100644
--- a/trunk/etherpad/src/static/img/pro/padlist/paper-icon.gif
+++ b/etherpad/src/static/img/pro/padlist/paper-icon.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/padlist/trash-icon.gif b/etherpad/src/static/img/pro/padlist/trash-icon.gif
index 74b5ede..74b5ede 100644
--- a/trunk/etherpad/src/static/img/pro/padlist/trash-icon.gif
+++ b/etherpad/src/static/img/pro/padlist/trash-icon.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif b/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif
index 336fd05..336fd05 100644
--- a/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif
+++ b/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif b/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif
index 5dbe57b..5dbe57b 100644
--- a/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif
+++ b/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/tinyplane.gif b/etherpad/src/static/img/tinyplane.gif
index 5aaa223..5aaa223 100644
--- a/trunk/etherpad/src/static/img/tinyplane.gif
+++ b/etherpad/src/static/img/tinyplane.gif
Binary files differ
diff --git a/trunk/etherpad/src/static/img/wavejet.jpg b/etherpad/src/static/img/wavejet.jpg
index 8d10fd0..8d10fd0 100644
--- a/trunk/etherpad/src/static/img/wavejet.jpg
+++ b/etherpad/src/static/img/wavejet.jpg
Binary files differ
diff --git a/trunk/etherpad/src/static/js/billing.js b/etherpad/src/static/js/billing.js
index c9fa30e..c9fa30e 100644
--- a/trunk/etherpad/src/static/js/billing.js
+++ b/etherpad/src/static/js/billing.js
diff --git a/trunk/etherpad/src/static/js/billing_shared.js b/etherpad/src/static/js/billing_shared.js
index dc3a00c..dc3a00c 100644
--- a/trunk/etherpad/src/static/js/billing_shared.js
+++ b/etherpad/src/static/js/billing_shared.js
diff --git a/trunk/etherpad/src/static/js/broadcast.js b/etherpad/src/static/js/broadcast.js
index 9fa8141..9fa8141 100644
--- a/trunk/etherpad/src/static/js/broadcast.js
+++ b/etherpad/src/static/js/broadcast.js
diff --git a/trunk/etherpad/src/static/js/broadcast_revisions.js b/etherpad/src/static/js/broadcast_revisions.js
index 7e99003..7e99003 100644
--- a/trunk/etherpad/src/static/js/broadcast_revisions.js
+++ b/etherpad/src/static/js/broadcast_revisions.js
diff --git a/trunk/etherpad/src/static/js/broadcast_slider.js b/etherpad/src/static/js/broadcast_slider.js
index 255d7f2..255d7f2 100644
--- a/trunk/etherpad/src/static/js/broadcast_slider.js
+++ b/etherpad/src/static/js/broadcast_slider.js
diff --git a/trunk/etherpad/src/static/js/collab_client.js b/etherpad/src/static/js/collab_client.js
index d8834d7..d8834d7 100644
--- a/trunk/etherpad/src/static/js/collab_client.js
+++ b/etherpad/src/static/js/collab_client.js
diff --git a/trunk/etherpad/src/static/js/confirmation.js b/etherpad/src/static/js/confirmation.js
index a0f725c..a0f725c 100644
--- a/trunk/etherpad/src/static/js/confirmation.js
+++ b/etherpad/src/static/js/confirmation.js
diff --git a/trunk/etherpad/src/static/js/connection_diagnostics.js b/etherpad/src/static/js/connection_diagnostics.js
index cc43d46..cc43d46 100644
--- a/trunk/etherpad/src/static/js/connection_diagnostics.js
+++ b/etherpad/src/static/js/connection_diagnostics.js
diff --git a/trunk/etherpad/src/static/js/draggable.js b/etherpad/src/static/js/draggable.js
index 97a1a3d..97a1a3d 100644
--- a/trunk/etherpad/src/static/js/draggable.js
+++ b/etherpad/src/static/js/draggable.js
diff --git a/trunk/etherpad/src/static/js/etherpad.js b/etherpad/src/static/js/etherpad.js
index feca517..feca517 100644
--- a/trunk/etherpad/src/static/js/etherpad.js
+++ b/etherpad/src/static/js/etherpad.js
diff --git a/trunk/etherpad/src/static/js/jquery-1.2.6.js b/etherpad/src/static/js/jquery-1.2.6.js
index 88e661e..88e661e 100755
--- a/trunk/etherpad/src/static/js/jquery-1.2.6.js
+++ b/etherpad/src/static/js/jquery-1.2.6.js
diff --git a/trunk/etherpad/src/static/js/jquery-1.3.2.js b/etherpad/src/static/js/jquery-1.3.2.js
index 9263574..9263574 100644
--- a/trunk/etherpad/src/static/js/jquery-1.3.2.js
+++ b/etherpad/src/static/js/jquery-1.3.2.js
diff --git a/trunk/etherpad/src/static/js/json2.js b/etherpad/src/static/js/json2.js
index 32988c2..32988c2 100644
--- a/trunk/etherpad/src/static/js/json2.js
+++ b/etherpad/src/static/js/json2.js
diff --git a/trunk/etherpad/src/static/js/lib/jquery.contextmenu.js b/etherpad/src/static/js/lib/jquery.contextmenu.js
index 42cc17e..42cc17e 100644
--- a/trunk/etherpad/src/static/js/lib/jquery.contextmenu.js
+++ b/etherpad/src/static/js/lib/jquery.contextmenu.js
diff --git a/trunk/etherpad/src/static/js/pad.js.old b/etherpad/src/static/js/pad.js.old
index 6191b31..6191b31 100644
--- a/trunk/etherpad/src/static/js/pad.js.old
+++ b/etherpad/src/static/js/pad.js.old
diff --git a/trunk/etherpad/src/static/js/pad2.js b/etherpad/src/static/js/pad2.js
index 14ac762..14ac762 100644
--- a/trunk/etherpad/src/static/js/pad2.js
+++ b/etherpad/src/static/js/pad2.js
diff --git a/trunk/etherpad/src/static/js/pad_chat.js b/etherpad/src/static/js/pad_chat.js
index 35903c2..35903c2 100644
--- a/trunk/etherpad/src/static/js/pad_chat.js
+++ b/etherpad/src/static/js/pad_chat.js
diff --git a/trunk/etherpad/src/static/js/pad_connectionstatus.js b/etherpad/src/static/js/pad_connectionstatus.js
index cc06728..cc06728 100644
--- a/trunk/etherpad/src/static/js/pad_connectionstatus.js
+++ b/etherpad/src/static/js/pad_connectionstatus.js
diff --git a/trunk/etherpad/src/static/js/pad_cookie.js b/etherpad/src/static/js/pad_cookie.js
index 3cc31ed..3cc31ed 100644
--- a/trunk/etherpad/src/static/js/pad_cookie.js
+++ b/etherpad/src/static/js/pad_cookie.js
diff --git a/trunk/etherpad/src/static/js/pad_docbar.js b/etherpad/src/static/js/pad_docbar.js
index 586b20f..586b20f 100644
--- a/trunk/etherpad/src/static/js/pad_docbar.js
+++ b/etherpad/src/static/js/pad_docbar.js
diff --git a/trunk/etherpad/src/static/js/pad_editbar.js b/etherpad/src/static/js/pad_editbar.js
index 34b774a..34b774a 100644
--- a/trunk/etherpad/src/static/js/pad_editbar.js
+++ b/etherpad/src/static/js/pad_editbar.js
diff --git a/trunk/etherpad/src/static/js/pad_editor.js b/etherpad/src/static/js/pad_editor.js
index f2fab26..f2fab26 100644
--- a/trunk/etherpad/src/static/js/pad_editor.js
+++ b/etherpad/src/static/js/pad_editor.js
diff --git a/trunk/etherpad/src/static/js/pad_impexp.js b/etherpad/src/static/js/pad_impexp.js
index e928332..e928332 100644
--- a/trunk/etherpad/src/static/js/pad_impexp.js
+++ b/etherpad/src/static/js/pad_impexp.js
diff --git a/trunk/etherpad/src/static/js/pad_modals.js b/etherpad/src/static/js/pad_modals.js
index 35a1155..35a1155 100644
--- a/trunk/etherpad/src/static/js/pad_modals.js
+++ b/etherpad/src/static/js/pad_modals.js
diff --git a/trunk/etherpad/src/static/js/pad_savedrevs.js b/etherpad/src/static/js/pad_savedrevs.js
index ec06a1f..ec06a1f 100644
--- a/trunk/etherpad/src/static/js/pad_savedrevs.js
+++ b/etherpad/src/static/js/pad_savedrevs.js
diff --git a/trunk/etherpad/src/static/js/pad_userlist.js b/etherpad/src/static/js/pad_userlist.js
index 13bfd6a..13bfd6a 100644
--- a/trunk/etherpad/src/static/js/pad_userlist.js
+++ b/etherpad/src/static/js/pad_userlist.js
diff --git a/trunk/etherpad/src/static/js/pad_utils.js b/etherpad/src/static/js/pad_utils.js
index ccedac9..de606ad 100644
--- a/trunk/etherpad/src/static/js/pad_utils.js
+++ b/etherpad/src/static/js/pad_utils.js
@@ -106,18 +106,6 @@ var padutils = {
var hourmin = d.getHours()+":"+("0"+d.getMinutes()).slice(-2);
return dayOfWeek+' '+month+' '+dayOfMonth+' '+year+' '+hourmin;
},
- findTags: function(text) {
- var tagExp = new RegExp("#[^,#!\\s][^,#!\\s]*", "g");
- var tags = null;
- var execResult;
- while ((execResult = tagExp.exec(text))) {
- tags = (tags || []);
- var startIndex = execResult.index;
- var url = execResult[0];
- tags.push([startIndex, url]);
- }
- return tags;
- },
findURLs: function(text) {
// copied from ACE
var _REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/;
@@ -145,7 +133,6 @@ var padutils = {
var idx = 0;
var pieces = [];
var urls = padutils.findURLs(text);
- var tags = padutils.findTags(text);
function advanceTo(i) {
if (i > idx) {
pieces.push(padutils.escapeHtml(text.substring(idx, i)));
@@ -163,17 +150,6 @@ var padutils = {
pieces.push('</a>');
}
}
- if (tags) {
- for(var j=0;j<tags.length;j++) {
- var startIndex = tags[j][0];
- var tag = tags[j][1];
- advanceTo(startIndex);
- pieces.push('<a ', (target?'target="'+target+'" ':''),
- 'href="/ep/tag/?query=', tag, '">');
- advanceTo(startIndex + href.length);
- pieces.push('</a>');
- }
- }
advanceTo(text.length);
return pieces.join('');
},
diff --git a/etherpad/src/static/js/plugins.js b/etherpad/src/static/js/plugins.js
new file mode 100644
index 0000000..d1d6b14
--- /dev/null
+++ b/etherpad/src/static/js/plugins.js
@@ -0,0 +1,21 @@
+plugins = {
+ callHook: function (hookName, args) {
+ if (clientVars.hooks[hookName] === undefined)
+ return [];
+ var res = [];
+ for (i = 0; i < clientVars.hooks[hookName].length; i++) {
+ var plugin = clientVars.hooks[hookName][i];
+ var pluginRes = eval(plugin.plugin)[plugin.original || hookName](args);
+ if (pluginRes != undefined && pluginRes != null)
+ res = res.concat(pluginRes);
+ }
+ return res;
+ },
+
+ callHookStr: function (hookName, args, sep, pre, post) {
+ if (sep == undefined) sep = '';
+ if (pre == undefined) pre = '';
+ if (post == undefined) post = '';
+ return callHook(hookName, args).map(function (x) { return pre + x + post}).join(sep || "");
+ }
+};
diff --git a/trunk/etherpad/src/static/js/pricing.js b/etherpad/src/static/js/pricing.js
index 913d5ce..913d5ce 100644
--- a/trunk/etherpad/src/static/js/pricing.js
+++ b/etherpad/src/static/js/pricing.js
diff --git a/trunk/etherpad/src/static/js/pro/guest-knock-client.js b/etherpad/src/static/js/pro/guest-knock-client.js
index 16424d9..16424d9 100644
--- a/trunk/etherpad/src/static/js/pro/guest-knock-client.js
+++ b/etherpad/src/static/js/pro/guest-knock-client.js
diff --git a/trunk/etherpad/src/static/js/pro/pro-padlist-client.js b/etherpad/src/static/js/pro/pro-padlist-client.js
index ba50d95..ba50d95 100644
--- a/trunk/etherpad/src/static/js/pro/pro-padlist-client.js
+++ b/etherpad/src/static/js/pro/pro-padlist-client.js
diff --git a/trunk/etherpad/src/static/js/pro/signin-client.js b/etherpad/src/static/js/pro/signin-client.js
index 62847e5..62847e5 100644
--- a/trunk/etherpad/src/static/js/pro/signin-client.js
+++ b/etherpad/src/static/js/pro/signin-client.js
diff --git a/trunk/etherpad/src/static/js/pulse.jquery.js b/etherpad/src/static/js/pulse.jquery.js
index b23aede..b23aede 100644
--- a/trunk/etherpad/src/static/js/pulse.jquery.js
+++ b/etherpad/src/static/js/pulse.jquery.js
diff --git a/trunk/etherpad/src/static/js/statpage.js b/etherpad/src/static/js/statpage.js
index be2948c..be2948c 100644
--- a/trunk/etherpad/src/static/js/statpage.js
+++ b/etherpad/src/static/js/statpage.js
diff --git a/trunk/etherpad/src/static/js/store.js b/etherpad/src/static/js/store.js
index 96a6487..96a6487 100644
--- a/trunk/etherpad/src/static/js/store.js
+++ b/etherpad/src/static/js/store.js
diff --git a/trunk/etherpad/src/static/js/swfobject.js b/etherpad/src/static/js/swfobject.js
index b741304..b741304 100644
--- a/trunk/etherpad/src/static/js/swfobject.js
+++ b/etherpad/src/static/js/swfobject.js
diff --git a/trunk/etherpad/src/static/js/timeslider.js b/etherpad/src/static/js/timeslider.js
index 552a971..552a971 100644
--- a/trunk/etherpad/src/static/js/timeslider.js
+++ b/etherpad/src/static/js/timeslider.js
diff --git a/trunk/etherpad/src/static/js/undo-xpopup.js b/etherpad/src/static/js/undo-xpopup.js
index 89cfb4d..89cfb4d 100644
--- a/trunk/etherpad/src/static/js/undo-xpopup.js
+++ b/etherpad/src/static/js/undo-xpopup.js
diff --git a/trunk/etherpad/src/static/swf/vidplayer.swf b/etherpad/src/static/swf/vidplayer.swf
index a38a94e..a38a94e 100755
--- a/trunk/etherpad/src/static/swf/vidplayer.swf
+++ b/etherpad/src/static/swf/vidplayer.swf
Binary files differ
diff --git a/trunk/etherpad/src/templates/500_body.ejs b/etherpad/src/templates/500_body.ejs
index 291e0fd..291e0fd 100644
--- a/trunk/etherpad/src/templates/500_body.ejs
+++ b/etherpad/src/templates/500_body.ejs
diff --git a/etherpad/src/templates/admin/pluginmanager.ejs b/etherpad/src/templates/admin/pluginmanager.ejs
new file mode 100644
index 0000000..4e08fc9
--- /dev/null
+++ b/etherpad/src/templates/admin/pluginmanager.ejs
@@ -0,0 +1,126 @@
+<% /* Copyright 2009 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS-IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */ %>
+<%
+ helpers.setHtmlTitle("Browse tags");
+ helpers.setBodyId("padbody");
+ helpers.addBodyClass("limwidth nonpropad nonprouser");
+ helpers.includeCss("pad2_ejs.css");
+ helpers.setRobotsPolicy({index: false, follow: false})
+ helpers.includeJQuery();
+ helpers.includeCometJs();
+ helpers.includeJs("json2.js");
+ helpers.addToHead('\n<style type="text/css" title="dynamicsyntax"></style>\n');
+
+ function inArray(item, arr) {
+ for (var i = 0; i < arr.length; i++)
+ if (arr[i] == item)
+ return true;
+ return false;
+ }
+%>
+
+<div id="padpage">
+ <div id="padtop">
+ <div id="topbar" style="margin: 7px; margin-top: 0px;">
+ <div id="topbarleft"><!-- --></div>
+ <div id="topbarright"><!-- --></div>
+ <div id="topbarcenter"><a href="/" id="topbaretherpad">EtherPad</a></div>
+ <% if (isProAccountHolder) { %>
+ <div id="accountnav"><%= toHTML(account.email) %><a href="/ep/account/sign-out">(sign out)</a></div>
+ <% } else if (isPro) { %>
+ <div id="accountnav"><a href="<%= signinUrl %>">sign in</a></div>
+ <% } %>
+ </div>
+ </div>
+ <div id="docbar" class="docbar-public">
+ <div id="docbarleft"><!-- --></div>
+ <div title="Browse pads by tag" id="docbarpadtitle"><span>Browse tags</span></div>
+
+ <div id="docbaroptions-outer"><a href="javascript:void(0)" id="docbaroptions">Pad Options</a></div>
+ <div id="docbarsavedrevs-outer"><a href="javascript:void(0)" id="docbarsavedrevs">Saved revisions</a></div>
+ <div id="docbarimpexp-outer"><a href="javascript:void(0)" id="docbarimpexp">Import/Export</a></div>
+ <div id="docbarslider-outer"><a target="_blank" href="/ep/pad/view/xx/latest" id="docbarslider">Time Slider</a></div>
+
+ </div>
+ </div>
+ <div id="padmain">
+
+ <div id="padsidebar">
+ <div id="padusers">
+ </div>
+
+ <div id="hdraggie"><!-- --></div>
+
+ <div id="padchat"></div>
+ </div> <!-- /padsidebar -->
+
+ <div id="padeditor">
+ <div id="editbar" class="enabledtoolbar">
+ <div id="editbarleft"><!-- --></div>
+ <div id="editbarright"><!-- --></div>
+
+ <div id="editbarinner">
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('bold'));" class="editbarbutton bold" title="Bold (ctrl-B)">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('italic'));" class="editbarbutton italic" title="Italics (ctrl-I)">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('underline'));" class="editbarbutton underline" title="Underline (ctrl-U)">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('strikethrough'));" class="editbarbutton strikethrough" title="Strikethrough">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('clearauthorship'));" class="editbarbutton clearauthorship" title="Clear Authorship Colors">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('undo'));" class="editbarbutton undo" title="Undo (ctrl-Z)">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('redo'));" class="editbarbutton redo" title="Redo (ctrl-Y)">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('insertunorderedlist'));" class="editbarbutton insertunorderedlist" title="Toggle Bullet List">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('indent'));" class="editbarbutton indent" title="Indent List">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('outdent'));" class="editbarbutton outdent" title="Unindent List">&nbsp;</a>
+ <a unselectable="on" href="javascript:void (window.pad&amp;&amp;pad.editbarClick('save'));" class="editbarbutton save" title="Save Revision">&nbsp;</a>
+ </div>
+ </div>
+ <div style="height: 268px;" id="editorcontainerbox">
+ <div id="editorcontainer" style="padding:5pt; height: 600pt;">
+ <h1>Plugin manager</h1>
+ <table>
+ <tr>
+ <th>Module name</th>
+ <th>Status</th>
+ <th></th>
+ </tr>
+ <% for (var plugin in pluginModules) { %>
+ <tr>
+ <td><%= pluginModules[plugin].description %></td>
+ <td>
+ <% if (plugins[plugin] !== undefined) { %>
+ Installed
+ <% } else { %>
+ Not installed
+ <% } %>
+ </td>
+ <td>
+ <% if (plugins[plugin] !== undefined) { %>
+ <a href="/ep/admin/pluginmanager/?plugin=<%= plugin %>&action=uninstall">Uninstall</a>
+ <a href="/ep/admin/pluginmanager/?plugin=<%= plugin %>&action=reinstall">Reinstall</a>
+ <% } else { %>
+ <a href="/ep/admin/pluginmanager/?plugin=<%= plugin %>&action=install">Install</a>
+ <% } %>
+ </td>
+ </tr>
+ <% } %>
+ </table>
+ </div>
+ </div>
+ </div><!-- /padeditor -->
+
+ <div id="bottomarea">
+ <div id="widthprefcheck" class="widthprefunchecked"><!-- --></div>
+ <div id="sidebarcheck" class="sidebarchecked"><!-- --></div>
+ </div>
+ </div>
+</div>
diff --git a/trunk/etherpad/src/templates/beta/signup.ejs b/etherpad/src/templates/beta/signup.ejs
index 5268a29..5268a29 100644
--- a/trunk/etherpad/src/templates/beta/signup.ejs
+++ b/etherpad/src/templates/beta/signup.ejs
diff --git a/trunk/etherpad/src/templates/email/eepnet_license_info.ejs b/etherpad/src/templates/email/eepnet_license_info.ejs
index ea431de..ea431de 100644
--- a/trunk/etherpad/src/templates/email/eepnet_license_info.ejs
+++ b/etherpad/src/templates/email/eepnet_license_info.ejs
diff --git a/trunk/etherpad/src/templates/email/eepnet_purchase_receipt.ejs b/etherpad/src/templates/email/eepnet_purchase_receipt.ejs
index a83cd58..a83cd58 100644
--- a/trunk/etherpad/src/templates/email/eepnet_purchase_receipt.ejs
+++ b/etherpad/src/templates/email/eepnet_purchase_receipt.ejs
diff --git a/trunk/etherpad/src/templates/email/padinvite.ejs b/etherpad/src/templates/email/padinvite.ejs
index c6467b8..c6467b8 100644
--- a/trunk/etherpad/src/templates/email/padinvite.ejs
+++ b/etherpad/src/templates/email/padinvite.ejs
diff --git a/trunk/etherpad/src/templates/email/pro_beta_invite.ejs b/etherpad/src/templates/email/pro_beta_invite.ejs
index 162b443..162b443 100644
--- a/trunk/etherpad/src/templates/email/pro_beta_invite.ejs
+++ b/etherpad/src/templates/email/pro_beta_invite.ejs
diff --git a/trunk/etherpad/src/templates/email/pro_payment_failure.ejs b/etherpad/src/templates/email/pro_payment_failure.ejs
index 248a3dd..248a3dd 100644
--- a/trunk/etherpad/src/templates/email/pro_payment_failure.ejs
+++ b/etherpad/src/templates/email/pro_payment_failure.ejs
diff --git a/trunk/etherpad/src/templates/email/pro_payment_receipt.ejs b/etherpad/src/templates/email/pro_payment_receipt.ejs
index 175b06a..175b06a 100644
--- a/trunk/etherpad/src/templates/email/pro_payment_receipt.ejs
+++ b/etherpad/src/templates/email/pro_payment_receipt.ejs
diff --git a/trunk/etherpad/src/templates/framed/framedfooter.ejs b/etherpad/src/templates/framed/framedfooter.ejs
index 7994e38..7994e38 100644
--- a/trunk/etherpad/src/templates/framed/framedfooter.ejs
+++ b/etherpad/src/templates/framed/framedfooter.ejs
diff --git a/trunk/etherpad/src/templates/framed/framedheader-pro.ejs b/etherpad/src/templates/framed/framedheader-pro.ejs
index 857fa3e..857fa3e 100644
--- a/trunk/etherpad/src/templates/framed/framedheader-pro.ejs
+++ b/etherpad/src/templates/framed/framedheader-pro.ejs
diff --git a/trunk/etherpad/src/templates/framed/framedheader.ejs b/etherpad/src/templates/framed/framedheader.ejs
index d6c25cb..d6c25cb 100644
--- a/trunk/etherpad/src/templates/framed/framedheader.ejs
+++ b/etherpad/src/templates/framed/framedheader.ejs
diff --git a/trunk/etherpad/src/templates/framed/framedpage-pro.ejs b/etherpad/src/templates/framed/framedpage-pro.ejs
index b3acb07..b3acb07 100644
--- a/trunk/etherpad/src/templates/framed/framedpage-pro.ejs
+++ b/etherpad/src/templates/framed/framedpage-pro.ejs
diff --git a/trunk/etherpad/src/templates/framed/framedpage.ejs b/etherpad/src/templates/framed/framedpage.ejs
index b1590f8..b1590f8 100644
--- a/trunk/etherpad/src/templates/framed/framedpage.ejs
+++ b/etherpad/src/templates/framed/framedpage.ejs
diff --git a/trunk/etherpad/src/templates/html.ejs b/etherpad/src/templates/html.ejs
index 056d7a7..056d7a7 100644
--- a/trunk/etherpad/src/templates/html.ejs
+++ b/etherpad/src/templates/html.ejs
diff --git a/trunk/etherpad/src/templates/main/home.ejs b/etherpad/src/templates/main/home.ejs
index 3fc0484..3fc0484 100644
--- a/trunk/etherpad/src/templates/main/home.ejs
+++ b/etherpad/src/templates/main/home.ejs
diff --git a/trunk/etherpad/src/templates/main/pro_signup_body.ejs b/etherpad/src/templates/main/pro_signup_body.ejs
index e984878..e984878 100644
--- a/trunk/etherpad/src/templates/main/pro_signup_body.ejs
+++ b/etherpad/src/templates/main/pro_signup_body.ejs
diff --git a/trunk/etherpad/src/templates/misc/pad_default.ejs b/etherpad/src/templates/misc/pad_default.ejs
index 2287096..96b7e25 100644
--- a/trunk/etherpad/src/templates/misc/pad_default.ejs
+++ b/etherpad/src/templates/misc/pad_default.ejs
@@ -14,6 +14,3 @@ limitations under the License. */ %>
Welcome to EtherPad!
This pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!
-
-You can make this pad public by tagging it with #public, and categorize it using twitter-style tags, like this: #newpage #uncategorized
-If you don't want this pad to be public, just delete the above tags :)
diff --git a/trunk/etherpad/src/templates/notice.ejs b/etherpad/src/templates/notice.ejs
index 311694f..311694f 100644
--- a/trunk/etherpad/src/templates/notice.ejs
+++ b/etherpad/src/templates/notice.ejs
diff --git a/trunk/etherpad/src/templates/pad/create_body.ejs b/etherpad/src/templates/pad/create_body.ejs
index 5fec49a..5fec49a 100644
--- a/trunk/etherpad/src/templates/pad/create_body.ejs
+++ b/etherpad/src/templates/pad/create_body.ejs
diff --git a/trunk/etherpad/src/templates/pad/create_body_rafter.ejs b/etherpad/src/templates/pad/create_body_rafter.ejs
index 28252c7..28252c7 100644
--- a/trunk/etherpad/src/templates/pad/create_body_rafter.ejs
+++ b/etherpad/src/templates/pad/create_body_rafter.ejs
diff --git a/trunk/etherpad/src/templates/pad/exporthtml.ejs b/etherpad/src/templates/pad/exporthtml.ejs
index 288a595..288a595 100644
--- a/trunk/etherpad/src/templates/pad/exporthtml.ejs
+++ b/etherpad/src/templates/pad/exporthtml.ejs
diff --git a/trunk/etherpad/src/templates/pad/pad_body.ejs b/etherpad/src/templates/pad/pad_body.ejs
index d932cd6..d932cd6 100644
--- a/trunk/etherpad/src/templates/pad/pad_body.ejs
+++ b/etherpad/src/templates/pad/pad_body.ejs
diff --git a/trunk/etherpad/src/templates/pad/pad_body2.ejs b/etherpad/src/templates/pad/pad_body2.ejs
index a49f453..a49f453 100644
--- a/trunk/etherpad/src/templates/pad/pad_body2.ejs
+++ b/etherpad/src/templates/pad/pad_body2.ejs
diff --git a/trunk/etherpad/src/templates/pad/pad_content.ejs b/etherpad/src/templates/pad/pad_content.ejs
index dbbd9bd..dbbd9bd 100644
--- a/trunk/etherpad/src/templates/pad/pad_content.ejs
+++ b/etherpad/src/templates/pad/pad_content.ejs
diff --git a/trunk/etherpad/src/templates/pad/pad_download_link.ejs b/etherpad/src/templates/pad/pad_download_link.ejs
index e05d7d0..e05d7d0 100644
--- a/trunk/etherpad/src/templates/pad/pad_download_link.ejs
+++ b/etherpad/src/templates/pad/pad_download_link.ejs
diff --git a/trunk/etherpad/src/templates/pad/pad_iphone_body.ejs b/etherpad/src/templates/pad/pad_iphone_body.ejs
index 96279ce..96279ce 100644
--- a/trunk/etherpad/src/templates/pad/pad_iphone_body.ejs
+++ b/etherpad/src/templates/pad/pad_iphone_body.ejs
diff --git a/trunk/etherpad/src/templates/pad/padfull_body.ejs b/etherpad/src/templates/pad/padfull_body.ejs
index 41a100c..41a100c 100644
--- a/trunk/etherpad/src/templates/pad/padfull_body.ejs
+++ b/etherpad/src/templates/pad/padfull_body.ejs
diff --git a/trunk/etherpad/src/templates/pad/padslider_body.ejs b/etherpad/src/templates/pad/padslider_body.ejs
index 51a9e84..51a9e84 100644
--- a/trunk/etherpad/src/templates/pad/padslider_body.ejs
+++ b/etherpad/src/templates/pad/padslider_body.ejs
diff --git a/trunk/etherpad/src/templates/pad/padview_body.ejs b/etherpad/src/templates/pad/padview_body.ejs
index 75c38fe..75c38fe 100644
--- a/trunk/etherpad/src/templates/pad/padview_body.ejs
+++ b/etherpad/src/templates/pad/padview_body.ejs
diff --git a/trunk/etherpad/src/templates/pad/total_users_exceeded.ejs b/etherpad/src/templates/pad/total_users_exceeded.ejs
index 7ac7e1b..7ac7e1b 100644
--- a/trunk/etherpad/src/templates/pad/total_users_exceeded.ejs
+++ b/etherpad/src/templates/pad/total_users_exceeded.ejs
diff --git a/trunk/etherpad/src/templates/pro-account/recover.ejs b/etherpad/src/templates/pro-account/recover.ejs
index 686fe3b..686fe3b 100644
--- a/trunk/etherpad/src/templates/pro-account/recover.ejs
+++ b/etherpad/src/templates/pro-account/recover.ejs
diff --git a/trunk/etherpad/src/templates/pro-account/sign-in.ejs b/etherpad/src/templates/pro-account/sign-in.ejs
index 470bbc4..470bbc4 100644
--- a/trunk/etherpad/src/templates/pro-account/sign-in.ejs
+++ b/etherpad/src/templates/pro-account/sign-in.ejs
diff --git a/trunk/etherpad/src/templates/pro-help/billing.ejs b/etherpad/src/templates/pro-help/billing.ejs
index 269d37b..269d37b 100644
--- a/trunk/etherpad/src/templates/pro-help/billing.ejs
+++ b/etherpad/src/templates/pro-help/billing.ejs
diff --git a/trunk/etherpad/src/templates/pro-help/essentials.ejs b/etherpad/src/templates/pro-help/essentials.ejs
index a1bcc87..a1bcc87 100644
--- a/trunk/etherpad/src/templates/pro-help/essentials.ejs
+++ b/etherpad/src/templates/pro-help/essentials.ejs
diff --git a/trunk/etherpad/src/templates/pro-help/main.ejs b/etherpad/src/templates/pro-help/main.ejs
index 428d7f7..428d7f7 100644
--- a/trunk/etherpad/src/templates/pro-help/main.ejs
+++ b/etherpad/src/templates/pro-help/main.ejs
diff --git a/trunk/etherpad/src/templates/pro-help/pro-help-template.ejs b/etherpad/src/templates/pro-help/pro-help-template.ejs
index 9cc8205..9cc8205 100644
--- a/trunk/etherpad/src/templates/pro-help/pro-help-template.ejs
+++ b/etherpad/src/templates/pro-help/pro-help-template.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/account-welcome-email.ejs b/etherpad/src/templates/pro/account/account-welcome-email.ejs
index 25af6f8..25af6f8 100644
--- a/trunk/etherpad/src/templates/pro/account/account-welcome-email.ejs
+++ b/etherpad/src/templates/pro/account/account-welcome-email.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/create-admin-account.ejs b/etherpad/src/templates/pro/account/create-admin-account.ejs
index 2a6c9f8..2a6c9f8 100644
--- a/trunk/etherpad/src/templates/pro/account/create-admin-account.ejs
+++ b/etherpad/src/templates/pro/account/create-admin-account.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/forgot-password-email.ejs b/etherpad/src/templates/pro/account/forgot-password-email.ejs
index 4595cee..4595cee 100644
--- a/trunk/etherpad/src/templates/pro/account/forgot-password-email.ejs
+++ b/etherpad/src/templates/pro/account/forgot-password-email.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/forgot-password.ejs b/etherpad/src/templates/pro/account/forgot-password.ejs
index bbc78dd..bbc78dd 100644
--- a/trunk/etherpad/src/templates/pro/account/forgot-password.ejs
+++ b/etherpad/src/templates/pro/account/forgot-password.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs b/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs
index d2eb4de..d2eb4de 100644
--- a/trunk/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs
+++ b/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/guest-knock.ejs b/etherpad/src/templates/pro/account/guest-knock.ejs
index 44c69c0..44c69c0 100644
--- a/trunk/etherpad/src/templates/pro/account/guest-knock.ejs
+++ b/etherpad/src/templates/pro/account/guest-knock.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/my-account.ejs b/etherpad/src/templates/pro/account/my-account.ejs
index 9634285..9634285 100644
--- a/trunk/etherpad/src/templates/pro/account/my-account.ejs
+++ b/etherpad/src/templates/pro/account/my-account.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/signin-guest.ejs b/etherpad/src/templates/pro/account/signin-guest.ejs
index 621c381..621c381 100644
--- a/trunk/etherpad/src/templates/pro/account/signin-guest.ejs
+++ b/etherpad/src/templates/pro/account/signin-guest.ejs
diff --git a/trunk/etherpad/src/templates/pro/account/signin.ejs b/etherpad/src/templates/pro/account/signin.ejs
index c67bea6..c67bea6 100644
--- a/trunk/etherpad/src/templates/pro/account/signin.ejs
+++ b/etherpad/src/templates/pro/account/signin.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/account-manager.ejs b/etherpad/src/templates/pro/admin/account-manager.ejs
index f1b443f..f1b443f 100644
--- a/trunk/etherpad/src/templates/pro/admin/account-manager.ejs
+++ b/etherpad/src/templates/pro/admin/account-manager.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/admin-template.ejs b/etherpad/src/templates/pro/admin/admin-template.ejs
index e1a7736..e1a7736 100644
--- a/trunk/etherpad/src/templates/pro/admin/admin-template.ejs
+++ b/etherpad/src/templates/pro/admin/admin-template.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/admin.ejs b/etherpad/src/templates/pro/admin/admin.ejs
index f8e1562..f8e1562 100644
--- a/trunk/etherpad/src/templates/pro/admin/admin.ejs
+++ b/etherpad/src/templates/pro/admin/admin.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/billing-invoices.ejs b/etherpad/src/templates/pro/admin/billing-invoices.ejs
index a3a17d8..a3a17d8 100644
--- a/trunk/etherpad/src/templates/pro/admin/billing-invoices.ejs
+++ b/etherpad/src/templates/pro/admin/billing-invoices.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/delete-account.ejs b/etherpad/src/templates/pro/admin/delete-account.ejs
index 3de2122..3de2122 100644
--- a/trunk/etherpad/src/templates/pro/admin/delete-account.ejs
+++ b/etherpad/src/templates/pro/admin/delete-account.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/manage-account.ejs b/etherpad/src/templates/pro/admin/manage-account.ejs
index 72529b4..72529b4 100644
--- a/trunk/etherpad/src/templates/pro/admin/manage-account.ejs
+++ b/etherpad/src/templates/pro/admin/manage-account.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/manage-billing.ejs b/etherpad/src/templates/pro/admin/manage-billing.ejs
index 8a7bd51..8a7bd51 100644
--- a/trunk/etherpad/src/templates/pro/admin/manage-billing.ejs
+++ b/etherpad/src/templates/pro/admin/manage-billing.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/new-account.ejs b/etherpad/src/templates/pro/admin/new-account.ejs
index 2f2cccf..2f2cccf 100644
--- a/trunk/etherpad/src/templates/pro/admin/new-account.ejs
+++ b/etherpad/src/templates/pro/admin/new-account.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/pne-config.ejs b/etherpad/src/templates/pro/admin/pne-config.ejs
index 56fe68d..56fe68d 100644
--- a/trunk/etherpad/src/templates/pro/admin/pne-config.ejs
+++ b/etherpad/src/templates/pro/admin/pne-config.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/pne-dashboard.ejs b/etherpad/src/templates/pro/admin/pne-dashboard.ejs
index 6b9b456..6b9b456 100644
--- a/trunk/etherpad/src/templates/pro/admin/pne-dashboard.ejs
+++ b/etherpad/src/templates/pro/admin/pne-dashboard.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/pne-license-manager.ejs b/etherpad/src/templates/pro/admin/pne-license-manager.ejs
index f160be0..f160be0 100644
--- a/trunk/etherpad/src/templates/pro/admin/pne-license-manager.ejs
+++ b/etherpad/src/templates/pro/admin/pne-license-manager.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/pne-shell.ejs b/etherpad/src/templates/pro/admin/pne-shell.ejs
index f398b15..f398b15 100644
--- a/trunk/etherpad/src/templates/pro/admin/pne-shell.ejs
+++ b/etherpad/src/templates/pro/admin/pne-shell.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/pro-config.ejs b/etherpad/src/templates/pro/admin/pro-config.ejs
index 32cb610..32cb610 100644
--- a/trunk/etherpad/src/templates/pro/admin/pro-config.ejs
+++ b/etherpad/src/templates/pro/admin/pro-config.ejs
diff --git a/trunk/etherpad/src/templates/pro/admin/single-invoice.ejs b/etherpad/src/templates/pro/admin/single-invoice.ejs
index aeab184..aeab184 100644
--- a/trunk/etherpad/src/templates/pro/admin/single-invoice.ejs
+++ b/etherpad/src/templates/pro/admin/single-invoice.ejs
diff --git a/trunk/etherpad/src/templates/pro/padlist/pro-padlist.ejs b/etherpad/src/templates/pro/padlist/pro-padlist.ejs
index b762679..b762679 100644
--- a/trunk/etherpad/src/templates/pro/padlist/pro-padlist.ejs
+++ b/etherpad/src/templates/pro/padlist/pro-padlist.ejs
diff --git a/trunk/etherpad/src/templates/pro/pro-payment-required.ejs b/etherpad/src/templates/pro/pro-payment-required.ejs
index 3649990..3649990 100644
--- a/trunk/etherpad/src/templates/pro/pro-payment-required.ejs
+++ b/etherpad/src/templates/pro/pro-payment-required.ejs
diff --git a/trunk/etherpad/src/templates/pro/pro_home.ejs b/etherpad/src/templates/pro/pro_home.ejs
index 8d92139..8d92139 100644
--- a/trunk/etherpad/src/templates/pro/pro_home.ejs
+++ b/etherpad/src/templates/pro/pro_home.ejs
diff --git a/trunk/etherpad/src/templates/statistics/stat_page.ejs b/etherpad/src/templates/statistics/stat_page.ejs
index 22277b3..22277b3 100644
--- a/trunk/etherpad/src/templates/statistics/stat_page.ejs
+++ b/etherpad/src/templates/statistics/stat_page.ejs
diff --git a/trunk/etherpad/src/templates/store/csc-help.ejs b/etherpad/src/templates/store/csc-help.ejs
index 3623fac..3623fac 100644
--- a/trunk/etherpad/src/templates/store/csc-help.ejs
+++ b/etherpad/src/templates/store/csc-help.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs b/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs
index 69e0ead..69e0ead 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/cart.ejs b/etherpad/src/templates/store/eepnet-checkout/cart.ejs
index 147ff1b..147ff1b 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/cart.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/cart.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs b/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs
index 817f0eb..817f0eb 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs b/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs
index 3b38775..3b38775 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/license-info.ejs b/etherpad/src/templates/store/eepnet-checkout/license-info.ejs
index 4d710f2..4d710f2 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/license-info.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/license-info.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/purchase.ejs b/etherpad/src/templates/store/eepnet-checkout/purchase.ejs
index 49cb3bb..49cb3bb 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/purchase.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/purchase.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/receipt.ejs b/etherpad/src/templates/store/eepnet-checkout/receipt.ejs
index 8d3a2a5..8d3a2a5 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/receipt.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/receipt.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/summary.ejs b/etherpad/src/templates/store/eepnet-checkout/summary.ejs
index 753873c..753873c 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/summary.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/summary.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs b/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs
index ff33fda..ff33fda 100644
--- a/trunk/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs
+++ b/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet_download.ejs b/etherpad/src/templates/store/eepnet_download.ejs
index 42c89ee..42c89ee 100644
--- a/trunk/etherpad/src/templates/store/eepnet_download.ejs
+++ b/etherpad/src/templates/store/eepnet_download.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs b/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs
index 4c4cec4..4c4cec4 100644
--- a/trunk/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs
+++ b/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs
diff --git a/trunk/etherpad/src/templates/store/eepnet_eval_signup.ejs b/etherpad/src/templates/store/eepnet_eval_signup.ejs
index 5a1edf4..5a1edf4 100644
--- a/trunk/etherpad/src/templates/store/eepnet_eval_signup.ejs
+++ b/etherpad/src/templates/store/eepnet_eval_signup.ejs
diff --git a/trunk/infrastructure/.gitignore b/infrastructure/.gitignore
index 8cde493..8cde493 100644
--- a/trunk/infrastructure/.gitignore
+++ b/infrastructure/.gitignore
diff --git a/trunk/infrastructure/ace/.gitignore b/infrastructure/ace/.gitignore
index 4083037..4083037 100644
--- a/trunk/infrastructure/ace/.gitignore
+++ b/infrastructure/ace/.gitignore
diff --git a/trunk/infrastructure/ace/README b/infrastructure/ace/README
index 275684f..275684f 100644
--- a/trunk/infrastructure/ace/README
+++ b/infrastructure/ace/README
diff --git a/trunk/infrastructure/ace/bin/make b/infrastructure/ace/bin/make
index 0a39d91..98a48f4 100755
--- a/trunk/infrastructure/ace/bin/make
+++ b/infrastructure/ace/bin/make
@@ -1,4 +1,6 @@
#!/bin/sh
+mkdir -p ../../etherpad/src/etherpad/collab/ace
+mkdir -p ../../etherpad/src/static/js
exec scala -classpath lib/yuicompressor-2.4-appjet.jar:lib/rhino-js-1.7r1.jar $0 $@
!#
diff --git a/trunk/infrastructure/ace/bin/serve b/infrastructure/ace/bin/serve
index e02e042..e02e042 100755
--- a/trunk/infrastructure/ace/bin/serve
+++ b/infrastructure/ace/bin/serve
diff --git a/trunk/infrastructure/ace/blog.txt b/infrastructure/ace/blog.txt
index 0b095a2..0b095a2 100644
--- a/trunk/infrastructure/ace/blog.txt
+++ b/infrastructure/ace/blog.txt
diff --git a/trunk/infrastructure/ace/build/.gitignore b/infrastructure/ace/build/.gitignore
index 4dc709e..4dc709e 100644
--- a/trunk/infrastructure/ace/build/.gitignore
+++ b/infrastructure/ace/build/.gitignore
diff --git a/trunk/infrastructure/ace/build/index.html b/infrastructure/ace/build/index.html
index b8c8505..b8c8505 100644
--- a/trunk/infrastructure/ace/build/index.html
+++ b/infrastructure/ace/build/index.html
diff --git a/trunk/infrastructure/ace/build/jquery-1.2.1.js b/infrastructure/ace/build/jquery-1.2.1.js
index b4eb132..b4eb132 100644
--- a/trunk/infrastructure/ace/build/jquery-1.2.1.js
+++ b/infrastructure/ace/build/jquery-1.2.1.js
diff --git a/trunk/infrastructure/ace/build/testcode.js b/infrastructure/ace/build/testcode.js
index f393335..f393335 100644
--- a/trunk/infrastructure/ace/build/testcode.js
+++ b/infrastructure/ace/build/testcode.js
diff --git a/trunk/infrastructure/ace/easysync-notes.txt b/infrastructure/ace/easysync-notes.txt
index 6808f40..6808f40 100644
--- a/trunk/infrastructure/ace/easysync-notes.txt
+++ b/infrastructure/ace/easysync-notes.txt
diff --git a/trunk/infrastructure/ace/lib/rhino-js-1.7r1.jar b/infrastructure/ace/lib/rhino-js-1.7r1.jar
index f41e23b..f41e23b 120000
--- a/trunk/infrastructure/ace/lib/rhino-js-1.7r1.jar
+++ b/infrastructure/ace/lib/rhino-js-1.7r1.jar
diff --git a/trunk/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar b/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar
index 3953af5..3953af5 120000
--- a/trunk/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar
+++ b/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar
diff --git a/trunk/infrastructure/ace/notes.txt b/infrastructure/ace/notes.txt
index d9e1fda..d9e1fda 100644
--- a/trunk/infrastructure/ace/notes.txt
+++ b/infrastructure/ace/notes.txt
diff --git a/trunk/infrastructure/ace/www/ace2_common.js b/infrastructure/ace/www/ace2_common.js
index 4a08de6..4a08de6 100644
--- a/trunk/infrastructure/ace/www/ace2_common.js
+++ b/infrastructure/ace/www/ace2_common.js
diff --git a/trunk/infrastructure/ace/www/ace2_common_dev.js b/infrastructure/ace/www/ace2_common_dev.js
index 8fb88b0..8fb88b0 100644
--- a/trunk/infrastructure/ace/www/ace2_common_dev.js
+++ b/infrastructure/ace/www/ace2_common_dev.js
diff --git a/trunk/infrastructure/ace/www/ace2_inner.js b/infrastructure/ace/www/ace2_inner.js
index e817c95..e817c95 100644
--- a/trunk/infrastructure/ace/www/ace2_inner.js
+++ b/infrastructure/ace/www/ace2_inner.js
diff --git a/trunk/infrastructure/ace/www/ace2_outer.js b/infrastructure/ace/www/ace2_outer.js
index b0fc20c..b0fc20c 100644
--- a/trunk/infrastructure/ace/www/ace2_outer.js
+++ b/infrastructure/ace/www/ace2_outer.js
diff --git a/trunk/infrastructure/ace/www/ace2_wrapper.js b/infrastructure/ace/www/ace2_wrapper.js
index b62e09d..b62e09d 100644
--- a/trunk/infrastructure/ace/www/ace2_wrapper.js
+++ b/infrastructure/ace/www/ace2_wrapper.js
diff --git a/trunk/infrastructure/ace/www/bbtree.js b/infrastructure/ace/www/bbtree.js
index 70cb8c0..70cb8c0 100644
--- a/trunk/infrastructure/ace/www/bbtree.js
+++ b/infrastructure/ace/www/bbtree.js
diff --git a/trunk/infrastructure/ace/www/changesettracker.js b/infrastructure/ace/www/changesettracker.js
index d6fe018..d6fe018 100644
--- a/trunk/infrastructure/ace/www/changesettracker.js
+++ b/infrastructure/ace/www/changesettracker.js
diff --git a/trunk/infrastructure/ace/www/colorutils.js b/infrastructure/ace/www/colorutils.js
index bb61de3..bb61de3 100644
--- a/trunk/infrastructure/ace/www/colorutils.js
+++ b/infrastructure/ace/www/colorutils.js
diff --git a/trunk/infrastructure/ace/www/contentcollector.js b/infrastructure/ace/www/contentcollector.js
index c5d8ddb..c5d8ddb 100644
--- a/trunk/infrastructure/ace/www/contentcollector.js
+++ b/infrastructure/ace/www/contentcollector.js
diff --git a/trunk/infrastructure/ace/www/cssmanager.js b/infrastructure/ace/www/cssmanager.js
index a5c549b..a5c549b 100644
--- a/trunk/infrastructure/ace/www/cssmanager.js
+++ b/infrastructure/ace/www/cssmanager.js
diff --git a/trunk/infrastructure/ace/www/dev.html b/infrastructure/ace/www/dev.html
index 0a9768e..0a9768e 100644
--- a/trunk/infrastructure/ace/www/dev.html
+++ b/infrastructure/ace/www/dev.html
diff --git a/trunk/infrastructure/ace/www/domline.js b/infrastructure/ace/www/domline.js
index e8a9ba7..38cddf5 100644
--- a/trunk/infrastructure/ace/www/domline.js
+++ b/infrastructure/ace/www/domline.js
@@ -1,4 +1,5 @@
// THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.domline
+// %APPJET%: import("etherpad.admin.plugins");
/**
* Copyright 2009 Google Inc.
@@ -16,6 +17,10 @@
* limitations under the License.
*/
+// requires: top
+// requires: plugins
+// requires: undefined
+
var domline = {};
domline.noop = function() {};
domline.identity = function(x) { return x; };
@@ -85,12 +90,6 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) {
return space+"url";
});
}
- if (cls.indexOf('padtag') >= 0) {
- cls = cls.replace(/(^| )padtag:(\S+)/g, function(x0, space, padtag) {
- href = '/ep/tag/?query=' + padtag;
- return space+"padtag padtag_"+padtag;
- });
- }
if (cls.indexOf('tag') >= 0) {
cls = cls.replace(/(^| )tag:(\S+)/g, function(x0, space, tag) {
if (! simpleTags) simpleTags = [];
@@ -98,12 +97,22 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) {
return space+tag;
});
}
+
+ var extraOpenTags = "";
+ var extraCloseTags = "";
+
+ ((top == undefined) ? plugins : top.plugins).callHook(
+ "aceCreateDomLine", {domline:domline, cls:cls}
+ ).map(function (modifier) {
+ cls = modifier.cls;
+ extraOpenTags = extraOpenTags+modifier.extraOpenTags;
+ extraCloseTags = modifier.extraCloseTags+extraCloseTags;
+ });
+
if ((! txt) && cls) {
lineClass = domline.addToLineClass(lineClass, cls);
}
else if (txt) {
- var extraOpenTags = "";
- var extraCloseTags = "";
if (href) {
extraOpenTags = extraOpenTags+'<a href="'+
href.replace(/\"/g, '&quot;')+'">';
diff --git a/trunk/infrastructure/ace/www/easy_sync.js b/infrastructure/ace/www/easy_sync.js
index 86a4327..86a4327 100644
--- a/trunk/infrastructure/ace/www/easy_sync.js
+++ b/infrastructure/ace/www/easy_sync.js
diff --git a/trunk/infrastructure/ace/www/easysync2.js b/infrastructure/ace/www/easysync2.js
index efc5b99..efc5b99 100644
--- a/trunk/infrastructure/ace/www/easysync2.js
+++ b/infrastructure/ace/www/easysync2.js
diff --git a/trunk/infrastructure/ace/www/easysync2_tests.js b/infrastructure/ace/www/easysync2_tests.js
index 2fcf202..2fcf202 100644
--- a/trunk/infrastructure/ace/www/easysync2_tests.js
+++ b/infrastructure/ace/www/easysync2_tests.js
diff --git a/trunk/infrastructure/ace/www/editor.css b/infrastructure/ace/www/editor.css
index 0a43478..0a43478 100644
--- a/trunk/infrastructure/ace/www/editor.css
+++ b/infrastructure/ace/www/editor.css
diff --git a/trunk/infrastructure/ace/www/firebug/errorIcon.png b/infrastructure/ace/www/firebug/errorIcon.png
index 2d75261..2d75261 100644
--- a/trunk/infrastructure/ace/www/firebug/errorIcon.png
+++ b/infrastructure/ace/www/firebug/errorIcon.png
Binary files differ
diff --git a/trunk/infrastructure/ace/www/firebug/firebug.css b/infrastructure/ace/www/firebug/firebug.css
index 1f041c4..1f041c4 100644
--- a/trunk/infrastructure/ace/www/firebug/firebug.css
+++ b/infrastructure/ace/www/firebug/firebug.css
diff --git a/trunk/infrastructure/ace/www/firebug/firebug.html b/infrastructure/ace/www/firebug/firebug.html
index 861e639..861e639 100644
--- a/trunk/infrastructure/ace/www/firebug/firebug.html
+++ b/infrastructure/ace/www/firebug/firebug.html
diff --git a/trunk/infrastructure/ace/www/firebug/firebug.js b/infrastructure/ace/www/firebug/firebug.js
index d3c1978..d3c1978 100644
--- a/trunk/infrastructure/ace/www/firebug/firebug.js
+++ b/infrastructure/ace/www/firebug/firebug.js
diff --git a/trunk/infrastructure/ace/www/firebug/firebugx.js b/infrastructure/ace/www/firebug/firebugx.js
index b2cc49c..b2cc49c 100644
--- a/trunk/infrastructure/ace/www/firebug/firebugx.js
+++ b/infrastructure/ace/www/firebug/firebugx.js
diff --git a/trunk/infrastructure/ace/www/firebug/infoIcon.png b/infrastructure/ace/www/firebug/infoIcon.png
index da1e533..da1e533 100644
--- a/trunk/infrastructure/ace/www/firebug/infoIcon.png
+++ b/infrastructure/ace/www/firebug/infoIcon.png
Binary files differ
diff --git a/trunk/infrastructure/ace/www/firebug/warningIcon.png b/infrastructure/ace/www/firebug/warningIcon.png
index de51084..de51084 100644
--- a/trunk/infrastructure/ace/www/firebug/warningIcon.png
+++ b/infrastructure/ace/www/firebug/warningIcon.png
Binary files differ
diff --git a/trunk/infrastructure/ace/www/index.html b/infrastructure/ace/www/index.html
index a1e6e96..a1e6e96 100644
--- a/trunk/infrastructure/ace/www/index.html
+++ b/infrastructure/ace/www/index.html
diff --git a/trunk/infrastructure/ace/www/inner.css b/infrastructure/ace/www/inner.css
index 7479cfe..7479cfe 100644
--- a/trunk/infrastructure/ace/www/inner.css
+++ b/infrastructure/ace/www/inner.css
diff --git a/trunk/infrastructure/ace/www/jquery-1.2.1.js b/infrastructure/ace/www/jquery-1.2.1.js
index b4eb132..b4eb132 100644
--- a/trunk/infrastructure/ace/www/jquery-1.2.1.js
+++ b/infrastructure/ace/www/jquery-1.2.1.js
diff --git a/trunk/infrastructure/ace/www/lang_html.js b/infrastructure/ace/www/lang_html.js
index f9eff8e..f9eff8e 100644
--- a/trunk/infrastructure/ace/www/lang_html.js
+++ b/infrastructure/ace/www/lang_html.js
diff --git a/trunk/infrastructure/ace/www/lang_js.js b/infrastructure/ace/www/lang_js.js
index 4bbc5b4..4bbc5b4 100644
--- a/trunk/infrastructure/ace/www/lang_js.js
+++ b/infrastructure/ace/www/lang_js.js
diff --git a/trunk/infrastructure/ace/www/lexer_support.js b/infrastructure/ace/www/lexer_support.js
index 3d54f5c..3d54f5c 100644
--- a/trunk/infrastructure/ace/www/lexer_support.js
+++ b/infrastructure/ace/www/lexer_support.js
diff --git a/trunk/infrastructure/ace/www/linestylefilter.js b/infrastructure/ace/www/linestylefilter.js
index f0f1343..d69376a 100644
--- a/trunk/infrastructure/ace/www/linestylefilter.js
+++ b/infrastructure/ace/www/linestylefilter.js
@@ -1,5 +1,6 @@
// THIS FILE IS ALSO AN APPJET MODULE: etherpad.collab.ace.linestylefilter
// %APPJET%: import("etherpad.collab.ace.easysync2.Changeset");
+// %APPJET%: import("etherpad.admin.plugins");
/**
* Copyright 2009 Google Inc.
@@ -18,6 +19,9 @@
*/
// requires: easysync2.Changeset
+// requires: top
+// requires: plugins
+// requires: undefined
var linestylefilter = {};
@@ -135,104 +139,60 @@ linestylefilter.getAtSignSplitterFilter = function(lineText,
splitPoints);
};
-linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/;
-linestylefilter.REGEX_URLCHAR = new RegExp('('+/[-:@a-zA-Z0-9_.,~%+\/\\?=&#;()$]/.source+'|'+linestylefilter.REGEX_WORDCHAR.source+')');
-linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:)/.source+linestylefilter.REGEX_URLCHAR.source+'*(?![:.,;])'+linestylefilter.REGEX_URLCHAR.source, 'g');
-
-linestylefilter.getURLFilter = function(lineText, textAndClassFunc) {
- linestylefilter.REGEX_URL.lastIndex = 0;
- var urls = null;
- var splitPoints = null;
- var execResult;
- while ((execResult = linestylefilter.REGEX_URL.exec(lineText))) {
- if (! urls) {
- urls = [];
- splitPoints = [];
+linestylefilter.getRegexpFilter = function (regExp, tag) {
+ return function (lineText, textAndClassFunc) {
+ regExp.lastIndex = 0;
+ var regExpMatchs = null;
+ var splitPoints = null;
+ var execResult;
+ while ((execResult = regExp.exec(lineText))) {
+ if (! regExpMatchs) {
+ regExpMatchs = [];
+ splitPoints = [];
+ }
+ var startIndex = execResult.index;
+ var regExpMatch = execResult[0];
+ regExpMatchs.push([startIndex, regExpMatch]);
+ splitPoints.push(startIndex, startIndex + regExpMatch.length);
}
- var startIndex = execResult.index;
- var url = execResult[0];
- urls.push([startIndex, url]);
- splitPoints.push(startIndex, startIndex + url.length);
- }
- if (! urls) return textAndClassFunc;
+ if (! regExpMatchs) return textAndClassFunc;
- function urlForIndex(idx) {
- for(var k=0; k<urls.length; k++) {
- var u = urls[k];
- if (idx >= u[0] && idx < u[0]+u[1].length) {
- return u[1];
+ function regExpMatchForIndex(idx) {
+ for(var k=0; k<regExpMatchs.length; k++) {
+ var u = regExpMatchs[k];
+ if (idx >= u[0] && idx < u[0]+u[1].length) {
+ return u[1];
+ }
}
+ return false;
}
- return false;
- }
- var handleUrlsAfterSplit = (function() {
- var curIndex = 0;
- return function(txt, cls) {
- var txtlen = txt.length;
- var newCls = cls;
- var url = urlForIndex(curIndex);
- if (url) {
- newCls += " url:"+url;
- }
- textAndClassFunc(txt, newCls);
- curIndex += txtlen;
- };
- })();
-
- return linestylefilter.textAndClassFuncSplitter(handleUrlsAfterSplit,
- splitPoints);
+ var handleRegExpMatchsAfterSplit = (function() {
+ var curIndex = 0;
+ return function(txt, cls) {
+ var txtlen = txt.length;
+ var newCls = cls;
+ var regExpMatch = regExpMatchForIndex(curIndex);
+ if (regExpMatch) {
+ newCls += " "+tag+":"+regExpMatch;
+ }
+ textAndClassFunc(txt, newCls);
+ curIndex += txtlen;
+ };
+ })();
+
+ return linestylefilter.textAndClassFuncSplitter(handleRegExpMatchsAfterSplit,
+ splitPoints);
+ };
};
-/* Copy of getURLFilter with slight modifications, should probably merge and just use different regexps */
-linestylefilter.REGEX_PADTAG = new RegExp("#[^,#!\\s][^,#!\\s]*", "g");
-linestylefilter.getPadTagFilter = function(lineText, textAndClassFunc) {
- linestylefilter.REGEX_PADTAG.lastIndex = 0;
- var padTags = null;
- var splitPoints = null;
- var execResult;
- while ((execResult = linestylefilter.REGEX_PADTAG.exec(lineText))) {
- if (! padTags) {
- padTags = [];
- splitPoints = [];
- }
- var startIndex = execResult.index;
- var padTag = execResult[0];
- padTags.push([startIndex, padTag]);
- splitPoints.push(startIndex, startIndex + padTag.length);
- }
-
- if (! padTags) return textAndClassFunc;
-
- function padTagForIndex(idx) {
- for(var k=0; k<padTags.length; k++) {
- var u = padTags[k];
- if (idx >= u[0] && idx < u[0]+u[1].length) {
- return u[1];
- }
- }
- return false;
- }
-
- var handlePadTagsAfterSplit = (function() {
- var curIndex = 0;
- return function(txt, cls) {
- var txtlen = txt.length;
- var newCls = cls;
- var padTag = padTagForIndex(curIndex);
- if (padTag) {
- newCls += " padtag:"+padTag.substring(1);
- }
- textAndClassFunc(txt, newCls);
- curIndex += txtlen;
- };
- })();
-
- return linestylefilter.textAndClassFuncSplitter(handlePadTagsAfterSplit,
- splitPoints);
-}
+linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/;
+linestylefilter.REGEX_URLCHAR = new RegExp('('+/[-:@a-zA-Z0-9_.,~%+\/\\?=&#;()$]/.source+'|'+linestylefilter.REGEX_WORDCHAR.source+')');
+linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:)/.source+linestylefilter.REGEX_URLCHAR.source+'*(?![:.,;])'+linestylefilter.REGEX_URLCHAR.source, 'g');
+linestylefilter.getURLFilter = linestylefilter.getRegexpFilter(
+ linestylefilter.REGEX_URL, 'url');
linestylefilter.textAndClassFuncSplitter = function(func, splitPointsOpt) {
var nextPointIndex = 0;
@@ -276,8 +236,14 @@ linestylefilter.textAndClassFuncSplitter = function(func, splitPointsOpt) {
};
linestylefilter.getFilterStack = function(lineText, textAndClassFunc, browser) {
- var func = linestylefilter.getURLFilter(lineText, textAndClassFunc);
- func = linestylefilter.getPadTagFilter(lineText, func);
+ var func = linestylefilter.getURLFilter(lineText, textAndClassFunc);
+
+ var hookFilters = ((top == undefined) ? plugins : top.plugins).callHook(
+ "aceGetFilterStack", {linestylefilter:linestylefilter, browser:browser});
+ hookFilters.map(function (hookFilter) {
+ func = hookFilter(lineText, func);
+ });
+
if (browser !== undefined && browser.msie) {
// IE7+ will take an e-mail address like <foo@bar.com> and linkify it to foo@bar.com.
// We then normalize it back to text with no angle brackets. It's weird. So always
diff --git a/trunk/infrastructure/ace/www/magicdom.js b/infrastructure/ace/www/magicdom.js
index 4bad3d4..4bad3d4 100644
--- a/trunk/infrastructure/ace/www/magicdom.js
+++ b/infrastructure/ace/www/magicdom.js
diff --git a/trunk/infrastructure/ace/www/multilang_lexer.js b/infrastructure/ace/www/multilang_lexer.js
index 9617981..9617981 100644
--- a/trunk/infrastructure/ace/www/multilang_lexer.js
+++ b/infrastructure/ace/www/multilang_lexer.js
diff --git a/trunk/infrastructure/ace/www/processing.js b/infrastructure/ace/www/processing.js
index 988ef76..988ef76 100644
--- a/trunk/infrastructure/ace/www/processing.js
+++ b/infrastructure/ace/www/processing.js
diff --git a/trunk/infrastructure/ace/www/profiler.js b/infrastructure/ace/www/profiler.js
index 24b68a2..24b68a2 100644
--- a/trunk/infrastructure/ace/www/profiler.js
+++ b/infrastructure/ace/www/profiler.js
diff --git a/trunk/infrastructure/ace/www/skiplist.js b/infrastructure/ace/www/skiplist.js
index e6c2e04..e6c2e04 100644
--- a/trunk/infrastructure/ace/www/skiplist.js
+++ b/infrastructure/ace/www/skiplist.js
diff --git a/trunk/infrastructure/ace/www/spanlist.js b/infrastructure/ace/www/spanlist.js
index 756a411..756a411 100644
--- a/trunk/infrastructure/ace/www/spanlist.js
+++ b/infrastructure/ace/www/spanlist.js
diff --git a/trunk/infrastructure/ace/www/syntax-new.css b/infrastructure/ace/www/syntax-new.css
index 30f1823..30f1823 100644
--- a/trunk/infrastructure/ace/www/syntax-new.css
+++ b/infrastructure/ace/www/syntax-new.css
diff --git a/trunk/infrastructure/ace/www/syntax.css b/infrastructure/ace/www/syntax.css
index e018320..e018320 100644
--- a/trunk/infrastructure/ace/www/syntax.css
+++ b/infrastructure/ace/www/syntax.css
diff --git a/trunk/infrastructure/ace/www/test.html b/infrastructure/ace/www/test.html
index 73fa45c..73fa45c 100644
--- a/trunk/infrastructure/ace/www/test.html
+++ b/infrastructure/ace/www/test.html
diff --git a/trunk/infrastructure/ace/www/testcode.js b/infrastructure/ace/www/testcode.js
index f393335..f393335 100644
--- a/trunk/infrastructure/ace/www/testcode.js
+++ b/infrastructure/ace/www/testcode.js
diff --git a/trunk/infrastructure/ace/www/toSource.js b/infrastructure/ace/www/toSource.js
index bf96df7..bf96df7 100644
--- a/trunk/infrastructure/ace/www/toSource.js
+++ b/infrastructure/ace/www/toSource.js
diff --git a/trunk/infrastructure/ace/www/undomodule.js b/infrastructure/ace/www/undomodule.js
index b8a56f9..b8a56f9 100644
--- a/trunk/infrastructure/ace/www/undomodule.js
+++ b/infrastructure/ace/www/undomodule.js
diff --git a/trunk/infrastructure/ace/www/virtual_lines.js b/infrastructure/ace/www/virtual_lines.js
index 86e3dea..86e3dea 100644
--- a/trunk/infrastructure/ace/www/virtual_lines.js
+++ b/infrastructure/ace/www/virtual_lines.js
diff --git a/trunk/infrastructure/bin/classpath.sh b/infrastructure/bin/classpath.sh
index b1d297c..b1d297c 100755
--- a/trunk/infrastructure/bin/classpath.sh
+++ b/infrastructure/bin/classpath.sh
diff --git a/trunk/infrastructure/bin/comp.sh b/infrastructure/bin/comp.sh
index 5f65c2f..5f65c2f 100755
--- a/trunk/infrastructure/bin/comp.sh
+++ b/infrastructure/bin/comp.sh
diff --git a/trunk/infrastructure/bin/compilecache.sh b/infrastructure/bin/compilecache.sh
index a2b6220..a2b6220 100644
--- a/trunk/infrastructure/bin/compilecache.sh
+++ b/infrastructure/bin/compilecache.sh
diff --git a/trunk/infrastructure/bin/jscomp.sh b/infrastructure/bin/jscomp.sh
index 3f5bc51..3f5bc51 100755
--- a/trunk/infrastructure/bin/jscomp.sh
+++ b/infrastructure/bin/jscomp.sh
diff --git a/trunk/infrastructure/bin/makejar.sh b/infrastructure/bin/makejar.sh
index c774fa6..c774fa6 100755
--- a/trunk/infrastructure/bin/makejar.sh
+++ b/infrastructure/bin/makejar.sh
diff --git a/trunk/infrastructure/bin/makesars.sh b/infrastructure/bin/makesars.sh
index 541b04a..541b04a 100755
--- a/trunk/infrastructure/bin/makesars.sh
+++ b/infrastructure/bin/makesars.sh
diff --git a/trunk/infrastructure/bin/run.sh b/infrastructure/bin/run.sh
index cf918d4..cf918d4 100755
--- a/trunk/infrastructure/bin/run.sh
+++ b/infrastructure/bin/run.sh
diff --git a/trunk/infrastructure/com.etherpad.openofficeservice/importexport.scala b/infrastructure/com.etherpad.openofficeservice/importexport.scala
index f5150ad..f5150ad 100644
--- a/trunk/infrastructure/com.etherpad.openofficeservice/importexport.scala
+++ b/infrastructure/com.etherpad.openofficeservice/importexport.scala
diff --git a/trunk/infrastructure/com.etherpad/easysync2support.scala b/infrastructure/com.etherpad/easysync2support.scala
index 9f1c527..9f1c527 100644
--- a/trunk/infrastructure/com.etherpad/easysync2support.scala
+++ b/infrastructure/com.etherpad/easysync2support.scala
diff --git a/trunk/infrastructure/com.etherpad/licensing.scala b/infrastructure/com.etherpad/licensing.scala
index 9318f78..9318f78 100644
--- a/trunk/infrastructure/com.etherpad/licensing.scala
+++ b/infrastructure/com.etherpad/licensing.scala
diff --git a/trunk/infrastructure/com.etherpad/main.scala b/infrastructure/com.etherpad/main.scala
index 5110aba..5110aba 100644
--- a/trunk/infrastructure/com.etherpad/main.scala
+++ b/infrastructure/com.etherpad/main.scala
diff --git a/trunk/infrastructure/framework-src/modules/atomfeed.js b/infrastructure/framework-src/modules/atomfeed.js
index 4b86eeb..4b86eeb 100644
--- a/trunk/infrastructure/framework-src/modules/atomfeed.js
+++ b/infrastructure/framework-src/modules/atomfeed.js
diff --git a/trunk/infrastructure/framework-src/modules/blob.js b/infrastructure/framework-src/modules/blob.js
index af788a0..af788a0 100644
--- a/trunk/infrastructure/framework-src/modules/blob.js
+++ b/infrastructure/framework-src/modules/blob.js
diff --git a/trunk/infrastructure/framework-src/modules/cache_utils.js b/infrastructure/framework-src/modules/cache_utils.js
index f2a360c..f2a360c 100644
--- a/trunk/infrastructure/framework-src/modules/cache_utils.js
+++ b/infrastructure/framework-src/modules/cache_utils.js
diff --git a/trunk/infrastructure/framework-src/modules/comet.js b/infrastructure/framework-src/modules/comet.js
index 2331f8b..2331f8b 100644
--- a/trunk/infrastructure/framework-src/modules/comet.js
+++ b/infrastructure/framework-src/modules/comet.js
diff --git a/trunk/infrastructure/framework-src/modules/dateutils.js b/infrastructure/framework-src/modules/dateutils.js
index 72e87c8..72e87c8 100644
--- a/trunk/infrastructure/framework-src/modules/dateutils.js
+++ b/infrastructure/framework-src/modules/dateutils.js
diff --git a/trunk/infrastructure/framework-src/modules/dispatch.js b/infrastructure/framework-src/modules/dispatch.js
index e7e3ef0..e7e3ef0 100644
--- a/trunk/infrastructure/framework-src/modules/dispatch.js
+++ b/infrastructure/framework-src/modules/dispatch.js
diff --git a/trunk/infrastructure/framework-src/modules/ejs.js b/infrastructure/framework-src/modules/ejs.js
index bf14ed3..bf14ed3 100644
--- a/trunk/infrastructure/framework-src/modules/ejs.js
+++ b/infrastructure/framework-src/modules/ejs.js
diff --git a/trunk/infrastructure/framework-src/modules/email.js b/infrastructure/framework-src/modules/email.js
index 2d81dc3..2d81dc3 100644
--- a/trunk/infrastructure/framework-src/modules/email.js
+++ b/infrastructure/framework-src/modules/email.js
diff --git a/trunk/infrastructure/framework-src/modules/exceptionutils.js b/infrastructure/framework-src/modules/exceptionutils.js
index b572a3a..b572a3a 100644
--- a/trunk/infrastructure/framework-src/modules/exceptionutils.js
+++ b/infrastructure/framework-src/modules/exceptionutils.js
diff --git a/trunk/infrastructure/framework-src/modules/execution.js b/infrastructure/framework-src/modules/execution.js
index 1cec418..2f9d933 100644
--- a/trunk/infrastructure/framework-src/modules/execution.js
+++ b/infrastructure/framework-src/modules/execution.js
@@ -44,8 +44,11 @@ function fancyAssEval(initCode, mainCode) {
1);
}
var runner = Packages.net.appjet.oui.ScopeReuseManager.getEmpty(scalaF1(init));
+ var requestWrapper = null;
+ if (request.underlying !== undefined)
+ requestWrapper = new Packages.net.appjet.oui.RequestWrapper(request.underlying);
var ec = new Packages.net.appjet.oui.ExecutionContext(
- new Packages.net.appjet.oui.RequestWrapper(request.underlying),
+ requestWrapper,
null, runner);
return Packages.net.appjet.oui.ExecutionContextUtils.withContext(ec,
scalaF0(function() {
diff --git a/trunk/infrastructure/framework-src/modules/fastJSON.js b/infrastructure/framework-src/modules/fastJSON.js
index 3198b96..3198b96 100644
--- a/trunk/infrastructure/framework-src/modules/fastJSON.js
+++ b/infrastructure/framework-src/modules/fastJSON.js
diff --git a/trunk/infrastructure/framework-src/modules/faststatic.js b/infrastructure/framework-src/modules/faststatic.js
index 5cca676..5cca676 100644
--- a/trunk/infrastructure/framework-src/modules/faststatic.js
+++ b/infrastructure/framework-src/modules/faststatic.js
diff --git a/trunk/infrastructure/framework-src/modules/fileutils.js b/infrastructure/framework-src/modules/fileutils.js
index aaf12e2..aaf12e2 100644
--- a/trunk/infrastructure/framework-src/modules/fileutils.js
+++ b/infrastructure/framework-src/modules/fileutils.js
diff --git a/trunk/infrastructure/framework-src/modules/funhtml.js b/infrastructure/framework-src/modules/funhtml.js
index c27b667..c27b667 100644
--- a/trunk/infrastructure/framework-src/modules/funhtml.js
+++ b/infrastructure/framework-src/modules/funhtml.js
diff --git a/trunk/infrastructure/framework-src/modules/global/appjet.js b/infrastructure/framework-src/modules/global/appjet.js
index 135ac44..135ac44 100644
--- a/trunk/infrastructure/framework-src/modules/global/appjet.js
+++ b/infrastructure/framework-src/modules/global/appjet.js
diff --git a/trunk/infrastructure/framework-src/modules/global/request.js b/infrastructure/framework-src/modules/global/request.js
index a4327f9..a4327f9 100644
--- a/trunk/infrastructure/framework-src/modules/global/request.js
+++ b/infrastructure/framework-src/modules/global/request.js
diff --git a/trunk/infrastructure/framework-src/modules/global/response.js b/infrastructure/framework-src/modules/global/response.js
index 7236920..7236920 100644
--- a/trunk/infrastructure/framework-src/modules/global/response.js
+++ b/infrastructure/framework-src/modules/global/response.js
diff --git a/trunk/infrastructure/framework-src/modules/image.js b/infrastructure/framework-src/modules/image.js
index 8aec74b..8aec74b 100644
--- a/trunk/infrastructure/framework-src/modules/image.js
+++ b/infrastructure/framework-src/modules/image.js
diff --git a/trunk/infrastructure/framework-src/modules/jsutils.js b/infrastructure/framework-src/modules/jsutils.js
index 02f81a2..02f81a2 100644
--- a/trunk/infrastructure/framework-src/modules/jsutils.js
+++ b/infrastructure/framework-src/modules/jsutils.js
diff --git a/trunk/infrastructure/framework-src/modules/netutils.js b/infrastructure/framework-src/modules/netutils.js
index 6616b76..6616b76 100644
--- a/trunk/infrastructure/framework-src/modules/netutils.js
+++ b/infrastructure/framework-src/modules/netutils.js
diff --git a/trunk/infrastructure/framework-src/modules/process.js b/infrastructure/framework-src/modules/process.js
index 48ab62e..48ab62e 100644
--- a/trunk/infrastructure/framework-src/modules/process.js
+++ b/infrastructure/framework-src/modules/process.js
diff --git a/trunk/infrastructure/framework-src/modules/profiler.js b/infrastructure/framework-src/modules/profiler.js
index 223c197..223c197 100644
--- a/trunk/infrastructure/framework-src/modules/profiler.js
+++ b/infrastructure/framework-src/modules/profiler.js
diff --git a/trunk/infrastructure/framework-src/modules/sessions.js b/infrastructure/framework-src/modules/sessions.js
index 3d0041b..3d0041b 100644
--- a/trunk/infrastructure/framework-src/modules/sessions.js
+++ b/infrastructure/framework-src/modules/sessions.js
diff --git a/trunk/infrastructure/framework-src/modules/sqlbase/persistent_vars.js b/infrastructure/framework-src/modules/sqlbase/persistent_vars.js
index 1c4cc95..1c4cc95 100644
--- a/trunk/infrastructure/framework-src/modules/sqlbase/persistent_vars.js
+++ b/infrastructure/framework-src/modules/sqlbase/persistent_vars.js
diff --git a/trunk/infrastructure/framework-src/modules/sqlbase/sqlbase.js b/infrastructure/framework-src/modules/sqlbase/sqlbase.js
index 3df1a0f..3df1a0f 100644
--- a/trunk/infrastructure/framework-src/modules/sqlbase/sqlbase.js
+++ b/infrastructure/framework-src/modules/sqlbase/sqlbase.js
diff --git a/trunk/infrastructure/framework-src/modules/sqlbase/sqlcommon.js b/infrastructure/framework-src/modules/sqlbase/sqlcommon.js
index 360f5e2..360f5e2 100644
--- a/trunk/infrastructure/framework-src/modules/sqlbase/sqlcommon.js
+++ b/infrastructure/framework-src/modules/sqlbase/sqlcommon.js
diff --git a/trunk/infrastructure/framework-src/modules/sqlbase/sqlobj.js b/infrastructure/framework-src/modules/sqlbase/sqlobj.js
index e599c92..e599c92 100644
--- a/trunk/infrastructure/framework-src/modules/sqlbase/sqlobj.js
+++ b/infrastructure/framework-src/modules/sqlbase/sqlobj.js
diff --git a/trunk/infrastructure/framework-src/modules/stringutils.js b/infrastructure/framework-src/modules/stringutils.js
index 3fe5611..3fe5611 100644
--- a/trunk/infrastructure/framework-src/modules/stringutils.js
+++ b/infrastructure/framework-src/modules/stringutils.js
diff --git a/trunk/infrastructure/framework-src/modules/sync.js b/infrastructure/framework-src/modules/sync.js
index a222ea0..a222ea0 100644
--- a/trunk/infrastructure/framework-src/modules/sync.js
+++ b/infrastructure/framework-src/modules/sync.js
diff --git a/trunk/infrastructure/framework-src/modules/timer.js b/infrastructure/framework-src/modules/timer.js
index 01be175..01be175 100644
--- a/trunk/infrastructure/framework-src/modules/timer.js
+++ b/infrastructure/framework-src/modules/timer.js
diff --git a/trunk/infrastructure/framework-src/modules/varz.js b/infrastructure/framework-src/modules/varz.js
index 0e55d20..0e55d20 100644
--- a/trunk/infrastructure/framework-src/modules/varz.js
+++ b/infrastructure/framework-src/modules/varz.js
diff --git a/trunk/infrastructure/framework-src/modules/yuicompressor.js b/infrastructure/framework-src/modules/yuicompressor.js
index 572cc0d..572cc0d 100644
--- a/trunk/infrastructure/framework-src/modules/yuicompressor.js
+++ b/infrastructure/framework-src/modules/yuicompressor.js
diff --git a/trunk/infrastructure/framework-src/oncomet.js b/infrastructure/framework-src/oncomet.js
index b6aeda5..b6aeda5 100644
--- a/trunk/infrastructure/framework-src/oncomet.js
+++ b/infrastructure/framework-src/oncomet.js
diff --git a/trunk/infrastructure/framework-src/onerror.js b/infrastructure/framework-src/onerror.js
index f19a85f..f19a85f 100644
--- a/trunk/infrastructure/framework-src/onerror.js
+++ b/infrastructure/framework-src/onerror.js
diff --git a/trunk/infrastructure/framework-src/onprint.js b/infrastructure/framework-src/onprint.js
index 8e334fe..8e334fe 100644
--- a/trunk/infrastructure/framework-src/onprint.js
+++ b/infrastructure/framework-src/onprint.js
diff --git a/trunk/infrastructure/framework-src/onrequest.js b/infrastructure/framework-src/onrequest.js
index d76c8db..d76c8db 100644
--- a/trunk/infrastructure/framework-src/onrequest.js
+++ b/infrastructure/framework-src/onrequest.js
diff --git a/trunk/infrastructure/framework-src/onreset.js b/infrastructure/framework-src/onreset.js
index 24b000a..24b000a 100644
--- a/trunk/infrastructure/framework-src/onreset.js
+++ b/infrastructure/framework-src/onreset.js
diff --git a/trunk/infrastructure/framework-src/onsars.js b/infrastructure/framework-src/onsars.js
index 31dc8ca..31dc8ca 100644
--- a/trunk/infrastructure/framework-src/onsars.js
+++ b/infrastructure/framework-src/onsars.js
diff --git a/trunk/infrastructure/framework-src/onscheduledtask.js b/infrastructure/framework-src/onscheduledtask.js
index 810c3b5..810c3b5 100644
--- a/trunk/infrastructure/framework-src/onscheduledtask.js
+++ b/infrastructure/framework-src/onscheduledtask.js
diff --git a/trunk/infrastructure/framework-src/onshutdown.js b/infrastructure/framework-src/onshutdown.js
index 0243bf6..0243bf6 100644
--- a/trunk/infrastructure/framework-src/onshutdown.js
+++ b/infrastructure/framework-src/onshutdown.js
diff --git a/trunk/infrastructure/framework-src/onstartup.js b/infrastructure/framework-src/onstartup.js
index 61feff7..61feff7 100644
--- a/trunk/infrastructure/framework-src/onstartup.js
+++ b/infrastructure/framework-src/onstartup.js
diff --git a/trunk/infrastructure/framework-src/onsyntaxerror.js b/infrastructure/framework-src/onsyntaxerror.js
index 7129a16..7129a16 100644
--- a/trunk/infrastructure/framework-src/onsyntaxerror.js
+++ b/infrastructure/framework-src/onsyntaxerror.js
diff --git a/trunk/infrastructure/framework-src/postamble.js b/infrastructure/framework-src/postamble.js
index 76fa766..76fa766 100644
--- a/trunk/infrastructure/framework-src/postamble.js
+++ b/infrastructure/framework-src/postamble.js
diff --git a/trunk/infrastructure/framework-src/preamble.js b/infrastructure/framework-src/preamble.js
index 40f6845..40f6845 100644
--- a/trunk/infrastructure/framework-src/preamble.js
+++ b/infrastructure/framework-src/preamble.js
diff --git a/trunk/infrastructure/framework-src/syntaxerror.js b/infrastructure/framework-src/syntaxerror.js
index 801066b..801066b 100644
--- a/trunk/infrastructure/framework-src/syntaxerror.js
+++ b/infrastructure/framework-src/syntaxerror.js
diff --git a/trunk/infrastructure/lib/activation.jar b/infrastructure/lib/activation.jar
index 29a59a9..29a59a9 100644
--- a/trunk/infrastructure/lib/activation.jar
+++ b/infrastructure/lib/activation.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/c3p0-0.9.1.2.jar b/infrastructure/lib/c3p0-0.9.1.2.jar
index 0f42d60..0f42d60 100644
--- a/trunk/infrastructure/lib/c3p0-0.9.1.2.jar
+++ b/infrastructure/lib/c3p0-0.9.1.2.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/commons-lang-2.4.jar b/infrastructure/lib/commons-lang-2.4.jar
index 532939e..532939e 100644
--- a/trunk/infrastructure/lib/commons-lang-2.4.jar
+++ b/infrastructure/lib/commons-lang-2.4.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/derby-10.5.1.1.jar b/infrastructure/lib/derby-10.5.1.1.jar
index 2820dbd..2820dbd 100644
--- a/trunk/infrastructure/lib/derby-10.5.1.1.jar
+++ b/infrastructure/lib/derby-10.5.1.1.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/derbytools.jar b/infrastructure/lib/derbytools.jar
index 4aa76e1..4aa76e1 100644
--- a/trunk/infrastructure/lib/derbytools.jar
+++ b/infrastructure/lib/derbytools.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/dnsjava-2.0.6.jar b/infrastructure/lib/dnsjava-2.0.6.jar
index e41f9b0..e41f9b0 100644
--- a/trunk/infrastructure/lib/dnsjava-2.0.6.jar
+++ b/infrastructure/lib/dnsjava-2.0.6.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/jetty-6.1.20.jar b/infrastructure/lib/jetty-6.1.20.jar
index 8f45db9..8f45db9 100644
--- a/trunk/infrastructure/lib/jetty-6.1.20.jar
+++ b/infrastructure/lib/jetty-6.1.20.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/jetty-sslengine-6.1.20.jar b/infrastructure/lib/jetty-sslengine-6.1.20.jar
index 6f7d232..6f7d232 100644
--- a/trunk/infrastructure/lib/jetty-sslengine-6.1.20.jar
+++ b/infrastructure/lib/jetty-sslengine-6.1.20.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/jetty-util-6.1.20.jar b/infrastructure/lib/jetty-util-6.1.20.jar
index 96c0979..96c0979 100644
--- a/trunk/infrastructure/lib/jetty-util-6.1.20.jar
+++ b/infrastructure/lib/jetty-util-6.1.20.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/json.jar b/infrastructure/lib/json.jar
index 5ab955c..5ab955c 100644
--- a/trunk/infrastructure/lib/json.jar
+++ b/infrastructure/lib/json.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/mail.jar b/infrastructure/lib/mail.jar
index e6f7083..e6f7083 100644
--- a/trunk/infrastructure/lib/mail.jar
+++ b/infrastructure/lib/mail.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/manifest b/infrastructure/lib/manifest
index b91a5a7..b91a5a7 100644
--- a/trunk/infrastructure/lib/manifest
+++ b/infrastructure/lib/manifest
diff --git a/trunk/infrastructure/lib/rhino-js-1.7r1.jar b/infrastructure/lib/rhino-js-1.7r1.jar
index 79f8529..79f8529 100644
--- a/trunk/infrastructure/lib/rhino-js-1.7r1.jar
+++ b/infrastructure/lib/rhino-js-1.7r1.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/sanselan-0.94aj.jar b/infrastructure/lib/sanselan-0.94aj.jar
index 0fd8c96..0fd8c96 100644
--- a/trunk/infrastructure/lib/sanselan-0.94aj.jar
+++ b/infrastructure/lib/sanselan-0.94aj.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/servlet-api-2.5-20081211.jar b/infrastructure/lib/servlet-api-2.5-20081211.jar
index f1bfa12..f1bfa12 100644
--- a/trunk/infrastructure/lib/servlet-api-2.5-20081211.jar
+++ b/infrastructure/lib/servlet-api-2.5-20081211.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/tagsoup-1.2.jar b/infrastructure/lib/tagsoup-1.2.jar
index af27803..af27803 100644
--- a/trunk/infrastructure/lib/tagsoup-1.2.jar
+++ b/infrastructure/lib/tagsoup-1.2.jar
Binary files differ
diff --git a/trunk/infrastructure/lib/yuicompressor-2.4-appjet.jar b/infrastructure/lib/yuicompressor-2.4-appjet.jar
index b5bdfc1..b5bdfc1 100644
--- a/trunk/infrastructure/lib/yuicompressor-2.4-appjet.jar
+++ b/infrastructure/lib/yuicompressor-2.4-appjet.jar
Binary files differ
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala b/infrastructure/net.appjet.ajstdlib/ajstdlib.scala
index 8d285af..8d285af 100644
--- a/trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala
+++ b/infrastructure/net.appjet.ajstdlib/ajstdlib.scala
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala b/infrastructure/net.appjet.ajstdlib/sqlbase.scala
index 047c086..047c086 100644
--- a/trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala
+++ b/infrastructure/net.appjet.ajstdlib/sqlbase.scala
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js b/infrastructure/net.appjet.ajstdlib/streaming-client.js
index 3bfa227..3bfa227 100644
--- a/trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js
+++ b/infrastructure/net.appjet.ajstdlib/streaming-client.js
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html b/infrastructure/net.appjet.ajstdlib/streaming-iframe.html
index 3bdb5c4..3bdb5c4 100644
--- a/trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html
+++ b/infrastructure/net.appjet.ajstdlib/streaming-iframe.html
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/streaming.scala b/infrastructure/net.appjet.ajstdlib/streaming.scala
index fbff137..fbff137 100644
--- a/trunk/infrastructure/net.appjet.ajstdlib/streaming.scala
+++ b/infrastructure/net.appjet.ajstdlib/streaming.scala
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/timer.scala b/infrastructure/net.appjet.ajstdlib/timer.scala
index dac8fb6..dac8fb6 100644
--- a/trunk/infrastructure/net.appjet.ajstdlib/timer.scala
+++ b/infrastructure/net.appjet.ajstdlib/timer.scala
diff --git a/trunk/infrastructure/net.appjet.bodylock/bodylock.scala b/infrastructure/net.appjet.bodylock/bodylock.scala
index e24d55c..e24d55c 100644
--- a/trunk/infrastructure/net.appjet.bodylock/bodylock.scala
+++ b/infrastructure/net.appjet.bodylock/bodylock.scala
diff --git a/trunk/infrastructure/net.appjet.bodylock/compressor.scala b/infrastructure/net.appjet.bodylock/compressor.scala
index 5041787..5041787 100644
--- a/trunk/infrastructure/net.appjet.bodylock/compressor.scala
+++ b/infrastructure/net.appjet.bodylock/compressor.scala
diff --git a/trunk/infrastructure/net.appjet.common.cli/cli.scala b/infrastructure/net.appjet.common.cli/cli.scala
index ef9223f..ef9223f 100644
--- a/trunk/infrastructure/net.appjet.common.cli/cli.scala
+++ b/infrastructure/net.appjet.common.cli/cli.scala
diff --git a/trunk/infrastructure/net.appjet.common.sars/sars.scala b/infrastructure/net.appjet.common.sars/sars.scala
index f91b292..f91b292 100644
--- a/trunk/infrastructure/net.appjet.common.sars/sars.scala
+++ b/infrastructure/net.appjet.common.sars/sars.scala
diff --git a/trunk/infrastructure/net.appjet.common.sars/sha1.scala b/infrastructure/net.appjet.common.sars/sha1.scala
index 8f9e69e..8f9e69e 100644
--- a/trunk/infrastructure/net.appjet.common.sars/sha1.scala
+++ b/infrastructure/net.appjet.common.sars/sha1.scala
diff --git a/trunk/infrastructure/net.appjet.common/rhino/rhinospect.scala b/infrastructure/net.appjet.common/rhino/rhinospect.scala
index 65f278c..65f278c 100644
--- a/trunk/infrastructure/net.appjet.common/rhino/rhinospect.scala
+++ b/infrastructure/net.appjet.common/rhino/rhinospect.scala
diff --git a/trunk/infrastructure/net.appjet.common/util/BCrypt.java b/infrastructure/net.appjet.common/util/BCrypt.java
index 818c261..818c261 100644
--- a/trunk/infrastructure/net.appjet.common/util/BCrypt.java
+++ b/infrastructure/net.appjet.common/util/BCrypt.java
diff --git a/trunk/infrastructure/net.appjet.common/util/BetterFile.java b/infrastructure/net.appjet.common/util/BetterFile.java
index c674810..c674810 100644
--- a/trunk/infrastructure/net.appjet.common/util/BetterFile.java
+++ b/infrastructure/net.appjet.common/util/BetterFile.java
diff --git a/trunk/infrastructure/net.appjet.common/util/ClassReload.java b/infrastructure/net.appjet.common/util/ClassReload.java
index 3fbc480..3fbc480 100644
--- a/trunk/infrastructure/net.appjet.common/util/ClassReload.java
+++ b/infrastructure/net.appjet.common/util/ClassReload.java
diff --git a/trunk/infrastructure/net.appjet.common/util/ExpiringMapping.java b/infrastructure/net.appjet.common/util/ExpiringMapping.java
index d4b9d5a..d4b9d5a 100644
--- a/trunk/infrastructure/net.appjet.common/util/ExpiringMapping.java
+++ b/infrastructure/net.appjet.common/util/ExpiringMapping.java
diff --git a/trunk/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java b/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java
index 4d7826a..4d7826a 100644
--- a/trunk/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java
+++ b/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java
diff --git a/trunk/infrastructure/net.appjet.common/util/LenientFormatter.java b/infrastructure/net.appjet.common/util/LenientFormatter.java
index 293dcdf..293dcdf 100644
--- a/trunk/infrastructure/net.appjet.common/util/LenientFormatter.java
+++ b/infrastructure/net.appjet.common/util/LenientFormatter.java
diff --git a/trunk/infrastructure/net.appjet.common/util/LimitedSizeMapping.java b/infrastructure/net.appjet.common/util/LimitedSizeMapping.java
index 331baca..331baca 100644
--- a/trunk/infrastructure/net.appjet.common/util/LimitedSizeMapping.java
+++ b/infrastructure/net.appjet.common/util/LimitedSizeMapping.java
diff --git a/trunk/infrastructure/net.appjet.oui/ConfigParam.java b/infrastructure/net.appjet.oui/ConfigParam.java
index 5029f28..5029f28 100644
--- a/trunk/infrastructure/net.appjet.oui/ConfigParam.java
+++ b/infrastructure/net.appjet.oui/ConfigParam.java
diff --git a/trunk/infrastructure/net.appjet.oui/FastJSON.scala b/infrastructure/net.appjet.oui/FastJSON.scala
index 60cfc48..60cfc48 100644
--- a/trunk/infrastructure/net.appjet.oui/FastJSON.scala
+++ b/infrastructure/net.appjet.oui/FastJSON.scala
diff --git a/trunk/infrastructure/net.appjet.oui/GeneratedConfigParam.java b/infrastructure/net.appjet.oui/GeneratedConfigParam.java
index 0986015..0986015 100644
--- a/trunk/infrastructure/net.appjet.oui/GeneratedConfigParam.java
+++ b/infrastructure/net.appjet.oui/GeneratedConfigParam.java
diff --git a/trunk/infrastructure/net.appjet.oui/config.scala b/infrastructure/net.appjet.oui/config.scala
index 46e73cf..46e73cf 100644
--- a/trunk/infrastructure/net.appjet.oui/config.scala
+++ b/infrastructure/net.appjet.oui/config.scala
diff --git a/trunk/infrastructure/net.appjet.oui/dynamicvar.scala b/infrastructure/net.appjet.oui/dynamicvar.scala
index b1f8c2e..b1f8c2e 100644
--- a/trunk/infrastructure/net.appjet.oui/dynamicvar.scala
+++ b/infrastructure/net.appjet.oui/dynamicvar.scala
diff --git a/trunk/infrastructure/net.appjet.oui/encryption.scala b/infrastructure/net.appjet.oui/encryption.scala
index 92d463b..92d463b 100644
--- a/trunk/infrastructure/net.appjet.oui/encryption.scala
+++ b/infrastructure/net.appjet.oui/encryption.scala
diff --git a/trunk/infrastructure/net.appjet.oui/execution.scala b/infrastructure/net.appjet.oui/execution.scala
index 63749b1..63749b1 100644
--- a/trunk/infrastructure/net.appjet.oui/execution.scala
+++ b/infrastructure/net.appjet.oui/execution.scala
diff --git a/trunk/infrastructure/net.appjet.oui/files.scala b/infrastructure/net.appjet.oui/files.scala
index 3df5c1c..3df5c1c 100644
--- a/trunk/infrastructure/net.appjet.oui/files.scala
+++ b/infrastructure/net.appjet.oui/files.scala
diff --git a/trunk/infrastructure/net.appjet.oui/logging.scala b/infrastructure/net.appjet.oui/logging.scala
index 9c384d2..9c384d2 100644
--- a/trunk/infrastructure/net.appjet.oui/logging.scala
+++ b/infrastructure/net.appjet.oui/logging.scala
diff --git a/trunk/infrastructure/net.appjet.oui/main.scala b/infrastructure/net.appjet.oui/main.scala
index 42cd268..42cd268 100644
--- a/trunk/infrastructure/net.appjet.oui/main.scala
+++ b/infrastructure/net.appjet.oui/main.scala
diff --git a/trunk/infrastructure/net.appjet.oui/monitoring.scala b/infrastructure/net.appjet.oui/monitoring.scala
index e380b84..e380b84 100644
--- a/trunk/infrastructure/net.appjet.oui/monitoring.scala
+++ b/infrastructure/net.appjet.oui/monitoring.scala
diff --git a/trunk/infrastructure/net.appjet.oui/network.scala b/infrastructure/net.appjet.oui/network.scala
index 2965b19..2965b19 100644
--- a/trunk/infrastructure/net.appjet.oui/network.scala
+++ b/infrastructure/net.appjet.oui/network.scala
diff --git a/trunk/infrastructure/net.appjet.oui/servermodel.scala b/infrastructure/net.appjet.oui/servermodel.scala
index 1e2363f..1e2363f 100644
--- a/trunk/infrastructure/net.appjet.oui/servermodel.scala
+++ b/infrastructure/net.appjet.oui/servermodel.scala
diff --git a/trunk/infrastructure/net.appjet.oui/stats.scala b/infrastructure/net.appjet.oui/stats.scala
index 075182f..075182f 100644
--- a/trunk/infrastructure/net.appjet.oui/stats.scala
+++ b/infrastructure/net.appjet.oui/stats.scala
diff --git a/trunk/infrastructure/net.appjet.oui/synchronizer.scala b/infrastructure/net.appjet.oui/synchronizer.scala
index 2a6d9c1..2a6d9c1 100644
--- a/trunk/infrastructure/net.appjet.oui/synchronizer.scala
+++ b/infrastructure/net.appjet.oui/synchronizer.scala
diff --git a/trunk/infrastructure/net.appjet.oui/util.scala b/infrastructure/net.appjet.oui/util.scala
index ba8a736..ba8a736 100644
--- a/trunk/infrastructure/net.appjet.oui/util.scala
+++ b/infrastructure/net.appjet.oui/util.scala
diff --git a/trunk/infrastructure/rhino1_7R1/apiClasses.properties b/infrastructure/rhino1_7R1/apiClasses.properties
index d116ee4..d116ee4 100644
--- a/trunk/infrastructure/rhino1_7R1/apiClasses.properties
+++ b/infrastructure/rhino1_7R1/apiClasses.properties
diff --git a/trunk/infrastructure/rhino1_7R1/build-date b/infrastructure/rhino1_7R1/build-date
index e6132e5..e6132e5 100644
--- a/trunk/infrastructure/rhino1_7R1/build-date
+++ b/infrastructure/rhino1_7R1/build-date
diff --git a/trunk/infrastructure/rhino1_7R1/build.properties b/infrastructure/rhino1_7R1/build.properties
index 4477ee0..4477ee0 100644
--- a/trunk/infrastructure/rhino1_7R1/build.properties
+++ b/infrastructure/rhino1_7R1/build.properties
diff --git a/trunk/infrastructure/rhino1_7R1/build.xml b/infrastructure/rhino1_7R1/build.xml
index fabbffa..fabbffa 100644
--- a/trunk/infrastructure/rhino1_7R1/build.xml
+++ b/infrastructure/rhino1_7R1/build.xml
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/build.xml b/infrastructure/rhino1_7R1/deprecatedsrc/build.xml
index 4250fcf..4250fcf 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/build.xml
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/build.xml
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java
index 2197063..2197063 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java
index 3de53a8..3de53a8 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java
index 8d786c7..8d786c7 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java
index b525aff..b525aff 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java
index 3a16320..3a16320 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java
index fc99c7e..fc99c7e 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java
index 247da19..247da19 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java
index c8818a5..c8818a5 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java
index 987c8ed..987c8ed 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java
index 90da7d4..90da7d4 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java
index b66ec96..b66ec96 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java
index 8ff972e..8ff972e 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java
index a6d47d5..a6d47d5 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java
diff --git a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java
index 67a778d..67a778d 100644
--- a/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java
+++ b/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/Control.java b/infrastructure/rhino1_7R1/examples/Control.java
index d671181..d671181 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/Control.java
+++ b/infrastructure/rhino1_7R1/examples/Control.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/Counter.java b/infrastructure/rhino1_7R1/examples/Counter.java
index 14c179a..14c179a 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/Counter.java
+++ b/infrastructure/rhino1_7R1/examples/Counter.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/CounterTest.java b/infrastructure/rhino1_7R1/examples/CounterTest.java
index 63dc74b..63dc74b 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/CounterTest.java
+++ b/infrastructure/rhino1_7R1/examples/CounterTest.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/DynamicScopes.java b/infrastructure/rhino1_7R1/examples/DynamicScopes.java
index 10d53ac..10d53ac 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/DynamicScopes.java
+++ b/infrastructure/rhino1_7R1/examples/DynamicScopes.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js b/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js
index 7417404..7417404 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js
+++ b/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js
diff --git a/trunk/infrastructure/rhino1_7R1/examples/File.java b/infrastructure/rhino1_7R1/examples/File.java
index 62bd980..62bd980 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/File.java
+++ b/infrastructure/rhino1_7R1/examples/File.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/Foo.java b/infrastructure/rhino1_7R1/examples/Foo.java
index bca1b79..bca1b79 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/Foo.java
+++ b/infrastructure/rhino1_7R1/examples/Foo.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/Matrix.java b/infrastructure/rhino1_7R1/examples/Matrix.java
index 87e4b8a..87e4b8a 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/Matrix.java
+++ b/infrastructure/rhino1_7R1/examples/Matrix.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/NervousText.html b/infrastructure/rhino1_7R1/examples/NervousText.html
index 0e3c7dd..0e3c7dd 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/NervousText.html
+++ b/infrastructure/rhino1_7R1/examples/NervousText.html
diff --git a/trunk/infrastructure/rhino1_7R1/examples/NervousText.js b/infrastructure/rhino1_7R1/examples/NervousText.js
index a2f82fe..a2f82fe 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/NervousText.js
+++ b/infrastructure/rhino1_7R1/examples/NervousText.js
diff --git a/trunk/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java b/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java
index 4157a11..4157a11 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java
+++ b/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/RunScript.java b/infrastructure/rhino1_7R1/examples/RunScript.java
index 758ac64..758ac64 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/RunScript.java
+++ b/infrastructure/rhino1_7R1/examples/RunScript.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/RunScript2.java b/infrastructure/rhino1_7R1/examples/RunScript2.java
index cb02896..cb02896 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/RunScript2.java
+++ b/infrastructure/rhino1_7R1/examples/RunScript2.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/RunScript3.java b/infrastructure/rhino1_7R1/examples/RunScript3.java
index 7baeba8..7baeba8 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/RunScript3.java
+++ b/infrastructure/rhino1_7R1/examples/RunScript3.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/RunScript4.java b/infrastructure/rhino1_7R1/examples/RunScript4.java
index bd3d6f4..bd3d6f4 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/RunScript4.java
+++ b/infrastructure/rhino1_7R1/examples/RunScript4.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/Shell.java b/infrastructure/rhino1_7R1/examples/Shell.java
index 6316c6f..6316c6f 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/Shell.java
+++ b/infrastructure/rhino1_7R1/examples/Shell.java
diff --git a/trunk/infrastructure/rhino1_7R1/examples/SwingApplication.js b/infrastructure/rhino1_7R1/examples/SwingApplication.js
index a527aad..a527aad 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/SwingApplication.js
+++ b/infrastructure/rhino1_7R1/examples/SwingApplication.js
diff --git a/trunk/infrastructure/rhino1_7R1/examples/checkParam.js b/infrastructure/rhino1_7R1/examples/checkParam.js
index 51910d5..51910d5 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/checkParam.js
+++ b/infrastructure/rhino1_7R1/examples/checkParam.js
diff --git a/trunk/infrastructure/rhino1_7R1/examples/enum.js b/infrastructure/rhino1_7R1/examples/enum.js
index 02034bc..02034bc 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/enum.js
+++ b/infrastructure/rhino1_7R1/examples/enum.js
diff --git a/trunk/infrastructure/rhino1_7R1/examples/jsdoc.js b/infrastructure/rhino1_7R1/examples/jsdoc.js
index 3d44e48..3d44e48 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/jsdoc.js
+++ b/infrastructure/rhino1_7R1/examples/jsdoc.js
diff --git a/trunk/infrastructure/rhino1_7R1/examples/liveConnect.js b/infrastructure/rhino1_7R1/examples/liveConnect.js
index 7befc08..7befc08 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/liveConnect.js
+++ b/infrastructure/rhino1_7R1/examples/liveConnect.js
diff --git a/trunk/infrastructure/rhino1_7R1/examples/unique.js b/infrastructure/rhino1_7R1/examples/unique.js
index a4274bb..a4274bb 100644
--- a/trunk/infrastructure/rhino1_7R1/examples/unique.js
+++ b/infrastructure/rhino1_7R1/examples/unique.js
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html b/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html
index 073b251..073b251 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html
+++ b/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html b/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html
index 48536b4..48536b4 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html
+++ b/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/constant-values.html b/infrastructure/rhino1_7R1/javadoc/constant-values.html
index b29b7ba..b29b7ba 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/constant-values.html
+++ b/infrastructure/rhino1_7R1/javadoc/constant-values.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/deprecated-list.html b/infrastructure/rhino1_7R1/javadoc/deprecated-list.html
index 923cc54..923cc54 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/deprecated-list.html
+++ b/infrastructure/rhino1_7R1/javadoc/deprecated-list.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/help-doc.html b/infrastructure/rhino1_7R1/javadoc/help-doc.html
index 7a2e353..7a2e353 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/help-doc.html
+++ b/infrastructure/rhino1_7R1/javadoc/help-doc.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/index-all.html b/infrastructure/rhino1_7R1/javadoc/index-all.html
index 15ba433..15ba433 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/index-all.html
+++ b/infrastructure/rhino1_7R1/javadoc/index-all.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/index.html b/infrastructure/rhino1_7R1/javadoc/index.html
index fa48043..fa48043 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/index.html
+++ b/infrastructure/rhino1_7R1/javadoc/index.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html
index 07c38c5..07c38c5 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html
index 8d8b3ef..8d8b3ef 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html
index 924cfb5..924cfb5 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html
index 8b5e109..8b5e109 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html
index 64fb637..64fb637 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html
index 8e7116c..8e7116c 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html
index 6290c8c..6290c8c 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html
index ef61a6f..ef61a6f 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html
index 71c774f..71c774f 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html
index a559d25..a559d25 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html
index 6f06bb5..6f06bb5 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html
index 55712dc..55712dc 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html
index 4e9d011..4e9d011 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html
index 2d998ac..2d998ac 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html
index 78dd7a7..78dd7a7 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html
index 6dafa13..6dafa13 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html
index 910d0fd..910d0fd 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html
index 4ad3d0f..4ad3d0f 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html
index 65f250f..65f250f 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html
index 14ab7aa..14ab7aa 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html
index fce83d6..fce83d6 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html
index 92c5c44..92c5c44 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html
index 05b8fb4..05b8fb4 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html
index 675c456..675c456 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html
index 1109997..1109997 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html
index 0d05fdc..0d05fdc 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html
index 1159738..1159738 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html
index 28878a0..28878a0 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html
index 1a50d7f..1a50d7f 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html
index d32bdf5..d32bdf5 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html
index bdce431..bdce431 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html
index 1dc284b..1dc284b 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html
index 8b86a40..8b86a40 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html
index 55e23d0..55e23d0 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html
index f40351c..f40351c 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html
index c15d3c1..c15d3c1 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html
index 030f3e0..030f3e0 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html
index f0d178f..f0d178f 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html
index fb6d1ba..fb6d1ba 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html
index 39d85e2..39d85e2 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html
index 568f562..568f562 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html
index e672261..e672261 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html
+++ b/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/overview-frame.html b/infrastructure/rhino1_7R1/javadoc/overview-frame.html
index 10e9be0..10e9be0 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/overview-frame.html
+++ b/infrastructure/rhino1_7R1/javadoc/overview-frame.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/overview-summary.html b/infrastructure/rhino1_7R1/javadoc/overview-summary.html
index 043bb30..043bb30 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/overview-summary.html
+++ b/infrastructure/rhino1_7R1/javadoc/overview-summary.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/overview-tree.html b/infrastructure/rhino1_7R1/javadoc/overview-tree.html
index 9c5398c..9c5398c 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/overview-tree.html
+++ b/infrastructure/rhino1_7R1/javadoc/overview-tree.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/package-list b/infrastructure/rhino1_7R1/javadoc/package-list
index 62fc06b..62fc06b 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/package-list
+++ b/infrastructure/rhino1_7R1/javadoc/package-list
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif b/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif
index c814867..c814867 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif
+++ b/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif
Binary files differ
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/serialized-form.html b/infrastructure/rhino1_7R1/javadoc/serialized-form.html
index c022624..c022624 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/serialized-form.html
+++ b/infrastructure/rhino1_7R1/javadoc/serialized-form.html
diff --git a/trunk/infrastructure/rhino1_7R1/javadoc/stylesheet.css b/infrastructure/rhino1_7R1/javadoc/stylesheet.css
index 6ea9e51..6ea9e51 100644
--- a/trunk/infrastructure/rhino1_7R1/javadoc/stylesheet.css
+++ b/infrastructure/rhino1_7R1/javadoc/stylesheet.css
diff --git a/trunk/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar b/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar
index fef9a9c..fef9a9c 100644
--- a/trunk/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar
+++ b/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar
Binary files differ
diff --git a/trunk/infrastructure/rhino1_7R1/lib/xbean.jar b/infrastructure/rhino1_7R1/lib/xbean.jar
index 8a4dff4..8a4dff4 100644
--- a/trunk/infrastructure/rhino1_7R1/lib/xbean.jar
+++ b/infrastructure/rhino1_7R1/lib/xbean.jar
Binary files differ
diff --git a/trunk/infrastructure/rhino1_7R1/src/build.xml b/infrastructure/rhino1_7R1/src/build.xml
index a0a1e13..a0a1e13 100644
--- a/trunk/infrastructure/rhino1_7R1/src/build.xml
+++ b/infrastructure/rhino1_7R1/src/build.xml
diff --git a/trunk/infrastructure/rhino1_7R1/src/manifest b/infrastructure/rhino1_7R1/src/manifest
index b7d0c06..b7d0c06 100644
--- a/trunk/infrastructure/rhino1_7R1/src/manifest
+++ b/infrastructure/rhino1_7R1/src/manifest
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java b/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java
index fa4713e..fa4713e 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java b/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java
index b9c6c96..b9c6c96 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java
index 954b078..954b078 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java
index d7d8992..d7d8992 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java
index 03e0fce..03e0fce 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java
index 9047278..9047278 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java
index d5f4cd6..d5f4cd6 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java
index 645d098..645d098 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java
index 860db79..860db79 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java
index 0833883..0833883 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java
index 1c584a9..1c584a9 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java
index 4f9fde2..4f9fde2 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java
index 5e17145..5e17145 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java
index ad2a68a..ad2a68a 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java
index 8547d37..8547d37 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java
index c7d93d4..c7d93d4 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java
index 5864b5d..5864b5d 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java
index e044863..e044863 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java
index 1fd8f03..1fd8f03 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java
index 4649370..4649370 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java
index e222af3..e222af3 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java
index 7b4e7cc..7b4e7cc 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java
index a4377e6..a4377e6 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java
index 484167e..484167e 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java
index 8fa4e68..8fa4e68 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java
index 0f73615..0f73615 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java
index 1f51cb1..1f51cb1 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java
index 713fabf..713fabf 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java
index c578dfa..c578dfa 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java
index 2b3ecf3..2b3ecf3 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java
index 294deab..294deab 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java
index c73db34..c73db34 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java
index 877e6a2..877e6a2 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java
index db84299..db84299 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java
index a68c025..a68c025 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java
index 7435b10..7435b10 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java
index 6e0a827..6e0a827 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java
index 84ef2d4..84ef2d4 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java
index 11ebedf..11ebedf 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java
index f7b4cad..f7b4cad 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java
index 4153372..4153372 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java
index 2d3553f..2d3553f 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java
index b170ff4..b170ff4 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java
index b6a106a..b6a106a 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java
index b196ac3..b196ac3 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java
index 75d41ab..75d41ab 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java
index 4aff10c..4aff10c 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java
index ac70556..ac70556 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java
index 0a8da9f..0a8da9f 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java
index 58faad4..58faad4 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java
index c61f417..c61f417 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java
index 2f711a0..2f711a0 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java
index ab8af5c..ab8af5c 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java
index 530bf81..530bf81 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java
index eb66f40..eb66f40 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java
index 3d27852..3d27852 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java
index 71f09f7..71f09f7 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java
index b5c9b49..b5c9b49 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java
index 36b66b4..36b66b4 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java
index 8fc9fb0..8fc9fb0 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java
index 19aff63..19aff63 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java
index 7b5191e..7b5191e 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java
index 972415d..972415d 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java
index 83683b2..83683b2 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java
index 4298388..4298388 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java
index 201c6f2..201c6f2 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java
index a9636a3..a9636a3 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java
index 4aa7d23..4aa7d23 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java
index 80cb937..80cb937 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java
index c4d3d7e..c4d3d7e 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java
index 1e237bc..1e237bc 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java
index 6d4b61c..6d4b61c 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java
index ac29c6e..ac29c6e 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java
index b7f4a4d..b7f4a4d 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java
index 4721ead..4721ead 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java
index 9ea6d1f..9ea6d1f 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java
index f879581..f879581 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java
index 74e5ba7..74e5ba7 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java
index 53de1fc..53de1fc 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java
index bc8ed86..bc8ed86 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java
index ed85dbf..ed85dbf 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java
index 275ad92..275ad92 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java
index b037eaf..b037eaf 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java
index f2fca52..f2fca52 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java
index be96487..be96487 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java
index c8c3045..c8c3045 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java
index 0027819..0027819 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java
index 472f26c..472f26c 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java
index 33f96eb..33f96eb 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java
index 5fba4a5..5fba4a5 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java
index 3edc203..3edc203 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java
index c749f74..c749f74 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java
index cb2d2f5..cb2d2f5 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java
index c6d3966..c6d3966 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java
index ef15710..ef15710 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java
index 23e7421..23e7421 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java
index 705e442..705e442 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java
index bfac153..bfac153 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java
index f5d1522..f5d1522 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java
index c33e9b4..c33e9b4 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java
index 0ffaf9d..0ffaf9d 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java
index bd56714..bd56714 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java
index 4a69c6a..4a69c6a 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java
index 64952bf..64952bf 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java
index 607e649..607e649 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java
index e043165..e043165 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java
index ba8ca03..ba8ca03 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java
index 7cf679f..7cf679f 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java
index 575c7e7..575c7e7 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java
index a893841..a893841 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java
index 808d62d..808d62d 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java
index 4b0a303..4b0a303 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java
index 00905ca..00905ca 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties
index fd869c1..fd869c1 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties
index fc87c97..fc87c97 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java
index 476ff69..476ff69 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java
index 5ba0d74..5ba0d74 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java
index da57ddf..da57ddf 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java
diff --git a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java
index 5033564..5033564 100644
--- a/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java
+++ b/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/base.skip b/infrastructure/rhino1_7R1/testsrc/base.skip
index 35d6c54..35d6c54 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/base.skip
+++ b/infrastructure/rhino1_7R1/testsrc/base.skip
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/build.xml b/infrastructure/rhino1_7R1/testsrc/build.xml
index bc05516..bc05516 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/build.xml
+++ b/infrastructure/rhino1_7R1/testsrc/build.xml
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/opt1.skip b/infrastructure/rhino1_7R1/testsrc/opt1.skip
index 7006882..7006882 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/opt1.skip
+++ b/infrastructure/rhino1_7R1/testsrc/opt1.skip
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java
index 8bae79f..8bae79f 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java
+++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java
index 9acf64e..9acf64e 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java
+++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java
index 9c05df6..9c05df6 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java
+++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html
index 36bd729..36bd729 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html
+++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java
index e9793cb..e9793cb 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java
+++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java
index b6cf3ca..b6cf3ca 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java
+++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java
diff --git a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java
index 08f95a3..08f95a3 100644
--- a/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java
+++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/build.xml b/infrastructure/rhino1_7R1/toolsrc/build.xml
index be9a9b7..be9a9b7 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/build.xml
+++ b/infrastructure/rhino1_7R1/toolsrc/build.xml
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java
index 938f5f2..938f5f2 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java
index de8fcde..de8fcde 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java
index f9762ec..f9762ec 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java
index 3f90915..3f90915 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java
index d8f65b9..d8f65b9 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java
index 61dc065..61dc065 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml
index c35fd40..c35fd40 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java
index dd4f689..dd4f689 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java
index 60bdfb4..60bdfb4 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java
index 69d5065..69d5065 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java
index ae1d038..ae1d038 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java
index 3db99d6..3db99d6 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java
index 2da4f2f..2da4f2f 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties
index 76615e9..76615e9 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java
index 08cac62..08cac62 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java
index 19904b9..19904b9 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java
index fdb8f4e..fdb8f4e 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java
index f6fe3a1..f6fe3a1 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java
index de39a5e..de39a5e 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java
index 9120892..9120892 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java
index dcad90e..dcad90e 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java
index 8f029ea..8f029ea 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java
diff --git a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java
index ba7e62c..ba7e62c 100644
--- a/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java
+++ b/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/build.xml b/infrastructure/rhino1_7R1/xmlimplsrc/build.xml
index 1aedece..1aedece 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/build.xml
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/build.xml
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java
index a4cf585..a4cf585 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java
index 90a18cb..90a18cb 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java
index 090ae1a..090ae1a 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java
index fac8773..fac8773 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java
index 6d45240..6d45240 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java
index 59dcca3..59dcca3 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java
index edd7525..edd7525 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java
index db918f8..db918f8 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java
index fbeb45e..fbeb45e 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java
index 06955d0..06955d0 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java
diff --git a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java
index d8ad495..d8ad495 100644
--- a/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java
+++ b/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java
diff --git a/trunk/infrastructure/yuicompressor/lib/jargs-1.0.jar b/infrastructure/yuicompressor/lib/jargs-1.0.jar
index cdbc80b..cdbc80b 100644
--- a/trunk/infrastructure/yuicompressor/lib/jargs-1.0.jar
+++ b/infrastructure/yuicompressor/lib/jargs-1.0.jar
Binary files differ
diff --git a/trunk/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar b/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar
index b99560e..b99560e 100644
--- a/trunk/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar
+++ b/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar
Binary files differ
diff --git a/trunk/infrastructure/yuicompressor/make.sh b/infrastructure/yuicompressor/make.sh
index 947aafa..947aafa 100755
--- a/trunk/infrastructure/yuicompressor/make.sh
+++ b/infrastructure/yuicompressor/make.sh
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java
index 1b95aca..1b95aca 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java
index 68b4de9..68b4de9 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java
index a6d3e13..a6d3e13 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java
index e69ae1a..e69ae1a 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java
index 8668f49..8668f49 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java
index fee21d9..fee21d9 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java
index c1a2e47..c1a2e47 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java
diff --git a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java
index dcbaff4..dcbaff4 100644
--- a/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java
+++ b/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java
index 348c568..348c568 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig
index cdb00b7..cdb00b7 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java
index bf830a8..bf830a8 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig
index 628bb42..628bb42 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java
index f082d68..f082d68 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig
index 7f7cdc2..7f7cdc2 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java
index 5bee827..5bee827 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java
diff --git a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig
index c276894..c276894 100644
--- a/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig
+++ b/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig
diff --git a/trunk/etherpad/src/etherpad/collab/ace/contentcollector.js b/trunk/etherpad/src/etherpad/collab/ace/contentcollector.js
deleted file mode 100644
index 22e552a..0000000
--- a/trunk/etherpad/src/etherpad/collab/ace/contentcollector.js
+++ /dev/null
@@ -1,509 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/contentcollector.js
-import("etherpad.collab.ace.easysync2.Changeset")
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var _MAX_LIST_LEVEL = 8;
-
-function sanitizeUnicode(s) {
- return s.replace(/[\uffff\ufffe\ufeff\ufdd0-\ufdef\ud800-\udfff]/g, '?');
-}
-
-function makeContentCollector(collectStyles, browser, apool, domInterface,
- className2Author) {
- browser = browser || {};
-
- var dom = domInterface || {
- isNodeText: function(n) {
- return (n.nodeType == 3);
- },
- nodeTagName: function(n) {
- return n.tagName;
- },
- nodeValue: function(n) {
- return n.nodeValue;
- },
- nodeNumChildren: function(n) {
- return n.childNodes.length;
- },
- nodeChild: function(n, i) {
- return n.childNodes.item(i);
- },
- nodeProp: function(n, p) {
- return n[p];
- },
- nodeAttr: function(n, a) {
- return n.getAttribute(a);
- },
- optNodeInnerHTML: function(n) {
- return n.innerHTML;
- }
- };
-
- var _blockElems = { "div":1, "p":1, "pre":1, "li":1 };
- function isBlockElement(n) {
- return !!_blockElems[(dom.nodeTagName(n) || "").toLowerCase()];
- }
- function textify(str) {
- return sanitizeUnicode(
- str.replace(/[\n\r ]/g, ' ').replace(/\xa0/g, ' ').replace(/\t/g, ' '));
- }
- function getAssoc(node, name) {
- return dom.nodeProp(node, "_magicdom_"+name);
- }
-
- var lines = (function() {
- var textArray = [];
- var attribsArray = [];
- var attribsBuilder = null;
- var op = Changeset.newOp('+');
- var self = {
- length: function() { return textArray.length; },
- atColumnZero: function() {
- return textArray[textArray.length-1] === "";
- },
- startNew: function() {
- textArray.push("");
- self.flush(true);
- attribsBuilder = Changeset.smartOpAssembler();
- },
- textOfLine: function(i) { return textArray[i]; },
- appendText: function(txt, attrString) {
- textArray[textArray.length-1] += txt;
- //dmesg(txt+" / "+attrString);
- op.attribs = attrString;
- op.chars = txt.length;
- attribsBuilder.append(op);
- },
- textLines: function() { return textArray.slice(); },
- attribLines: function() { return attribsArray; },
- // call flush only when you're done
- flush: function(withNewline) {
- if (attribsBuilder) {
- attribsArray.push(attribsBuilder.toString());
- attribsBuilder = null;
- }
- }
- };
- self.startNew();
- return self;
- }());
- var cc = {};
- function _ensureColumnZero(state) {
- if (! lines.atColumnZero()) {
- _startNewLine(state);
- }
- }
- var selection, startPoint, endPoint;
- var selStart = [-1,-1], selEnd = [-1,-1];
- var blockElems = { "div":1, "p":1, "pre":1 };
- function _isEmpty(node, state) {
- // consider clean blank lines pasted in IE to be empty
- if (dom.nodeNumChildren(node) == 0) return true;
- if (dom.nodeNumChildren(node) == 1 &&
- getAssoc(node, "shouldBeEmpty") && dom.optNodeInnerHTML(node) == "&nbsp;"
- && ! getAssoc(node, "unpasted")) {
- if (state) {
- var child = dom.nodeChild(node, 0);
- _reachPoint(child, 0, state);
- _reachPoint(child, 1, state);
- }
- return true;
- }
- return false;
- }
- function _pointHere(charsAfter, state) {
- var ln = lines.length()-1;
- var chr = lines.textOfLine(ln).length;
- if (chr == 0 && state.listType && state.listType != 'none') {
- chr += 1; // listMarker
- }
- chr += charsAfter;
- return [ln, chr];
- }
- function _reachBlockPoint(nd, idx, state) {
- if (! dom.isNodeText(nd)) _reachPoint(nd, idx, state);
- }
- function _reachPoint(nd, idx, state) {
- if (startPoint && nd == startPoint.node && startPoint.index == idx) {
- selStart = _pointHere(0, state);
- }
- if (endPoint && nd == endPoint.node && endPoint.index == idx) {
- selEnd = _pointHere(0, state);
- }
- }
- function _incrementFlag(state, flagName) {
- state.flags[flagName] = (state.flags[flagName] || 0)+1;
- }
- function _decrementFlag(state, flagName) {
- state.flags[flagName]--;
- }
- function _incrementAttrib(state, attribName) {
- if (! state.attribs[attribName]) {
- state.attribs[attribName] = 1;
- }
- else {
- state.attribs[attribName]++;
- }
- _recalcAttribString(state);
- }
- function _decrementAttrib(state, attribName) {
- state.attribs[attribName]--;
- _recalcAttribString(state);
- }
- function _enterList(state, listType) {
- var oldListType = state.listType;
- state.listLevel = (state.listLevel || 0)+1;
- if (listType != 'none') {
- state.listNesting = (state.listNesting || 0)+1;
- }
- state.listType = listType;
- _recalcAttribString(state);
- return oldListType;
- }
- function _exitList(state, oldListType) {
- state.listLevel--;
- if (state.listType != 'none') {
- state.listNesting--;
- }
- state.listType = oldListType;
- _recalcAttribString(state);
- }
- function _enterAuthor(state, author) {
- var oldAuthor = state.author;
- state.authorLevel = (state.authorLevel || 0)+1;
- state.author = author;
- _recalcAttribString(state);
- return oldAuthor;
- }
- function _exitAuthor(state, oldAuthor) {
- state.authorLevel--;
- state.author = oldAuthor;
- _recalcAttribString(state);
- }
- function _recalcAttribString(state) {
- var lst = [];
- for(var a in state.attribs) {
- if (state.attribs[a]) {
- lst.push([a,'true']);
- }
- }
- if (state.authorLevel > 0) {
- var authorAttrib = ['author', state.author];
- if (apool.putAttrib(authorAttrib, true) >= 0) {
- // require that author already be in pool
- // (don't add authors from other documents, etc.)
- lst.push(authorAttrib);
- }
- }
- state.attribString = Changeset.makeAttribsString('+', lst, apool);
- }
- function _produceListMarker(state) {
- lines.appendText('*', Changeset.makeAttribsString(
- '+', [['list', state.listType],
- ['insertorder', 'first']],
- apool));
- }
- function _startNewLine(state) {
- if (state) {
- var atBeginningOfLine = lines.textOfLine(lines.length()-1).length == 0;
- if (atBeginningOfLine && state.listType && state.listType != 'none') {
- _produceListMarker(state);
- }
- }
- lines.startNew();
- }
- cc.notifySelection = function (sel) {
- if (sel) {
- selection = sel;
- startPoint = selection.startPoint;
- endPoint = selection.endPoint;
- }
- };
- cc.collectContent = function (node, state) {
- if (! state) {
- state = {flags: {/*name -> nesting counter*/},
- attribs: {/*name -> nesting counter*/},
- attribString: ''};
- }
- var isBlock = isBlockElement(node);
- var isEmpty = _isEmpty(node, state);
- if (isBlock) _ensureColumnZero(state);
- var startLine = lines.length()-1;
- _reachBlockPoint(node, 0, state);
- if (dom.isNodeText(node)) {
- var txt = dom.nodeValue(node);
- var rest = '';
- var x = 0; // offset into original text
- if (txt.length == 0) {
- if (startPoint && node == startPoint.node) {
- selStart = _pointHere(0, state);
- }
- if (endPoint && node == endPoint.node) {
- selEnd = _pointHere(0, state);
- }
- }
- while (txt.length > 0) {
- var consumed = 0;
- if (state.flags.preMode) {
- var firstLine = txt.split('\n',1)[0];
- consumed = firstLine.length+1;
- rest = txt.substring(consumed);
- txt = firstLine;
- }
- else { /* will only run this loop body once */ }
- if (startPoint && node == startPoint.node &&
- startPoint.index-x <= txt.length) {
- selStart = _pointHere(startPoint.index-x, state);
- }
- if (endPoint && node == endPoint.node &&
- endPoint.index-x <= txt.length) {
- selEnd = _pointHere(endPoint.index-x, state);
- }
- var txt2 = txt;
- if ((! state.flags.preMode) && /^[\r\n]*$/.exec(txt)) {
- // prevents textnodes containing just "\n" from being significant
- // in safari when pasting text, now that we convert them to
- // spaces instead of removing them, because in other cases
- // removing "\n" from pasted HTML will collapse words together.
- txt2 = "";
- }
- var atBeginningOfLine = lines.textOfLine(lines.length()-1).length == 0;
- if (atBeginningOfLine) {
- // newlines in the source mustn't become spaces at beginning of line box
- txt2 = txt2.replace(/^\n*/, '');
- }
- if (atBeginningOfLine && state.listType && state.listType != 'none') {
- _produceListMarker(state);
- }
- lines.appendText(textify(txt2), state.attribString);
- x += consumed;
- txt = rest;
- if (txt.length > 0) {
- _startNewLine(state);
- }
- }
- }
- else {
- var tname = (dom.nodeTagName(node) || "").toLowerCase();
- if (tname == "br") {
- _startNewLine(state);
- }
- else if (tname == "script" || tname == "style") {
- // ignore
- }
- else if (! isEmpty) {
- var styl = dom.nodeAttr(node, "style");
- var cls = dom.nodeProp(node, "className");
-
- var isPre = (tname == "pre");
- if ((! isPre) && browser.safari) {
- isPre = (styl && /\bwhite-space:\s*pre\b/i.exec(styl));
- }
- if (isPre) _incrementFlag(state, 'preMode');
- var attribs = null;
- var oldListTypeOrNull = null;
- var oldAuthorOrNull = null;
- if (collectStyles) {
- function doAttrib(na) {
- attribs = (attribs || []);
- attribs.push(na);
- _incrementAttrib(state, na);
- }
- if (tname == "b" || (styl && /\bfont-weight:\s*bold\b/i.exec(styl)) ||
- tname == "strong") {
- doAttrib("bold");
- }
- if (tname == "i" || (styl && /\bfont-style:\s*italic\b/i.exec(styl)) ||
- tname == "em") {
- doAttrib("italic");
- }
- if (tname == "u" || (styl && /\btext-decoration:\s*underline\b/i.exec(styl)) ||
- tname == "ins") {
- doAttrib("underline");
- }
- if (tname == "s" || (styl && /\btext-decoration:\s*line-through\b/i.exec(styl)) ||
- tname == "del") {
- doAttrib("strikethrough");
- }
- if (tname == "ul") {
- var type;
- var rr = cls && /(?:^| )list-(bullet[12345678])\b/.exec(cls);
- type = rr && rr[1] || "bullet"+
- String(Math.min(_MAX_LIST_LEVEL, (state.listNesting||0)+1));
- oldListTypeOrNull = (_enterList(state, type) || 'none');
- }
- else if ((tname == "div" || tname == "p") && cls &&
- cls.match(/(?:^| )ace-line\b/)) {
- oldListTypeOrNull = (_enterList(state, type) || 'none');
- }
- if (className2Author && cls) {
- var classes = cls.match(/\S+/g);
- if (classes && classes.length > 0) {
- for(var i=0;i<classes.length;i++) {
- var c = classes[i];
- var a = className2Author(c);
- if (a) {
- oldAuthorOrNull = (_enterAuthor(state, a) || 'none');
- break;
- }
- }
- }
- }
- }
-
- var nc = dom.nodeNumChildren(node);
- for(var i=0;i<nc;i++) {
- var c = dom.nodeChild(node, i);
- cc.collectContent(c, state);
- }
-
- if (isPre) _decrementFlag(state, 'preMode');
- if (attribs) {
- for(var i=0;i<attribs.length;i++) {
- _decrementAttrib(state, attribs[i]);
- }
- }
- if (oldListTypeOrNull) {
- _exitList(state, oldListTypeOrNull);
- }
- if (oldAuthorOrNull) {
- _exitAuthor(state, oldAuthorOrNull);
- }
- }
- }
- if (! browser.msie) {
- _reachBlockPoint(node, 1, state);
- }
- if (isBlock) {
- if (lines.length()-1 == startLine) {
- _startNewLine(state);
- }
- else {
- _ensureColumnZero(state);
- }
- }
-
- if (browser.msie) {
- // in IE, a point immediately after a DIV appears on the next line
- _reachBlockPoint(node, 1, state);
- }
- };
- // can pass a falsy value for end of doc
- cc.notifyNextNode = function (node) {
- // an "empty block" won't end a line; this addresses an issue in IE with
- // typing into a blank line at the end of the document. typed text
- // goes into the body, and the empty line div still looks clean.
- // it is incorporated as dirty by the rule that a dirty region has
- // to end a line.
- if ((!node) || (isBlockElement(node) && !_isEmpty(node))) {
- _ensureColumnZero(null);
- }
- };
- // each returns [line, char] or [-1,-1]
- var getSelectionStart = function() { return selStart; };
- var getSelectionEnd = function() { return selEnd; };
-
- // returns array of strings for lines found, last entry will be "" if
- // last line is complete (i.e. if a following span should be on a new line).
- // can be called at any point
- cc.getLines = function() { return lines.textLines(); };
-
- //cc.applyHints = function(hints) {
- //if (hints.pastedLines) {
- //
- //}
- //}
-
- cc.finish = function() {
- lines.flush();
- var lineAttribs = lines.attribLines();
- var lineStrings = cc.getLines();
-
- lineStrings.length--;
- lineAttribs.length--;
-
- var ss = getSelectionStart();
- var se = getSelectionEnd();
-
- function fixLongLines() {
- // design mode does not deal with with really long lines!
- var lineLimit = 2000; // chars
- var buffer = 10; // chars allowed over before wrapping
- var linesWrapped = 0;
- var numLinesAfter = 0;
- for(var i=lineStrings.length-1; i>=0; i--) {
- var oldString = lineStrings[i];
- var oldAttribString = lineAttribs[i];
- if (oldString.length > lineLimit+buffer) {
- var newStrings = [];
- var newAttribStrings = [];
- while (oldString.length > lineLimit) {
- //var semiloc = oldString.lastIndexOf(';', lineLimit-1);
- //var lengthToTake = (semiloc >= 0 ? (semiloc+1) : lineLimit);
- lengthToTake = lineLimit;
- newStrings.push(oldString.substring(0, lengthToTake));
- oldString = oldString.substring(lengthToTake);
- newAttribStrings.push(Changeset.subattribution(oldAttribString,
- 0, lengthToTake));
- oldAttribString = Changeset.subattribution(oldAttribString,
- lengthToTake);
- }
- if (oldString.length > 0) {
- newStrings.push(oldString);
- newAttribStrings.push(oldAttribString);
- }
- function fixLineNumber(lineChar) {
- if (lineChar[0] < 0) return;
- var n = lineChar[0];
- var c = lineChar[1];
- if (n > i) {
- n += (newStrings.length-1);
- }
- else if (n == i) {
- var a = 0;
- while (c > newStrings[a].length) {
- c -= newStrings[a].length;
- a++;
- }
- n += a;
- }
- lineChar[0] = n;
- lineChar[1] = c;
- }
- fixLineNumber(ss);
- fixLineNumber(se);
- linesWrapped++;
- numLinesAfter += newStrings.length;
-
- newStrings.unshift(i, 1);
- lineStrings.splice.apply(lineStrings, newStrings);
- newAttribStrings.unshift(i, 1);
- lineAttribs.splice.apply(lineAttribs, newAttribStrings);
- }
- }
- return {linesWrapped:linesWrapped, numLinesAfter:numLinesAfter};
- }
- var wrapData = fixLongLines();
-
- return { selStart: ss, selEnd: se, linesWrapped: wrapData.linesWrapped,
- numLinesAfter: wrapData.numLinesAfter,
- lines: lineStrings, lineAttribs: lineAttribs };
- }
-
- return cc;
-}
diff --git a/trunk/etherpad/src/etherpad/collab/ace/domline.js b/trunk/etherpad/src/etherpad/collab/ace/domline.js
deleted file mode 100644
index de2e7d3..0000000
--- a/trunk/etherpad/src/etherpad/collab/ace/domline.js
+++ /dev/null
@@ -1,210 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/domline.js
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var domline = {};
-domline.noop = function() {};
-domline.identity = function(x) { return x; };
-
-domline.addToLineClass = function(lineClass, cls) {
- // an "empty span" at any point can be used to add classes to
- // the line, using line:className. otherwise, we ignore
- // the span.
- cls.replace(/\S+/g, function (c) {
- if (c.indexOf("line:") == 0) {
- // add class to line
- lineClass = (lineClass ? lineClass+' ' : '')+c.substring(5);
- }
- });
- return lineClass;
-}
-
-// if "document" is falsy we don't create a DOM node, just
-// an object with innerHTML and className
-domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) {
- var result = { node: null,
- appendSpan: domline.noop,
- prepareForAdd: domline.noop,
- notifyAdded: domline.noop,
- clearSpans: domline.noop,
- finishUpdate: domline.noop,
- lineMarker: 0 };
-
- var browser = (optBrowser || {});
- var document = optDocument;
-
- if (document) {
- result.node = document.createElement("div");
- }
- else {
- result.node = {innerHTML: '', className: ''};
- }
-
- var html = [];
- var preHtml, postHtml;
- var curHTML = null;
- function processSpaces(s) {
- return domline.processSpaces(s, doesWrap);
- }
- var identity = domline.identity;
- var perTextNodeProcess = (doesWrap ? identity : processSpaces);
- var perHtmlLineProcess = (doesWrap ? processSpaces : identity);
- var lineClass = 'ace-line';
- result.appendSpan = function(txt, cls) {
- if (cls.indexOf('list') >= 0) {
- var listType = /(?:^| )list:(\S+)/.exec(cls);
- if (listType) {
- listType = listType[1];
- if (listType) {
- preHtml = '<ul class="list-'+listType+'"><li>';
- postHtml = '</li></ul>';
- }
- result.lineMarker += txt.length;
- return; // don't append any text
- }
- }
- var href = null;
- var simpleTags = null;
- if (cls.indexOf('url') >= 0) {
- cls = cls.replace(/(^| )url:(\S+)/g, function(x0, space, url) {
- href = url;
- return space+"url";
- });
- }
- if (cls.indexOf('tag') >= 0) {
- cls = cls.replace(/(^| )tag:(\S+)/g, function(x0, space, tag) {
- if (! simpleTags) simpleTags = [];
- simpleTags.push(tag.toLowerCase());
- return space+tag;
- });
- }
- if ((! txt) && cls) {
- lineClass = domline.addToLineClass(lineClass, cls);
- }
- else if (txt) {
- var extraOpenTags = "";
- var extraCloseTags = "";
- if (href) {
- extraOpenTags = extraOpenTags+'<a href="'+
- href.replace(/\"/g, '&quot;')+'">';
- extraCloseTags = '</a>'+extraCloseTags;
- }
- if (simpleTags) {
- simpleTags.sort();
- extraOpenTags = extraOpenTags+'<'+simpleTags.join('><')+'>';
- simpleTags.reverse();
- extraCloseTags = '</'+simpleTags.join('></')+'>'+extraCloseTags;
- }
- html.push('<span class="',cls||'','">',extraOpenTags,
- perTextNodeProcess(domline.escapeHTML(txt)),
- extraCloseTags,'</span>');
- }
- };
- result.clearSpans = function() {
- html = [];
- lineClass = ''; // non-null to cause update
- result.lineMarker = 0;
- };
- function writeHTML() {
- var newHTML = perHtmlLineProcess(html.join(''));
- if (! newHTML) {
- if ((! document) || (! optBrowser)) {
- newHTML += '&nbsp;';
- }
- else if (! browser.msie) {
- newHTML += '<br/>';
- }
- }
- if (nonEmpty) {
- newHTML = (preHtml||'')+newHTML+(postHtml||'');
- }
- html = preHtml = postHtml = null; // free memory
- if (newHTML !== curHTML) {
- curHTML = newHTML;
- result.node.innerHTML = curHTML;
- }
- if (lineClass !== null) result.node.className = lineClass;
- }
- result.prepareForAdd = writeHTML;
- result.finishUpdate = writeHTML;
- result.getInnerHTML = function() { return curHTML || ''; };
-
- return result;
-};
-
-domline.escapeHTML = function(s) {
- var re = /[&<>'"]/g; /']/; // stupid indentation thing
- if (! re.MAP) {
- // persisted across function calls!
- re.MAP = {
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&#34;',
- "'": '&#39;'
- };
- }
- return s.replace(re, function(c) { return re.MAP[c]; });
-};
-
-domline.processSpaces = function(s, doesWrap) {
- if (s.indexOf("<") < 0 && ! doesWrap) {
- // short-cut
- return s.replace(/ /g, '&nbsp;');
- }
- var parts = [];
- s.replace(/<[^>]*>?| |[^ <]+/g, function(m) { parts.push(m); });
- if (doesWrap) {
- var endOfLine = true;
- var beforeSpace = false;
- // last space in a run is normal, others are nbsp,
- // end of line is nbsp
- for(var i=parts.length-1;i>=0;i--) {
- var p = parts[i];
- if (p == " ") {
- if (endOfLine || beforeSpace)
- parts[i] = '&nbsp;';
- endOfLine = false;
- beforeSpace = true;
- }
- else if (p.charAt(0) != "<") {
- endOfLine = false;
- beforeSpace = false;
- }
- }
- // beginning of line is nbsp
- for(var i=0;i<parts.length;i++) {
- var p = parts[i];
- if (p == " ") {
- parts[i] = '&nbsp;';
- break;
- }
- else if (p.charAt(0) != "<") {
- break;
- }
- }
- }
- else {
- for(var i=0;i<parts.length;i++) {
- var p = parts[i];
- if (p == " ") {
- parts[i] = '&nbsp;';
- }
- }
- }
- return parts.join('');
-};
diff --git a/trunk/etherpad/src/etherpad/collab/ace/easysync1.js b/trunk/etherpad/src/etherpad/collab/ace/easysync1.js
deleted file mode 100644
index 4f40aa0..0000000
--- a/trunk/etherpad/src/etherpad/collab/ace/easysync1.js
+++ /dev/null
@@ -1,923 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/easy_sync.js
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT 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 Changeset(arg) {
-
- var array;
- if ((typeof arg) == "string") {
- // constant
- array = [Changeset.MAGIC, 0, arg.length, 0, 0, arg];
- }
- else if ((typeof arg) == "number") {
- var n = Math.round(arg);
- // delete-all on n-length text (useful for making a "builder")
- array = [Changeset.MAGIC, n, 0, 0, 0, ""];
- }
- else if (! arg) {
- // identity on 0-length text
- array = [Changeset.MAGIC, 0, 0, 0, 0, ""];
- }
- else if (arg.isChangeset) {
- return arg;
- }
- else array = arg;
-
- array.isChangeset = true;
-
- // OOP style: attach generic methods to array object, hold no state in environment
-
- //function error(msg) { top.console.error(msg); top.console.trace(); }
- function error(msg) { var e = new Error(msg); e.easysync = true; throw e; }
- function assert(b, msg) { if (! b) error("Changeset: "+String(msg)); }
- function min(x, y) { return (x < y) ? x : y; }
- Changeset._assert = assert;
-
- array.isIdentity = function() {
- return this.length == 6 && this[1] == this[2] && this[3] == 0 &&
- this[4] == this[1] && this[5] == "";
- }
-
- array.eachStrip = function(func, thisObj) {
- // inside "func", the method receiver will be "this" by default,
- // or you can pass an object.
- for(var i=0;i<this.numStrips();i++) {
- var ptr = 3 + i*3;
- if (func.call(thisObj || this, this[ptr], this[ptr+1], this[ptr+2], i))
- return true;
- }
- return false;
- }
-
- array.numStrips = function() { return (this.length-3)/3; };
- array.oldLen = function() { return this[1]; };
- array.newLen = function() { return this[2]; };
-
- array.checkRep = function() {
- assert(this[0] == Changeset.MAGIC, "bad magic");
- assert(this[1] >= 0, "bad old text length");
- assert(this[2] >= 0, "bad new text length");
- assert((this.length % 3) == 0, "bad array length");
- assert(this.length >= 6, "must be at least one strip");
- var numStrips = this.numStrips();
- var oldLen = this[1];
- var newLen = this[2];
- // iterate over the "text strips"
- var actualNewLen = 0;
- this.eachStrip(function(startIndex, numTaken, newText, i) {
- var s = startIndex, t = numTaken, n = newText;
- var isFirst = (i == 0);
- var isLast = (i == numStrips-1);
- assert(t >= 0, "can't take negative number of chars");
- assert(isFirst || t > 0, "all strips but first must take");
- assert((t > 0) || (s == 0), "if first strip doesn't take, must have 0 startIndex");
- assert(s >= 0 && s + t <= oldLen, "bad index: "+this.toString());
- assert(t > 0 || n.length > 0 || (isFirst && isLast), "empty strip must be first and only");
- if (! isLast) {
- var s2 = this[3 + i*3 + 3]; // startIndex of following strip
- var gap = s2 - (s + t);
- assert(gap >= 0, "overlapping or out-of-order strips: "+this.toString());
- assert(gap > 0 || n.length > 0, "touching strips with no added text");
- }
- actualNewLen += t + n.length;
- });
- assert(newLen == actualNewLen, "calculated new text length doesn't match");
- }
-
- array.applyToText = function(text) {
- assert(text.length == this.oldLen(), "mismatched apply: "+text.length+" / "+this.oldLen());
- var buf = [];
- this.eachStrip(function (s, t, n) {
- buf.push(text.substr(s, t), n);
- });
- return buf.join('');
- }
-
- function _makeBuilder(oldLen, supportAuthors) {
- var C = Changeset(oldLen);
- if (supportAuthors) {
- _ensureAuthors(C);
- }
- return C.builder();
- }
-
- function _getNumInserted(C) {
- var numChars = 0;
- C.eachStrip(function(s,t,n) {
- numChars += n.length;
- });
- return numChars;
- }
-
- function _ensureAuthors(C) {
- if (! C.authors) {
- C.setAuthor();
- }
- return C;
- }
-
- array.setAuthor = function(author) {
- var C = this;
- // authors array has even length >= 2;
- // alternates [numChars1, author1, numChars2, author2];
- // all numChars > 0 unless there is exactly one, in which
- // case it can be == 0.
- C.authors = [_getNumInserted(C), author || ''];
- return C;
- }
-
- array.builder = function() {
- // normal pattern is Changeset(oldLength).builder().appendOldText(...). ...
- // builder methods mutate this!
- var C = this;
- // OOP style: state in environment
- var self;
- return self = {
- appendNewText: function(str, author) {
- C[C.length-1] += str;
- C[2] += str.length;
-
- if (C.authors) {
- var a = (author || '');
- var lastAuthorPtr = C.authors.length-1;
- var lastAuthorLengthPtr = C.authors.length-2;
- if ((!a) || a == C.authors[lastAuthorPtr]) {
- C.authors[lastAuthorLengthPtr] += str.length;
- }
- else if (0 == C.authors[lastAuthorLengthPtr]) {
- C.authors[lastAuthorLengthPtr] = str.length;
- C.authors[lastAuthorPtr] = (a || C.authors[lastAuthorPtr]);
- }
- else {
- C.authors.push(str.length, a);
- }
- }
-
- return self;
- },
- appendOldText: function(startIndex, numTaken) {
- if (numTaken == 0) return self;
- // properties of last strip...
- var s = C[C.length-3], t = C[C.length-2], n = C[C.length-1];
- if (t == 0 && n == "") {
- // must be empty changeset, one strip that doesn't take old chars or add new ones
- C[C.length-3] = startIndex;
- C[C.length-2] = numTaken;
- }
- else if (n == "" && (s+t == startIndex)) {
- C[C.length-2] += numTaken; // take more
- }
- else C.push(startIndex, numTaken, ""); // add a strip
- C[2] += numTaken;
- C.checkRep();
- return self;
- },
- toChangeset: function() { return C; }
- };
- }
-
- array.authorSlicer = function(outputBuilder) {
- return _makeAuthorSlicer(this, outputBuilder);
- }
-
- function _makeAuthorSlicer(changesetOrAuthorsIn, builderOut) {
- // "builderOut" only needs to support appendNewText
- var authors; // considered immutable
- if (changesetOrAuthorsIn.isChangeset) {
- authors = changesetOrAuthorsIn.authors;
- }
- else {
- authors = changesetOrAuthorsIn;
- }
-
- // OOP style: state in environment
- var authorPtr = 0;
- var charIndex = 0;
- var charWithinAuthor = 0; // 0 <= charWithinAuthor <= authors[authorPtr]; max value iff atEnd
- var atEnd = false;
- function curAuthor() { return authors[authorPtr+1]; }
- function curAuthorWidth() { return authors[authorPtr]; }
- function assertNotAtEnd() { assert(! atEnd, "_authorSlicer: can't move past end"); }
- function forwardInAuthor(numChars) {
- charWithinAuthor += numChars;
- charIndex += numChars;
- }
- function nextAuthor() {
- assertNotAtEnd();
- assert(charWithinAuthor == curAuthorWidth(), "_authorSlicer: not at author end");
- charWithinAuthor = 0;
- authorPtr += 2;
- if (authorPtr == authors.length) {
- atEnd = true;
- }
- }
-
- var self;
- return self = {
- skipChars: function(n) {
- assert(n >= 0, "_authorSlicer: can't skip negative n");
- if (n == 0) return;
- assertNotAtEnd();
-
- var leftToSkip = n;
- while (leftToSkip > 0) {
- var leftInAuthor = curAuthorWidth() - charWithinAuthor;
- if (leftToSkip >= leftInAuthor) {
- forwardInAuthor(leftInAuthor);
- leftToSkip -= leftInAuthor;
- nextAuthor();
- }
- else {
- forwardInAuthor(leftToSkip);
- leftToSkip = 0;
- }
- }
- },
- takeChars: function(n, text) {
- assert(n >= 0, "_authorSlicer: can't take negative n");
- if (n == 0) return;
- assertNotAtEnd();
- assert(n == text.length, "_authorSlicer: bad text length");
-
- var textLeft = text;
- var leftToTake = n;
- while (leftToTake > 0) {
- if (curAuthorWidth() > 0 && charWithinAuthor < curAuthorWidth()) {
- // at least one char to take from current author
- var leftInAuthor = (curAuthorWidth() - charWithinAuthor);
- assert(leftInAuthor > 0, "_authorSlicer: should have leftInAuthor > 0");
- var toTake = min(leftInAuthor, leftToTake);
- assert(toTake > 0, "_authorSlicer: should have toTake > 0");
- builderOut.appendNewText(textLeft.substring(0, toTake), curAuthor());
- forwardInAuthor(toTake);
- leftToTake -= toTake;
- textLeft = textLeft.substring(toTake);
- }
- assert(charWithinAuthor <= curAuthorWidth(), "_authorSlicer: past end of author");
- if (charWithinAuthor == curAuthorWidth()) {
- nextAuthor();
- }
- }
- },
- setBuilder: function(builder) {
- builderOut = builder;
- }
- };
- }
-
- function _makeSlicer(C, output) {
- // C: Changeset, output: builder from _makeBuilder
- // C is considered immutable, won't change or be changed
-
- // OOP style: state in environment
- var charIndex = 0; // 0 <= charIndex <= C.newLen(); maximum value iff atEnd
- var stripIndex = 0; // 0 <= stripIndex <= C.numStrips(); maximum value iff atEnd
- var charWithinStrip = 0; // 0 <= charWithinStrip < curStripWidth()
- var atEnd = false;
-
- var authorSlicer;
- if (C.authors) {
- authorSlicer = _makeAuthorSlicer(C.authors, output);
- }
-
- var ptr = 3;
- function curStartIndex() { return C[ptr]; }
- function curNumTaken() { return C[ptr+1]; }
- function curNewText() { return C[ptr+2]; }
- function curStripWidth() { return curNumTaken() + curNewText().length; }
- function assertNotAtEnd() { assert(! atEnd, "_slicer: can't move past changeset end"); }
- function forwardInStrip(numChars) {
- charWithinStrip += numChars;
- charIndex += numChars;
- }
- function nextStrip() {
- assertNotAtEnd();
- assert(charWithinStrip == curStripWidth(), "_slicer: not at strip end");
- charWithinStrip = 0;
- stripIndex++;
- ptr += 3;
- if (stripIndex == C.numStrips()) {
- atEnd = true;
- }
- }
- function curNumNewCharsInRange(start, end) {
- // takes two indices into the current strip's combined "taken" and "new"
- // chars, and returns how many "new" chars are included in the range
- assert(start <= end, "_slicer: curNumNewCharsInRange given out-of-order indices");
- var nt = curNumTaken();
- var nn = curNewText().length;
- var s = nt;
- var e = nt+nn;
- if (s < start) s = start;
- if (e > end) e = end;
- if (e < s) return 0;
- return e-s;
- }
-
- var self;
- return self = {
- skipChars: function (n) {
- assert(n >= 0, "_slicer: can't skip negative n");
- if (n == 0) return;
- assertNotAtEnd();
-
- var leftToSkip = n;
- while (leftToSkip > 0) {
- var leftInStrip = curStripWidth() - charWithinStrip;
- if (leftToSkip >= leftInStrip) {
- forwardInStrip(leftInStrip);
-
- if (authorSlicer)
- authorSlicer.skipChars(curNumNewCharsInRange(charWithinStrip,
- charWithinStrip + leftInStrip));
-
- leftToSkip -= leftInStrip;
- nextStrip();
- }
- else {
- if (authorSlicer)
- authorSlicer.skipChars(curNumNewCharsInRange(charWithinStrip,
- charWithinStrip + leftToSkip));
-
- forwardInStrip(leftToSkip);
- leftToSkip = 0;
- }
- }
- },
- takeChars: function (n) {
- assert(n >= 0, "_slicer: can't take negative n");
- if (n == 0) return;
- assertNotAtEnd();
-
- var leftToTake = n;
- while (leftToTake > 0) {
- if (curNumTaken() > 0 && charWithinStrip < curNumTaken()) {
- // at least one char to take from current strip's numTaken
- var leftInTaken = (curNumTaken() - charWithinStrip);
- assert(leftInTaken > 0, "_slicer: should have leftInTaken > 0");
- var toTake = min(leftInTaken, leftToTake);
- assert(toTake > 0, "_slicer: should have toTake > 0");
- output.appendOldText(curStartIndex() + charWithinStrip, toTake);
- forwardInStrip(toTake);
- leftToTake -= toTake;
- }
- if (leftToTake > 0 && curNewText().length > 0 && charWithinStrip >= curNumTaken() &&
- charWithinStrip < curStripWidth()) {
- // at least one char to take from current strip's newText
- var leftInNewText = (curStripWidth() - charWithinStrip);
- assert(leftInNewText > 0, "_slicer: should have leftInNewText > 0");
- var toTake = min(leftInNewText, leftToTake);
- assert(toTake > 0, "_slicer: should have toTake > 0");
- var newText = curNewText().substr(charWithinStrip - curNumTaken(), toTake);
- if (authorSlicer) {
- authorSlicer.takeChars(newText.length, newText);
- }
- else {
- output.appendNewText(newText);
- }
- forwardInStrip(toTake);
- leftToTake -= toTake;
- }
- assert(charWithinStrip <= curStripWidth(), "_slicer: past end of strip");
- if (charWithinStrip == curStripWidth()) {
- nextStrip();
- }
- }
- },
- skipTo: function(n) {
- self.skipChars(n - charIndex);
- }
- };
- }
-
- array.slicer = function(outputBuilder) {
- return _makeSlicer(this, outputBuilder);
- }
-
- array.compose = function(next) {
- assert(next.oldLen() == this.newLen(), "mismatched composition");
-
- var builder = _makeBuilder(this.oldLen(), !!(this.authors || next.authors));
- var slicer = _makeSlicer(this, builder);
-
- var authorSlicer;
- if (next.authors) {
- authorSlicer = _makeAuthorSlicer(next.authors, builder);
- }
-
- next.eachStrip(function(s, t, n) {
- slicer.skipTo(s);
- slicer.takeChars(t);
- if (authorSlicer) {
- authorSlicer.takeChars(n.length, n);
- }
- else {
- builder.appendNewText(n);
- }
- }, this);
-
- return builder.toChangeset();
- };
-
- array.traverser = function() {
- return _makeTraverser(this);
- }
-
- function _makeTraverser(C) {
- var s = C[3], t = C[4], n = C[5];
- var nextIndex = 6;
- var indexIntoNewText = 0;
-
- var authorSlicer;
- if (C.authors) {
- authorSlicer = _makeAuthorSlicer(C.authors, null);
- }
-
- function advanceIfPossible() {
- if (t == 0 && n == "" && nextIndex < C.length) {
- s = C[nextIndex];
- t = C[nextIndex+1];
- n = C[nextIndex+2];
- nextIndex += 3;
- }
- }
-
- var self;
- return self = {
- numTakenChars: function() {
- // if starts with taken characters, then how many, else 0
- return (t > 0) ? t : 0;
- },
- numNewChars: function() {
- // if starts with new characters, then how many, else 0
- return (t == 0 && n.length > 0) ? n.length : 0;
- },
- takenCharsStart: function() {
- return (self.numTakenChars() > 0) ? s : 0;
- },
- hasMore: function() {
- return self.numTakenChars() > 0 || self.numNewChars() > 0;
- },
- curIndex: function() {
- return indexIntoNewText;
- },
- consumeTakenChars: function (x) {
- assert(self.numTakenChars() > 0, "_traverser: no taken chars");
- assert(x >= 0 && x <= self.numTakenChars(), "_traverser: bad number of taken chars");
- if (x == 0) return;
- if (t == x) { s = 0; t = 0; }
- else { s += x; t -= x; }
- indexIntoNewText += x;
- advanceIfPossible();
- },
- consumeNewChars: function(x) {
- return self.appendNewChars(x, null);
- },
- appendNewChars: function(x, builder) {
- assert(self.numNewChars() > 0, "_traverser: no new chars");
- assert(x >= 0 && x <= self.numNewChars(), "_traverser: bad number of new chars");
- if (x == 0) return "";
- var str = n.substring(0, x);
- n = n.substring(x);
- indexIntoNewText += x;
- advanceIfPossible();
-
- if (builder) {
- if (authorSlicer) {
- authorSlicer.setBuilder(builder);
- authorSlicer.takeChars(x, str);
- }
- else {
- builder.appendNewText(str);
- }
- }
- else {
- if (authorSlicer) authorSlicer.skipChars(x);
- return str;
- }
- },
- consumeAvailableTakenChars: function() {
- return self.consumeTakenChars(self.numTakenChars());
- },
- consumeAvailableNewChars: function() {
- return self.consumeNewChars(self.numNewChars());
- },
- appendAvailableNewChars: function(builder) {
- return self.appendNewChars(self.numNewChars(), builder);
- }
- };
- }
-
- array.follow = function(prev, reverseInsertOrder) {
- // prev: Changeset, reverseInsertOrder: boolean
-
- // A.compose(B.follow(A)) is the merging of Changesets A and B, which operate on the same old text.
- // It is always the same as B.compose(A.follow(B, true)).
-
- assert(prev.oldLen() == this.oldLen(), "mismatched follow: "+prev.oldLen()+"/"+this.oldLen());
- var builder = _makeBuilder(prev.newLen(), !! this.authors);
- var a = _makeTraverser(prev);
- var b = _makeTraverser(this);
- while (a.hasMore() || b.hasMore()) {
- if (a.numNewChars() > 0 && ! reverseInsertOrder) {
- builder.appendOldText(a.curIndex(), a.numNewChars());
- a.consumeAvailableNewChars();
- }
- else if (b.numNewChars() > 0) {
- b.appendAvailableNewChars(builder);
- }
- else if (a.numNewChars() > 0 && reverseInsertOrder) {
- builder.appendOldText(a.curIndex(), a.numNewChars());
- a.consumeAvailableNewChars();
- }
- else if (! b.hasMore()) a.consumeAvailableTakenChars();
- else if (! a.hasMore()) b.consumeAvailableTakenChars();
- else {
- var x = a.takenCharsStart();
- var y = b.takenCharsStart();
- if (x < y) a.consumeTakenChars(min(a.numTakenChars(), y-x));
- else if (y < x) b.consumeTakenChars(min(b.numTakenChars(), x-y));
- else {
- var takenByBoth = min(a.numTakenChars(), b.numTakenChars());
- builder.appendOldText(a.curIndex(), takenByBoth);
- a.consumeTakenChars(takenByBoth);
- b.consumeTakenChars(takenByBoth);
- }
- }
- }
- return builder.toChangeset();
- }
-
- array.encodeToString = function(asBinary) {
- var stringDataArray = [];
- var numsArray = [];
- if (! asBinary) numsArray.push(this[0]);
- numsArray.push(this[1], this[2]);
- this.eachStrip(function(s, t, n) {
- numsArray.push(s, t, n.length);
- stringDataArray.push(n);
- }, this);
- if (! asBinary) {
- return numsArray.join(',')+'|'+stringDataArray.join('');
- }
- else {
- return "A" + Changeset.numberArrayToString(numsArray)
- +escapeCrazyUnicode(stringDataArray.join(''));
- }
- }
-
- function escapeCrazyUnicode(str) {
- return str.replace(/\\/g, '\\\\').replace(/[\ud800-\udfff]/g, function (c) {
- return "\\u"+("0000"+c.charCodeAt(0).toString(16)).slice(-4);
- });
- }
-
- array.applyToAttributedText = Changeset.applyToAttributedText;
-
- function splicesFromChanges(c) {
- var splices = [];
- // get a list of splices, [startChar, endChar, newText]
- var traverser = c.traverser();
- var oldTextLength = c.oldLen();
- var indexIntoOldText = 0;
- while (traverser.hasMore() || indexIntoOldText < oldTextLength) {
- var newText = "";
- var startChar = indexIntoOldText;
- var endChar = indexIntoOldText;
- if (traverser.numNewChars() > 0) {
- newText = traverser.consumeAvailableNewChars();
- }
- if (traverser.hasMore()) {
- endChar = traverser.takenCharsStart();
- indexIntoOldText = endChar + traverser.numTakenChars();
- traverser.consumeAvailableTakenChars();
- }
- else {
- endChar = oldTextLength;
- indexIntoOldText = endChar;
- }
- if (endChar != startChar || newText.length > 0) {
- splices.push([startChar, endChar, newText]);
- }
- }
- return splices;
- }
-
- array.toSplices = function() {
- return splicesFromChanges(this);
- }
-
- array.characterRangeFollowThis = function(selStartChar, selEndChar, insertionsAfter) {
- var changeset = this;
- // represent the selection as a changeset that replaces the selection with some finite string.
- // Because insertions indicate intention, it doesn't matter what this string is, and even
- // if the selectionChangeset is made to "follow" other changes it will still be the only
- // insertion.
- var selectionChangeset =
- Changeset(changeset.oldLen()).builder().appendOldText(0, selStartChar).appendNewText(
- "X").appendOldText(selEndChar, changeset.oldLen() - selEndChar).toChangeset();
- var newSelectionChangeset = selectionChangeset.follow(changeset, insertionsAfter);
- var selectionSplices = newSelectionChangeset.toSplices();
- function includeChar(i) {
- if (! includeChar.calledYet) {
- selStartChar = i;
- selEndChar = i;
- includeChar.calledYet = true;
- }
- else {
- if (i < selStartChar) selStartChar = i;
- if (i > selEndChar) selEndChar = i;
- }
- }
- for(var i=0; i<selectionSplices.length; i++) {
- var s = selectionSplices[i];
- includeChar(s[0]);
- includeChar(s[1]);
- }
- return [selStartChar, selEndChar];
- }
-
- return array;
-}
-
-Changeset.MAGIC = "Changeset";
-Changeset.makeSplice = function(oldLength, spliceStart, numRemoved, stringInserted) {
- oldLength = (oldLength || 0);
- spliceStart = (spliceStart || 0);
- numRemoved = (numRemoved || 0);
- stringInserted = String(stringInserted || "");
-
- var builder = Changeset(oldLength).builder();
- builder.appendOldText(0, spliceStart);
- builder.appendNewText(stringInserted);
- builder.appendOldText(spliceStart + numRemoved, oldLength - numRemoved - spliceStart);
- return builder.toChangeset();
-};
-Changeset.identity = function(len) {
- return Changeset(len).builder().appendOldText(0, len).toChangeset();
-};
-Changeset.decodeFromString = function(str) {
- function error(msg) { var e = new Error(msg); e.easysync = true; throw e; }
- function toHex(str) {
- var a = [];
- a.push("length["+str.length+"]:");
- var TRUNC=20;
- for(var i=0;i<str.substring(0,TRUNC).length;i++) {
- a.push(("000"+str.charCodeAt(i).toString(16)).slice(-4));
- }
- if (str.length > TRUNC) a.push("...");
- return a.join(' ');
- }
- function unescapeCrazyUnicode(str) {
- return str.replace(/\\(u....|\\)/g, function(seq) {
- if (seq == "\\\\") return "\\";
- return String.fromCharCode(Number("0x"+seq.substring(2)));
- });
- }
-
- var numData, stringData;
- var binary = false;
- var typ = str.charAt(0);
- if (typ == "B" || typ == "A") {
- var result = Changeset.numberArrayFromString(str, 1);
- numData = result[0];
- stringData = result[1];
- if (typ == "A") {
- stringData = unescapeCrazyUnicode(stringData);
- }
- binary = true;
- }
- else if (typ == "C") {
- var barPosition = str.indexOf('|');
- numData = str.substring(0, barPosition).split(',');
- stringData = str.substring(barPosition+1);
- }
- else {
- error("Not a changeset: "+toHex(str));
- }
- var stringDataOffset = 0;
- var array = [];
- var ptr;
- if (binary) {
- array.push("Changeset", numData[0], numData[1]);
- var ptr = 2;
- }
- else {
- array.push(numData[0], Number(numData[1]), Number(numData[2]));
- var ptr = 3;
- }
- while (ptr < numData.length) {
- array.push(Number(numData[ptr++]), Number(numData[ptr++]));
- var newTextLength = Number(numData[ptr++]);
- array.push(stringData.substr(stringDataOffset, newTextLength));
- stringDataOffset += newTextLength;
- }
- if (stringDataOffset != stringData.length) {
- error("Extra character data beyond end of encoded string ("+toHex(str)+")");
- }
- return Changeset(array);
-};
-
-Changeset.numberArrayToString = function(nums) {
- var array = [];
- function writeNum(n) {
- // does not support negative numbers
- var twentyEightBit = (n & 0xfffffff);
- if (twentyEightBit <= 0x7fff) {
- array.push(String.fromCharCode(twentyEightBit));
- }
- else {
- array.push(String.fromCharCode(0xa000 | (twentyEightBit >> 15),
- twentyEightBit & 0x7fff));
- }
- }
- writeNum(nums.length);
- var len = nums.length;
- for(var i=0;i<len;i++) {
- writeNum(nums[i]);
- }
- return array.join('');
-};
-
-Changeset.numberArrayFromString = function(str, startIndex) {
- // returns [numberArray, remainingString]
- var nums = [];
- var strIndex = (startIndex || 0);
- function readNum() {
- var n = str.charCodeAt(strIndex++);
- if (n > 0x7fff) {
- if (n >= 0xa000) {
- n = (((n & 0x1fff) << 15) | str.charCodeAt(strIndex++));
- }
- else {
- // legacy format
- n = (((n & 0x1fff) << 16) | str.charCodeAt(strIndex++));
- }
- }
- return n;
- }
- var len = readNum();
- for(var i=0;i<len;i++) {
- nums.push(readNum());
- }
- return [nums, str.substring(strIndex)];
-};
-
-(function() {
- function repeatString(str, times) {
- if (times <= 0) return "";
- var s = repeatString(str, times >> 1);
- s += s;
- if (times & 1) s += str;
- return s;
- }
- function chr(n) { return String.fromCharCode(n+48); }
- function ord(c) { return c.charCodeAt(0)-48; }
- function runMatcher(c) {
- // Takes "A" and returns /\u0041+/g .
- // Avoid creating new objects unnecessarily by caching matchers
- // as properties of this function.
- var re = runMatcher[c];
- if (re) return re;
- re = runMatcher[c] = new RegExp("\\u"+("0000"+c.charCodeAt(0).toString(16)).slice(-4)+"+", 'g');
- return re;
- }
- function runLength(str, idx, c) {
- var re = runMatcher(c);
- re.lastIndex = idx;
- var result = re.exec(str);
- if (result && result[0]) {
- return result[0].length;
- }
- return 0;
- }
-
- // emptyObj may be a StorableObject
- Changeset.initAttributedText = function(emptyObj, initialString, initialAuthor) {
- var obj = emptyObj;
- obj.authorMap = { 1: (initialAuthor || '') };
- obj.text = (initialString || '');
- obj.attribs = repeatString(chr(1), obj.text.length);
- return obj;
- };
- Changeset.gcAttributedText = function(atObj) {
- // "garbage collect" the list of authors
- var removedAuthors = [];
- for(var a in atObj.authorMap) {
- if (atObj.attribs.indexOf(chr(Number(a))) < 0) {
- removedAuthors.push(atObj.authorMap[a]);
- delete atObj.authorMap[a];
- }
- }
- return removedAuthors;
- };
- Changeset.cloneAttributedText = function(emptyObj, atObj) {
- var obj = emptyObj;
- obj.text = atObj.text; // string
- if (atObj.attribs) obj.attribs = atObj.attribs; // string
- if (atObj.attribs_c) obj.attribs_c = atObj.attribs_c; // string
- obj.authorMap = {};
- for(var a in atObj.authorMap) {
- obj.authorMap[a] = atObj.authorMap[a];
- }
- return obj;
- };
- Changeset.applyToAttributedText = function(atObj, C) {
- C = (C || this);
- var oldText = atObj.text;
- var oldAttribs = atObj.attribs;
- Changeset._assert(C.isChangeset, "applyToAttributedText: 'this' is not a changeset");
- Changeset._assert(oldText.length == C.oldLen(),
- "applyToAttributedText: mismatch "+oldText.length+" / "+C.oldLen());
- var textBuf = [];
- var attribsBuf = [];
- var authorMap = atObj.authorMap;
- function authorId(author) {
- for(var a in authorMap) {
- if (authorMap[Number(a)] === author) {
- return Number(a);
- }
- }
- for(var i=1;i<=60000;i++) {
- // don't use "in" because it's currently broken on StorableObjects
- if (authorMap[i] === undefined) {
- authorMap[i] = author;
- return i;
- }
- }
- }
- var myBuilder = { appendNewText: function(txt, author) {
- // object that acts as a "builder" in that it receives requests from
- // authorSlicer to append text attributed to different authors
- attribsBuf.push(repeatString(chr(authorId(author)), txt.length));
- } };
- var authorSlicer;
- if (C.authors) {
- authorSlicer = C.authorSlicer(myBuilder);
- }
- C.eachStrip(function (s, t, n) {
- textBuf.push(oldText.substr(s, t), n);
- attribsBuf.push(oldAttribs.substr(s, t));
- if (authorSlicer) {
- authorSlicer.takeChars(n.length, n);
- }
- else {
- myBuilder.appendNewText(n, '');
- }
- });
- atObj.text = textBuf.join('');
- atObj.attribs = attribsBuf.join('');
- return atObj;
- };
- Changeset.getAttributedTextCharAuthor = function(atObj, idx) {
- return atObj.authorMap[ord(atObj.attribs.charAt(idx))];
- };
- Changeset.getAttributedTextCharRunLength = function(atObj, idx) {
- var c = atObj.attribs.charAt(idx);
- return runLength(atObj.attribs, idx, c);
- };
- Changeset.eachAuthorInAttributedText = function(atObj, func) {
- // call func(author, authorNum)
- for(var a in atObj.authorMap) {
- if (func(atObj.authorMap[a], Number(a))) break;
- }
- };
- Changeset.getAttributedTextAuthorByNum = function(atObj, n) {
- return atObj.authorMap[n];
- };
- // Compressed attributed text can be cloned, but nothing else until uncompressed!!
- Changeset.compressAttributedText = function(atObj) {
- // idempotent, mutates the object, returns it
- if (atObj.attribs) {
- atObj.attribs_c = atObj.attribs.replace(/([\s\S])\1{0,63}/g, function(run) {
- return run.charAt(0)+chr(run.length);;
- });
- delete atObj.attribs;
- }
- return atObj;
- };
- Changeset.decompressAttributedText = function(atObj) {
- // idempotent, mutates the object, returns it
- if (atObj.attribs_c) {
- atObj.attribs = atObj.attribs_c.replace(/[\s\S][\s\S]/g, function(run) {
- return repeatString(run.charAt(0), ord(run.charAt(1)));
- });
- delete atObj.attribs_c;
- }
- return atObj;
- };
-})();
diff --git a/trunk/etherpad/src/etherpad/collab/ace/easysync2.js b/trunk/etherpad/src/etherpad/collab/ace/easysync2.js
deleted file mode 100644
index 0fa1ec4..0000000
--- a/trunk/etherpad/src/etherpad/collab/ace/easysync2.js
+++ /dev/null
@@ -1,1968 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/easysync2.js
-jimport("com.etherpad.Easysync2Support");
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//var _opt = (this.Easysync2Support || null);
-var _opt = null; // disable optimization for now
-
-function AttribPool() {
- var p = {};
- p.numToAttrib = {}; // e.g. {0: ['foo','bar']}
- p.attribToNum = {}; // e.g. {'foo,bar': 0}
- p.nextNum = 0;
-
- p.putAttrib = function(attrib, dontAddIfAbsent) {
- var str = String(attrib);
- if (str in p.attribToNum) {
- return p.attribToNum[str];
- }
- if (dontAddIfAbsent) {
- return -1;
- }
- var num = p.nextNum++;
- p.attribToNum[str] = num;
- p.numToAttrib[num] = [String(attrib[0]||''),
- String(attrib[1]||'')];
- return num;
- };
-
- p.getAttrib = function(num) {
- var pair = p.numToAttrib[num];
- if (! pair) return pair;
- return [pair[0], pair[1]]; // return a mutable copy
- };
-
- p.getAttribKey = function(num) {
- var pair = p.numToAttrib[num];
- if (! pair) return '';
- return pair[0];
- };
-
- p.getAttribValue = function(num) {
- var pair = p.numToAttrib[num];
- if (! pair) return '';
- return pair[1];
- };
-
- p.eachAttrib = function(func) {
- for(var n in p.numToAttrib) {
- var pair = p.numToAttrib[n];
- func(pair[0], pair[1]);
- }
- };
-
- p.toJsonable = function() {
- return {numToAttrib: p.numToAttrib, nextNum: p.nextNum};
- };
-
- p.fromJsonable = function(obj) {
- p.numToAttrib = obj.numToAttrib;
- p.nextNum = obj.nextNum;
- p.attribToNum = {};
- for(var n in p.numToAttrib) {
- p.attribToNum[String(p.numToAttrib[n])] = Number(n);
- }
- return p;
- };
-
- return p;
-}
-
-var Changeset = {};
-
-Changeset.error = function error(msg) { var e = new Error(msg); e.easysync = true; throw e; };
-Changeset.assert = function assert(b, msgParts) {
- if (! b) {
- var msg = Array.prototype.slice.call(arguments, 1).join('');
- Changeset.error("Changeset: "+msg);
- }
-};
-
-Changeset.parseNum = function(str) { return parseInt(str, 36); };
-Changeset.numToString = function(num) { return num.toString(36).toLowerCase(); };
-Changeset.toBaseTen = function(cs) {
- var dollarIndex = cs.indexOf('$');
- var beforeDollar = cs.substring(0, dollarIndex);
- var fromDollar = cs.substring(dollarIndex);
- return beforeDollar.replace(/[0-9a-z]+/g, function(s) {
- return String(Changeset.parseNum(s)); }) + fromDollar;
-};
-
-Changeset.oldLen = function(cs) {
- return Changeset.unpack(cs).oldLen;
-};
-Changeset.newLen = function(cs) {
- return Changeset.unpack(cs).newLen;
-};
-
-Changeset.opIterator = function(opsStr, optStartIndex) {
- //print(opsStr);
- var regex = /((?:\*[0-9a-z]+)*)(?:\|([0-9a-z]+))?([-+=])([0-9a-z]+)|\?|/g;
- var startIndex = (optStartIndex || 0);
- var curIndex = startIndex;
- var prevIndex = curIndex;
- function nextRegexMatch() {
- prevIndex = curIndex;
- var result;
- if (_opt) {
- result = _opt.nextOpInString(opsStr, curIndex);
- if (result) {
- if (result.opcode() == '?') {
- Changeset.error("Hit error opcode in op stream");
- }
- curIndex = result.lastIndex();
- }
- }
- else {
- regex.lastIndex = curIndex;
- result = regex.exec(opsStr);
- curIndex = regex.lastIndex;
- if (result[0] == '?') {
- Changeset.error("Hit error opcode in op stream");
- }
- }
- return result;
- }
- var regexResult = nextRegexMatch();
- var obj = Changeset.newOp();
- function next(optObj) {
- var op = (optObj || obj);
- if (_opt && regexResult) {
- op.attribs = regexResult.attribs();
- op.lines = regexResult.lines();
- op.chars = regexResult.chars();
- op.opcode = regexResult.opcode();
- regexResult = nextRegexMatch();
- }
- else if ((! _opt) && regexResult[0]) {
- op.attribs = regexResult[1];
- op.lines = Changeset.parseNum(regexResult[2] || 0);
- op.opcode = regexResult[3];
- op.chars = Changeset.parseNum(regexResult[4]);
- regexResult = nextRegexMatch();
- }
- else {
- Changeset.clearOp(op);
- }
- return op;
- }
- function hasNext() { return !! (_opt ? regexResult : regexResult[0]); }
- function lastIndex() { return prevIndex; }
- return {next: next, hasNext: hasNext, lastIndex: lastIndex};
-};
-
-Changeset.clearOp = function(op) {
- op.opcode = '';
- op.chars = 0;
- op.lines = 0;
- op.attribs = '';
-};
-Changeset.newOp = function(optOpcode) {
- return {opcode:(optOpcode || ''), chars:0, lines:0, attribs:''};
-};
-Changeset.cloneOp = function(op) {
- return {opcode: op.opcode, chars: op.chars, lines: op.lines, attribs: op.attribs};
-};
-Changeset.copyOp = function(op1, op2) {
- op2.opcode = op1.opcode;
- op2.chars = op1.chars;
- op2.lines = op1.lines;
- op2.attribs = op1.attribs;
-};
-Changeset.opString = function(op) {
- // just for debugging
- if (! op.opcode) return 'null';
- var assem = Changeset.opAssembler();
- assem.append(op);
- return assem.toString();
-};
-Changeset.stringOp = function(str) {
- // just for debugging
- return Changeset.opIterator(str).next();
-};
-
-Changeset.checkRep = function(cs) {
- // doesn't check things that require access to attrib pool (e.g. attribute order)
- // or original string (e.g. newline positions)
- var unpacked = Changeset.unpack(cs);
- var oldLen = unpacked.oldLen;
- var newLen = unpacked.newLen;
- var ops = unpacked.ops;
- var charBank = unpacked.charBank;
-
- var assem = Changeset.smartOpAssembler();
- var oldPos = 0;
- var calcNewLen = 0;
- var numInserted = 0;
- var iter = Changeset.opIterator(ops);
- while (iter.hasNext()) {
- var o = iter.next();
- switch (o.opcode) {
- case '=': oldPos += o.chars; calcNewLen += o.chars; break;
- case '-': oldPos += o.chars; Changeset.assert(oldPos < oldLen, oldPos," >= ",oldLen," in ",cs); break;
- case '+': {
- calcNewLen += o.chars; numInserted += o.chars;
- Changeset.assert(calcNewLen < newLen, calcNewLen," >= ",newLen," in ",cs);
- break;
- }
- }
- assem.append(o);
- }
-
- calcNewLen += oldLen - oldPos;
- charBank = charBank.substring(0, numInserted);
- while (charBank.length < numInserted) {
- charBank += "?";
- }
-
- assem.endDocument();
- var normalized = Changeset.pack(oldLen, calcNewLen, assem.toString(), charBank);
- Changeset.assert(normalized == cs, normalized,' != ',cs);
-
- return cs;
-}
-
-Changeset.smartOpAssembler = function() {
- // Like opAssembler but able to produce conforming changesets
- // from slightly looser input, at the cost of speed.
- // Specifically:
- // - merges consecutive operations that can be merged
- // - strips final "="
- // - ignores 0-length changes
- // - reorders consecutive + and - (which margingOpAssembler doesn't do)
-
- var minusAssem = Changeset.mergingOpAssembler();
- var plusAssem = Changeset.mergingOpAssembler();
- var keepAssem = Changeset.mergingOpAssembler();
- var assem = Changeset.stringAssembler();
- var lastOpcode = '';
- var lengthChange = 0;
-
- function flushKeeps() {
- assem.append(keepAssem.toString());
- keepAssem.clear();
- }
-
- function flushPlusMinus() {
- assem.append(minusAssem.toString());
- minusAssem.clear();
- assem.append(plusAssem.toString());
- plusAssem.clear();
- }
-
- function append(op) {
- if (! op.opcode) return;
- if (! op.chars) return;
-
- if (op.opcode == '-') {
- if (lastOpcode == '=') {
- flushKeeps();
- }
- minusAssem.append(op);
- lengthChange -= op.chars;
- }
- else if (op.opcode == '+') {
- if (lastOpcode == '=') {
- flushKeeps();
- }
- plusAssem.append(op);
- lengthChange += op.chars;
- }
- else if (op.opcode == '=') {
- if (lastOpcode != '=') {
- flushPlusMinus();
- }
- keepAssem.append(op);
- }
- lastOpcode = op.opcode;
- }
-
- function appendOpWithText(opcode, text, attribs, pool) {
- var op = Changeset.newOp(opcode);
- op.attribs = Changeset.makeAttribsString(opcode, attribs, pool);
- var lastNewlinePos = text.lastIndexOf('\n');
- if (lastNewlinePos < 0) {
- op.chars = text.length;
- op.lines = 0;
- append(op);
- }
- else {
- op.chars = lastNewlinePos+1;
- op.lines = text.match(/\n/g).length;
- append(op);
- op.chars = text.length - (lastNewlinePos+1);
- op.lines = 0;
- append(op);
- }
- }
-
- function toString() {
- flushPlusMinus();
- flushKeeps();
- return assem.toString();
- }
-
- function clear() {
- minusAssem.clear();
- plusAssem.clear();
- keepAssem.clear();
- assem.clear();
- lengthChange = 0;
- }
-
- function endDocument() {
- keepAssem.endDocument();
- }
-
- function getLengthChange() {
- return lengthChange;
- }
-
- return {append: append, toString: toString, clear: clear, endDocument: endDocument,
- appendOpWithText: appendOpWithText, getLengthChange: getLengthChange };
-};
-
-if (_opt) {
- Changeset.mergingOpAssembler = function() {
- var assem = _opt.mergingOpAssembler();
-
- function append(op) {
- assem.append(op.opcode, op.chars, op.lines, op.attribs);
- }
- function toString() {
- return assem.toString();
- }
- function clear() {
- assem.clear();
- }
- function endDocument() {
- assem.endDocument();
- }
-
- return {append: append, toString: toString, clear: clear, endDocument: endDocument};
- };
-}
-else {
- Changeset.mergingOpAssembler = function() {
- // This assembler can be used in production; it efficiently
- // merges consecutive operations that are mergeable, ignores
- // no-ops, and drops final pure "keeps". It does not re-order
- // operations.
- var assem = Changeset.opAssembler();
- var bufOp = Changeset.newOp();
-
- // If we get, for example, insertions [xxx\n,yyy], those don't merge,
- // but if we get [xxx\n,yyy,zzz\n], that merges to [xxx\nyyyzzz\n].
- // This variable stores the length of yyy and any other newline-less
- // ops immediately after it.
- var bufOpAdditionalCharsAfterNewline = 0;
-
- function flush(isEndDocument) {
- if (bufOp.opcode) {
- if (isEndDocument && bufOp.opcode == '=' && ! bufOp.attribs) {
- // final merged keep, leave it implicit
- }
- else {
- assem.append(bufOp);
- if (bufOpAdditionalCharsAfterNewline) {
- bufOp.chars = bufOpAdditionalCharsAfterNewline;
- bufOp.lines = 0;
- assem.append(bufOp);
- bufOpAdditionalCharsAfterNewline = 0;
- }
- }
- bufOp.opcode = '';
- }
- }
- function append(op) {
- if (op.chars > 0) {
- if (bufOp.opcode == op.opcode && bufOp.attribs == op.attribs) {
- if (op.lines > 0) {
- // bufOp and additional chars are all mergeable into a multi-line op
- bufOp.chars += bufOpAdditionalCharsAfterNewline + op.chars;
- bufOp.lines += op.lines;
- bufOpAdditionalCharsAfterNewline = 0;
- }
- else if (bufOp.lines == 0) {
- // both bufOp and op are in-line
- bufOp.chars += op.chars;
- }
- else {
- // append in-line text to multi-line bufOp
- bufOpAdditionalCharsAfterNewline += op.chars;
- }
- }
- else {
- flush();
- Changeset.copyOp(op, bufOp);
- }
- }
- }
- function endDocument() {
- flush(true);
- }
- function toString() {
- flush();
- return assem.toString();
- }
- function clear() {
- assem.clear();
- Changeset.clearOp(bufOp);
- }
- return {append: append, toString: toString, clear: clear, endDocument: endDocument};
- };
-}
-
-if (_opt) {
- Changeset.opAssembler = function() {
- var assem = _opt.opAssembler();
- // this function allows op to be mutated later (doesn't keep a ref)
- function append(op) {
- assem.append(op.opcode, op.chars, op.lines, op.attribs);
- }
- function toString() {
- return assem.toString();
- }
- function clear() {
- assem.clear();
- }
- return {append: append, toString: toString, clear: clear};
- };
-}
-else {
- Changeset.opAssembler = function() {
- var pieces = [];
- // this function allows op to be mutated later (doesn't keep a ref)
- function append(op) {
- pieces.push(op.attribs);
- if (op.lines) {
- pieces.push('|', Changeset.numToString(op.lines));
- }
- pieces.push(op.opcode);
- pieces.push(Changeset.numToString(op.chars));
- }
- function toString() {
- return pieces.join('');
- }
- function clear() {
- pieces.length = 0;
- }
- return {append: append, toString: toString, clear: clear};
- };
-}
-
-Changeset.stringIterator = function(str) {
- var curIndex = 0;
- function assertRemaining(n) {
- Changeset.assert(n <= remaining(), "!(",n," <= ",remaining(),")");
- }
- function take(n) {
- assertRemaining(n);
- var s = str.substr(curIndex, n);
- curIndex += n;
- return s;
- }
- function peek(n) {
- assertRemaining(n);
- var s = str.substr(curIndex, n);
- return s;
- }
- function skip(n) {
- assertRemaining(n);
- curIndex += n;
- }
- function remaining() {
- return str.length - curIndex;
- }
- return {take:take, skip:skip, remaining:remaining, peek:peek};
-};
-
-Changeset.stringAssembler = function() {
- var pieces = [];
- function append(x) {
- pieces.push(String(x));
- }
- function toString() {
- return pieces.join('');
- }
- return {append: append, toString: toString};
-};
-
-// "lines" need not be an array as long as it supports certain calls (lines_foo inside).
-Changeset.textLinesMutator = function(lines) {
- // Mutates lines, an array of strings, in place.
- // Mutation operations have the same constraints as changeset operations
- // with respect to newlines, but not the other additional constraints
- // (i.e. ins/del ordering, forbidden no-ops, non-mergeability, final newline).
- // Can be used to mutate lists of strings where the last char of each string
- // is not actually a newline, but for the purposes of N and L values,
- // the caller should pretend it is, and for things to work right in that case, the input
- // to insert() should be a single line with no newlines.
-
- var curSplice = [0,0];
- var inSplice = false;
- // position in document after curSplice is applied:
- var curLine = 0, curCol = 0;
- // invariant: if (inSplice) then (curLine is in curSplice[0] + curSplice.length - {2,3}) &&
- // curLine >= curSplice[0]
- // invariant: if (inSplice && (curLine >= curSplice[0] + curSplice.length - 2)) then
- // curCol == 0
-
- function lines_applySplice(s) {
- lines.splice.apply(lines, s);
- }
- function lines_toSource() {
- return lines.toSource();
- }
- function lines_get(idx) {
- if (lines.get) {
- return lines.get(idx);
- }
- else {
- return lines[idx];
- }
- }
- // can be unimplemented if removeLines's return value not needed
- function lines_slice(start, end) {
- if (lines.slice) {
- return lines.slice(start, end);
- }
- else {
- return [];
- }
- }
- function lines_length() {
- if ((typeof lines.length) == "number") {
- return lines.length;
- }
- else {
- return lines.length();
- }
- }
-
- function enterSplice() {
- curSplice[0] = curLine;
- curSplice[1] = 0;
- if (curCol > 0) {
- putCurLineInSplice();
- }
- inSplice = true;
- }
- function leaveSplice() {
- lines_applySplice(curSplice);
- curSplice.length = 2;
- curSplice[0] = curSplice[1] = 0;
- inSplice = false;
- }
- function isCurLineInSplice() {
- return (curLine - curSplice[0] < (curSplice.length - 2));
- }
- function debugPrint(typ) {
- print(typ+": "+curSplice.toSource()+" / "+curLine+","+curCol+" / "+lines_toSource());
- }
- function putCurLineInSplice() {
- if (! isCurLineInSplice()) {
- curSplice.push(lines_get(curSplice[0] + curSplice[1]));
- curSplice[1]++;
- }
- return 2 + curLine - curSplice[0];
- }
-
- function skipLines(L, includeInSplice) {
- if (L) {
- if (includeInSplice) {
- if (! inSplice) {
- enterSplice();
- }
- for(var i=0;i<L;i++) {
- curCol = 0;
- putCurLineInSplice();
- curLine++;
- }
- }
- else {
- if (inSplice) {
- if (L > 1) {
- leaveSplice();
- }
- else {
- putCurLineInSplice();
- }
- }
- curLine += L;
- curCol = 0;
- }
- //print(inSplice+" / "+isCurLineInSplice()+" / "+curSplice[0]+" / "+curSplice[1]+" / "+lines.length);
- /*if (inSplice && (! isCurLineInSplice()) && (curSplice[0] + curSplice[1] < lines.length)) {
- print("BLAH");
- putCurLineInSplice();
- }*/ // tests case foo in remove(), which isn't otherwise covered in current impl
- }
- //debugPrint("skip");
- }
-
- function skip(N, L, includeInSplice) {
- if (N) {
- if (L) {
- skipLines(L, includeInSplice);
- }
- else {
- if (includeInSplice && ! inSplice) {
- enterSplice();
- }
- if (inSplice) {
- putCurLineInSplice();
- }
- curCol += N;
- //debugPrint("skip");
- }
- }
- }
-
- function removeLines(L) {
- var removed = '';
- if (L) {
- if (! inSplice) {
- enterSplice();
- }
- function nextKLinesText(k) {
- var m = curSplice[0] + curSplice[1];
- return lines_slice(m, m+k).join('');
- }
- if (isCurLineInSplice()) {
- //print(curCol);
- if (curCol == 0) {
- removed = curSplice[curSplice.length-1];
- // print("FOO"); // case foo
- curSplice.length--;
- removed += nextKLinesText(L-1);
- curSplice[1] += L-1;
- }
- else {
- removed = nextKLinesText(L-1);
- curSplice[1] += L-1;
- var sline = curSplice.length - 1;
- removed = curSplice[sline].substring(curCol) + removed;
- curSplice[sline] = curSplice[sline].substring(0, curCol) +
- lines_get(curSplice[0] + curSplice[1]);
- curSplice[1] += 1;
- }
- }
- else {
- removed = nextKLinesText(L);
- curSplice[1] += L;
- }
- //debugPrint("remove");
- }
- return removed;
- }
-
- function remove(N, L) {
- var removed = '';
- if (N) {
- if (L) {
- return removeLines(L);
- }
- else {
- if (! inSplice) {
- enterSplice();
- }
- var sline = putCurLineInSplice();
- removed = curSplice[sline].substring(curCol, curCol+N);
- curSplice[sline] = curSplice[sline].substring(0, curCol) +
- curSplice[sline].substring(curCol+N);
- //debugPrint("remove");
- }
- }
- return removed;
- }
-
- function insert(text, L) {
- if (text) {
- if (! inSplice) {
- enterSplice();
- }
- if (L) {
- var newLines = Changeset.splitTextLines(text);
- if (isCurLineInSplice()) {
- //if (curCol == 0) {
- //curSplice.length--;
- //curSplice[1]--;
- //Array.prototype.push.apply(curSplice, newLines);
- //curLine += newLines.length;
- //}
- //else {
- var sline = curSplice.length - 1;
- var theLine = curSplice[sline];
- var lineCol = curCol;
- curSplice[sline] = theLine.substring(0, lineCol) + newLines[0];
- curLine++;
- newLines.splice(0, 1);
- Array.prototype.push.apply(curSplice, newLines);
- curLine += newLines.length;
- curSplice.push(theLine.substring(lineCol));
- curCol = 0;
- //}
- }
- else {
- Array.prototype.push.apply(curSplice, newLines);
- curLine += newLines.length;
- }
- }
- else {
- var sline = putCurLineInSplice();
- curSplice[sline] = curSplice[sline].substring(0, curCol) +
- text + curSplice[sline].substring(curCol);
- curCol += text.length;
- }
- //debugPrint("insert");
- }
- }
-
- function hasMore() {
- //print(lines.length+" / "+inSplice+" / "+(curSplice.length - 2)+" / "+curSplice[1]);
- var docLines = lines_length();
- if (inSplice) {
- docLines += curSplice.length - 2 - curSplice[1];
- }
- return curLine < docLines;
- }
-
- function close() {
- if (inSplice) {
- leaveSplice();
- }
- //debugPrint("close");
- }
-
- var self = {skip:skip, remove:remove, insert:insert, close:close, hasMore:hasMore,
- removeLines:removeLines, skipLines: skipLines};
- return self;
-};
-
-Changeset.applyZip = function(in1, idx1, in2, idx2, func) {
- var iter1 = Changeset.opIterator(in1, idx1);
- var iter2 = Changeset.opIterator(in2, idx2);
- var assem = Changeset.smartOpAssembler();
- var op1 = Changeset.newOp();
- var op2 = Changeset.newOp();
- var opOut = Changeset.newOp();
- while (op1.opcode || iter1.hasNext() || op2.opcode || iter2.hasNext()) {
- if ((! op1.opcode) && iter1.hasNext()) iter1.next(op1);
- if ((! op2.opcode) && iter2.hasNext()) iter2.next(op2);
- func(op1, op2, opOut);
- if (opOut.opcode) {
- //print(opOut.toSource());
- assem.append(opOut);
- opOut.opcode = '';
- }
- }
- assem.endDocument();
- return assem.toString();
-};
-
-Changeset.unpack = function(cs) {
- var headerRegex = /Z:([0-9a-z]+)([><])([0-9a-z]+)|/;
- var headerMatch = headerRegex.exec(cs);
- if ((! headerMatch) || (! headerMatch[0])) {
- Changeset.error("Not a changeset: "+cs);
- }
- var oldLen = Changeset.parseNum(headerMatch[1]);
- var changeSign = (headerMatch[2] == '>') ? 1 : -1;
- var changeMag = Changeset.parseNum(headerMatch[3]);
- var newLen = oldLen + changeSign*changeMag;
- var opsStart = headerMatch[0].length;
- var opsEnd = cs.indexOf("$");
- if (opsEnd < 0) opsEnd = cs.length;
- return {oldLen: oldLen, newLen: newLen, ops: cs.substring(opsStart, opsEnd),
- charBank: cs.substring(opsEnd+1)};
-};
-
-Changeset.pack = function(oldLen, newLen, opsStr, bank) {
- var lenDiff = newLen - oldLen;
- var lenDiffStr = (lenDiff >= 0 ?
- '>'+Changeset.numToString(lenDiff) :
- '<'+Changeset.numToString(-lenDiff));
- var a = [];
- a.push('Z:', Changeset.numToString(oldLen), lenDiffStr, opsStr, '$', bank);
- return a.join('');
-};
-
-Changeset.applyToText = function(cs, str) {
- var unpacked = Changeset.unpack(cs);
- Changeset.assert(str.length == unpacked.oldLen,
- "mismatched apply: ",str.length," / ",unpacked.oldLen);
- var csIter = Changeset.opIterator(unpacked.ops);
- var bankIter = Changeset.stringIterator(unpacked.charBank);
- var strIter = Changeset.stringIterator(str);
- var assem = Changeset.stringAssembler();
- while (csIter.hasNext()) {
- var op = csIter.next();
- switch(op.opcode) {
- case '+': assem.append(bankIter.take(op.chars)); break;
- case '-': strIter.skip(op.chars); break;
- case '=': assem.append(strIter.take(op.chars)); break;
- }
- }
- assem.append(strIter.take(strIter.remaining()));
- return assem.toString();
-};
-
-Changeset.mutateTextLines = function(cs, lines) {
- var unpacked = Changeset.unpack(cs);
- var csIter = Changeset.opIterator(unpacked.ops);
- var bankIter = Changeset.stringIterator(unpacked.charBank);
- var mut = Changeset.textLinesMutator(lines);
- while (csIter.hasNext()) {
- var op = csIter.next();
- switch(op.opcode) {
- case '+': mut.insert(bankIter.take(op.chars), op.lines); break;
- case '-': mut.remove(op.chars, op.lines); break;
- case '=': mut.skip(op.chars, op.lines, (!! op.attribs)); break;
- }
- }
- mut.close();
-};
-
-Changeset.composeAttributes = function(att1, att2, resultIsMutation, pool) {
- // att1 and att2 are strings like "*3*f*1c", asMutation is a boolean.
-
- // Sometimes attribute (key,value) pairs are treated as attribute presence
- // information, while other times they are treated as operations that
- // mutate a set of attributes, and this affects whether an empty value
- // is a deletion or a change.
- // Examples, of the form (att1Items, att2Items, resultIsMutation) -> result
- // ([], [(bold, )], true) -> [(bold, )]
- // ([], [(bold, )], false) -> []
- // ([], [(bold, true)], true) -> [(bold, true)]
- // ([], [(bold, true)], false) -> [(bold, true)]
- // ([(bold, true)], [(bold, )], true) -> [(bold, )]
- // ([(bold, true)], [(bold, )], false) -> []
-
- // pool can be null if att2 has no attributes.
-
- if ((! att1) && resultIsMutation) {
- // In the case of a mutation (i.e. composing two changesets),
- // an att2 composed with an empy att1 is just att2. If att1
- // is part of an attribution string, then att2 may remove
- // attributes that are already gone, so don't do this optimization.
- return att2;
- }
- if (! att2) return att1;
- var atts = [];
- att1.replace(/\*([0-9a-z]+)/g, function(_, a) {
- atts.push(pool.getAttrib(Changeset.parseNum(a)));
- return '';
- });
- att2.replace(/\*([0-9a-z]+)/g, function(_, a) {
- var pair = pool.getAttrib(Changeset.parseNum(a));
- var found = false;
- for(var i=0;i<atts.length;i++) {
- var oldPair = atts[i];
- if (oldPair[0] == pair[0]) {
- if (pair[1] || resultIsMutation) {
- oldPair[1] = pair[1];
- }
- else {
- atts.splice(i, 1);
- }
- found = true;
- break;
- }
- }
- if ((! found) && (pair[1] || resultIsMutation)) {
- atts.push(pair);
- }
- return '';
- });
- atts.sort();
- var buf = Changeset.stringAssembler();
- for(var i=0;i<atts.length;i++) {
- buf.append('*');
- buf.append(Changeset.numToString(pool.putAttrib(atts[i])));
- }
- //print(att1+" / "+att2+" / "+buf.toString());
- return buf.toString();
-};
-
-Changeset._slicerZipperFunc = function(attOp, csOp, opOut, pool) {
- // attOp is the op from the sequence that is being operated on, either an
- // attribution string or the earlier of two changesets being composed.
- // pool can be null if definitely not needed.
-
- //print(csOp.toSource()+" "+attOp.toSource()+" "+opOut.toSource());
- if (attOp.opcode == '-') {
- Changeset.copyOp(attOp, opOut);
- attOp.opcode = '';
- }
- else if (! attOp.opcode) {
- Changeset.copyOp(csOp, opOut);
- csOp.opcode = '';
- }
- else {
- switch (csOp.opcode) {
- case '-': {
- if (csOp.chars <= attOp.chars) {
- // delete or delete part
- if (attOp.opcode == '=') {
- opOut.opcode = '-';
- opOut.chars = csOp.chars;
- opOut.lines = csOp.lines;
- opOut.attribs = '';
- }
- attOp.chars -= csOp.chars;
- attOp.lines -= csOp.lines;
- csOp.opcode = '';
- if (! attOp.chars) {
- attOp.opcode = '';
- }
- }
- else {
- // delete and keep going
- if (attOp.opcode == '=') {
- opOut.opcode = '-';
- opOut.chars = attOp.chars;
- opOut.lines = attOp.lines;
- opOut.attribs = '';
- }
- csOp.chars -= attOp.chars;
- csOp.lines -= attOp.lines;
- attOp.opcode = '';
- }
- break;
- }
- case '+': {
- // insert
- Changeset.copyOp(csOp, opOut);
- csOp.opcode = '';
- break;
- }
- case '=': {
- if (csOp.chars <= attOp.chars) {
- // keep or keep part
- opOut.opcode = attOp.opcode;
- opOut.chars = csOp.chars;
- opOut.lines = csOp.lines;
- opOut.attribs = Changeset.composeAttributes(attOp.attribs, csOp.attribs,
- attOp.opcode == '=', pool);
- csOp.opcode = '';
- attOp.chars -= csOp.chars;
- attOp.lines -= csOp.lines;
- if (! attOp.chars) {
- attOp.opcode = '';
- }
- }
- else {
- // keep and keep going
- opOut.opcode = attOp.opcode;
- opOut.chars = attOp.chars;
- opOut.lines = attOp.lines;
- opOut.attribs = Changeset.composeAttributes(attOp.attribs, csOp.attribs,
- attOp.opcode == '=', pool);
- attOp.opcode = '';
- csOp.chars -= attOp.chars;
- csOp.lines -= attOp.lines;
- }
- break;
- }
- case '': {
- Changeset.copyOp(attOp, opOut);
- attOp.opcode = '';
- break;
- }
- }
- }
-};
-
-Changeset.applyToAttribution = function(cs, astr, pool) {
- var unpacked = Changeset.unpack(cs);
-
- return Changeset.applyZip(astr, 0, unpacked.ops, 0, function(op1, op2, opOut) {
- return Changeset._slicerZipperFunc(op1, op2, opOut, pool);
- });
-};
-
-/*Changeset.oneInsertedLineAtATimeOpIterator = function(opsStr, optStartIndex, charBank) {
- var iter = Changeset.opIterator(opsStr, optStartIndex);
- var bankIndex = 0;
-
-};*/
-
-Changeset.mutateAttributionLines = function(cs, lines, pool) {
- //dmesg(cs);
- //dmesg(lines.toSource()+" ->");
-
- var unpacked = Changeset.unpack(cs);
- var csIter = Changeset.opIterator(unpacked.ops);
- var csBank = unpacked.charBank;
- var csBankIndex = 0;
- // treat the attribution lines as text lines, mutating a line at a time
- var mut = Changeset.textLinesMutator(lines);
-
- var lineIter = null;
- function isNextMutOp() {
- return (lineIter && lineIter.hasNext()) || mut.hasMore();
- }
- function nextMutOp(destOp) {
- if ((!(lineIter && lineIter.hasNext())) && mut.hasMore()) {
- var line = mut.removeLines(1);
- lineIter = Changeset.opIterator(line);
- }
- if (lineIter && lineIter.hasNext()) {
- lineIter.next(destOp);
- }
- else {
- destOp.opcode = '';
- }
- }
- var lineAssem = null;
- function outputMutOp(op) {
- //print("outputMutOp: "+op.toSource());
- if (! lineAssem) {
- lineAssem = Changeset.mergingOpAssembler();
- }
- lineAssem.append(op);
- if (op.lines > 0) {
- Changeset.assert(op.lines == 1, "Can't have op.lines of ",op.lines," in attribution lines");
- // ship it to the mut
- mut.insert(lineAssem.toString(), 1);
- lineAssem = null;
- }
- }
-
- var csOp = Changeset.newOp();
- var attOp = Changeset.newOp();
- var opOut = Changeset.newOp();
- while (csOp.opcode || csIter.hasNext() || attOp.opcode || isNextMutOp()) {
- if ((! csOp.opcode) && csIter.hasNext()) {
- csIter.next(csOp);
- }
- //print(csOp.toSource()+" "+attOp.toSource()+" "+opOut.toSource());
- //print(csOp.opcode+"/"+csOp.lines+"/"+csOp.attribs+"/"+lineAssem+"/"+lineIter+"/"+(lineIter?lineIter.hasNext():null));
- //print("csOp: "+csOp.toSource());
- if ((! csOp.opcode) && (! attOp.opcode) &&
- (! lineAssem) && (! (lineIter && lineIter.hasNext()))) {
- break; // done
- }
- else if (csOp.opcode == '=' && csOp.lines > 0 && (! csOp.attribs) && (! attOp.opcode) &&
- (! lineAssem) && (! (lineIter && lineIter.hasNext()))) {
- // skip multiple lines; this is what makes small changes not order of the document size
- mut.skipLines(csOp.lines);
- //print("skipped: "+csOp.lines);
- csOp.opcode = '';
- }
- else if (csOp.opcode == '+') {
- if (csOp.lines > 1) {
- var firstLineLen = csBank.indexOf('\n', csBankIndex) + 1 - csBankIndex;
- Changeset.copyOp(csOp, opOut);
- csOp.chars -= firstLineLen;
- csOp.lines--;
- opOut.lines = 1;
- opOut.chars = firstLineLen;
- }
- else {
- Changeset.copyOp(csOp, opOut);
- csOp.opcode = '';
- }
- outputMutOp(opOut);
- csBankIndex += opOut.chars;
- opOut.opcode = '';
- }
- else {
- if ((! attOp.opcode) && isNextMutOp()) {
- nextMutOp(attOp);
- }
- //print("attOp: "+attOp.toSource());
- Changeset._slicerZipperFunc(attOp, csOp, opOut, pool);
- if (opOut.opcode) {
- outputMutOp(opOut);
- opOut.opcode = '';
- }
- }
- }
-
- Changeset.assert(! lineAssem, "line assembler not finished");
- mut.close();
-
- //dmesg("-> "+lines.toSource());
-};
-
-Changeset.joinAttributionLines = function(theAlines) {
- var assem = Changeset.mergingOpAssembler();
- for(var i=0;i<theAlines.length;i++) {
- var aline = theAlines[i];
- var iter = Changeset.opIterator(aline);
- while (iter.hasNext()) {
- assem.append(iter.next());
- }
- }
- return assem.toString();
-};
-
-Changeset.splitAttributionLines = function(attrOps, text) {
- var iter = Changeset.opIterator(attrOps);
- var assem = Changeset.mergingOpAssembler();
- var lines = [];
- var pos = 0;
-
- function appendOp(op) {
- assem.append(op);
- if (op.lines > 0) {
- lines.push(assem.toString());
- assem.clear();
- }
- pos += op.chars;
- }
-
- while (iter.hasNext()) {
- var op = iter.next();
- var numChars = op.chars;
- var numLines = op.lines;
- while (numLines > 1) {
- var newlineEnd = text.indexOf('\n', pos)+1;
- Changeset.assert(newlineEnd > 0, "newlineEnd <= 0 in splitAttributionLines");
- op.chars = newlineEnd - pos;
- op.lines = 1;
- appendOp(op);
- numChars -= op.chars;
- numLines -= op.lines;
- }
- if (numLines == 1) {
- op.chars = numChars;
- op.lines = 1;
- }
- appendOp(op);
- }
-
- return lines;
-};
-
-Changeset.splitTextLines = function(text) {
- return text.match(/[^\n]*(?:\n|[^\n]$)/g);
-};
-
-Changeset.compose = function(cs1, cs2, pool) {
- var unpacked1 = Changeset.unpack(cs1);
- var unpacked2 = Changeset.unpack(cs2);
- var len1 = unpacked1.oldLen;
- var len2 = unpacked1.newLen;
- Changeset.assert(len2 == unpacked2.oldLen, "mismatched composition");
- var len3 = unpacked2.newLen;
- var bankIter1 = Changeset.stringIterator(unpacked1.charBank);
- var bankIter2 = Changeset.stringIterator(unpacked2.charBank);
- var bankAssem = Changeset.stringAssembler();
-
- var newOps = Changeset.applyZip(unpacked1.ops, 0, unpacked2.ops, 0, function(op1, op2, opOut) {
- //var debugBuilder = Changeset.stringAssembler();
- //debugBuilder.append(Changeset.opString(op1));
- //debugBuilder.append(',');
- //debugBuilder.append(Changeset.opString(op2));
- //debugBuilder.append(' / ');
-
- var op1code = op1.opcode;
- var op2code = op2.opcode;
- if (op1code == '+' && op2code == '-') {
- bankIter1.skip(Math.min(op1.chars, op2.chars));
- }
- Changeset._slicerZipperFunc(op1, op2, opOut, pool);
- if (opOut.opcode == '+') {
- if (op2code == '+') {
- bankAssem.append(bankIter2.take(opOut.chars));
- }
- else {
- bankAssem.append(bankIter1.take(opOut.chars));
- }
- }
-
- //debugBuilder.append(Changeset.opString(op1));
- //debugBuilder.append(',');
- //debugBuilder.append(Changeset.opString(op2));
- //debugBuilder.append(' -> ');
- //debugBuilder.append(Changeset.opString(opOut));
- //print(debugBuilder.toString());
- });
-
- return Changeset.pack(len1, len3, newOps, bankAssem.toString());
-};
-
-Changeset.attributeTester = function(attribPair, pool) {
- // returns a function that tests if a string of attributes
- // (e.g. *3*4) contains a given attribute key,value that
- // is already present in the pool.
- if (! pool) {
- return never;
- }
- var attribNum = pool.putAttrib(attribPair, true);
- if (attribNum < 0) {
- return never;
- }
- else {
- var re = new RegExp('\\*'+Changeset.numToString(attribNum)+
- '(?!\\w)');
- return function(attribs) {
- return re.test(attribs);
- };
- }
- function never(attribs) { return false; }
-};
-
-Changeset.identity = function(N) {
- return Changeset.pack(N, N, "", "");
-};
-
-Changeset.makeSplice = function(oldFullText, spliceStart, numRemoved, newText, optNewTextAPairs, pool) {
- var oldLen = oldFullText.length;
-
- if (spliceStart >= oldLen) {
- spliceStart = oldLen - 1;
- }
- if (numRemoved > oldFullText.length - spliceStart - 1) {
- numRemoved = oldFullText.length - spliceStart - 1;
- }
- var oldText = oldFullText.substring(spliceStart, spliceStart+numRemoved);
- var newLen = oldLen + newText.length - oldText.length;
-
- var assem = Changeset.smartOpAssembler();
- assem.appendOpWithText('=', oldFullText.substring(0, spliceStart));
- assem.appendOpWithText('-', oldText);
- assem.appendOpWithText('+', newText, optNewTextAPairs, pool);
- assem.endDocument();
- return Changeset.pack(oldLen, newLen, assem.toString(), newText);
-};
-
-Changeset.toSplices = function(cs) {
- // get a list of splices, [startChar, endChar, newText]
-
- var unpacked = Changeset.unpack(cs);
- var splices = [];
-
- var oldPos = 0;
- var iter = Changeset.opIterator(unpacked.ops);
- var charIter = Changeset.stringIterator(unpacked.charBank);
- var inSplice = false;
- while (iter.hasNext()) {
- var op = iter.next();
- if (op.opcode == '=') {
- oldPos += op.chars;
- inSplice = false;
- }
- else {
- if (! inSplice) {
- splices.push([oldPos, oldPos, ""]);
- inSplice = true;
- }
- if (op.opcode == '-') {
- oldPos += op.chars;
- splices[splices.length-1][1] += op.chars;
- }
- else if (op.opcode == '+') {
- splices[splices.length-1][2] += charIter.take(op.chars);
- }
- }
- }
-
- return splices;
-};
-
-Changeset.characterRangeFollow = function(cs, startChar, endChar, insertionsAfter) {
- var newStartChar = startChar;
- var newEndChar = endChar;
- var splices = Changeset.toSplices(cs);
- var lengthChangeSoFar = 0;
- for(var i=0;i<splices.length;i++) {
- var splice = splices[i];
- var spliceStart = splice[0] + lengthChangeSoFar;
- var spliceEnd = splice[1] + lengthChangeSoFar;
- var newTextLength = splice[2].length;
- var thisLengthChange = newTextLength - (spliceEnd - spliceStart);
-
- if (spliceStart <= newStartChar && spliceEnd >= newEndChar) {
- // splice fully replaces/deletes range
- // (also case that handles insertion at a collapsed selection)
- if (insertionsAfter) {
- newStartChar = newEndChar = spliceStart;
- }
- else {
- newStartChar = newEndChar = spliceStart + newTextLength;
- }
- }
- else if (spliceEnd <= newStartChar) {
- // splice is before range
- newStartChar += thisLengthChange;
- newEndChar += thisLengthChange;
- }
- else if (spliceStart >= newEndChar) {
- // splice is after range
- }
- else if (spliceStart >= newStartChar && spliceEnd <= newEndChar) {
- // splice is inside range
- newEndChar += thisLengthChange;
- }
- else if (spliceEnd < newEndChar) {
- // splice overlaps beginning of range
- newStartChar = spliceStart + newTextLength;
- newEndChar += thisLengthChange;
- }
- else {
- // splice overlaps end of range
- newEndChar = spliceStart;
- }
-
- lengthChangeSoFar += thisLengthChange;
- }
-
- return [newStartChar, newEndChar];
-};
-
-Changeset.moveOpsToNewPool = function(cs, oldPool, newPool) {
- // works on changeset or attribution string
- var dollarPos = cs.indexOf('$');
- if (dollarPos < 0) {
- dollarPos = cs.length;
- }
- var upToDollar = cs.substring(0, dollarPos);
- var fromDollar = cs.substring(dollarPos);
- // order of attribs stays the same
- return upToDollar.replace(/\*([0-9a-z]+)/g, function(_, a) {
- var oldNum = Changeset.parseNum(a);
- var pair = oldPool.getAttrib(oldNum);
- var newNum = newPool.putAttrib(pair);
- return '*'+Changeset.numToString(newNum);
- }) + fromDollar;
-};
-
-Changeset.makeAttribution = function(text) {
- var assem = Changeset.smartOpAssembler();
- assem.appendOpWithText('+', text);
- return assem.toString();
-};
-
-// callable on a changeset, attribution string, or attribs property of an op
-Changeset.eachAttribNumber = function(cs, func) {
- var dollarPos = cs.indexOf('$');
- if (dollarPos < 0) {
- dollarPos = cs.length;
- }
- var upToDollar = cs.substring(0, dollarPos);
-
- upToDollar.replace(/\*([0-9a-z]+)/g, function(_, a) {
- func(Changeset.parseNum(a));
- return '';
- });
-};
-
-// callable on a changeset, attribution string, or attribs property of an op,
-// though it may easily create adjacent ops that can be merged.
-Changeset.filterAttribNumbers = function(cs, filter) {
- return Changeset.mapAttribNumbers(cs, filter);
-};
-
-Changeset.mapAttribNumbers = function(cs, func) {
- var dollarPos = cs.indexOf('$');
- if (dollarPos < 0) {
- dollarPos = cs.length;
- }
- var upToDollar = cs.substring(0, dollarPos);
-
- var newUpToDollar = upToDollar.replace(/\*([0-9a-z]+)/g, function(s, a) {
- var n = func(Changeset.parseNum(a));
- if (n === true) {
- return s;
- }
- else if ((typeof n) === "number") {
- return '*'+Changeset.numToString(n);
- }
- else {
- return '';
- }
- });
-
- return newUpToDollar + cs.substring(dollarPos);
-};
-
-Changeset.makeAText = function(text, attribs) {
- return { text: text, attribs: (attribs || Changeset.makeAttribution(text)) };
-};
-
-Changeset.applyToAText = function(cs, atext, pool) {
- return { text: Changeset.applyToText(cs, atext.text),
- attribs: Changeset.applyToAttribution(cs, atext.attribs, pool) };
-};
-
-Changeset.cloneAText = function(atext) {
- return { text: atext.text, attribs: atext.attribs };
-};
-
-Changeset.copyAText = function(atext1, atext2) {
- atext2.text = atext1.text;
- atext2.attribs = atext1.attribs;
-};
-
-Changeset.appendATextToAssembler = function(atext, assem) {
- // intentionally skips last newline char of atext
- var iter = Changeset.opIterator(atext.attribs);
- var op = Changeset.newOp();
- while (iter.hasNext()) {
- iter.next(op);
- if (! iter.hasNext()) {
- // last op, exclude final newline
- if (op.lines <= 1) {
- op.lines = 0;
- op.chars--;
- if (op.chars) {
- assem.append(op);
- }
- }
- else {
- var nextToLastNewlineEnd =
- atext.text.lastIndexOf('\n', atext.text.length-2) + 1;
- var lastLineLength = atext.text.length - nextToLastNewlineEnd - 1;
- op.lines--;
- op.chars -= (lastLineLength + 1);
- assem.append(op);
- op.lines = 0;
- op.chars = lastLineLength;
- if (op.chars) {
- assem.append(op);
- }
- }
- }
- else {
- assem.append(op);
- }
- }
-};
-
-Changeset.prepareForWire = function(cs, pool) {
- var newPool = new AttribPool();
- var newCs = Changeset.moveOpsToNewPool(cs, pool, newPool);
- return {translated: newCs, pool: newPool};
-};
-
-Changeset.isIdentity = function(cs) {
- var unpacked = Changeset.unpack(cs);
- return unpacked.ops == "" && unpacked.oldLen == unpacked.newLen;
-};
-
-Changeset.opAttributeValue = function(op, key, pool) {
- return Changeset.attribsAttributeValue(op.attribs, key, pool);
-};
-
-Changeset.attribsAttributeValue = function(attribs, key, pool) {
- var value = '';
- if (attribs) {
- Changeset.eachAttribNumber(attribs, function(n) {
- if (pool.getAttribKey(n) == key) {
- value = pool.getAttribValue(n);
- }
- });
- }
- return value;
-};
-
-Changeset.builder = function(oldLen) {
- var assem = Changeset.smartOpAssembler();
- var o = Changeset.newOp();
- var charBank = Changeset.stringAssembler();
-
- var self = {
- // attribs are [[key1,value1],[key2,value2],...] or '*0*1...' (no pool needed in latter case)
- keep: function(N, L, attribs, pool) {
- o.opcode = '=';
- o.attribs = (attribs &&
- Changeset.makeAttribsString('=', attribs, pool)) || '';
- o.chars = N;
- o.lines = (L || 0);
- assem.append(o);
- return self;
- },
- keepText: function(text, attribs, pool) {
- assem.appendOpWithText('=', text, attribs, pool);
- return self;
- },
- insert: function(text, attribs, pool) {
- assem.appendOpWithText('+', text, attribs, pool);
- charBank.append(text);
- return self;
- },
- remove: function(N, L) {
- o.opcode = '-';
- o.attribs = '';
- o.chars = N;
- o.lines = (L || 0);
- assem.append(o);
- return self;
- },
- toString: function() {
- assem.endDocument();
- var newLen = oldLen + assem.getLengthChange();
- return Changeset.pack(oldLen, newLen, assem.toString(),
- charBank.toString());
- }
- };
-
- return self;
-};
-
-Changeset.makeAttribsString = function(opcode, attribs, pool) {
- // makeAttribsString(opcode, '*3') or makeAttribsString(opcode, [['foo','bar']], myPool) work
- if (! attribs) {
- return '';
- }
- else if ((typeof attribs) == "string") {
- return attribs;
- }
- else if (pool && attribs && attribs.length) {
- if (attribs.length > 1) {
- attribs = attribs.slice();
- attribs.sort();
- }
- var result = [];
- for(var i=0;i<attribs.length;i++) {
- var pair = attribs[i];
- if (opcode == '=' || (opcode == '+' && pair[1])) {
- result.push('*'+Changeset.numToString(pool.putAttrib(pair)));
- }
- }
- return result.join('');
- }
-};
-
-// like "substring" but on a single-line attribution string
-Changeset.subattribution = function(astr, start, optEnd) {
- var iter = Changeset.opIterator(astr, 0);
- var assem = Changeset.smartOpAssembler();
- var attOp = Changeset.newOp();
- var csOp = Changeset.newOp();
- var opOut = Changeset.newOp();
-
- function doCsOp() {
- if (csOp.chars) {
- while (csOp.opcode && (attOp.opcode || iter.hasNext())) {
- if (! attOp.opcode) iter.next(attOp);
-
- if (csOp.opcode && attOp.opcode && csOp.chars >= attOp.chars &&
- attOp.lines > 0 && csOp.lines <= 0) {
- csOp.lines++;
- }
-
- Changeset._slicerZipperFunc(attOp, csOp, opOut, null);
- if (opOut.opcode) {
- assem.append(opOut);
- opOut.opcode = '';
- }
- }
- }
- }
-
- csOp.opcode = '-';
- csOp.chars = start;
-
- doCsOp();
-
- if (optEnd === undefined) {
- if (attOp.opcode) {
- assem.append(attOp);
- }
- while (iter.hasNext()) {
- iter.next(attOp);
- assem.append(attOp);
- }
- }
- else {
- csOp.opcode = '=';
- csOp.chars = optEnd - start;
- doCsOp();
- }
-
- return assem.toString();
-};
-
-Changeset.inverse = function(cs, lines, alines, pool) {
- // lines and alines are what the changeset is meant to apply to.
- // They may be arrays or objects with .get(i) and .length methods.
- // They include final newlines on lines.
- function lines_get(idx) {
- if (lines.get) {
- return lines.get(idx);
- }
- else {
- return lines[idx];
- }
- }
- function lines_length() {
- if ((typeof lines.length) == "number") {
- return lines.length;
- }
- else {
- return lines.length();
- }
- }
- function alines_get(idx) {
- if (alines.get) {
- return alines.get(idx);
- }
- else {
- return alines[idx];
- }
- }
- function alines_length() {
- if ((typeof alines.length) == "number") {
- return alines.length;
- }
- else {
- return alines.length();
- }
- }
-
- var curLine = 0;
- var curChar = 0;
- var curLineOpIter = null;
- var curLineOpIterLine;
- var curLineNextOp = Changeset.newOp('+');
-
- var unpacked = Changeset.unpack(cs);
- var csIter = Changeset.opIterator(unpacked.ops);
- var builder = Changeset.builder(unpacked.newLen);
-
- function consumeAttribRuns(numChars, func/*(len, attribs, endsLine)*/) {
-
- if ((! curLineOpIter) || (curLineOpIterLine != curLine)) {
- // create curLineOpIter and advance it to curChar
- curLineOpIter = Changeset.opIterator(alines_get(curLine));
- curLineOpIterLine = curLine;
- var indexIntoLine = 0;
- var done = false;
- while (! done) {
- curLineOpIter.next(curLineNextOp);
- if (indexIntoLine + curLineNextOp.chars >= curChar) {
- curLineNextOp.chars -= (curChar - indexIntoLine);
- done = true;
- }
- else {
- indexIntoLine += curLineNextOp.chars;
- }
- }
- }
-
- while (numChars > 0) {
- if ((! curLineNextOp.chars) && (! curLineOpIter.hasNext())) {
- curLine++;
- curChar = 0;
- curLineOpIterLine = curLine;
- curLineNextOp.chars = 0;
- curLineOpIter = Changeset.opIterator(alines_get(curLine));
- }
- if (! curLineNextOp.chars) {
- curLineOpIter.next(curLineNextOp);
- }
- var charsToUse = Math.min(numChars, curLineNextOp.chars);
- func(charsToUse, curLineNextOp.attribs,
- charsToUse == curLineNextOp.chars && curLineNextOp.lines > 0);
- numChars -= charsToUse;
- curLineNextOp.chars -= charsToUse;
- curChar += charsToUse;
- }
-
- if ((! curLineNextOp.chars) && (! curLineOpIter.hasNext())) {
- curLine++;
- curChar = 0;
- }
- }
-
- function skip(N, L) {
- if (L) {
- curLine += L;
- curChar = 0;
- }
- else {
- if (curLineOpIter && curLineOpIterLine == curLine) {
- consumeAttribRuns(N, function() {});
- }
- else {
- curChar += N;
- }
- }
- }
-
- function nextText(numChars) {
- var len = 0;
- var assem = Changeset.stringAssembler();
- var firstString = lines_get(curLine).substring(curChar);
- len += firstString.length;
- assem.append(firstString);
-
- var lineNum = curLine+1;
- while (len < numChars) {
- var nextString = lines_get(lineNum);
- len += nextString.length;
- assem.append(nextString);
- lineNum++;
- }
-
- return assem.toString().substring(0, numChars);
- }
-
- function cachedStrFunc(func) {
- var cache = {};
- return function(s) {
- if (! cache[s]) {
- cache[s] = func(s);
- }
- return cache[s];
- };
- }
-
- var attribKeys = [];
- var attribValues = [];
- while (csIter.hasNext()) {
- var csOp = csIter.next();
- if (csOp.opcode == '=') {
- if (csOp.attribs) {
- attribKeys.length = 0;
- attribValues.length = 0;
- Changeset.eachAttribNumber(csOp.attribs, function(n) {
- attribKeys.push(pool.getAttribKey(n));
- attribValues.push(pool.getAttribValue(n));
- });
- var undoBackToAttribs = cachedStrFunc(function(attribs) {
- var backAttribs = [];
- for(var i=0;i<attribKeys.length;i++) {
- var appliedKey = attribKeys[i];
- var appliedValue = attribValues[i];
- var oldValue = Changeset.attribsAttributeValue(attribs, appliedKey, pool);
- if (appliedValue != oldValue) {
- backAttribs.push([appliedKey, oldValue]);
- }
- }
- return Changeset.makeAttribsString('=', backAttribs, pool);
- });
- consumeAttribRuns(csOp.chars, function(len, attribs, endsLine) {
- builder.keep(len, endsLine ? 1 : 0, undoBackToAttribs(attribs));
- });
- }
- else {
- skip(csOp.chars, csOp.lines);
- builder.keep(csOp.chars, csOp.lines);
- }
- }
- else if (csOp.opcode == '+') {
- builder.remove(csOp.chars, csOp.lines);
- }
- else if (csOp.opcode == '-') {
- var textBank = nextText(csOp.chars);
- var textBankIndex = 0;
- consumeAttribRuns(csOp.chars, function(len, attribs, endsLine) {
- builder.insert(textBank.substr(textBankIndex, len), attribs);
- textBankIndex += len;
- });
- }
- }
-
- return Changeset.checkRep(builder.toString());
-};
-
-// %CLIENT FILE ENDS HERE%
-
-Changeset.follow = function(cs1, cs2, reverseInsertOrder, pool) {
- var unpacked1 = Changeset.unpack(cs1);
- var unpacked2 = Changeset.unpack(cs2);
- var len1 = unpacked1.oldLen;
- var len2 = unpacked2.oldLen;
- Changeset.assert(len1 == len2, "mismatched follow");
- var chars1 = Changeset.stringIterator(unpacked1.charBank);
- var chars2 = Changeset.stringIterator(unpacked2.charBank);
-
- var oldLen = unpacked1.newLen;
- var oldPos = 0;
- var newLen = 0;
-
- var hasInsertFirst = Changeset.attributeTester(['insertorder','first'],
- pool);
-
- var newOps = Changeset.applyZip(unpacked1.ops, 0, unpacked2.ops, 0, function(op1, op2, opOut) {
- if (op1.opcode == '+' || op2.opcode == '+') {
- var whichToDo;
- if (op2.opcode != '+') {
- whichToDo = 1;
- }
- else if (op1.opcode != '+') {
- whichToDo = 2;
- }
- else {
- // both +
- var firstChar1 = chars1.peek(1);
- var firstChar2 = chars2.peek(1);
- var insertFirst1 = hasInsertFirst(op1.attribs);
- var insertFirst2 = hasInsertFirst(op2.attribs);
- if (insertFirst1 && ! insertFirst2) {
- whichToDo = 1;
- }
- else if (insertFirst2 && ! insertFirst1) {
- whichToDo = 2;
- }
- // insert string that doesn't start with a newline first so as not to break up lines
- else if (firstChar1 == '\n' && firstChar2 != '\n') {
- whichToDo = 2;
- }
- else if (firstChar1 != '\n' && firstChar2 == '\n') {
- whichToDo = 1;
- }
- // break symmetry:
- else if (reverseInsertOrder) {
- whichToDo = 2;
- }
- else {
- whichToDo = 1;
- }
- }
- if (whichToDo == 1) {
- chars1.skip(op1.chars);
- opOut.opcode = '=';
- opOut.lines = op1.lines;
- opOut.chars = op1.chars;
- opOut.attribs = '';
- op1.opcode = '';
- }
- else {
- // whichToDo == 2
- chars2.skip(op2.chars);
- Changeset.copyOp(op2, opOut);
- op2.opcode = '';
- }
- }
- else if (op1.opcode == '-') {
- if (! op2.opcode) {
- op1.opcode = '';
- }
- else {
- if (op1.chars <= op2.chars) {
- op2.chars -= op1.chars;
- op2.lines -= op1.lines;
- op1.opcode = '';
- if (! op2.chars) {
- op2.opcode = '';
- }
- }
- else {
- op1.chars -= op2.chars;
- op1.lines -= op2.lines;
- op2.opcode = '';
- }
- }
- }
- else if (op2.opcode == '-') {
- Changeset.copyOp(op2, opOut);
- if (! op1.opcode) {
- op2.opcode = '';
- }
- else if (op2.chars <= op1.chars) {
- // delete part or all of a keep
- op1.chars -= op2.chars;
- op1.lines -= op2.lines;
- op2.opcode = '';
- if (! op1.chars) {
- op1.opcode = '';
- }
- }
- else {
- // delete all of a keep, and keep going
- opOut.lines = op1.lines;
- opOut.chars = op1.chars;
- op2.lines -= op1.lines;
- op2.chars -= op1.chars;
- op1.opcode = '';
- }
- }
- else if (! op1.opcode) {
- Changeset.copyOp(op2, opOut);
- op2.opcode = '';
- }
- else if (! op2.opcode) {
- Changeset.copyOp(op1, opOut);
- op1.opcode = '';
- }
- else {
- // both keeps
- opOut.opcode = '=';
- opOut.attribs = Changeset.followAttributes(op1.attribs, op2.attribs, pool);
- if (op1.chars <= op2.chars) {
- opOut.chars = op1.chars;
- opOut.lines = op1.lines;
- op2.chars -= op1.chars;
- op2.lines -= op1.lines;
- op1.opcode = '';
- if (! op2.chars) {
- op2.opcode = '';
- }
- }
- else {
- opOut.chars = op2.chars;
- opOut.lines = op2.lines;
- op1.chars -= op2.chars;
- op1.lines -= op2.lines;
- op2.opcode = '';
- }
- }
- switch (opOut.opcode) {
- case '=': oldPos += opOut.chars; newLen += opOut.chars; break;
- case '-': oldPos += opOut.chars; break;
- case '+': newLen += opOut.chars; break;
- }
- });
- newLen += oldLen - oldPos;
-
- return Changeset.pack(oldLen, newLen, newOps, unpacked2.charBank);
-};
-
-Changeset.followAttributes = function(att1, att2, pool) {
- // The merge of two sets of attribute changes to the same text
- // takes the lexically-earlier value if there are two values
- // for the same key. Otherwise, all key/value changes from
- // both attribute sets are taken. This operation is the "follow",
- // so a set of changes is produced that can be applied to att1
- // to produce the merged set.
- if ((! att2) || (! pool)) return '';
- if (! att1) return att2;
- var atts = [];
- att2.replace(/\*([0-9a-z]+)/g, function(_, a) {
- atts.push(pool.getAttrib(Changeset.parseNum(a)));
- return '';
- });
- att1.replace(/\*([0-9a-z]+)/g, function(_, a) {
- var pair1 = pool.getAttrib(Changeset.parseNum(a));
- for(var i=0;i<atts.length;i++) {
- var pair2 = atts[i];
- if (pair1[0] == pair2[0]) {
- if (pair1[1] <= pair2[1]) {
- // winner of merge is pair1, delete this attribute
- atts.splice(i, 1);
- }
- break;
- }
- }
- return '';
- });
- // we've only removed attributes, so they're already sorted
- var buf = Changeset.stringAssembler();
- for(var i=0;i<atts.length;i++) {
- buf.append('*');
- buf.append(Changeset.numToString(pool.putAttrib(atts[i])));
- }
- return buf.toString();
-};
diff --git a/trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js b/trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js
deleted file mode 100644
index 7a23dc0..0000000
--- a/trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js
+++ /dev/null
@@ -1,877 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/easysync2_tests.js
-import("etherpad.collab.ace.easysync2.*")
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT 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 runTests() {
-
- function print(str) {
- java.lang.System.out.println(str);
- }
-
- function assert(code, optMsg) {
- if (! eval(code)) throw new Error("FALSE: "+(optMsg || code));
- }
- function literal(v) {
- if ((typeof v) == "string") {
- return '"'+v.replace(/[\\\"]/g, '\\$1').replace(/\n/g, '\\n')+'"';
- }
- else return v.toSource();
- }
- function assertEqualArrays(a, b) {
- assert(literal(a)+".toSource() == "+literal(b)+".toSource()");
- }
- function assertEqualStrings(a, b) {
- assert(literal(a)+" == "+literal(b));
- }
-
- function throughIterator(opsStr) {
- var iter = Changeset.opIterator(opsStr);
- var assem = Changeset.opAssembler();
- while (iter.hasNext()) {
- assem.append(iter.next());
- }
- return assem.toString();
- }
-
- function throughSmartAssembler(opsStr) {
- var iter = Changeset.opIterator(opsStr);
- var assem = Changeset.smartOpAssembler();
- while (iter.hasNext()) {
- assem.append(iter.next());
- }
- assem.endDocument();
- return assem.toString();
- }
-
- (function() {
- print("> throughIterator");
- var x = '-c*3*4+6|3=az*asdf0*1*2*3+1=1-1+1*0+1=1-1+1|c=c-1';
- assert("throughIterator("+literal(x)+") == "+literal(x));
- })();
-
- (function() {
- print("> throughSmartAssembler");
- var x = '-c*3*4+6|3=az*asdf0*1*2*3+1=1-1+1*0+1=1-1+1|c=c-1';
- assert("throughSmartAssembler("+literal(x)+") == "+literal(x));
- })();
-
- function applyMutations(mu, arrayOfArrays) {
- arrayOfArrays.forEach(function (a) {
- var result = mu[a[0]].apply(mu, a.slice(1));
- if (a[0] == 'remove' && a[3]) {
- assertEqualStrings(a[3], result);
- }
- });
- }
-
- function mutationsToChangeset(oldLen, arrayOfArrays) {
- var assem = Changeset.smartOpAssembler();
- var op = Changeset.newOp();
- var bank = Changeset.stringAssembler();
- var oldPos = 0;
- var newLen = 0;
- arrayOfArrays.forEach(function (a) {
- if (a[0] == 'skip') {
- op.opcode = '=';
- op.chars = a[1];
- op.lines = (a[2] || 0);
- assem.append(op);
- oldPos += op.chars;
- newLen += op.chars;
- }
- else if (a[0] == 'remove') {
- op.opcode = '-';
- op.chars = a[1];
- op.lines = (a[2] || 0);
- assem.append(op);
- oldPos += op.chars;
- }
- else if (a[0] == 'insert') {
- op.opcode = '+';
- bank.append(a[1]);
- op.chars = a[1].length;
- op.lines = (a[2] || 0);
- assem.append(op);
- newLen += op.chars;
- }
- });
- newLen += oldLen - oldPos;
- assem.endDocument();
- return Changeset.pack(oldLen, newLen, assem.toString(),
- bank.toString());
- }
-
- function runMutationTest(testId, origLines, muts, correct) {
- print("> runMutationTest#"+testId);
- var lines = origLines.slice();
- var mu = Changeset.textLinesMutator(lines);
- applyMutations(mu, muts);
- mu.close();
- assertEqualArrays(correct, lines);
-
- var inText = origLines.join('');
- var cs = mutationsToChangeset(inText.length, muts);
- lines = origLines.slice();
- Changeset.mutateTextLines(cs, lines);
- assertEqualArrays(correct, lines);
-
- var correctText = correct.join('');
- //print(literal(cs));
- var outText = Changeset.applyToText(cs, inText);
- assertEqualStrings(correctText, outText);
- }
-
- runMutationTest(1, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"],
- [['remove',1,0,"a"],['insert',"tu"],['remove',1,0,"p"],['skip',4,1],['skip',7,1],
- ['insert',"cream\npie\n",2],['skip',2],['insert',"bot"],['insert',"\n",1],
- ['insert',"bu"],['skip',3],['remove',3,1,"ge\n"],['remove',6,0,"duffle"]],
- ["tuple\n","banana\n","cream\n","pie\n", "cabot\n","bubba\n","eggplant\n"]);
-
- runMutationTest(2, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"],
- [['remove',1,0,"a"],['remove',1,0,"p"],['insert',"tu"],['skip',11,2],
- ['insert',"cream\npie\n",2],['skip',2],['insert',"bot"],['insert',"\n",1],
- ['insert',"bu"],['skip',3],['remove',3,1,"ge\n"],['remove',6,0,"duffle"]],
- ["tuple\n","banana\n","cream\n","pie\n", "cabot\n","bubba\n","eggplant\n"]);
-
- runMutationTest(3, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"],
- [['remove',6,1,"apple\n"],['skip',15,2],['skip',6],['remove',1,1,"\n"],
- ['remove',8,0,"eggplant"],['skip',1,1]],
- ["banana\n","cabbage\n","duffle\n"]);
-
- runMutationTest(4, ["15\n"],
- [['skip',1],['insert',"\n2\n3\n4\n",4],['skip',2,1]],
- ["1\n","2\n","3\n","4\n","5\n"]);
-
- runMutationTest(5, ["1\n","2\n","3\n","4\n","5\n"],
- [['skip',1],['remove',7,4,"\n2\n3\n4\n"],['skip',2,1]],
- ["15\n"]);
-
- runMutationTest(6, ["123\n","abc\n","def\n","ghi\n","xyz\n"],
- [['insert',"0"],['skip',4,1],['skip',4,1],['remove',8,2,"def\nghi\n"],['skip',4,1]],
- ["0123\n", "abc\n", "xyz\n"]);
-
- runMutationTest(7, ["apple\n", "banana\n", "cabbage\n", "duffle\n", "eggplant\n"],
- [['remove',6,1,"apple\n"],['skip',15,2,true],['skip',6,0,true],['remove',1,1,"\n"],
- ['remove',8,0,"eggplant"],['skip',1,1,true]],
- ["banana\n","cabbage\n","duffle\n"]);
-
- function poolOrArray(attribs) {
- if (attribs.getAttrib) {
- return attribs; // it's already an attrib pool
- }
- else {
- // assume it's an array of attrib strings to be split and added
- var p = new AttribPool();
- attribs.forEach(function (kv) { p.putAttrib(kv.split(',')); });
- return p;
- }
- }
-
- function runApplyToAttributionTest(testId, attribs, cs, inAttr, outCorrect) {
- print("> applyToAttribution#"+testId);
- var p = poolOrArray(attribs);
- var result = Changeset.applyToAttribution(
- Changeset.checkRep(cs), inAttr, p);
- assertEqualStrings(outCorrect, result);
- }
-
- // turn c<b>a</b>ctus\n into a<b>c</b>tusabcd\n
- runApplyToAttributionTest(1, ['bold,', 'bold,true'],
- "Z:7>3-1*0=1*1=1=3+4$abcd",
- "+1*1+1|1+5", "+1*1+1|1+8");
-
- // turn "david\ngreenspan\n" into "<b>david\ngreen</b>\n"
- runApplyToAttributionTest(2, ['bold,', 'bold,true'],
- "Z:g<4*1|1=6*1=5-4$",
- "|2+g", "*1|1+6*1+5|1+1");
-
- (function() {
- print("> mutatorHasMore");
- var lines = ["1\n", "2\n", "3\n", "4\n"];
- var mu;
-
- mu = Changeset.textLinesMutator(lines);
- assert(mu.hasMore()+' == true');
- mu.skip(8,4);
- assert(mu.hasMore()+' == false');
- mu.close();
- assert(mu.hasMore()+' == false');
-
- // still 1,2,3,4
- mu = Changeset.textLinesMutator(lines);
- assert(mu.hasMore()+' == true');
- mu.remove(2,1);
- assert(mu.hasMore()+' == true');
- mu.skip(2,1);
- assert(mu.hasMore()+' == true');
- mu.skip(2,1);
- assert(mu.hasMore()+' == true');
- mu.skip(2,1);
- assert(mu.hasMore()+' == false');
- mu.insert("5\n", 1);
- assert(mu.hasMore()+' == false');
- mu.close();
- assert(mu.hasMore()+' == false');
-
- // 2,3,4,5 now
- mu = Changeset.textLinesMutator(lines);
- assert(mu.hasMore()+' == true');
- mu.remove(6,3);
- assert(mu.hasMore()+' == true');
- mu.remove(2,1);
- assert(mu.hasMore()+' == false');
- mu.insert("hello\n", 1);
- assert(mu.hasMore()+' == false');
- mu.close();
- assert(mu.hasMore()+' == false');
-
- })();
-
- function runMutateAttributionTest(testId, attribs, cs, alines, outCorrect) {
- print("> runMutateAttributionTest#"+testId);
- var p = poolOrArray(attribs);
- var alines2 = Array.prototype.slice.call(alines);
- var result = Changeset.mutateAttributionLines(
- Changeset.checkRep(cs), alines2, p);
- assertEqualArrays(outCorrect, alines2);
-
- print("> runMutateAttributionTest#"+testId+".applyToAttribution");
- function removeQuestionMarks(a) { return a.replace(/\?/g, ''); }
- var inMerged = Changeset.joinAttributionLines(alines.map(removeQuestionMarks));
- var correctMerged = Changeset.joinAttributionLines(outCorrect.map(removeQuestionMarks));
- var mergedResult = Changeset.applyToAttribution(cs, inMerged, p);
- assertEqualStrings(correctMerged, mergedResult);
- }
-
- // turn 123\n 456\n 789\n into 123\n 4<b>5</b>6\n 789\n
- runMutateAttributionTest(1, ["bold,true"], "Z:c>0|1=4=1*0=1$", ["|1+4", "|1+4", "|1+4"],
- ["|1+4", "+1*0+1|1+2", "|1+4"]);
-
- // make a document bold
- runMutateAttributionTest(2, ["bold,true"], "Z:c>0*0|3=c$", ["|1+4", "|1+4", "|1+4"],
- ["*0|1+4", "*0|1+4", "*0|1+4"]);
-
- // clear bold on document
- runMutateAttributionTest(3, ["bold,","bold,true"], "Z:c>0*0|3=c$",
- ["*1+1+1*1+1|1+1", "+1*1+1|1+2", "*1+1+1*1+1|1+1"],
- ["|1+4", "|1+4", "|1+4"]);
-
- // add a character on line 3 of a document with 5 blank lines, and make sure
- // the optimization that skips purely-kept lines is working; if any attribution string
- // with a '?' is parsed it will cause an error.
- runMutateAttributionTest(4, ['foo,bar','line,1','line,2','line,3','line,4','line,5'],
- "Z:5>1|2=2+1$x",
- ["?*1|1+1", "?*2|1+1", "*3|1+1", "?*4|1+1", "?*5|1+1"],
- ["?*1|1+1", "?*2|1+1", "+1*3|1+1", "?*4|1+1", "?*5|1+1"]);
-
- var testPoolWithChars = (function() {
- var p = new AttribPool();
- p.putAttrib(['char','newline']);
- for(var i=1;i<36;i++) {
- p.putAttrib(['char',Changeset.numToString(i)]);
- }
- p.putAttrib(['char','']);
- return p;
- })();
-
- // based on runMutationTest#1
- runMutateAttributionTest(5, testPoolWithChars,
- "Z:11>7-2*t+1*u+1|2=b|2+a=2*b+1*o+1*t+1*0|1+1*b+1*u+1=3|1-3-6$"+
- "tucream\npie\nbot\nbu",
- ["*a+1*p+2*l+1*e+1*0|1+1",
- "*b+1*a+1*n+1*a+1*n+1*a+1*0|1+1",
- "*c+1*a+1*b+2*a+1*g+1*e+1*0|1+1",
- "*d+1*u+1*f+2*l+1*e+1*0|1+1",
- "*e+1*g+2*p+1*l+1*a+1*n+1*t+1*0|1+1"],
- ["*t+1*u+1*p+1*l+1*e+1*0|1+1",
- "*b+1*a+1*n+1*a+1*n+1*a+1*0|1+1",
- "|1+6",
- "|1+4",
- "*c+1*a+1*b+1*o+1*t+1*0|1+1",
- "*b+1*u+1*b+2*a+1*0|1+1",
- "*e+1*g+2*p+1*l+1*a+1*n+1*t+1*0|1+1"]);
-
- // based on runMutationTest#3
- runMutateAttributionTest(6, testPoolWithChars,
- "Z:11<f|1-6|2=f=6|1-1-8$",
- ["*a|1+6", "*b|1+7", "*c|1+8", "*d|1+7", "*e|1+9"],
- ["*b|1+7", "*c|1+8", "*d+6*e|1+1"]);
-
- // based on runMutationTest#4
- runMutateAttributionTest(7, testPoolWithChars,
- "Z:3>7=1|4+7$\n2\n3\n4\n",
- ["*1+1*5|1+2"],
- ["*1+1|1+1","|1+2","|1+2","|1+2","*5|1+2"]);
-
- // based on runMutationTest#5
- runMutateAttributionTest(8, testPoolWithChars,
- "Z:a<7=1|4-7$",
- ["*1|1+2","*2|1+2","*3|1+2","*4|1+2","*5|1+2"],
- ["*1+1*5|1+2"]);
-
- // based on runMutationTest#6
- runMutateAttributionTest(9, testPoolWithChars,
- "Z:k<7*0+1*10|2=8|2-8$0",
- ["*1+1*2+1*3+1|1+1","*a+1*b+1*c+1|1+1",
- "*d+1*e+1*f+1|1+1","*g+1*h+1*i+1|1+1","?*x+1*y+1*z+1|1+1"],
- ["*0+1|1+4", "|1+4", "?*x+1*y+1*z+1|1+1"]);
-
- runMutateAttributionTest(10, testPoolWithChars,
- "Z:6>4=1+1=1+1|1=1+1=1*0+1$abcd",
- ["|1+3", "|1+3"],
- ["|1+5", "+2*0+1|1+2"]);
-
-
- runMutateAttributionTest(11, testPoolWithChars,
- "Z:s>1|1=4=6|1+1$\n",
- ["*0|1+4", "*0|1+8", "*0+5|1+1", "*0|1+1", "*0|1+5", "*0|1+1", "*0|1+1", "*0|1+1", "|1+1"],
- ["*0|1+4", "*0+6|1+1", "*0|1+2", "*0+5|1+1", "*0|1+1", "*0|1+5", "*0|1+1", "*0|1+1", "*0|1+1", "|1+1"]);
-
- function randomInlineString(len, rand) {
- var assem = Changeset.stringAssembler();
- for(var i=0;i<len;i++) {
- assem.append(String.fromCharCode(rand.nextInt(26) + 97));
- }
- return assem.toString();
- }
-
- function randomMultiline(approxMaxLines, approxMaxCols, rand) {
- var numParts = rand.nextInt(approxMaxLines*2)+1;
- var txt = Changeset.stringAssembler();
- txt.append(rand.nextInt(2) ? '\n' : '');
- for(var i=0;i<numParts;i++) {
- if ((i % 2) == 0) {
- if (rand.nextInt(10)) {
- txt.append(randomInlineString(rand.nextInt(approxMaxCols)+1, rand));
- }
- else {
- txt.append('\n');
- }
- }
- else {
- txt.append('\n');
- }
- }
- return txt.toString();
- }
-
- function randomStringOperation(numCharsLeft, rand) {
- var result;
- switch(rand.nextInt(9)) {
- case 0: {
- // insert char
- result = {insert: randomInlineString(1, rand)};
- break;
- }
- case 1: {
- // delete char
- result = {remove: 1};
- break;
- }
- case 2: {
- // skip char
- result = {skip: 1};
- break;
- }
- case 3: {
- // insert small
- result = {insert: randomInlineString(rand.nextInt(4)+1, rand)};
- break;
- }
- case 4: {
- // delete small
- result = {remove: rand.nextInt(4)+1};
- break;
- }
- case 5: {
- // skip small
- result = {skip: rand.nextInt(4)+1};
- break;
- }
- case 6: {
- // insert multiline;
- result = {insert: randomMultiline(5, 20, rand)};
- break;
- }
- case 7: {
- // delete multiline
- result = {remove: Math.round(numCharsLeft * rand.nextDouble() * rand.nextDouble()) };
- break;
- }
- case 8: {
- // skip multiline
- result = {skip: Math.round(numCharsLeft * rand.nextDouble() * rand.nextDouble()) };
- break;
- }
- case 9: {
- // delete to end
- result = {remove: numCharsLeft};
- break;
- }
- case 10: {
- // skip to end
- result = {skip: numCharsLeft};
- break;
- }
- }
- var maxOrig = numCharsLeft - 1;
- if ('remove' in result) {
- result.remove = Math.min(result.remove, maxOrig);
- }
- else if ('skip' in result) {
- result.skip = Math.min(result.skip, maxOrig);
- }
- return result;
- }
-
- function randomTwoPropAttribs(opcode, rand) {
- // assumes attrib pool like ['apple,','apple,true','banana,','banana,true']
- if (opcode == '-' || rand.nextInt(3)) {
- return '';
- }
- else if (rand.nextInt(3)) {
- if (opcode == '+' || rand.nextInt(2)) {
- return '*'+Changeset.numToString(rand.nextInt(2)*2+1);
- }
- else {
- return '*'+Changeset.numToString(rand.nextInt(2)*2);
- }
- }
- else {
- if (opcode == '+' || rand.nextInt(4) == 0) {
- return '*1*3';
- }
- else {
- return ['*0*2', '*0*3', '*1*2'][rand.nextInt(3)];
- }
- }
- }
-
- function randomTestChangeset(origText, rand, withAttribs) {
- var charBank = Changeset.stringAssembler();
- var textLeft = origText; // always keep final newline
- var outTextAssem = Changeset.stringAssembler();
- var opAssem = Changeset.smartOpAssembler();
- var oldLen = origText.length;
-
- var nextOp = Changeset.newOp();
- function appendMultilineOp(opcode, txt) {
- nextOp.opcode = opcode;
- if (withAttribs) {
- nextOp.attribs = randomTwoPropAttribs(opcode, rand);
- }
- txt.replace(/\n|[^\n]+/g, function (t) {
- if (t == '\n') {
- nextOp.chars = 1;
- nextOp.lines = 1;
- opAssem.append(nextOp);
- }
- else {
- nextOp.chars = t.length;
- nextOp.lines = 0;
- opAssem.append(nextOp);
- }
- return '';
- });
- }
-
- function doOp() {
- var o = randomStringOperation(textLeft.length, rand);
- if (o.insert) {
- var txt = o.insert;
- charBank.append(txt);
- outTextAssem.append(txt);
- appendMultilineOp('+', txt);
- }
- else if (o.skip) {
- var txt = textLeft.substring(0, o.skip);
- textLeft = textLeft.substring(o.skip);
- outTextAssem.append(txt);
- appendMultilineOp('=', txt);
- }
- else if (o.remove) {
- var txt = textLeft.substring(0, o.remove);
- textLeft = textLeft.substring(o.remove);
- appendMultilineOp('-', txt);
- }
- }
-
- while (textLeft.length > 1) doOp();
- for(var i=0;i<5;i++) doOp(); // do some more (only insertions will happen)
-
- var outText = outTextAssem.toString()+'\n';
- opAssem.endDocument();
- var cs = Changeset.pack(oldLen, outText.length, opAssem.toString(), charBank.toString());
- Changeset.checkRep(cs);
- return [cs, outText];
- }
-
- function testCompose(randomSeed) {
- var rand = new java.util.Random(randomSeed);
- print("> testCompose#"+randomSeed);
-
- var p = new AttribPool();
-
- var startText = randomMultiline(10, 20, rand)+'\n';
-
- var x1 = randomTestChangeset(startText, rand);
- var change1 = x1[0];
- var text1 = x1[1];
-
- var x2 = randomTestChangeset(text1, rand);
- var change2 = x2[0];
- var text2 = x2[1];
-
- var x3 = randomTestChangeset(text2, rand);
- var change3 = x3[0];
- var text3 = x3[1];
-
- //print(literal(Changeset.toBaseTen(startText)));
- //print(literal(Changeset.toBaseTen(change1)));
- //print(literal(Changeset.toBaseTen(change2)));
- var change12 = Changeset.checkRep(Changeset.compose(change1, change2, p));
- var change23 = Changeset.checkRep(Changeset.compose(change2, change3, p));
- var change123 = Changeset.checkRep(Changeset.compose(change12, change3, p));
- var change123a = Changeset.checkRep(Changeset.compose(change1, change23, p));
- assertEqualStrings(change123, change123a);
-
- assertEqualStrings(text2, Changeset.applyToText(change12, startText));
- assertEqualStrings(text3, Changeset.applyToText(change23, text1));
- assertEqualStrings(text3, Changeset.applyToText(change123, startText));
- }
-
- for(var i=0;i<30;i++) testCompose(i);
-
- (function simpleComposeAttributesTest() {
- print("> simpleComposeAttributesTest");
- var p = new AttribPool();
- p.putAttrib(['bold','']);
- p.putAttrib(['bold','true']);
- var cs1 = Changeset.checkRep("Z:2>1*1+1*1=1$x");
- var cs2 = Changeset.checkRep("Z:3>0*0|1=3$");
- var cs12 = Changeset.checkRep(Changeset.compose(cs1, cs2, p));
- assertEqualStrings("Z:2>1+1*0|1=2$x", cs12);
- })();
-
- (function followAttributesTest() {
- var p = new AttribPool();
- p.putAttrib(['x','']);
- p.putAttrib(['x','abc']);
- p.putAttrib(['x','def']);
- p.putAttrib(['y','']);
- p.putAttrib(['y','abc']);
- p.putAttrib(['y','def']);
-
- function testFollow(a, b, afb, bfa, merge) {
- assertEqualStrings(afb, Changeset.followAttributes(a, b, p));
- assertEqualStrings(bfa, Changeset.followAttributes(b, a, p));
- assertEqualStrings(merge, Changeset.composeAttributes(a, afb, true, p));
- assertEqualStrings(merge, Changeset.composeAttributes(b, bfa, true, p));
- }
-
- testFollow('', '', '', '', '');
- testFollow('*0', '', '', '*0', '*0');
- testFollow('*0', '*0', '', '', '*0');
- testFollow('*0', '*1', '', '*0', '*0');
- testFollow('*1', '*2', '', '*1', '*1');
- testFollow('*0*1', '', '', '*0*1', '*0*1');
- testFollow('*0*4', '*2*3', '*3', '*0', '*0*3');
- testFollow('*0*4', '*2', '', '*0*4', '*0*4');
- })();
-
- function testFollow(randomSeed) {
- var rand = new java.util.Random(randomSeed + 1000);
- print("> testFollow#"+randomSeed);
-
- var p = new AttribPool();
-
- var startText = randomMultiline(10, 20, rand)+'\n';
-
- var cs1 = randomTestChangeset(startText, rand)[0];
- var cs2 = randomTestChangeset(startText, rand)[0];
-
- var afb = Changeset.checkRep(Changeset.follow(cs1, cs2, false, p));
- var bfa = Changeset.checkRep(Changeset.follow(cs2, cs1, true, p));
-
- var merge1 = Changeset.checkRep(Changeset.compose(cs1, afb));
- var merge2 = Changeset.checkRep(Changeset.compose(cs2, bfa));
-
- assertEqualStrings(merge1, merge2);
- }
-
- for(var i=0;i<30;i++) testFollow(i);
-
- function testSplitJoinAttributionLines(randomSeed) {
- var rand = new java.util.Random(randomSeed + 2000);
- print("> testSplitJoinAttributionLines#"+randomSeed);
-
- var doc = randomMultiline(10, 20, rand)+'\n';
-
- function stringToOps(str) {
- var assem = Changeset.mergingOpAssembler();
- var o = Changeset.newOp('+');
- o.chars = 1;
- for(var i=0;i<str.length;i++) {
- var c = str.charAt(i);
- o.lines = (c == '\n' ? 1 : 0);
- o.attribs = (c == 'a' || c == 'b' ? '*'+c : '');
- assem.append(o);
- }
- return assem.toString();
- }
-
- var theJoined = stringToOps(doc);
- var theSplit = doc.match(/[^\n]*\n/g).map(stringToOps);
-
- assertEqualArrays(theSplit, Changeset.splitAttributionLines(theJoined, doc));
- assertEqualStrings(theJoined, Changeset.joinAttributionLines(theSplit));
- }
-
- for(var i=0;i<10;i++) testSplitJoinAttributionLines(i);
-
- (function testMoveOpsToNewPool() {
- print("> testMoveOpsToNewPool");
-
- var pool1 = new AttribPool();
- var pool2 = new AttribPool();
-
- pool1.putAttrib(['baz','qux']);
- pool1.putAttrib(['foo','bar']);
-
- pool2.putAttrib(['foo','bar']);
-
- assertEqualStrings(Changeset.moveOpsToNewPool('Z:1>2*1+1*0+1$ab', pool1, pool2), 'Z:1>2*0+1*1+1$ab');
- assertEqualStrings(Changeset.moveOpsToNewPool('*1+1*0+1', pool1, pool2), '*0+1*1+1');
- })();
-
-
- (function testMakeSplice() {
- print("> testMakeSplice");
-
- var t = "a\nb\nc\n";
- var t2 = Changeset.applyToText(Changeset.makeSplice(t, 5, 0, "def"), t);
- assertEqualStrings("a\nb\ncdef\n", t2);
-
- })();
-
- (function testToSplices() {
- print("> testToSplices");
-
- var cs = Changeset.checkRep('Z:z>9*0=1=4-3+9=1|1-4-4+1*0+a$123456789abcdefghijk');
- var correctSplices = [[5, 8, "123456789"], [9, 17, "abcdefghijk"]];
- assertEqualArrays(correctSplices, Changeset.toSplices(cs));
- })();
-
- function testCharacterRangeFollow(testId, cs, oldRange, insertionsAfter, correctNewRange) {
- print("> testCharacterRangeFollow#"+testId);
-
- var cs = Changeset.checkRep(cs);
- assertEqualArrays(correctNewRange, Changeset.characterRangeFollow(cs, oldRange[0], oldRange[1],
- insertionsAfter));
-
- }
-
- testCharacterRangeFollow(1, 'Z:z>9*0=1=4-3+9=1|1-4-4+1*0+a$123456789abcdefghijk',
- [7, 10], false, [14, 15]);
- testCharacterRangeFollow(2, "Z:bc<6|x=b4|2-6$", [400, 407], false, [400, 401]);
- testCharacterRangeFollow(3, "Z:4>0-3+3$abc", [0,3], false, [3,3]);
- testCharacterRangeFollow(4, "Z:4>0-3+3$abc", [0,3], true, [0,0]);
- testCharacterRangeFollow(5, "Z:5>1+1=1-3+3$abcd", [1,4], false, [5,5]);
- testCharacterRangeFollow(6, "Z:5>1+1=1-3+3$abcd", [1,4], true, [2,2]);
- testCharacterRangeFollow(7, "Z:5>1+1=1-3+3$abcd", [0,6], false, [1,7]);
- testCharacterRangeFollow(8, "Z:5>1+1=1-3+3$abcd", [0,3], false, [1,2]);
- testCharacterRangeFollow(9, "Z:5>1+1=1-3+3$abcd", [2,5], false, [5,6]);
- testCharacterRangeFollow(10, "Z:2>1+1$a", [0,0], false, [1,1]);
- testCharacterRangeFollow(11, "Z:2>1+1$a", [0,0], true, [0,0]);
-
- (function testOpAttributeValue() {
- print("> testOpAttributeValue");
-
- var p = new AttribPool();
- p.putAttrib(['name','david']);
- p.putAttrib(['color','green']);
-
- assertEqualStrings("david", Changeset.opAttributeValue(Changeset.stringOp('*0*1+1'), 'name', p));
- assertEqualStrings("david", Changeset.opAttributeValue(Changeset.stringOp('*0+1'), 'name', p));
- assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('*1+1'), 'name', p));
- assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('+1'), 'name', p));
- assertEqualStrings("green", Changeset.opAttributeValue(Changeset.stringOp('*0*1+1'), 'color', p));
- assertEqualStrings("green", Changeset.opAttributeValue(Changeset.stringOp('*1+1'), 'color', p));
- assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('*0+1'), 'color', p));
- assertEqualStrings("", Changeset.opAttributeValue(Changeset.stringOp('+1'), 'color', p));
- })();
-
- function testAppendATextToAssembler(testId, atext, correctOps) {
- print("> testAppendATextToAssembler#"+testId);
-
- var assem = Changeset.smartOpAssembler();
- Changeset.appendATextToAssembler(atext, assem);
- assertEqualStrings(correctOps, assem.toString());
- }
-
- testAppendATextToAssembler(1, {text:"\n", attribs:"|1+1"}, "");
- testAppendATextToAssembler(2, {text:"\n\n", attribs:"|2+2"}, "|1+1");
- testAppendATextToAssembler(3, {text:"\n\n", attribs:"*x|2+2"}, "*x|1+1");
- testAppendATextToAssembler(4, {text:"\n\n", attribs:"*x|1+1|1+1"}, "*x|1+1");
- testAppendATextToAssembler(5, {text:"foo\n", attribs:"|1+4"}, "+3");
- testAppendATextToAssembler(6, {text:"\nfoo\n", attribs:"|2+5"}, "|1+1+3");
- testAppendATextToAssembler(7, {text:"\nfoo\n", attribs:"*x|2+5"}, "*x|1+1*x+3");
- testAppendATextToAssembler(8, {text:"\n\n\nfoo\n", attribs:"|2+2*x|2+5"}, "|2+2*x|1+1*x+3");
-
- function testMakeAttribsString(testId, pool, opcode, attribs, correctString) {
- print("> testMakeAttribsString#"+testId);
-
- var p = poolOrArray(pool);
- var str = Changeset.makeAttribsString(opcode, attribs, p);
- assertEqualStrings(correctString, str);
- }
-
- testMakeAttribsString(1, ['bold,'], '+', [['bold','']], '');
- testMakeAttribsString(2, ['abc,def','bold,'], '=', [['bold','']], '*1');
- testMakeAttribsString(3, ['abc,def','bold,true'], '+', [['abc','def'],['bold','true']], '*0*1');
- testMakeAttribsString(4, ['abc,def','bold,true'], '+', [['bold','true'],['abc','def']], '*0*1');
-
- function testSubattribution(testId, astr, start, end, correctOutput) {
- print("> testSubattribution#"+testId);
-
- var str = Changeset.subattribution(astr, start, end);
- assertEqualStrings(correctOutput, str);
- }
-
- testSubattribution(1, "+1", 0, 0, "");
- testSubattribution(2, "+1", 0, 1, "+1");
- testSubattribution(3, "+1", 0, undefined, "+1");
- testSubattribution(4, "|1+1", 0, 0, "");
- testSubattribution(5, "|1+1", 0, 1, "|1+1");
- testSubattribution(6, "|1+1", 0, undefined, "|1+1");
- testSubattribution(7, "*0+1", 0, 0, "");
- testSubattribution(8, "*0+1", 0, 1, "*0+1");
- testSubattribution(9, "*0+1", 0, undefined, "*0+1");
- testSubattribution(10, "*0|1+1", 0, 0, "");
- testSubattribution(11, "*0|1+1", 0, 1, "*0|1+1");
- testSubattribution(12, "*0|1+1", 0, undefined, "*0|1+1");
- testSubattribution(13, "*0+2+1*1+3", 0, 1, "*0+1");
- testSubattribution(14, "*0+2+1*1+3", 0, 2, "*0+2");
- testSubattribution(15, "*0+2+1*1+3", 0, 3, "*0+2+1");
- testSubattribution(16, "*0+2+1*1+3", 0, 4, "*0+2+1*1+1");
- testSubattribution(17, "*0+2+1*1+3", 0, 5, "*0+2+1*1+2");
- testSubattribution(18, "*0+2+1*1+3", 0, 6, "*0+2+1*1+3");
- testSubattribution(19, "*0+2+1*1+3", 0, 7, "*0+2+1*1+3");
- testSubattribution(20, "*0+2+1*1+3", 0, undefined, "*0+2+1*1+3");
- testSubattribution(21, "*0+2+1*1+3", 1, undefined, "*0+1+1*1+3");
- testSubattribution(22, "*0+2+1*1+3", 2, undefined, "+1*1+3");
- testSubattribution(23, "*0+2+1*1+3", 3, undefined, "*1+3");
- testSubattribution(24, "*0+2+1*1+3", 4, undefined, "*1+2");
- testSubattribution(25, "*0+2+1*1+3", 5, undefined, "*1+1");
- testSubattribution(26, "*0+2+1*1+3", 6, undefined, "");
- testSubattribution(27, "*0+2+1*1|1+3", 0, 1, "*0+1");
- testSubattribution(28, "*0+2+1*1|1+3", 0, 2, "*0+2");
- testSubattribution(29, "*0+2+1*1|1+3", 0, 3, "*0+2+1");
- testSubattribution(30, "*0+2+1*1|1+3", 0, 4, "*0+2+1*1+1");
- testSubattribution(31, "*0+2+1*1|1+3", 0, 5, "*0+2+1*1+2");
- testSubattribution(32, "*0+2+1*1|1+3", 0, 6, "*0+2+1*1|1+3");
- testSubattribution(33, "*0+2+1*1|1+3", 0, 7, "*0+2+1*1|1+3");
- testSubattribution(34, "*0+2+1*1|1+3", 0, undefined, "*0+2+1*1|1+3");
- testSubattribution(35, "*0+2+1*1|1+3", 1, undefined, "*0+1+1*1|1+3");
- testSubattribution(36, "*0+2+1*1|1+3", 2, undefined, "+1*1|1+3");
- testSubattribution(37, "*0+2+1*1|1+3", 3, undefined, "*1|1+3");
- testSubattribution(38, "*0+2+1*1|1+3", 4, undefined, "*1|1+2");
- testSubattribution(39, "*0+2+1*1|1+3", 5, undefined, "*1|1+1");
- testSubattribution(40, "*0+2+1*1|1+3", 1, 5, "*0+1+1*1+2");
- testSubattribution(41, "*0+2+1*1|1+3", 2, 6, "+1*1|1+3");
- testSubattribution(42, "*0+2+1*1+3", 2, 6, "+1*1+3");
-
- function testFilterAttribNumbers(testId, cs, filter, correctOutput) {
- print("> testFilterAttribNumbers#"+testId);
-
- var str = Changeset.filterAttribNumbers(cs, filter);
- assertEqualStrings(correctOutput, str);
- }
-
- testFilterAttribNumbers(1, "*0*1+1+2+3*1+4*2+5*0*2*1*b*c+6",
- function(n) { return (n%2) == 0; },
- "*0+1+2+3+4*2+5*0*2*c+6");
- testFilterAttribNumbers(2, "*0*1+1+2+3*1+4*2+5*0*2*1*b*c+6",
- function(n) { return (n%2) == 1; },
- "*1+1+2+3*1+4+5*1*b+6");
-
- function testInverse(testId, cs, lines, alines, pool, correctOutput) {
- print("> testInverse#"+testId);
-
- pool = poolOrArray(pool);
- var str = Changeset.inverse(Changeset.checkRep(cs), lines, alines, pool);
- assertEqualStrings(correctOutput, str);
- }
-
- // take "FFFFTTTTT" and apply "-FT--FFTT", the inverse of which is "--F--TT--"
- testInverse(1, "Z:9>0=1*0=1*1=1=2*0=2*1|1=2$", null, ["+4*1+5"], ['bold,','bold,true'],
- "Z:9>0=2*0=1=2*1=2$");
-
- function testMutateTextLines(testId, cs, lines, correctLines) {
- print("> testMutateTextLines#"+testId);
-
- var a = lines.slice();
- Changeset.mutateTextLines(cs, a);
- assertEqualArrays(correctLines, a);
- }
-
- testMutateTextLines(1, "Z:4<1|1-2-1|1+1+1$\nc", ["a\n", "b\n"], ["\n", "c\n"]);
- testMutateTextLines(2, "Z:4>0|1-2-1|2+3$\nc\n", ["a\n", "b\n"], ["\n", "c\n", "\n"]);
-
- function testInverseRandom(randomSeed) {
- var rand = new java.util.Random(randomSeed + 3000);
- print("> testInverseRandom#"+randomSeed);
-
- var p = poolOrArray(['apple,','apple,true','banana,','banana,true']);
-
- var startText = randomMultiline(10, 20, rand)+'\n';
- var alines = Changeset.splitAttributionLines(Changeset.makeAttribution(startText), startText);
- var lines = startText.slice(0,-1).split('\n').map(function(s) { return s+'\n'; });
-
- var stylifier = randomTestChangeset(startText, rand, true)[0];
-
- //print(alines.join('\n'));
- Changeset.mutateAttributionLines(stylifier, alines, p);
- //print(stylifier);
- //print(alines.join('\n'));
- Changeset.mutateTextLines(stylifier, lines);
-
- var changeset = randomTestChangeset(lines.join(''), rand, true)[0];
- var inverseChangeset = Changeset.inverse(changeset, lines, alines, p);
-
- var origLines = lines.slice();
- var origALines = alines.slice();
-
- Changeset.mutateTextLines(changeset, lines);
- Changeset.mutateAttributionLines(changeset, alines, p);
- //print(origALines.join('\n'));
- //print(changeset);
- //print(inverseChangeset);
- //print(origLines.map(function(s) { return '1: '+s.slice(0,-1); }).join('\n'));
- //print(lines.map(function(s) { return '2: '+s.slice(0,-1); }).join('\n'));
- //print(alines.join('\n'));
- Changeset.mutateTextLines(inverseChangeset, lines);
- Changeset.mutateAttributionLines(inverseChangeset, alines, p);
- //print(lines.map(function(s) { return '3: '+s.slice(0,-1); }).join('\n'));
-
- assertEqualArrays(origLines, lines);
- assertEqualArrays(origALines, alines);
- }
-
- for(var i=0;i<30;i++) testInverseRandom(i);
-} \ No newline at end of file
diff --git a/trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js b/trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js
deleted file mode 100644
index ffc8034..0000000
--- a/trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js
+++ /dev/null
@@ -1,247 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/linestylefilter.js
-import("etherpad.collab.ace.easysync2.Changeset");
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// requires: easysync2.Changeset
-
-var linestylefilter = {};
-
-linestylefilter.ATTRIB_CLASSES = {
- 'bold':'tag:b',
- 'italic':'tag:i',
- 'underline':'tag:u',
- 'strikethrough':'tag:s'
-};
-
-linestylefilter.getAuthorClassName = function(author) {
- return "author-"+author.replace(/[^a-y0-9]/g, function(c) {
- if (c == ".") return "-";
- return 'z'+c.charCodeAt(0)+'z';
- });
-};
-
-// lineLength is without newline; aline includes newline,
-// but may be falsy if lineLength == 0
-linestylefilter.getLineStyleFilter = function(lineLength, aline,
- textAndClassFunc, apool) {
-
- if (lineLength == 0) return textAndClassFunc;
-
- var nextAfterAuthorColors = textAndClassFunc;
-
- var authorColorFunc = (function() {
- var lineEnd = lineLength;
- var curIndex = 0;
- var extraClasses;
- var leftInAuthor;
-
- function attribsToClasses(attribs) {
- var classes = '';
- Changeset.eachAttribNumber(attribs, function(n) {
- var key = apool.getAttribKey(n);
- if (key) {
- var value = apool.getAttribValue(n);
- if (value) {
- if (key == 'author') {
- classes += ' '+linestylefilter.getAuthorClassName(value);
- }
- else if (key == 'list') {
- classes += ' list:'+value;
- }
- else if (linestylefilter.ATTRIB_CLASSES[key]) {
- classes += ' '+linestylefilter.ATTRIB_CLASSES[key];
- }
- }
- }
- });
- return classes.substring(1);
- }
-
- var attributionIter = Changeset.opIterator(aline);
- var nextOp, nextOpClasses;
- function goNextOp() {
- nextOp = attributionIter.next();
- nextOpClasses = (nextOp.opcode && attribsToClasses(nextOp.attribs));
- }
- goNextOp();
- function nextClasses() {
- if (curIndex < lineEnd) {
- extraClasses = nextOpClasses;
- leftInAuthor = nextOp.chars;
- goNextOp();
- while (nextOp.opcode && nextOpClasses == extraClasses) {
- leftInAuthor += nextOp.chars;
- goNextOp();
- }
- }
- }
- nextClasses();
-
- return function(txt, cls) {
- while (txt.length > 0) {
- if (leftInAuthor <= 0) {
- // prevent infinite loop if something funny's going on
- return nextAfterAuthorColors(txt, cls);
- }
- var spanSize = txt.length;
- if (spanSize > leftInAuthor) {
- spanSize = leftInAuthor;
- }
- var curTxt = txt.substring(0, spanSize);
- txt = txt.substring(spanSize);
- nextAfterAuthorColors(curTxt, (cls&&cls+" ")+extraClasses);
- curIndex += spanSize;
- leftInAuthor -= spanSize;
- if (leftInAuthor == 0) {
- nextClasses();
- }
- }
- };
- })();
- return authorColorFunc;
-};
-
-linestylefilter.getAtSignSplitterFilter = function(lineText,
- textAndClassFunc) {
- var at = /@/g;
- at.lastIndex = 0;
- var splitPoints = null;
- var execResult;
- while ((execResult = at.exec(lineText))) {
- if (! splitPoints) {
- splitPoints = [];
- }
- splitPoints.push(execResult.index);
- }
-
- if (! splitPoints) return textAndClassFunc;
-
- return linestylefilter.textAndClassFuncSplitter(textAndClassFunc,
- splitPoints);
-};
-
-linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/;
-linestylefilter.REGEX_URLCHAR = new RegExp('('+/[-:@a-zA-Z0-9_.,~%+\/\\?=&#;()$]/.source+'|'+linestylefilter.REGEX_WORDCHAR.source+')');
-linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:)/.source+linestylefilter.REGEX_URLCHAR.source+'*(?![:.,;])'+linestylefilter.REGEX_URLCHAR.source, 'g');
-
-linestylefilter.getURLFilter = function(lineText, textAndClassFunc) {
- linestylefilter.REGEX_URL.lastIndex = 0;
- var urls = null;
- var splitPoints = null;
- var execResult;
- while ((execResult = linestylefilter.REGEX_URL.exec(lineText))) {
- if (! urls) {
- urls = [];
- splitPoints = [];
- }
- var startIndex = execResult.index;
- var url = execResult[0];
- urls.push([startIndex, url]);
- splitPoints.push(startIndex, startIndex + url.length);
- }
-
- if (! urls) return textAndClassFunc;
-
- function urlForIndex(idx) {
- for(var k=0; k<urls.length; k++) {
- var u = urls[k];
- if (idx >= u[0] && idx < u[0]+u[1].length) {
- return u[1];
- }
- }
- return false;
- }
-
- var handleUrlsAfterSplit = (function() {
- var curIndex = 0;
- return function(txt, cls) {
- var txtlen = txt.length;
- var newCls = cls;
- var url = urlForIndex(curIndex);
- if (url) {
- newCls += " url:"+url;
- }
- textAndClassFunc(txt, newCls);
- curIndex += txtlen;
- };
- })();
-
- return linestylefilter.textAndClassFuncSplitter(handleUrlsAfterSplit,
- splitPoints);
-};
-
-linestylefilter.textAndClassFuncSplitter = function(func, splitPointsOpt) {
- var nextPointIndex = 0;
- var idx = 0;
-
- // don't split at 0
- while (splitPointsOpt &&
- nextPointIndex < splitPointsOpt.length &&
- splitPointsOpt[nextPointIndex] == 0) {
- nextPointIndex++;
- }
-
- function spanHandler(txt, cls) {
- if ((! splitPointsOpt) || nextPointIndex >= splitPointsOpt.length) {
- func(txt, cls);
- idx += txt.length;
- }
- else {
- var splitPoints = splitPointsOpt;
- var pointLocInSpan = splitPoints[nextPointIndex] - idx;
- var txtlen = txt.length;
- if (pointLocInSpan >= txtlen) {
- func(txt, cls);
- idx += txt.length;
- if (pointLocInSpan == txtlen) {
- nextPointIndex++;
- }
- }
- else {
- if (pointLocInSpan > 0) {
- func(txt.substring(0, pointLocInSpan), cls);
- idx += pointLocInSpan;
- }
- nextPointIndex++;
- // recurse
- spanHandler(txt.substring(pointLocInSpan), cls);
- }
- }
- }
- return spanHandler;
-};
-
-// domLineObj is like that returned by domline.createDomLine
-linestylefilter.populateDomLine = function(textLine, aline, apool,
- domLineObj) {
- // remove final newline from text if any
- var text = textLine;
- if (text.slice(-1) == '\n') {
- text = text.substring(0, text.length-1);
- }
-
- function textAndClassFunc(tokenText, tokenClass) {
- domLineObj.appendSpan(tokenText, tokenClass);
- }
-
- var func = textAndClassFunc;
- func = linestylefilter.getURLFilter(text, func);
- func = linestylefilter.getLineStyleFilter(text.length, aline,
- func, apool);
- func(text, '');
-};
diff --git a/trunk/etherpad/src/etherpad/db_migrations/m0038_pad_tag_tables.js b/trunk/etherpad/src/etherpad/db_migrations/m0038_pad_tag_tables.js
deleted file mode 100644
index 69ae6e4..0000000
--- a/trunk/etherpad/src/etherpad/db_migrations/m0038_pad_tag_tables.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Copyright 2009 RedHog, Egil Möller <egil.moller@piratpartiet.se>.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import("sqlbase.sqlobj");
-import("sqlbase.sqlcommon");
-
-function run() {
- sqlobj.createTable('TAG', {
- ID: 'int not null '+sqlcommon.autoIncrementClause()+' primary key',
- NAME: 'varchar(128) character set utf8 collate utf8_bin not null',
- });
-
- sqlobj.createTable('PAD_TAG', {
- PAD_ID: 'varchar(128) character set utf8 collate utf8_bin not null references PAD_META(ID)',
- TAG_ID: 'int default NULL references TAG(ID)',
- });
-
- sqlobj.createTable('PAD_TAG_CACHE', {
- PAD_ID: 'varchar(128) character set utf8 collate utf8_bin unique not null references PAD_META(ID)',
- TAGS: 'varchar(1024) collate utf8_bin not null',
- });
-}
diff --git a/trunk/etherpad/src/static/js/ace.js b/trunk/etherpad/src/static/js/ace.js
deleted file mode 100644
index 7f19d37..0000000
--- a/trunk/etherpad/src/static/js/ace.js
+++ /dev/null
@@ -1,29 +0,0 @@
-Ace2Editor.registry={nextId:1};function Ace2Editor(){var K="Ace2Editor";var F=Ace2Editor;var B={};var A={editor:B,id:(F.registry.nextId++)};
-var D=false;var E=[];function C(R,Q){return function(){var T=this;var S=arguments;function U(){R.apply(T,S);
-}if(Q){Q.apply(T,S);}if(D){U();}else{E.push(U);}};}function I(){for(var Q=0;Q<E.length;Q++){E[Q]();}E=[];
-}F.registry[A.id]=A;B.importText=C(function(R,Q){A.ace_importText(R,Q);});B.importAText=C(function(R,S,Q){A.ace_importAText(R,S,Q);
-});B.exportText=function(){if(!D){return"(awaiting init)\n";}return A.ace_exportText();};B.getFrame=function(){return A.frame||null;
-};B.focus=C(function(){A.ace_focus();});B.adjustSize=C(function(){var R=A.frame.parentNode;var Q=R.clientHeight;
-A.frame.style.height=(Q?Q+"px":R.style.height);A.ace_editorChangedSize();});B.setEditable=C(function(Q){A.ace_setEditable(Q);
-});B.getFormattedCode=function(){return A.ace_getFormattedCode();};B.setOnKeyPress=C(function(Q){A.ace_setOnKeyPress(Q);
-});B.setOnKeyDown=C(function(Q){A.ace_setOnKeyDown(Q);});B.setNotifyDirty=C(function(Q){A.ace_setNotifyDirty(Q);
-});B.setProperty=C(function(Q,R){A.ace_setProperty(Q,R);});B.getDebugProperty=function(Q){return A.ace_getDebugProperty(Q);
-};B.setBaseText=C(function(Q){A.ace_setBaseText(Q);});B.setBaseAttributedText=C(function(R,Q){A.ace_setBaseAttributedText(R,Q);
-});B.applyChangesToBase=C(function(R,Q,S){A.ace_applyChangesToBase(R,Q,S);});B.prepareUserChangeset=function(){if(!D){return null;
-}return A.ace_prepareUserChangeset();};B.applyPreparedChangesetToBase=C(function(){A.ace_applyPreparedChangesetToBase();
-});B.setUserChangeNotificationCallback=C(function(Q){A.ace_setUserChangeNotificationCallback(Q);});B.setAuthorInfo=C(function(R,Q){A.ace_setAuthorInfo(R,Q);
-});B.setAuthorSelectionRange=C(function(R,S,Q){A.ace_setAuthorSelectionRange(R,S,Q);});B.getUnhandledErrors=function(){if(!D){return[];
-}return A.ace_getUnhandledErrors();};B.execCommand=C(function(R,Q){A.ace_execCommand(R,Q);});var H=function(Q){return'<link rel="stylesheet" type="text/css" href="'+Q+'"/>';
-};var J=function(Q){return'\x3cscript type="text/javascript" src="'+Q+'">\x3c/script>';};var M=J;var N=H;
-var L=function(Q){return'\'<link rel="stylesheet" type="text/css" href="'+Q+"\"/>'";};var G=function(Q){return'\'\\x3cscript type="text/javascript" src="'+Q+"\">\\x3c/script>'";
-};var P=G;var O=L;B.destroy=C(function(){A.ace_dispose();A.frame.parentNode.removeChild(A.frame);delete F.registry[A.id];
-A=null;});B.init=function(Q,S,R){B.importText(S);A.onEditorReady=function(){D=true;I();R();};(function(){var W='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
-var T=["'"+W+"<html><head>'"];T.push(("('<style type=\"text/css\">'+'body{margin:0;white-space:nowrap;}#outerdocbody{background-color:#fff;}body.grayedout{background-color:#eee!important;}#innerdocbody{font-size:12px;font-family:monospace;line-height:16px;}body.doesWrap{white-space:normal;}#innerdocbody{padding-top:1px;padding-right:10px;padding-bottom:8px;padding-left:1px;overflow:hidden;background-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);}#sidediv{font-size:11px;font-family:monospace;line-height:16px;padding-top:8px;padding-right:3px;position:absolute;width:20px;top:0;left:0;cursor:default;color:white;}#sidedivinner{text-align:right;}.sidedivdelayed{background-color:#eee;color:#888!important;border-right:1px solid #999;}.sidedivhidden{display:none;}#outerdocbody iframe{display:block;position:relative;left:32px;top:7px;border:0;width:1px;height:1px;}#outerdocbody .hotrect{border:1px solid #999;position:absolute;}body.mozilla,body.safari{display:table-cell;}body.doesWrap{display:block!important;}.safari div{padding-right:1px;}p{margin:0;}#linemetricsdiv{position:absolute;left:-1000px;top:-1000px;color:white;z-index:-1;font-size:12px;font-family:monospace;}#overlaysdiv{position:absolute;left:-1000px;top:-1000px;}.syntax .c{color:#bd3f00;font-style:italic;}.syntax .o{font-weight:bold;}.syntax .p{font-weight:bold;}.syntax .k{color:blue;}.syntax .kc{color:purple;}.syntax .mf{color:purple;}.syntax .mh{color:purple;}.syntax .mi{color:purple;}.syntax .sr{color:purple;}.syntax .s2{color:purple;}.syntax .s1{color:purple;}.syntax .sd{color:purple;}.syntax .cs{color:#0a3;font-weight:bold;font-style:italic;}.syntax .err{color:#c00;font-weight:bold;text-decoration:underline;}.syntax .nt{font-weight:bold;}.syntax .nc{color:#336;}.syntax .nf{color:#336;}.syntax .nd{color:#999;}.syntax .m{color:purple;}.syntax .nb{color:purple;}.syntax .cp{color:#bd3f00;}.syntax .flash{background-color:#adf!important;}.syntax .flashbad{background-color:#f55!important;}html{cursor:text;}span{cursor:auto;}a{cursor:pointer!important;}ul,ol,li{padding:0;margin:0;}ul{margin-left:1.5em;}ul ul{margin-left:0!important;}ul.list-bullet1{margin-left:1.5em;}ul.list-bullet2{margin-left:3em;}ul.list-bullet3{margin-left:4.5em;}ul.list-bullet4{margin-left:6em;}ul.list-bullet5{margin-left:7.5em;}ul.list-bullet6{margin-left:9em;}ul.list-bullet7{margin-left:10.5em;}ul.list-bullet8{margin-left:12em;}ul{list-style-type:disc;}ul.list-bullet1{list-style-type:disc;}ul.list-bullet2{list-style-type:circle;}ul.list-bullet3{list-style-type:square;}ul.list-bullet4{list-style-type:disc;}ul.list-bullet5{list-style-type:circle;}ul.list-bullet6{list-style-type:square;}ul.list-bullet7{list-style-type:disc;}ul.list-bullet8{list-style-type:circle;}'+'\\x3c/style>')"));
-T.push(('(\'\\x3cscript type="text/javascript">//<!--\\n\'+\'function isNodeText(A){return(A.nodeType==3);}function object(B){var A=function(){};A.prototype=B;return new A();\\n}function extend(C,A){for(var B in A){C[B]=A[B];}return C;}function forEach(B,D){for(var A=0;A\\x3cB.length;\\nA++){var C=D(B[A],A);if(C){break;}}}function map(C,D){var B=[];for(var A=0;A\\x3cC.length;A++){if(D){B.push(D(C[A],A));\\n}else{B.push(C[A]);}}return B;}function filter(B,D){var C=[];for(var A=0;A\\x3cB.length;A++){if(D(B[A],A)){C.push(B[A]);\\n}}return C;}function isArray(A){return A&&typeof A==="object"&&!(A.propertyIsEnumerable("length"))&&typeof A.length==="number";\\n}var userAgent=navigator.userAgent.toLowerCase();var browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\\\\\\x2f: ]([\\\\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent),windows:/windows/.test(userAgent)};\\nfunction getAssoc(B,A){return B["_magicdom_"+A];}function setAssoc(C,A,B){C["_magicdom_"+A]=B;}function binarySearch(A,E){if(A\\x3c1){return 0;\\n}if(E(0)){return 0;}if(!E(A-1)){return A;}var D=0;var B=A-1;while((B-D)>1){var C=Math.floor((D+B)/2);\\nif(E(C)){B=C;}else{D=C;}}return B;}function binarySearchInfinite(C,B){var A=0;while(!B(A)){A+=C;}return binarySearch(A,B);\\n}function htmlPrettyEscape(A){return A.replace(/&/g,"&amp;").replace(/\\x3c/g,"&lt;").replace(/>/g,"&gt;").replace(/\\\\r?\\\\n/g,"\\\\\\\\n");\\n}function newSkipList(){var H=window.PROFILER;if(!H){H=function(){return{start:G,mark:G,literal:G,end:G,cancel:G};\\n};}function G(){}var B={key:null,levels:1,upPtrs:[null],downPtrs:[null],downSkips:[1],downSkipWidths:[0]};\\nvar E={key:null,levels:1,upPtrs:[null],downPtrs:[null],downSkips:[null],downSkipWidths:[null]};var A=0;\\nvar D=0;var I={};B.downPtrs[0]=E;E.upPtrs[0]=B;function J(Z){var W=B.levels;var T=W-1;var X=-1,b=0;var V=new Array(W);\\nvar Y=new Array(W);var a=new Array(W);V[T]=B;Y[T]=-1;a[T]=0;while(T>=0){var U=V[T];while(U.downPtrs[T]&&(X+U.downSkips[T]\\x3cZ)){X+=U.downSkips[T];\\nb+=U.downSkipWidths[T];U=U.downPtrs[T];}V[T]=U;Y[T]=X;a[T]=b;T--;if(T>=0){V[T]=U;}}return{nodes:V,idxs:Y,loc:Z,widthSkips:a,toString:function(){return"getPoint("+Z+")";\\n}};}function P(W){var V=0;var T=B;var U=B.levels-1;while(U>=0&&T.downPtrs[U]){while(T.downPtrs[U]&&(V+T.downSkipWidths[U]\\x3c=W)){V+=T.downSkipWidths[U];\\nT=T.downPtrs[U];}U--;}if(T===B){return(B.downPtrs[0]||null);}else{if(T===E){return(W==D?(E.upPtrs[0]||null):null);\\n}}return T;}function K(T){return(T&&T.width)||0;}function N(V,f,h){var X=H("insertKey",false);var W={key:f,levels:0,upPtrs:[],downPtrs:[],downSkips:[],downSkipWidths:[]};\\nX.mark("donealloc");var Y=V.nodes;var e=V.idxs;var k=V.loc;var j=V.widthSkips[0]+V.nodes[0].downSkipWidths[0];\\nvar a=K(h);X.mark("loop1");while(W.levels==0||Math.random()\\x3c0.01){var T=W.levels;W.levels++;if(T==Y.length){Y[T]=B;\\ne[T]=-1;B.levels++;E.levels++;B.downPtrs[T]=E;E.upPtrs[T]=B;B.downSkips[T]=A+1;B.downSkipWidths[T]=D;\\nV.widthSkips[T]=0;}var Z=W;var U=Y[T];var d=U.downPtrs[T];var b=k-e[T];var g=U.downSkips[T]+1-b;U.downSkips[T]=b;\\nU.downPtrs[T]=Z;Z.downSkips[T]=g;Z.upPtrs[T]=U;Z.downPtrs[T]=d;d.upPtrs[T]=Z;var c=j-V.widthSkips[T];\\nvar i=U.downSkipWidths[T]+a-c;U.downSkipWidths[T]=c;Z.downSkipWidths[T]=i;}X.mark("loop2");X.literal(Y.length,"PNL");\\nfor(var T=W.levels;T\\x3cY.length;T++){var U=Y[T];U.downSkips[T]++;U.downSkipWidths[T]+=a;}X.mark("map");\\nI["$KEY$"+f]=W;A++;D+=a;X.end();}function O(T){return T.nodes[0].downPtrs[0];}function S(U){U.loc++;for(var T=0;\\nT\\x3cU.nodes.length;T++){if(U.idxs[T]+U.nodes[T].downSkips[T]\\x3cU.loc){U.idxs[T]+=U.nodes[T].downSkips[T];\\nU.widthSkips[T]+=U.nodes[T].downSkipWidths[T];U.nodes[T]=U.nodes[T].downPtrs[T];}}}function M(W){var V=W.nodes[0].downPtrs[0];\\nvar X=K(V.entry);for(var T=0;T\\x3cW.nodes.length;T++){if(T\\x3cV.levels){var U=V.upPtrs[T];var Y=V.downPtrs[T];\\nvar a=U.downSkips[T]+V.downSkips[T]-1;U.downPtrs[T]=Y;Y.upPtrs[T]=U;U.downSkips[T]=a;var Z=U.downSkipWidths[T]+V.downSkipWidths[T]-X;\\nU.downSkipWidths[T]=Z;}else{var U=W.nodes[T];var Y=U.downPtrs[T];U.downSkips[T]--;U.downSkipWidths[T]-=X;\\n}}delete I["$KEY$"+V.key];A--;D-=X;}function R(V){var X=V.downSkipWidths[0];var Y=K(V.entry);var W=Y-X;\\nvar U=V;var T=0;while(T\\x3cU.levels){U.downSkipWidths[T]+=W;T++;while(T>=U.levels&&U.upPtrs[T-1]){U=U.upPtrs[T-1];\\n}}D+=W;}function L(X,W){var V=(W?0:-1);var T=X;while(T!==B){var U=T.levels-1;T=T.upPtrs[U];if(W){V+=T.downSkipWidths[U];\\n}else{V+=T.downSkips[U];}}return V;}function F(T){return I["$KEY$"+T];}function Q(Y){var U=B;var T=B.levels-1;\\nvar W=-1;function X(Z){if(Z===B){return false;}else{if(Z===E){return true;}else{return Y(Z.entry);}}}while(T>=0){var V=U.downPtrs[T];\\nwhile(!X(V)){W+=U.downSkips[T];U=V;V=U.downPtrs[T];}T--;}return W+1;}var C={length:function(){return A;\\n},atIndex:function(T){if(T\\x3c0){console.warn("atIndex("+T+")");}if(T>=A){console.warn("atIndex("+T+">="+A+")");\\n}return O(J(T)).entry;},splice:function(T,W,V){if(T\\x3c0){console.warn("splice("+T+", ...)");}if(T+W>A){console.warn("splice("+T+", "+W+", ...), N="+A);\\nconsole.warn("%s %s %s",typeof T,typeof W,typeof A);console.trace();}if(!V){V=[];}var Y=J(T);for(var U=0;\\nU\\x3cW;U++){M(Y);}for(var U=(V.length-1);U>=0;U--){var X=V[U];N(Y,X.key,X);var Z=F(X.key);Z.entry=X;}},next:function(T){return F(T.key).downPtrs[0].entry||null;\\n},prev:function(T){return F(T.key).upPtrs[0].entry||null;},push:function(T){C.splice(A,0,[T]);},slice:function(T,U){if(T===undefined){T=0;\\n}else{if(T\\x3c0){T+=A;}}if(U===undefined){U=A;}else{if(U\\x3c0){U+=A;}}if(T\\x3c0){T=0;}if(T>A){T=A;}if(U\\x3c0){U=0;\\n}if(U>A){U=A;}dmesg(String([T,U,A]));if(U\\x3c=T){return[];}var V=C.atIndex(T);var X=[V];for(var W=1;W\\x3c(U-T);\\nW++){V=C.next(V);X.push(V);}return X;},atKey:function(T){return F(T).entry;},indexOfKey:function(T){return L(F(T));\\n},indexOfEntry:function(T){return C.indexOfKey(T.key);},containsKey:function(T){return !!(F(T));},atOffset:function(T){return P(T).entry;\\n},keyAtOffset:function(T){return C.atOffset(T).key;},offsetOfKey:function(T){return L(F(T),true);},offsetOfEntry:function(T){return C.offsetOfKey(T.key);\\n},setEntryWidth:function(T,U){T.width=U;R(F(T.key));},totalWidth:function(){return D;},offsetOfIndex:function(T){if(T\\x3c0){return 0;\\n}if(T>=A){return D;}return C.offsetOfEntry(C.atIndex(T));},indexOfOffset:function(T){if(T\\x3c=0){return 0;\\n}if(T>=D){return A;}return C.indexOfEntry(C.atOffset(T));},search:function(T){return Q(T);},debugGetPoint:J,debugDepth:function(){return B.levels;\\n}};return C;}function makeVirtualLineView(B){var E=20;var D=null;function G(){return B.textContent.length;\\n}function F(){if(!D){var J=C();J.forwardByWhile(E);D=J;}return D.getVirtualLine()+1;}function H(L){var J=C();\\nJ.forwardByWhile(E,null,L);var K=J.getVirtualLine();J.backwardByWhile(8,function(){return J.getVirtualLine()==K;\\n});J.forwardByWhile(1,function(){return J.getVirtualLine()!=K;});var M=J.getOffset();return{vline:K,offset:(L-M)};\\n}function I(Q,P){var J=C();J.binarySearch(function(){return J.getVirtualLine()>=Q;});var M=J.getOffset();\\nvar L=J.getVirtualLine();J.forwardByWhile(E,null,M+P);J.backwardByWhile(1,function(){return J.getVirtualLine()!=L;\\n},M);var K=J.getOffset();var N=K-M;if(N\\x3cP&&L==(F()-1)){var O=G();N+=O-K;K=O;}return{vline:L,offset:N,lineChar:K};\\n}return{getNumVirtualLines:F,getVLineAndOffsetForChar:H,getCharForVLineAndOffset:I,makeCharSeeker:function(){return C();\\n}};function A(J){J=J.firstChild;while(J&&J.firstChild){J=J.firstChild;}if(J.data){return J;}return null;\\n}function C(){function T(a,b){var Z=a.parentNode;var f=(a.nodeValue.charAt(b)===" ");if(f){if(b==0){if(Z.previousSibling&&A(Z.previousSibling)){a=A(Z.previousSibling);\\nb=a.length-1;Z=a.parentNode;}else{return{top:Z.offsetTop,left:Z.offsetLeft};}}else{b--;}}var c=document.createElement("SPAN");\\nvar e=a.nodeValue;var d=document.createDocumentFragment();d.appendChild(document.createTextNode(e.substring(0,b)));\\nc.appendChild(document.createTextNode(e.substr(b,1)));d.appendChild(c);d.appendChild(document.createTextNode(e.substring(b+1)));\\nZ.replaceChild(d,a);var g={top:c.offsetTop,left:c.offsetLeft+(f?c.offsetWidth:0),height:c.offsetHeight};\\nwhile(Z.firstChild){Z.removeChild(Z.firstChild);}Z.appendChild(a);return g;}var Y=B.textContent;var O=Y.length;\\nvar M=null;var J=0;var L=0;var P;var N;var V;var X=0;function Q(){var Z=M;if(!Z){Z=B.firstChild;}else{Z=Z.nextSibling;\\n}while(Z&&!A(Z)){Z=Z.nextSibling;}return Z;}function S(){var Z=M;if(!Z){Z=B.lastChild;}else{Z=Z.previousSibling;\\n}while(Z&&!A(Z)){Z=Z.previousSibling;}return Z;}var K;if(O>0){M=Q();var R=T(A(M),0);V=R.height;P=R.top;\\nN=R.left;function W(b,a){var Z=T(b,a);X+=Math.round((Z.top-P)/V);P=Z.top;N=Z.left;}K={forward:function(e){var c=J;\\nvar Z=J+e;if(Z>(O-1)){Z=O-1;}while(J\\x3cZ){var d=A(M).length;var a=d-L;if(J+a>Z||!Q()){var b=Z-J;if(b>=a){b=a-1;\\n}J+=b;L+=b;break;}else{J+=a;L=0;M=Q();}}W(A(M),L);return J-c;},backward:function(c){var b=J;var Z=J-c;\\nif(Z\\x3c0){Z=0;}while(J>Z){if(J-L\\x3c=Z||!S()){var a=J-Z;if(a>L){a=L;}J-=a;L-=a;break;}else{J-=L+1;M=S();L=A(M).length-1;\\n}}W(A(M),L);return b-J;},getVirtualLine:function(){return X;},getLeftCoord:function(){return N;}};}else{N=B.offsetLeft;\\nK={forward:function(Z){return 0;},backward:function(Z){return 0;},getVirtualLine:function(){return 0;\\n},getLeftCoord:function(){return N;}};}K.getOffset=function(){return J;};K.getLineLength=function(){return O;\\n};K.toString=function(){return"seeker[curChar: "+J+"("+Y.charAt(J)+"), left: "+K.getLeftCoord()+", vline: "+K.getVirtualLine()+"]";\\n};function U(c,j,e,a){var b=null;var i=((typeof e)=="function");var h=e;var g=((typeof a)=="number");\\nvar d=a;while(b!==0&&((!i)||h())){var Z=j;if(g){var f=(c?J-d:d-J);if(f\\x3cZ){Z=f;}}if(Z\\x3c0){break;}b=(c?K.backward(Z):K.forward(Z));\\n}}K.forwardByWhile=function(Z,b,a){U(false,Z,b,a);};K.backwardByWhile=function(Z,b,a){U(true,Z,b,a);};\\nK.binarySearch=function(Z){var b=Z;var a=function(){return !Z();};K.forwardByWhile(20,a);K.backwardByWhile(20,b);\\nK.forwardByWhile(10,a);K.backwardByWhile(5,b);K.forwardByWhile(1,a);return K.getOffset()+(Z()?0:1);};\\nreturn K;}}var _opt=null;function AttribPool(){var A={};A.numToAttrib={};A.attribToNum={};A.nextNum=0;\\nA.putAttrib=function(C,E){var D=String(C);if(D in A.attribToNum){return A.attribToNum[D];}if(E){return -1;\\n}var B=A.nextNum++;A.attribToNum[D]=B;A.numToAttrib[B]=[String(C[0]||""),String(C[1]||"")];return B;};\\nA.getAttrib=function(C){var B=A.numToAttrib[C];if(!B){return B;}return[B[0],B[1]];};A.getAttribKey=function(C){var B=A.numToAttrib[C];\\nif(!B){return"";}return B[0];};A.getAttribValue=function(C){var B=A.numToAttrib[C];if(!B){return"";}return B[1];\\n};A.eachAttrib=function(C){for(var D in A.numToAttrib){var B=A.numToAttrib[D];C(B[0],B[1]);}};A.toJsonable=function(){return{numToAttrib:A.numToAttrib,nextNum:A.nextNum};\\n};A.fromJsonable=function(B){A.numToAttrib=B.numToAttrib;A.nextNum=B.nextNum;A.attribToNum={};for(var C in A.numToAttrib){A.attribToNum[String(A.numToAttrib[C])]=Number(C);\\n}return A;};return A;}var Changeset={};Changeset.error=function error(B){var A=new Error(B);A.easysync=true;\\nthrow A;};Changeset.assert=function assert(A,C){if(!A){var B=Array.prototype.slice.call(arguments,1).join("");\\nChangeset.error("Changeset: "+B);}};Changeset.parseNum=function(A){return parseInt(A,36);};Changeset.numToString=function(A){return A.toString(36).toLowerCase();\\n};Changeset.toBaseTen=function(A){var B=A.indexOf("$");var D=A.substring(0,B);var C=A.substring(B);return D.replace(/[0-9a-z]+/g,function(E){return String(Changeset.parseNum(E));\\n})+C;};Changeset.oldLen=function(A){return Changeset.unpack(A).oldLen;};Changeset.newLen=function(A){return Changeset.unpack(A).newLen;\\n};Changeset.opIterator=function(E,K){var D=/((?:\\\\*[0-9a-z]+)*)(?:\\\\|([0-9a-z]+))?([-+=])([0-9a-z]+)|\\\\?|/g;\\nvar L=(K||0);var B=L;var F=B;function C(){F=B;var M;if(_opt){M=_opt.nextOpInString(E,B);if(M){if(M.opcode()=="?"){Changeset.error("Hit error opcode in op stream");\\n}B=M.lastIndex();}}else{D.lastIndex=B;M=D.exec(E);B=D.lastIndex;if(M[0]=="?"){Changeset.error("Hit error opcode in op stream");\\n}}return M;}var A=C();var H=Changeset.newOp();function I(N){var M=(N||H);if(_opt&&A){M.attribs=A.attribs();\\nM.lines=A.lines();M.chars=A.chars();M.opcode=A.opcode();A=C();}else{if((!_opt)&&A[0]){M.attribs=A[1];\\nM.lines=Changeset.parseNum(A[2]||0);M.opcode=A[3];M.chars=Changeset.parseNum(A[4]);A=C();}else{Changeset.clearOp(M);\\n}}return M;}function G(){return !!(_opt?A:A[0]);}function J(){return F;}return{next:I,hasNext:G,lastIndex:J};\\n};Changeset.clearOp=function(A){A.opcode="";A.chars=0;A.lines=0;A.attribs="";};Changeset.newOp=function(A){return{opcode:(A||""),chars:0,lines:0,attribs:""};\\n};Changeset.cloneOp=function(A){return{opcode:A.opcode,chars:A.chars,lines:A.lines,attribs:A.attribs};\\n};Changeset.copyOp=function(B,A){A.opcode=B.opcode;A.chars=B.chars;A.lines=B.lines;A.attribs=B.attribs;\\n};Changeset.opString=function(B){if(!B.opcode){return"null";}var A=Changeset.opAssembler();A.append(B);\\nreturn A.toString();};Changeset.stringOp=function(A){return Changeset.opIterator(A).next();};Changeset.checkRep=function(C){var G=Changeset.unpack(C);\\nvar F=G.oldLen;var J=G.newLen;var M=G.ops;var E=G.charBank;var I=Changeset.smartOpAssembler();var D=0;\\nvar B=0;var H=0;var K=Changeset.opIterator(M);while(K.hasNext()){var A=K.next();switch(A.opcode){case"=":D+=A.chars;\\nB+=A.chars;break;case"-":D+=A.chars;Changeset.assert(D\\x3cF,D," >= ",F," in ",C);break;case"+":B+=A.chars;\\nH+=A.chars;Changeset.assert(B\\x3cJ,B," >= ",J," in ",C);break;}I.append(A);}B+=F-D;E=E.substring(0,H);while(E.length\\x3cH){E+="?";\\n}I.endDocument();var L=Changeset.pack(F,B,I.toString(),E);Changeset.assert(L==C,L," != ",C);return C;\\n};Changeset.smartOpAssembler=function(){var G=Changeset.mergingOpAssembler();var E=Changeset.mergingOpAssembler();\\nvar B=Changeset.mergingOpAssembler();var A=Changeset.stringAssembler();var C="";var F=0;function H(){A.append(B.toString());\\nB.clear();}function I(){A.append(G.toString());G.clear();A.append(E.toString());E.clear();}function D(O){if(!O.opcode){return;\\n}if(!O.chars){return;}if(O.opcode=="-"){if(C=="="){H();}G.append(O);F-=O.chars;}else{if(O.opcode=="+"){if(C=="="){H();\\n}E.append(O);F+=O.chars;}else{if(O.opcode=="="){if(C!="="){I();}B.append(O);}}}C=O.opcode;}function M(R,P,T,S){var O=Changeset.newOp(R);\\nO.attribs=Changeset.makeAttribsString(R,T,S);var Q=P.lastIndexOf("\\\\n");if(Q\\x3c0){O.chars=P.length;O.lines=0;\\nD(O);}else{O.chars=Q+1;O.lines=P.match(/\\\\n/g).length;D(O);O.chars=P.length-(Q+1);O.lines=0;D(O);}}function K(){I();\\nH();return A.toString();}function N(){G.clear();E.clear();B.clear();A.clear();F=0;}function L(){B.endDocument();\\n}function J(){return F;}return{append:D,toString:K,clear:N,endDocument:L,appendOpWithText:M,getLengthChange:J};\\n};if(_opt){Changeset.mergingOpAssembler=function(){var A=_opt.mergingOpAssembler();function C(F){A.append(F.opcode,F.chars,F.lines,F.attribs);\\n}function E(){return A.toString();}function B(){A.clear();}function D(){A.endDocument();}return{append:C,toString:E,clear:B,endDocument:D};\\n};}else{Changeset.mergingOpAssembler=function(){var C=Changeset.opAssembler();var A=Changeset.newOp();\\nvar B=0;function D(I){if(A.opcode){if(I&&A.opcode=="="&&!A.attribs){}else{C.append(A);if(B){A.chars=B;\\nA.lines=0;C.append(A);B=0;}}A.opcode="";}}function F(I){if(I.chars>0){if(A.opcode==I.opcode&&A.attribs==I.attribs){if(I.lines>0){A.chars+=B+I.chars;\\nA.lines+=I.lines;B=0;}else{if(A.lines==0){A.chars+=I.chars;}else{B+=I.chars;}}}else{D();Changeset.copyOp(I,A);\\n}}}function G(){D(true);}function H(){D();return C.toString();}function E(){C.clear();Changeset.clearOp(A);\\n}return{append:F,toString:H,clear:E,endDocument:G};};}if(_opt){Changeset.opAssembler=function(){var A=_opt.opAssembler();\\nfunction C(E){A.append(E.opcode,E.chars,E.lines,E.attribs);}function D(){return A.toString();}function B(){A.clear();\\n}return{append:C,toString:D,clear:B};};}else{Changeset.opAssembler=function(){var A=[];function C(E){A.push(E.attribs);\\nif(E.lines){A.push("|",Changeset.numToString(E.lines));}A.push(E.opcode);A.push(Changeset.numToString(E.chars));\\n}function D(){return A.join("");}function B(){A.length=0;}return{append:C,toString:D,clear:B};};}Changeset.stringIterator=function(D){var A=0;\\nfunction B(H){Changeset.assert(H\\x3c=C(),"!(",H," \\x3c= ",C(),")");}function F(H){B(H);var I=D.substr(A,H);\\nA+=H;return I;}function E(H){B(H);var I=D.substr(A,H);return I;}function G(H){B(H);A+=H;}function C(){return D.length-A;\\n}return{take:F,skip:G,remaining:C,peek:E};};Changeset.stringAssembler=function(){var A=[];function B(D){A.push(String(D));\\n}function C(){return A.join("");}return{append:B,toString:C};};Changeset.textLinesMutator=function(C){var A=[0,0];\\nvar D=false;var E=0,B=0;function O(X){C.splice.apply(C,X);}function S(){return C.toSource();}function J(X){if(C.get){return C.get(X);\\n}else{return C[X];}}function U(Y,X){if(C.slice){return C.slice(Y,X);}else{return[];}}function T(){if((typeof C.length)=="number"){return C.length;\\n}else{return C.length();}}function G(){A[0]=E;A[1]=0;if(B>0){F();}D=true;}function K(){O(A);A.length=2;\\nA[0]=A[1]=0;D=false;}function H(){return(E-A[0]\\x3c(A.length-2));}function W(X){print(X+": "+A.toSource()+" / "+E+","+B+" / "+S());\\n}function F(){if(!H()){A.push(J(A[0]+A[1]));A[1]++;}return 2+E-A[0];}function L(X,Z){if(X){if(Z){if(!D){G();\\n}for(var Y=0;Y\\x3cX;Y++){B=0;F();E++;}}else{if(D){if(X>1){K();}else{F();}}E+=X;B=0;}}}function R(Z,Y,X){if(Z){if(Y){L(Y,X);\\n}else{if(X&&!D){G();}if(D){F();}B+=Z;}}}function I(X){var Y="";if(X){if(!D){G();}function a(c){var b=A[0]+A[1];\\nreturn U(b,b+c).join("");}if(H()){if(B==0){Y=A[A.length-1];A.length--;Y+=a(X-1);A[1]+=X-1;}else{Y=a(X-1);\\nA[1]+=X-1;var Z=A.length-1;Y=A[Z].substring(B)+Y;A[Z]=A[Z].substring(0,B)+J(A[0]+A[1]);A[1]+=1;}}else{Y=a(X);\\nA[1]+=X;}}return Y;}function V(Y,Z){var a="";if(Y){if(Z){return I(Z);}else{if(!D){G();}var X=F();a=A[X].substring(B,B+Y);\\nA[X]=A[X].substring(0,B)+A[X].substring(B+Y);}}return a;}function M(Z,c){if(Z){if(!D){G();}if(c){var X=Changeset.splitTextLines(Z);\\nif(H()){var Y=A.length-1;var a=A[Y];var b=B;A[Y]=a.substring(0,b)+X[0];E++;X.splice(0,1);Array.prototype.push.apply(A,X);\\nE+=X.length;A.push(a.substring(b));B=0;}else{Array.prototype.push.apply(A,X);E+=X.length;}}else{var Y=F();\\nA[Y]=A[Y].substring(0,B)+Z+A[Y].substring(B);B+=Z.length;}}}function N(){var X=T();if(D){X+=A.length-2-A[1];\\n}return E\\x3cX;}function P(){if(D){K();}}var Q={skip:R,remove:V,insert:M,close:P,hasMore:N,removeLines:I,skipLines:L};\\nreturn Q;};Changeset.applyZip=function(I,K,H,J,G){var F=Changeset.opIterator(I,K);var E=Changeset.opIterator(H,J);\\nvar D=Changeset.smartOpAssembler();var A=Changeset.newOp();var C=Changeset.newOp();var B=Changeset.newOp();\\nwhile(A.opcode||F.hasNext()||C.opcode||E.hasNext()){if((!A.opcode)&&F.hasNext()){F.next(A);}if((!C.opcode)&&E.hasNext()){E.next(C);\\n}G(A,C,B);if(B.opcode){D.append(B);B.opcode="";}}D.endDocument();return D.toString();};Changeset.unpack=function(B){var G=/Z:([0-9a-z]+)([>\\x3c])([0-9a-z]+)|/;\\nvar A=G.exec(B);if((!A)||(!A[0])){Changeset.error("Not a changeset: "+B);}var D=Changeset.parseNum(A[1]);\\nvar E=(A[2]==">")?1:-1;var H=Changeset.parseNum(A[3]);var F=D+E*H;var I=A[0].length;var C=B.indexOf("$");\\nif(C\\x3c0){C=B.length;}return{oldLen:D,newLen:F,ops:B.substring(I,C),charBank:B.substring(C+1)};};Changeset.pack=function(C,G,F,D){var A=G-C;\\nvar E=(A>=0?">"+Changeset.numToString(A):"\\x3c"+Changeset.numToString(-A));var B=[];B.push("Z:",Changeset.numToString(C),E,F,"$",D);\\nreturn B.join("");};Changeset.applyToText=function(H,E){var C=Changeset.unpack(H);Changeset.assert(E.length==C.oldLen,"mismatched apply: ",E.length," / ",C.oldLen);\\nvar F=Changeset.opIterator(C.ops);var G=Changeset.stringIterator(C.charBank);var B=Changeset.stringIterator(E);\\nvar A=Changeset.stringAssembler();while(F.hasNext()){var D=F.next();switch(D.opcode){case"+":A.append(G.take(D.chars));\\nbreak;case"-":B.skip(D.chars);break;case"=":A.append(B.take(D.chars));break;}}A.append(B.take(B.remaining()));\\nreturn A.toString();};Changeset.mutateTextLines=function(G,F){var C=Changeset.unpack(G);var D=Changeset.opIterator(C.ops);\\nvar E=Changeset.stringIterator(C.charBank);var B=Changeset.textLinesMutator(F);while(D.hasNext()){var A=D.next();\\nswitch(A.opcode){case"+":B.insert(E.take(A.chars),A.lines);break;case"-":B.remove(A.chars,A.lines);break;\\ncase"=":B.skip(A.chars,A.lines,(!!A.attribs));break;}}B.close();};Changeset.composeAttributes=function(G,F,E,D){if((!G)&&E){return F;\\n}if(!F){return G;}var A=[];G.replace(/\\\\*([0-9a-z]+)/g,function(I,H){A.push(D.getAttrib(Changeset.parseNum(H)));\\nreturn"";});F.replace(/\\\\*([0-9a-z]+)/g,function(M,L){var H=D.getAttrib(Changeset.parseNum(L));var K=false;\\nfor(var I=0;I\\x3cA.length;I++){var J=A[I];if(J[0]==H[0]){if(H[1]||E){J[1]=H[1];}else{A.splice(I,1);}K=true;\\nbreak;}}if((!K)&&(H[1]||E)){A.push(H);}return"";});A.sort();var B=Changeset.stringAssembler();for(var C=0;\\nC\\x3cA.length;C++){B.append("*");B.append(Changeset.numToString(D.putAttrib(A[C])));}return B.toString();\\n};Changeset._slicerZipperFunc=function(A,B,C,D){if(A.opcode=="-"){Changeset.copyOp(A,C);A.opcode="";}else{if(!A.opcode){Changeset.copyOp(B,C);\\nB.opcode="";}else{switch(B.opcode){case"-":if(B.chars\\x3c=A.chars){if(A.opcode=="="){C.opcode="-";C.chars=B.chars;\\nC.lines=B.lines;C.attribs="";}A.chars-=B.chars;A.lines-=B.lines;B.opcode="";if(!A.chars){A.opcode="";\\n}}else{if(A.opcode=="="){C.opcode="-";C.chars=A.chars;C.lines=A.lines;C.attribs="";}B.chars-=A.chars;\\nB.lines-=A.lines;A.opcode="";}break;case"+":Changeset.copyOp(B,C);B.opcode="";break;case"=":if(B.chars\\x3c=A.chars){C.opcode=A.opcode;\\nC.chars=B.chars;C.lines=B.lines;C.attribs=Changeset.composeAttributes(A.attribs,B.attribs,A.opcode=="=",D);\\nB.opcode="";A.chars-=B.chars;A.lines-=B.lines;if(!A.chars){A.opcode="";}}else{C.opcode=A.opcode;C.chars=A.chars;\\nC.lines=A.lines;C.attribs=Changeset.composeAttributes(A.attribs,B.attribs,A.opcode=="=",D);A.opcode="";\\nB.chars-=A.chars;B.lines-=A.lines;}break;case"":Changeset.copyOp(A,C);A.opcode="";break;}}}};Changeset.applyToAttribution=function(D,C,B){var A=Changeset.unpack(D);\\nreturn Changeset.applyZip(C,0,A.ops,0,function(F,E,G){return Changeset._slicerZipperFunc(F,E,G,B);});\\n};Changeset.mutateAttributionLines=function(N,Q,O){var I=Changeset.unpack(N);var H=Changeset.opIterator(I.ops);\\nvar M=I.charBank;var G=0;var F=Changeset.textLinesMutator(Q);var B=null;function L(){return(B&&B.hasNext())||F.hasMore();\\n}function P(R){if((!(B&&B.hasNext()))&&F.hasMore()){var S=F.removeLines(1);B=Changeset.opIterator(S);\\n}if(B&&B.hasNext()){B.next(R);}else{R.opcode="";}}var D=null;function J(R){if(!D){D=Changeset.mergingOpAssembler();\\n}D.append(R);if(R.lines>0){Changeset.assert(R.lines==1,"Can\\\'t have op.lines of ",R.lines," in attribution lines");\\nF.insert(D.toString(),1);D=null;}}var A=Changeset.newOp();var E=Changeset.newOp();var C=Changeset.newOp();\\nwhile(A.opcode||H.hasNext()||E.opcode||L()){if((!A.opcode)&&H.hasNext()){H.next(A);}if((!A.opcode)&&(!E.opcode)&&(!D)&&(!(B&&B.hasNext()))){break;\\n}else{if(A.opcode=="="&&A.lines>0&&(!A.attribs)&&(!E.opcode)&&(!D)&&(!(B&&B.hasNext()))){F.skipLines(A.lines);\\nA.opcode="";}else{if(A.opcode=="+"){if(A.lines>1){var K=M.indexOf("\\\\n",G)+1-G;Changeset.copyOp(A,C);A.chars-=K;\\nA.lines--;C.lines=1;C.chars=K;}else{Changeset.copyOp(A,C);A.opcode="";}J(C);G+=C.chars;C.opcode="";}else{if((!E.opcode)&&L()){P(E);\\n}Changeset._slicerZipperFunc(E,A,C,O);if(C.opcode){J(C);C.opcode="";}}}}}Changeset.assert(!D,"line assembler not finished");\\nF.close();};Changeset.joinAttributionLines=function(D){var C=Changeset.mergingOpAssembler();for(var A=0;\\nA\\x3cD.length;A++){var E=D[A];var B=Changeset.opIterator(E);while(B.hasNext()){C.append(B.next());}}return C.toString();\\n};Changeset.splitAttributionLines=function(J,K){var G=Changeset.opIterator(J);var C=Changeset.mergingOpAssembler();\\nvar I=[];var D=0;function E(L){C.append(L);if(L.lines>0){I.push(C.toString());C.clear();}D+=L.chars;}while(G.hasNext()){var A=G.next();\\nvar F=A.chars;var B=A.lines;while(B>1){var H=K.indexOf("\\\\n",D)+1;Changeset.assert(H>0,"newlineEnd \\x3c= 0 in splitAttributionLines");\\nA.chars=H-D;A.lines=1;E(A);F-=A.chars;B-=A.lines;}if(B==1){A.chars=F;A.lines=1;}E(A);}return I;};Changeset.splitTextLines=function(A){return A.match(/[^\\\\n]*(?:\\\\n|[^\\\\n]$)/g);\\n};Changeset.compose=function(J,H,L){var B=Changeset.unpack(J);var A=Changeset.unpack(H);var K=B.oldLen;\\nvar I=B.newLen;Changeset.assert(I==A.oldLen,"mismatched composition");var G=A.newLen;var D=Changeset.stringIterator(B.charBank);\\nvar E=Changeset.stringIterator(A.charBank);var C=Changeset.stringAssembler();var F=Changeset.applyZip(B.ops,0,A.ops,0,function(O,N,M){var Q=O.opcode;\\nvar P=N.opcode;if(Q=="+"&&P=="-"){D.skip(Math.min(O.chars,N.chars));}Changeset._slicerZipperFunc(O,N,M,L);\\nif(M.opcode=="+"){if(P=="+"){C.append(E.take(M.chars));}else{C.append(D.take(M.chars));}}});return Changeset.pack(K,G,F,C.toString());\\n};Changeset.attributeTester=function(D,B){if(!B){return C;}var A=B.putAttrib(D,true);if(A\\x3c0){return C;\\n}else{var E=new RegExp("\\\\\\\\*"+Changeset.numToString(A)+"(?!\\\\\\\\w)");return function(F){return E.test(F);\\n};}function C(F){return false;}};Changeset.identity=function(A){return Changeset.pack(A,A,"","");};Changeset.makeSplice=function(B,A,F,E,H,J){var D=B.length;\\nif(A>=D){A=D-1;}if(F>B.length-A-1){F=B.length-A-1;}var G=B.substring(A,A+F);var I=D+E.length-G.length;\\nvar C=Changeset.smartOpAssembler();C.appendOpWithText("=",B.substring(0,A));C.appendOpWithText("-",G);\\nC.appendOpWithText("+",E,H,J);C.endDocument();return Changeset.pack(D,I,C.toString(),E);};Changeset.toSplices=function(G){var F=Changeset.unpack(G);\\nvar B=[];var C=0;var E=Changeset.opIterator(F.ops);var H=Changeset.stringIterator(F.charBank);var D=false;\\nwhile(E.hasNext()){var A=E.next();if(A.opcode=="="){C+=A.chars;D=false;}else{if(!D){B.push([C,C,""]);\\nD=true;}if(A.opcode=="-"){C+=A.chars;B[B.length-1][1]+=A.chars;}else{if(A.opcode=="+"){B[B.length-1][2]+=H.take(A.chars);\\n}}}}return B;};Changeset.characterRangeFollow=function(M,N,L,K){var C=N;var A=L;var J=Changeset.toSplices(M);\\nvar H=0;for(var G=0;G\\x3cJ.length;G++){var F=J[G];var B=F[0]+H;var E=F[1]+H;var I=F[2].length;var D=I-(E-B);\\nif(B\\x3c=C&&E>=A){if(K){C=A=B;}else{C=A=B+I;}}else{if(E\\x3c=C){C+=D;A+=D;}else{if(B>=A){}else{if(B>=C&&E\\x3c=A){A+=D;\\n}else{if(E\\x3cA){C=B+I;A+=D;}else{A=B;}}}}}H+=D;}return[C,A];};Changeset.moveOpsToNewPool=function(A,F,C){var B=A.indexOf("$");\\nif(B\\x3c0){B=A.length;}var D=A.substring(0,B);var E=A.substring(B);return D.replace(/\\\\*([0-9a-z]+)/g,function(K,G){var H=Changeset.parseNum(G);\\nvar J=F.getAttrib(H);var I=C.putAttrib(J);return"*"+Changeset.numToString(I);})+E;};Changeset.makeAttribution=function(B){var A=Changeset.smartOpAssembler();\\nA.appendOpWithText("+",B);return A.toString();};Changeset.eachAttribNumber=function(A,D){var B=A.indexOf("$");\\nif(B\\x3c0){B=A.length;}var C=A.substring(0,B);C.replace(/\\\\*([0-9a-z]+)/g,function(F,E){D(Changeset.parseNum(E));\\nreturn"";});};Changeset.filterAttribNumbers=function(B,A){return Changeset.mapAttribNumbers(B,A);};Changeset.mapAttribNumbers=function(A,E){var B=A.indexOf("$");\\nif(B\\x3c0){B=A.length;}var D=A.substring(0,B);var C=D.replace(/\\\\*([0-9a-z]+)/g,function(H,G){var F=E(Changeset.parseNum(G));\\nif(F===true){return H;}else{if((typeof F)==="number"){return"*"+Changeset.numToString(F);}else{return"";\\n}}});return C+A.substring(B);};Changeset.makeAText=function(A,B){return{text:A,attribs:(B||Changeset.makeAttribution(A))};\\n};Changeset.applyToAText=function(A,B,C){return{text:Changeset.applyToText(A,B.text),attribs:Changeset.applyToAttribution(A,B.attribs,C)};\\n};Changeset.cloneAText=function(A){return{text:A.text,attribs:A.attribs};};Changeset.copyAText=function(A,B){B.text=A.text;\\nB.attribs=A.attribs;};Changeset.appendATextToAssembler=function(C,B){var D=Changeset.opIterator(C.attribs);\\nvar A=Changeset.newOp();while(D.hasNext()){D.next(A);if(!D.hasNext()){if(A.lines\\x3c=1){A.lines=0;A.chars--;\\nif(A.chars){B.append(A);}}else{var F=C.text.lastIndexOf("\\\\n",C.text.length-2)+1;var E=C.text.length-F-1;\\nA.lines--;A.chars-=(E+1);B.append(A);A.lines=0;A.chars=E;if(A.chars){B.append(A);}}}else{B.append(A);\\n}}};Changeset.prepareForWire=function(C,B){var A=new AttribPool();var D=Changeset.moveOpsToNewPool(C,B,A);\\nreturn{translated:D,pool:A};};Changeset.isIdentity=function(B){var A=Changeset.unpack(B);return A.ops==""&&A.oldLen==A.newLen;\\n};Changeset.opAttributeValue=function(C,B,A){return Changeset.attribsAttributeValue(C.attribs,B,A);};\\nChangeset.attribsAttributeValue=function(C,D,A){var B="";if(C){Changeset.eachAttribNumber(C,function(E){if(A.getAttribKey(E)==D){B=A.getAttribValue(E);\\n}});}return B;};Changeset.builder=function(D){var B=Changeset.smartOpAssembler();var A=Changeset.newOp();\\nvar E=Changeset.stringAssembler();var C={keep:function(I,G,F,H){A.opcode="=";A.attribs=(F&&Changeset.makeAttribsString("=",F,H))||"";\\nA.chars=I;A.lines=(G||0);B.append(A);return C;},keepText:function(H,G,F){B.appendOpWithText("=",H,G,F);\\nreturn C;},insert:function(F,H,G){B.appendOpWithText("+",F,H,G);E.append(F);return C;},remove:function(G,F){A.opcode="-";\\nA.attribs="";A.chars=G;A.lines=(F||0);B.append(A);return C;},toString:function(){B.endDocument();var F=D+B.getLengthChange();\\nreturn Changeset.pack(D,F,B.toString(),E.toString());}};return C;};Changeset.makeAttribsString=function(E,A,D){if(!A){return"";\\n}else{if((typeof A)=="string"){return A;}else{if(D&&A&&A.length){if(A.length>1){A=A.slice();A.sort();\\n}var C=[];for(var B=0;B\\x3cA.length;B++){var F=A[B];if(E=="="||(E=="+"&&F[1])){C.push("*"+Changeset.numToString(D.putAttrib(F)));\\n}}return C.join("");}}}};Changeset.subattribution=function(I,F,H){var E=Changeset.opIterator(I,0);var D=Changeset.smartOpAssembler();\\nvar A=Changeset.newOp();var B=Changeset.newOp();var C=Changeset.newOp();function G(){if(B.chars){while(B.opcode&&(A.opcode||E.hasNext())){if(!A.opcode){E.next(A);\\n}if(B.opcode&&A.opcode&&B.chars>=A.chars&&A.lines>0&&B.lines\\x3c=0){B.lines++;}Changeset._slicerZipperFunc(A,B,C,null);\\nif(C.opcode){D.append(C);C.opcode="";}}}}B.opcode="-";B.chars=F;G();if(H===undefined){if(A.opcode){D.append(A);\\n}while(E.hasNext()){E.next(A);D.append(A);}}else{B.opcode="=";B.chars=H-F;G();}return D.toString();};\\nChangeset.inverse=function(U,F,G,J){function P(a){if(F.get){return F.get(a);}else{return F[a];}}function Z(){if((typeof F.length)=="number"){return F.length;\\n}else{return F.length();}}function Q(a){if(G.get){return G.get(a);}else{return G[a];}}function Y(){if((typeof G.length)=="number"){return G.length;\\n}else{return G.length();}}var C=0;var E=0;var D=null;var I;var A=Changeset.newOp("+");var R=Changeset.unpack(U);\\nvar N=Changeset.opIterator(R.ops);var H=Changeset.builder(R.newLen);function M(c,e){if((!D)||(I!=C)){D=Changeset.opIterator(Q(C));\\nI=C;var b=0;var d=false;while(!d){D.next(A);if(b+A.chars>=E){A.chars-=(E-b);d=true;}else{b+=A.chars;}}}while(c>0){if((!A.chars)&&(!D.hasNext())){C++;\\nE=0;I=C;A.chars=0;D=Changeset.opIterator(Q(C));}if(!A.chars){D.next(A);}var a=Math.min(c,A.chars);e(a,A.attribs,a==A.chars&&A.lines>0);\\nc-=a;A.chars-=a;E+=a;}if((!A.chars)&&(!D.hasNext())){C++;E=0;}}function X(b,a){if(a){C+=a;E=0;}else{if(D&&I==C){M(b,function(){});\\n}else{E+=b;}}}function S(e){var a=0;var b=Changeset.stringAssembler();var c=P(C).substring(E);a+=c.length;\\nb.append(c);var f=C+1;while(a\\x3ce){var d=P(f);a+=d.length;b.append(d);f++;}return b.toString().substring(0,e);\\n}function W(b){var a={};return function(c){if(!a[c]){a[c]=b(c);}return a[c];};}var K=[];var L=[];while(N.hasNext()){var B=N.next();\\nif(B.opcode=="="){if(B.attribs){K.length=0;L.length=0;Changeset.eachAttribNumber(B.attribs,function(a){K.push(J.getAttribKey(a));\\nL.push(J.getAttribValue(a));});var T=W(function(f){var d=[];for(var a=0;a\\x3cK.length;a++){var c=K[a];var e=L[a];\\nvar b=Changeset.attribsAttributeValue(f,c,J);if(e!=b){d.push([c,b]);}}return Changeset.makeAttribsString("=",d,J);\\n});M(B.chars,function(a,c,b){H.keep(a,b?1:0,T(c));});}else{X(B.chars,B.lines);H.keep(B.chars,B.lines);\\n}}else{if(B.opcode=="+"){H.remove(B.chars,B.lines);}else{if(B.opcode=="-"){var V=S(B.chars);var O=0;M(B.chars,function(a,b,c){H.insert(V.substr(O,a),b);\\nO+=a;});}}}}return Changeset.checkRep(H.toString());};Changeset.follow=function(N,L,K,G){var C=Changeset.unpack(N);\\nvar B=Changeset.unpack(L);var O=C.oldLen;var M=B.oldLen;Changeset.assert(O==M,"mismatched follow");var I=Changeset.stringIterator(C.charBank);\\nvar H=Changeset.stringIterator(B.charBank);var F=C.newLen;var D=0;var A=0;var E=Changeset.attributeTester(["insertorder","first"],G);\\nvar J=Changeset.applyZip(C.ops,0,B.ops,0,function(Q,P,R){if(Q.opcode=="+"||P.opcode=="+"){var S;if(P.opcode!="+"){S=1;\\n}else{if(Q.opcode!="+"){S=2;}else{var V=I.peek(1);var T=H.peek(1);var W=E(Q.attribs);var U=E(P.attribs);\\nif(W&&!U){S=1;}else{if(U&&!W){S=2;}else{if(V=="\\\\n"&&T!="\\\\n"){S=2;}else{if(V!="\\\\n"&&T=="\\\\n"){S=1;}else{if(K){S=2;\\n}else{S=1;}}}}}}}if(S==1){I.skip(Q.chars);R.opcode="=";R.lines=Q.lines;R.chars=Q.chars;R.attribs="";Q.opcode="";\\n}else{H.skip(P.chars);Changeset.copyOp(P,R);P.opcode="";}}else{if(Q.opcode=="-"){if(!P.opcode){Q.opcode="";\\n}else{if(Q.chars\\x3c=P.chars){P.chars-=Q.chars;P.lines-=Q.lines;Q.opcode="";if(!P.chars){P.opcode="";}}else{Q.chars-=P.chars;\\nQ.lines-=P.lines;P.opcode="";}}}else{if(P.opcode=="-"){Changeset.copyOp(P,R);if(!Q.opcode){P.opcode="";\\n}else{if(P.chars\\x3c=Q.chars){Q.chars-=P.chars;Q.lines-=P.lines;P.opcode="";if(!Q.chars){Q.opcode="";}}else{R.lines=Q.lines;\\nR.chars=Q.chars;P.lines-=Q.lines;P.chars-=Q.chars;Q.opcode="";}}}else{if(!Q.opcode){Changeset.copyOp(P,R);\\nP.opcode="";}else{if(!P.opcode){Changeset.copyOp(Q,R);Q.opcode="";}else{R.opcode="=";R.attribs=Changeset.followAttributes(Q.attribs,P.attribs,G);\\nif(Q.chars\\x3c=P.chars){R.chars=Q.chars;R.lines=Q.lines;P.chars-=Q.chars;P.lines-=Q.lines;Q.opcode="";if(!P.chars){P.opcode="";\\n}}else{R.chars=P.chars;R.lines=P.lines;Q.chars-=P.chars;Q.lines-=P.lines;P.opcode="";}}}}}}switch(R.opcode){case"=":D+=R.chars;\\nA+=R.chars;break;case"-":D+=R.chars;break;case"+":A+=R.chars;break;}});A+=F-D;return Changeset.pack(F,A,J,B.charBank);\\n};Changeset.followAttributes=function(F,E,B){if((!E)||(!B)){return"";}if(!F){return E;}var A=[];E.replace(/\\\\*([0-9a-z]+)/g,function(H,G){A.push(B.getAttrib(Changeset.parseNum(G)));\\nreturn"";});F.replace(/\\\\*([0-9a-z]+)/g,function(K,J){var I=B.getAttrib(Changeset.parseNum(J));for(var G=0;\\nG\\x3cA.length;G++){var H=A[G];if(I[0]==H[0]){if(I[1]\\x3c=H[1]){A.splice(G,1);}break;}}return"";});var C=Changeset.stringAssembler();\\nfor(var D=0;D\\x3cA.length;D++){C.append("*");C.append(Changeset.numToString(B.putAttrib(A[D])));}return C.toString();\\n};function makeCSSManager(I){function E(N){var M=document.styleSheets;for(var K=0;K\\x3cM.length;K++){var L=M[K];\\nif(L.title==N){return L;}}return null;}var A=E(I);function C(){return(A.cssRules||A.rules);}function H(K){if(A.deleteRule){A.deleteRule(K);\\n}else{A.removeRule(K);}}function F(L,K){if(A.insertRule){A.insertRule(K+" {}",L);}else{A.addRule(K,null,L);\\n}}var B=[];function D(L){for(var K=0;K\\x3cB.length;K++){if(B[K]==L){return K;}}return -1;}function G(K){var L=D(K);\\nif(L\\x3c0){F(0,K);B.splice(0,0,K);L=0;}return C().item(L).style;}function J(L){var K=D(L);if(K>=0){H(K);\\nB.splice(K,1);}}return{selectorStyle:G,removeSelectorStyle:J,info:function(){return B.length+":"+C().length;\\n}};}var colorutils={};colorutils.css2triple=function(C){var B=colorutils.css2sixhex(C);function A(D){return Number("0x"+D)/255;\\n}return[A(B.substr(0,2)),A(B.substr(2,2)),A(B.substr(4,2))];};colorutils.css2sixhex=function(E){var A=/[0-9a-fA-F]+/.exec(E)[0];\\nif(A.length!=6){var C=A.charAt(0);var B=A.charAt(1);var D=A.charAt(2);A=C+C+B+B+D+D;}return A;};colorutils.triple2css=function(B){function A(D){var C=colorutils.clamp(Math.round(D*255),0,255);\\nreturn("0"+C.toString(16)).slice(-2);}return"#"+A(B[0])+A(B[1])+A(B[2]);};colorutils.clamp=function(A,C,B){return A\\x3cC?C:(A>B?B:A);\\n};colorutils.min3=function(C,B,A){return(C\\x3cB)?(C\\x3cA?C:A):(B\\x3cA?B:A);};colorutils.max3=function(C,B,A){return(C>B)?(C>A?C:A):(B>A?B:A);\\n};colorutils.colorMin=function(A){return colorutils.min3(A[0],A[1],A[2]);};colorutils.colorMax=function(A){return colorutils.max3(A[0],A[1],A[2]);\\n};colorutils.scale=function(B,A,C){return colorutils.clamp(A+B*(C-A),0,1);};colorutils.unscale=function(B,A,C){return colorutils.clamp((B-A)/(C-A),0,1);\\n};colorutils.scaleColor=function(C,B,A){return[colorutils.scale(C[0],B,A),colorutils.scale(C[1],B,A),colorutils.scale(C[2],B,A)];\\n};colorutils.unscaleColor=function(C,B,A){return[colorutils.unscale(C[0],B,A),colorutils.unscale(C[1],B,A),colorutils.unscale(C[2],B,A)];\\n};colorutils.luminosity=function(A){return A[0]*0.3+A[1]*0.59+A[2]*0.11;};colorutils.saturate=function(A){var C=colorutils.colorMin(A);\\nvar B=colorutils.colorMax(A);if(B-C\\x3c=0){return[1,1,1];}return colorutils.unscaleColor(A,C,B);};colorutils.blend=function(C,B,A){return[colorutils.scale(A,C[0],B[0]),colorutils.scale(A,C[1],B[1]),colorutils.scale(A,C[2],B[2])];\\n};undoModule=(function(){var A=(function(){var M=[];var O=0;var Q="undoableEvent";var N="externalChange";\\nfunction P(){M.length=0;M.push({elementType:Q,eventType:"bottom"});O=1;}P();function T(Y){var X=extend({},Y);\\nX.elementType=Q;M.push(X);O++;}function U(Y){var X=M.length-1;if(M[X].elementType==N){M[X].changeset=Changeset.compose(M[X].changeset,Y,D());\\n}else{M.push({elementType:N,changeset:Y});}}function R(e){var c=M.length-1-e;var X=M.length-1;while(X>c||M[X].elementType==N){if(M[X].elementType==N){var Z=M[X];\\nvar Y=M[X-1];if(Y.backset){var b=Z.changeset;var d=Y.backset;Y.backset=Changeset.follow(b,Y.backset,false,D());\\nZ.changeset=Changeset.follow(d,Z.changeset,true,D());if((typeof Y.selStart)=="number"){var a=Changeset.characterRangeFollow(b,Y.selStart,Y.selEnd);\\nY.selStart=a[0];Y.selEnd=a[1];if(Y.selStart==Y.selEnd){Y.selFocusAtStart=false;}}}M[X-1]=Z;M[X]=Y;if(X>=2&&M[X-2].elementType==N){Z.changeset=Changeset.compose(M[X-2].changeset,Z.changeset,D());\\nM.splice(X-2,1);X--;}}else{X--;}}}function W(X){R(X);return M[M.length-1-X];}function V(){return O;}function S(){R(0);\\nO--;return M.pop();}return{numEvents:V,popEvent:S,pushEvent:T,pushExternalChange:U,clearStack:P,getNthFromTop:W};\\n})();var B=0;function J(){A.clearStack();B=0;}function H(O,P){var M=0;var N=0;while(M>=0&&M\\x3cO.length){M=O.indexOf(P,M);\\nif(M>=0){N++;M++;}}return N;}function C(M,N){return H(Changeset.unpack(M).ops,N);}function K(N,M){if(!N){return M;\\n}if(!M){return N;}var U=C(N,"+");var T=C(M,"+");var R=C(N,"-");var Q=C(M,"-");if(U==1&&T==1&&R==0&&Q==0){var O=Changeset.compose(N,M,D());\\nvar S=C(O,"+");var P=C(O,"-");if(S==1&&P==0){return O;}}else{if(U==0&&T==0&&R==1&&Q==1){var O=Changeset.compose(N,M,D());\\nvar S=C(O,"+");var P=C(O,"-");if(S==0&&P==1){return O;}}}return null;}function I(M){var N=A.getNthFromTop(0);\\nfunction P(){if((typeof M.selStart)=="number"){N.selStart=M.selStart;N.selEnd=M.selEnd;N.selFocusAtStart=M.selFocusAtStart;\\n}}if((!M.backset)||Changeset.isIdentity(M.backset)){P();}else{var O=false;if(N.eventType==M.eventType){var Q=K(M.backset,N.backset);\\nif(Q){N.backset=Q;P();O=true;}}if(!O){A.pushEvent(M);}B=0;}}function G(M){if(M&&!Changeset.isIdentity(M)){A.pushExternalChange(M);\\n}}function E(M){if((typeof M.selStart)!="number"){return null;}else{return{selStart:M.selStart,selEnd:M.selEnd,selFocusAtStart:M.selFocusAtStart};\\n}}function F(M){if(B\\x3cA.numEvents()-1){var O=A.getNthFromTop(B);var N=A.getNthFromTop(B+1);var P=M(O.backset,E(N));\\nA.pushEvent(P);B+=2;}else{M();}}function L(M){if(B>=2){var O=A.getNthFromTop(0);var N=A.getNthFromTop(1);\\nM(O.backset,E(N));A.popEvent();B-=2;}else{M();}}function D(){return undoModule.apool;}return{clearHistory:J,reportEvent:I,reportExternalChange:G,performUndo:F,performRedo:L,enabled:true,apool:null};\\n})();var _MAX_LIST_LEVEL=8;function sanitizeUnicode(A){return A.replace(/[\\\\uffff\\\\ufffe\\\\ufeff\\\\ufdd0-\\\\ufdef\\\\ud800-\\\\udfff]/g,"?");\\n}function makeContentCollector(h,H,M,Y,U){H=H||{};var B=Y||{isNodeText:function(k){return(k.nodeType==3);\\n},nodeTagName:function(k){return k.tagName;},nodeValue:function(k){return k.nodeValue;},nodeNumChildren:function(k){return k.childNodes.length;\\n},nodeChild:function(l,k){return l.childNodes.item(k);},nodeProp:function(l,k){return l[k];},nodeAttr:function(l,k){return l.getAttribute(k);\\n},optNodeInnerHTML:function(k){return k.innerHTML;}};var i={div:1,p:1,pre:1,li:1};function R(k){return !!i[(B.nodeTagName(k)||"").toLowerCase()];\\n}function e(k){return sanitizeUnicode(k.replace(/[\\\\n\\\\r ]/g," ").replace(/\\\\xa0/g," ").replace(/\\\\t/g," "));\\n}function Q(l,k){return B.nodeProp(l,"_magicdom_"+k);}var A=(function(){var k=[];var o=[];var l=null;\\nvar n=Changeset.newOp("+");var m={length:function(){return k.length;},atColumnZero:function(){return k[k.length-1]==="";\\n},startNew:function(){k.push("");m.flush(true);l=Changeset.smartOpAssembler();},textOfLine:function(p){return k[p];\\n},appendText:function(p,q){k[k.length-1]+=p;n.attribs=q;n.chars=p.length;l.append(n);},textLines:function(){return k.slice();\\n},attribLines:function(){return o;},flush:function(p){if(l){o.push(l.toString());l=null;}}};m.startNew();\\nreturn m;}());var E={};function O(k){if(!A.atColumnZero()){K(k);}}var N,D,C;var J=[-1,-1],I=[-1,-1];var j={div:1,p:1,pre:1};\\nfunction S(k,l){if(B.nodeNumChildren(k)==0){return true;}if(B.nodeNumChildren(k)==1&&Q(k,"shouldBeEmpty")&&B.optNodeInnerHTML(k)=="&nbsp;"&&!Q(k,"unpasted")){if(l){var m=B.nodeChild(k,0);\\nL(m,0,l);L(m,1,l);}return true;}return false;}function F(n,m){var l=A.length()-1;var k=A.textOfLine(l).length;\\nif(k==0&&m.listType&&m.listType!="none"){k+=1;}k+=n;return[l,k];}function P(k,l,m){if(!B.isNodeText(k)){L(k,l,m);\\n}}function L(m,k,l){if(D&&m==D.node&&D.index==k){J=F(0,l);}if(C&&m==C.node&&C.index==k){I=F(0,l);}}function b(k,l){k.flags[l]=(k.flags[l]||0)+1;\\n}function W(k,l){k.flags[l]--;}function X(k,l){if(!k.attribs[l]){k.attribs[l]=1;}else{k.attribs[l]++;\\n}G(k);}function f(k,l){k.attribs[l]--;G(k);}function T(k,l){var m=k.listType;k.listLevel=(k.listLevel||0)+1;\\nif(l!="none"){k.listNesting=(k.listNesting||0)+1;}k.listType=l;G(k);return m;}function d(k,l){k.listLevel--;\\nif(k.listType!="none"){k.listNesting--;}k.listType=l;G(k);}function c(k,m){var l=k.author;k.authorLevel=(k.authorLevel||0)+1;\\nk.author=m;G(k);return l;}function g(k,l){k.authorLevel--;k.author=l;G(k);}function G(k){var l=[];for(var m in k.attribs){if(k.attribs[m]){l.push([m,"true"]);\\n}}if(k.authorLevel>0){var n=["author",k.author];if(M.putAttrib(n,true)>=0){l.push(n);}}k.attribString=Changeset.makeAttribsString("+",l,M);\\n}function V(k){A.appendText("*",Changeset.makeAttribsString("+",[["list",k.listType],["insertorder","first"]],M));\\n}function K(k){if(k){var l=A.textOfLine(A.length()-1).length==0;if(l&&k.listType&&k.listType!="none"){V(k);\\n}}A.startNew();}E.notifySelection=function(k){if(k){N=k;D=N.startPoint;C=N.endPoint;}};E.collectContent=function(l,k){if(!k){k={flags:{},attribs:{},attribString:""};\\n}var AF=R(l);var AK=S(l,k);if(AF){O(k);}var AL=A.length()-1;P(l,0,k);if(B.isNodeText(l)){var n=B.nodeValue(l);\\nvar AG="";var s=0;if(n.length==0){if(D&&l==D.node){J=F(0,k);}if(C&&l==C.node){I=F(0,k);}}while(n.length>0){var AA=0;\\nif(k.flags.preMode){var AE=n.split("\\\\n",1)[0];AA=AE.length+1;AG=n.substring(AA);n=AE;}else{}if(D&&l==D.node&&D.index-s\\x3c=n.length){J=F(D.index-s,k);\\n}if(C&&l==C.node&&C.index-s\\x3c=n.length){I=F(C.index-s,k);}var t=n;if((!k.flags.preMode)&&/^[\\\\r\\\\n]*$/.exec(n)){t="";\\n}var AC=A.textOfLine(A.length()-1).length==0;if(AC){t=t.replace(/^\\\\n*/,"");}if(AC&&k.listType&&k.listType!="none"){V(k);\\n}A.appendText(e(t),k.attribString);s+=AA;n=AG;if(n.length>0){K(k);}}}else{var m=(B.nodeTagName(l)||"").toLowerCase();\\nif(m=="br"){K(k);}else{if(m=="script"||m=="style"){}else{if(!AK){var o=B.nodeAttr(l,"style");var q=B.nodeProp(l,"className");\\nvar w=(m=="pre");if((!w)&&H.safari){w=(o&&/\\\\bwhite-space:\\\\s*pre\\\\b/i.exec(o));}if(w){b(k,"preMode");}var r=null;\\nvar v=null;var AB=null;if(h){function u(x){r=(r||[]);r.push(x);X(k,x);}if(m=="b"||(o&&/\\\\bfont-weight:\\\\s*bold\\\\b/i.exec(o))||m=="strong"){u("bold");\\n}if(m=="i"||(o&&/\\\\bfont-style:\\\\s*italic\\\\b/i.exec(o))||m=="em"){u("italic");}if(m=="u"||(o&&/\\\\btext-decoration:\\\\s*underline\\\\b/i.exec(o))||m=="ins"){u("underline");\\n}if(m=="s"||(o&&/\\\\btext-decoration:\\\\s*line-through\\\\b/i.exec(o))||m=="del"){u("strikethrough");}if(m=="ul"){var z;\\nvar AD=q&&/(?:^| )list-(bullet[12345678])\\\\b/.exec(q);z=AD&&AD[1]||"bullet"+String(Math.min(_MAX_LIST_LEVEL,(k.listNesting||0)+1));\\nv=(T(k,z)||"none");}else{if((m=="div"||m=="p")&&q&&q.match(/(?:^| )ace-line\\\\b/)){v=(T(k,z)||"none");}}if(U&&q){var y=q.match(/\\\\S+/g);\\nif(y&&y.length>0){for(var p=0;p\\x3cy.length;p++){var AH=y[p];var AI=U(AH);if(AI){AB=(c(k,AI)||"none");break;\\n}}}}}var AJ=B.nodeNumChildren(l);for(var p=0;p\\x3cAJ;p++){var AH=B.nodeChild(l,p);E.collectContent(AH,k);\\n}if(w){W(k,"preMode");}if(r){for(var p=0;p\\x3cr.length;p++){f(k,r[p]);}}if(v){d(k,v);}if(AB){g(k,AB);}}}}}if(!H.msie){P(l,1,k);\\n}if(AF){if(A.length()-1==AL){K(k);}else{O(k);}}if(H.msie){P(l,1,k);}};E.notifyNextNode=function(k){if((!k)||(R(k)&&!S(k))){O(null);\\n}};var a=function(){return J;};var Z=function(){return I;};E.getLines=function(){return A.textLines();\\n};E.finish=function(){A.flush();var l=A.attribLines();var k=E.getLines();k.length--;l.length--;var n=a();\\nvar o=Z();function p(){var v=2000;var z=10;var x=0;var w=0;for(var q=k.length-1;q>=0;q--){var s=k[q];\\nvar u=l[q];if(s.length>v+z){var r=[];var t=[];while(s.length>v){lengthToTake=v;r.push(s.substring(0,lengthToTake));\\ns=s.substring(lengthToTake);t.push(Changeset.subattribution(u,0,lengthToTake));u=Changeset.subattribution(u,lengthToTake);\\n}if(s.length>0){r.push(s);t.push(u);}function y(AA){if(AA[0]\\x3c0){return;}var AB=AA[0];var AD=AA[1];if(AB>q){AB+=(r.length-1);\\n}else{if(AB==q){var AC=0;while(AD>r[AC].length){AD-=r[AC].length;AC++;}AB+=AC;}}AA[0]=AB;AA[1]=AD;}y(n);\\ny(o);x++;w+=r.length;r.unshift(q,1);k.splice.apply(k,r);t.unshift(q,1);l.splice.apply(l,t);}}return{linesWrapped:x,numLinesAfter:w};\\n}var m=p();return{selStart:n,selEnd:o,linesWrapped:m.linesWrapped,numLinesAfter:m.numLinesAfter,lines:k,lineAttribs:l};\\n};return E;}function makeChangesetTracker(K,A,J){var D=Changeset.makeAText("\\\\n");var B=null;var C=Changeset.identity(1);\\nvar F=false;var E=false;var G=null;var H=null;function L(){if(G&&H===null){H=K.setTimeout(function(){try{G();\\n}finally{H=null;}},0);}}var I;return I={isTracking:function(){return F;},setBaseText:function(M){I.setBaseAttributedText(Changeset.makeAText(M),null);\\n},setBaseAttributedText:function(M,N){J.withCallbacks("setBaseText",function(P){F=true;D=Changeset.cloneAText(M);\\nif(N){var O=(new AttribPool()).fromJsonable(N);D.attribs=Changeset.moveOpsToNewPool(D.attribs,O,A);}B=null;\\nC=Changeset.identity(M.text.length);E=true;try{P.setDocumentAttributedText(M);}finally{E=false;}});},composeUserChangeset:function(M){if(!F){return;\\n}if(E){return;}if(Changeset.isIdentity(M)){return;}C=Changeset.compose(C,M,A);L();},applyChangesToBase:function(M,O,N){if(!F){return;\\n}J.withCallbacks("applyChangesToBase",function(V){if(N){var U=(new AttribPool()).fromJsonable(N);M=Changeset.moveOpsToNewPool(M,U,A);\\n}D=Changeset.applyToAText(M,D,A);var P=M;if(B){var Q=B;B=Changeset.follow(M,Q,false,A);P=Changeset.follow(Q,M,true,A);\\n}var R=true;var S=C;C=Changeset.follow(P,S,R,A);var T=Changeset.follow(S,P,!R,A);var W=true;E=true;try{V.applyChangesetToDocument(T,W);\\n}finally{E=false;}});},prepareUserChangeset:function(){var M;if(B){M=Changeset.compose(B,C,A);}else{if(Changeset.isIdentity(C)){M=null;\\n}else{M=C;}}var N=null;if(M){B=M;C=Changeset.identity(Changeset.newLen(M));N=M;}var P=null;if(N){var O=Changeset.prepareForWire(N,A);\\nP=O.pool.toJsonable();N=O.translated;}var Q={changeset:N,apool:P};return Q;},applyPreparedChangesetToBase:function(){if(!B){throw new Error("applySubmittedChangesToBase: no submitted changes to apply");\\n}D=Changeset.applyToAText(B,D,A);B=null;},setUserChangeNotificationCallback:function(M){G=M;},hasUncommittedChanges:function(){return !!(B||(!Changeset.isIdentity(C)));\\n}};}var linestylefilter={};linestylefilter.ATTRIB_CLASSES={bold:"tag:b",italic:"tag:i",underline:"tag:u",strikethrough:"tag:s"};\\nlinestylefilter.getAuthorClassName=function(A){return"author-"+A.replace(/[^a-y0-9]/g,function(B){if(B=="."){return"-";\\n}return"z"+B.charCodeAt(0)+"z";});};linestylefilter.getLineStyleFilter=function(B,E,A,D){if(B==0){return A;\\n}var C=A;var F=(function(){var N=B;var L=0;var J;var G;function P(R){var Q="";Changeset.eachAttribNumber(R,function(U){var S=D.getAttribKey(U);\\nif(S){var T=D.getAttribValue(U);if(T){if(S=="author"){Q+=" "+linestylefilter.getAuthorClassName(T);}else{if(S=="list"){Q+=" list:"+T;\\n}else{if(linestylefilter.ATTRIB_CLASSES[S]){Q+=" "+linestylefilter.ATTRIB_CLASSES[S];}}}}}});return Q.substring(1);\\n}var O=Changeset.opIterator(E);var H,I;function K(){H=O.next();I=(H.opcode&&P(H.attribs));}K();function M(){if(L\\x3cN){J=I;\\nG=H.chars;K();while(H.opcode&&I==J){G+=H.chars;K();}}}M();return function(Q,S){while(Q.length>0){if(G\\x3c=0){return C(Q,S);\\n}var R=Q.length;if(R>G){R=G;}var T=Q.substring(0,R);Q=Q.substring(R);C(T,(S&&S+" ")+J);L+=R;G-=R;if(G==0){M();\\n}}};})();return F;};linestylefilter.getAtSignSplitterFilter=function(E,C){var B=/@/g;B.lastIndex=0;var A=null;\\nvar D;while((D=B.exec(E))){if(!A){A=[];}A.push(D.index);}if(!A){return C;}return linestylefilter.textAndClassFuncSplitter(C,A);\\n};linestylefilter.REGEX_WORDCHAR=/[\\\\u0030-\\\\u0039\\\\u0041-\\\\u005A\\\\u0061-\\\\u007A\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u00FF\\\\u0100-\\\\u1FFF\\\\u3040-\\\\u9FFF\\\\uF900-\\\\uFDFF\\\\uFE70-\\\\uFEFE\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFDC]/;\\nlinestylefilter.REGEX_URLCHAR=new RegExp("("+/[-:@a-zA-Z0-9_.,~%+\\\\\\x2f\\\\\\\\?=&#;()$]/.source+"|"+linestylefilter.REGEX_WORDCHAR.source+")");\\nlinestylefilter.REGEX_URL=new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\\\\\\x2f\\\\\\x2f|mailto:)/.source+linestylefilter.REGEX_URLCHAR.source+"*(?![:.,;])"+linestylefilter.REGEX_URLCHAR.source,"g");\\nlinestylefilter.getURLFilter=function(I,F){linestylefilter.REGEX_URL.lastIndex=0;var A=null;var C=null;\\nvar B;while((B=linestylefilter.REGEX_URL.exec(I))){if(!A){A=[];C=[];}var D=B.index;var E=B[0];A.push([D,E]);\\nC.push(D,D+E.length);}if(!A){return F;}function G(L){for(var K=0;K\\x3cA.length;K++){var J=A[K];if(L>=J[0]&&L\\x3cJ[0]+J[1].length){return J[1];\\n}}return false;}var H=(function(){var J=0;return function(K,N){var O=K.length;var M=N;var L=G(J);if(L){M+=" url:"+L;\\n}F(K,M);J+=O;};})();return linestylefilter.textAndClassFuncSplitter(H,C);};linestylefilter.textAndClassFuncSplitter=function(D,B){var A=0;\\nvar C=0;while(B&&A\\x3cB.length&&B[A]==0){A++;}function E(F,H){if((!B)||A>=B.length){D(F,H);C+=F.length;}else{var J=B;\\nvar G=J[A]-C;var I=F.length;if(G>=I){D(F,H);C+=F.length;if(G==I){A++;}}else{if(G>0){D(F.substring(0,G),H);\\nC+=G;}A++;E(F.substring(G),H);}}}return E;};linestylefilter.populateDomLine=function(F,D,E,G){var A=F;\\nif(A.slice(-1)=="\\\\n"){A=A.substring(0,A.length-1);}function C(H,I){G.appendSpan(H,I);}var B=C;B=linestylefilter.getURLFilter(A,B);\\nB=linestylefilter.getLineStyleFilter(A.length,D,B,E);B(A,"");};var domline={};domline.noop=function(){};\\ndomline.identity=function(A){return A;};domline.addToLineClass=function(A,B){B.replace(/\\\\S+/g,function(C){if(C.indexOf("line:")==0){A=(A?A+" ":"")+C.substring(5);\\n}});return A;};domline.createDomLine=function(N,H,J,O){var A={node:null,appendSpan:domline.noop,prepareForAdd:domline.noop,notifyAdded:domline.noop,clearSpans:domline.noop,finishUpdate:domline.noop,lineMarker:0};\\nvar M=(J||{});var G=O;if(G){A.node=G.createElement("div");}else{A.node={innerHTML:"",className:""};}var D=[];\\nvar F,E;var C=null;function K(R){return domline.processSpaces(R,H);}var L=domline.identity;var Q=(H?L:K);\\nvar P=(H?K:L);var B="ace-line";A.appendSpan=function(W,R){if(R.indexOf("list")>=0){var U=/(?:^| )list:(\\\\S+)/.exec(R);\\nif(U){U=U[1];if(U){F=\\\'\\x3cul class="list-\\\'+U+\\\'">\\x3cli>\\\';E="\\x3c/li>\\x3c/ul>";}A.lineMarker+=W.length;return;}}var X=null;\\nvar S=null;if(R.indexOf("url")>=0){R=R.replace(/(^| )url:(\\\\S+)/g,function(a,Z,Y){X=Y;return Z+"url";});\\n}if(R.indexOf("tag")>=0){R=R.replace(/(^| )tag:(\\\\S+)/g,function(a,Z,Y){if(!S){S=[];}S.push(Y.toLowerCase());\\nreturn Z+Y;});}if((!W)&&R){B=domline.addToLineClass(B,R);}else{if(W){var T="";var V="";if(X){T=T+\\\'\\x3ca href="\\\'+X.replace(/\\\\"/g,"&quot;")+\\\'">\\\';\\nV="\\x3c/a>"+V;}if(S){S.sort();T=T+"\\x3c"+S.join(">\\x3c")+">";S.reverse();V="\\x3c/"+S.join(">\\x3c/")+">"+V;}D.push(\\\'\\x3cspan class="\\\',R||"",\\\'">\\\',T,Q(domline.escapeHTML(W)),V,"\\x3c/span>");\\n}}};A.clearSpans=function(){D=[];B="";A.lineMarker=0;};function I(){var R=P(D.join(""));if(!R){if((!G)||(!J)){R+="&nbsp;";\\n}else{if(!M.msie){R+="\\x3cbr/>";}}}if(N){R=(F||"")+R+(E||"");}D=F=E=null;if(R!==C){C=R;A.node.innerHTML=C;\\n}if(B!==null){A.node.className=B;}}A.prepareForAdd=I;A.finishUpdate=I;A.getInnerHTML=function(){return C||"";\\n};return A;};domline.escapeHTML=function(B){var A=/[&\\x3c>\\\'"]/g;/\\\']/;if(!A.MAP){A.MAP={"&":"&amp;","\\x3c":"&lt;",">":"&gt;",\\\'"\\\':"&#34;","\\\'":"&#39;"};\\n}return B.replace(A,function(C){return A.MAP[C];});};domline.processSpaces=function(F,G){if(F.indexOf("\\x3c")\\x3c0&&!G){return F.replace(/ /g,"&nbsp;");\\n}var B=[];F.replace(/\\x3c[^>]*>?| |[^ \\x3c]+/g,function(H){B.push(H);});if(G){var D=true;var E=false;for(var A=B.length-1;\\nA>=0;A--){var C=B[A];if(C==" "){if(D||E){B[A]="&nbsp;";}D=false;E=true;}else{if(C.charAt(0)!="\\x3c"){D=false;\\nE=false;}}}for(var A=0;A\\x3cB.length;A++){var C=B[A];if(C==" "){B[A]="&nbsp;";break;}else{if(C.charAt(0)!="\\x3c"){break;\\n}}}}else{for(var A=0;A\\x3cB.length;A++){var C=B[A];if(C==" "){B[A]="&nbsp;";}}}return B.join("");};\'+\'//-->\\n\\x3c/script>\')'));
-T.push(('(\'\\x3cscript type="text/javascript">//<!--\\n\'+\'function OUTER(Cj){var AK=false;var B4=false;var Ad=" ";var BW=8;var BO=4;var CC=4;var Ah=20;var Bj=8;\\nvar BS=8;var BU=[];var e="";var BL=false;var D=parent.editorInfo;var g=window.frameElement;var F=g.ace_outerWin;\\ng.ace_outerWin=null;var T=g.nextSibling;var w=T.nextSibling;var Cb=w.nextSibling;BX();var Au=function(i){};\\nvar Ar=function(i){return true;};var An=function(){};var A={lines:newSkipList(),selStart:null,selEnd:null,selFocusAtStart:false,alltext:"",alines:[],apool:new AttribPool()};\\nif(undoModule.enabled){undoModule.apool=A.apool;}var B,E;var k=true;var K=true;var AP=true;var AX=true;\\nvar p=Ah+BO+BS;var Aj=Bj;var Bo=0,CQ=0;var S=(AK&&top.console);if(!S){var Al=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];\\nS={};for(var Ag=0;Ag\\x3cAl.length;++Ag){S[Al[Ag]]=function(){};}}var O=window.PROFILER;if(!O){O=function(){return{start:I,mark:I,literal:I,end:I,cancel:I};\\n};}function I(){}function Ce(i){return i;}var v=I;window.dmesg=I;var N=parent;var AQ="monospace";var u=12;\\nfunction AV(){return Math.round(u*4/3);}var W=null;function Bh(){W=makeCSSManager("dynamicsyntax");}var M=makeChangesetTracker(N,A.apool,{withCallbacks:function(i,Cp){Y(i,function(){G(1);\\nCp({setDocumentAttributedText:function(Cq){Aa(Cq);},applyChangesetToDocument:function(Cs,Cr){var Cq=C.editEvent.eventType;\\nC.startNewEvent("nonundoable");b(Cs,Cr);C.startNewEvent(Cq);}});});}});var Ao={};function CV(i,Cp){if((typeof i)!="string"){throw new Error("setAuthorInfo: author ("+i+") is not a string");\\n}if(!Cp){delete Ao[i];if(W){W.removeSelectorStyle(Av(BP(i)));}}else{Ao[i]=Cp;if(Cp.bgcolor){if(W){var Cq=Cp.bgcolor;\\nif((typeof Cp.fade)=="number"){Cq=BZ(Cq,Cp.fade);}W.selectorStyle(Av(BP(i))).backgroundColor=Cq;}}}}function BP(i){return"author-"+i.replace(/[^a-y0-9]/g,function(Cp){if(Cp=="."){return"-";\\n}return"z"+Cp.charCodeAt(0)+"z";});}function Bd(i){if(i.substring(0,7)=="author-"){return i.substring(7).replace(/[a-y0-9]+|-|z.+?z/g,function(Cp){if(Cp=="-"){return".";\\n}else{if(Cp.charAt(0)=="z"){return String.fromCharCode(Number(Cp.slice(1,-1)));}else{return Cp;}}});}return null;\\n}function Av(i){return".authorColors ."+i;}function AS(){if(W){var Cp=w.offsetHeight;var Cq=AV();var i=0;\\nvar Cs=0;if(Cp\\x3cCq){i=Math.ceil((Cq-Cp)/2);Cs=Cq-Cp-i;}var Cr=W.selectorStyle("#innerdocbody span");Cr.paddingTop=Cs+"px";\\nCr.paddingBottom=i+"px";}}function Ci(Cp){var i=colorutils.css2triple(Cp);i=colorutils.saturate(i);i=colorutils.scaleColor(i,0,0.5/colorutils.luminosity(i));\\nreturn colorutils.triple2css(i);}function BZ(Cp,Cq){var i=colorutils.css2triple(Cp);i=colorutils.blend(i,[1,1,1],Cq);\\nreturn colorutils.triple2css(i);}function By(i){N.setTimeout(function(){alert(i);},0);}var C=null;function a(Cq,Cx){if(BL){return;\\n}if(C){S.error("Can\\\'t enter callstack "+Cq+", already in "+C.type);}var Ct=false;function Cw(){Ct=true;\\nS.profile();}function Cr(Cz){return{eventType:Cz,backset:null};}function Cs(Cz){if(A.selStart&&A.selEnd){var C2=A.lines.offsetOfIndex(A.selStart[0])+A.selStart[1];\\nvar C1=A.lines.offsetOfIndex(A.selEnd[0])+A.selEnd[1];Cz.selStart=C2;Cz.selEnd=C1;Cz.selFocusAtStart=A.selFocusAtStart;\\n}if(undoModule.enabled){var C0=false;try{if(Cz.eventType=="setup"||Cz.eventType=="importText"||Cz.eventType=="setBaseText"){undoModule.clearHistory();\\n}else{if(Cz.eventType=="nonundoable"){if(Cz.changeset){undoModule.reportExternalChange(Cz.changeset);\\n}}else{undoModule.reportEvent(Cz);}}C0=true;}finally{if(!C0){undoModule.enabled=false;}}}}function Cy(C1,C0){var Cz=C.editEvent;\\nif(!C0){Cs(Cz);}C.editEvent=Cr(C1);return Cz;}C={type:Cq,docTextChanged:false,selectionAffected:false,userChangedSelection:false,domClean:false,profileRest:Cw,isUserChange:false,repChanged:false,editEvent:Cr(Cq),startNewEvent:Cy};\\nvar Cu=false;var Cv;try{Cv=Cx();Cu=true;}catch(Cp){BU.push({error:Cp,time:+new Date()});v(Cp.toString());\\nthrow Cp;}finally{var i=C;if(Cu){Cs(i.editEvent);if(i.domClean&&i.type!="setup"){if(i.isUserChange){if(i.repChanged){AG.notifyChange();\\n}else{AG.notifyTick();}}Be.recolorLines();if(i.selectionAffected){Ba();}if((i.docTextChanged||i.userChangedSelection)&&i.type!="applyChangesToBase"){CP();\\n}if(i.docTextChanged&&i.type.indexOf("importText")\\x3c0){An();}}}else{if(C.type=="idleWorkTimer"){H.atLeast(1000);\\n}}C=null;if(Ct){S.profileEnd();}}return Cv;}function Y(Cp,i){if(!C){a(Cp,i);}else{i();}}function Af(i){if(A.lines.containsKey(i)){var Cp=A.lines.offsetOfKey(i);\\nvar Cq=A.lines.atKey(i).width;AU(Cp,Cp+Cq);}}function AL(i){return A.lines.atOffset(i).key;}var Be=(function(){var i={};\\nvar Cp={};Cp.setCharNeedsRecoloring=function(Cq){if(Cq>=A.alltext.length){Cq=A.alltext.length-1;}i[AL(Cq)]=true;\\n};Cp.setCharRangeNeedsRecoloring=function(Cs,Cr){if(Cs>=A.alltext.length){Cs=A.alltext.length-1;}if(Cr>=A.alltext.length){Cr=A.alltext.length-1;\\n}var Cu=A.lines.atOffset(Cs);var Ct=A.lines.atOffset(Cr).key;i[Ct]=true;var Cq=Cu;while(Cq&&Cq.key!=Ct){i[Cq.key]=true;\\nCq=A.lines.next(Cq);}};Cp.recolorLines=function(){for(var Cq in i){Af(Cq);}i={};};return Cp;})();var AG=(function(){var i={};\\ni.notifyTick=function(){Cr(false);};i.notifyChange=function(){Cr(true);};i.shouldNormalizeOnChar=function(Ct){if(Cq.active){return true;\\n}Ct=String.fromCharCode(Ct);return !!(Cp[Ct]);};var Cq={active:false,whichChars:null,whichLineKeys:null,expireTime:null};\\nvar Cp={"(":1,")":-1,"[":2,"]":-2,"{":3,"}":-3};var Cs=/[{}\\\\[\\\\]()]/g;function Cr(C0){function C5(C8){var C7=BI();\\nvar DA=100;var C9=3000;if(C7[0]>C8-DA){C7[0]=C8-DA;}if(C7[0]\\x3cC8-C9){C7[0]=C8-C9;}if(C7[0]\\x3c0){C7[0]=0;\\n}if(C7[1]\\x3cC8+DA){C7[1]=C8+DA;}if(C7[1]>C8+C9){C7[1]=C8+C9;}if(C7[1]>A.lines.totalWidth()){C7[1]=A.lines.totalWidth();\\n}return C7;}function C6(DH,DC){var C8=C5(DH);var DF=A.alltext.substring(C8[0],C8[1]);var DG=DF.replace(Cs,"(");\\nvar C7=DH-C8[0];var DE=[];var DA=false;var DB=false;function DI(){if(C7\\x3c0){return;}if(DC){C7++;}else{C7--;\\n}if(C7\\x3c0||C7>=DF.length){C7=-1;}if(C7>=0){if(DC){C7=DG.indexOf("(",C7);}else{C7=DG.lastIndexOf("(",C7);\\n}}}while((!DA)&&(C7>=0)){if(BH(C7+C8[0])=="p"){var DJ=Cp[DF.charAt(C7)];var DD=DC;var C9=DJ;if(C9\\x3c0){DD=!DD;\\nC9=-C9;}if(DD){DE.push(C9);}else{var DK=DE.pop();if(DK!=C9){DA=true;DB=false;}else{if(DE.length==0){DA=true;\\nDB=true;}}}}if((!DA)&&(C7>=0)){DI();}}if(!DA){return null;}return{chr:(C7+C8[0]),good:DB};}var Ct=Cq;\\nvar Cu=null;var Cw=null;if(Ct.active&&(C0||(R()>Ct.expireTime))){Cw=Ct.whichLineKeys;Ct.active=false;\\n}if((!Ct.active)&&C0&&U()&&t()>0){var Cv=A7();if(Cv>0&&BH(Cv-1)=="p"){var Cz=A.alltext.charAt(Cv-1);if(Cp[Cz]){var C2=(Cp[Cz]>0);\\nvar Cx=C6(Cv-1,C2);if(Cx){var Cy=Cx.chr;var C4=Cx.good;Ct.active=true;Cu={};Cu[Cv-1]="flash";Cu[Cy]=(C4?"flash":"flashbad");\\nCt.whichLineKeys=[];Ct.whichLineKeys.push(AL(Cv-1));Ct.whichLineKeys.push(AL(Cy));Ct.expireTime=R()+4000;\\nnewlyActive=true;}}}}if(Cw){Af(Cw[0]);Af(Cw[1]);}if(Ct.active&&Cu){function C3(C8,C7,C9,DB){var DA=Cu[DB];\\nif(C7){C9(C8,C7+" "+DA);}else{C9(C8,C7);}}for(var C1 in Cu){AU((+C1),(+C1)+1,null,C3);}}}return i;})();\\nfunction B8(){BL=true;if(H){H.never();}BF();}function BN(){return;function Cp(){throw new Error("checkALines");\\n}if(A.alines.length!=A.lines.length()){Cp();}for(var Cq=0;Cq\\x3cA.alines.length;Cq++){var Cu=A.alines[Cq];\\nvar Cv=A.lines.atIndex(Cq).text+"\\\\n";var Cw=Cv.length;var Cr=Changeset.opIterator(Cu);var Ct=0;while(Cr.hasNext()){var Cs=Cr.next();\\nCt+=Cs.chars;if(Cr.hasNext()){if(Cs.lines!=0){Cp();}}else{if(Cs.lines!=1){Cp();}}}if(Ct!=Cw){Cp();}}}function CD(i){K=i;\\nvar Cp="doesWrap";Q(B,"doesWrap",K);N.setTimeout(function(){Y("setWraps",function(){G(7);BY();h();});\\n},0);}function CK(i){var Cp=AX;AX=!!i;if(i!=Cp){if(!i){Y("setStyled",function(){G(12);var Cq=[];for(var Cr in Ac){Cq.push([Cr,""]);\\n}A2(0,A.alltext.length,Cq);});}}}function Bv(i){AQ=i;B.style.fontFamily=AQ;w.style.fontFamily=AQ;N.setTimeout(function(){AS();\\n},0);}function Bl(i){u=i;B.style.fontSize=u+"px";B.style.lineHeight=AV()+"px";T.style.lineHeight=AV()+"px";\\nw.style.fontSize=u+"px";N.setTimeout(function(){AS();},0);}function BY(){AU(0,A.alltext.length);}function BG(i){k=i;\\nif(!k){Az(false);}else{Az(true);}Q(B,"static",!k);}function Ax(){BG(k);}function CA(i,Cs,Cq){var Cp;if(Cq){if(i.charAt(i.length-1)!="\\\\n"){throw new Error("new raw text must end with newline");\\n}if(/[\\\\r\\\\t\\\\xa0]/.exec(i)){throw new Error("new raw text must not contain CR, tab, or nbsp");}Cp=i.substring(0,i.length-1).split("\\\\n");\\n}else{Cp=map(i.split("\\\\n"),CH);}var Cr="\\\\n";if(Cp.length>0){Cr=Cp.join("\\\\n")+"\\\\n";}Y("importText"+(Cs?"Undoable":""),function(){Bb(Cr);\\n});if(Cq&&A.alltext!=i){throw new Error("mismatch error setting raw text in importText");}}function B9(i,Cp,Cr){i=Changeset.cloneAText(i);\\nif(Cp){var Cq=(new AttribPool()).fromJsonable(Cp);i.attribs=Changeset.moveOpsToNewPool(i.attribs,Cq,A.apool);\\n}Y("importText"+(Cr?"Undoable":""),function(){Aa(i);});}function Aa(Cq){G(8);var Cs=A.lines.totalWidth();\\nvar Cr=A.lines.length();var Cu=A.lines.offsetOfIndex(Cr-1);var Ct=A.lines.atIndex(Cr-1).text.length;var Cp=Changeset.smartOpAssembler();\\nvar i=Changeset.newOp("-");i.chars=Cu;i.lines=Cr-1;Cp.append(i);i.chars=Ct;i.lines=0;Cp.append(i);Changeset.appendATextToAssembler(Cq,Cp);\\nvar Cv=Cs+Cp.getLengthChange();var Cw=Changeset.checkRep(Changeset.pack(Cs,Cv,Cp.toString(),Cq.text.slice(0,-1)));\\nb(Cw);d([0,A.lines.atIndex(0).lineMarker],[0,A.lines.atIndex(0).lineMarker]);H.atMost(100);if(A.alltext!=Cq.text){v(htmlPrettyEscape(A.alltext));\\nv(htmlPrettyEscape(Cq.text));throw new Error("mismatch error setting raw text in setDocAText");}}function Bb(i){Aa(Changeset.makeAText(i));\\n}function CW(){var Cp=A.alltext;var i=Cp.length;if(i>0){i--;}return Cp.substring(0,i);}function CL(){if(C&&!C.domClean){Y("exportText",function(){G(2);\\n});}return CW();}function B7(){h();}function Bn(i){Ar=i;}function Bq(i){Au=i;}function Bp(i){An=i;}function Bm(){if(C&&!C.domClean){Y("getFormattedCode",q);\\n}var Cp=[];if(A.lines.length()>0){var i=A.lines.atIndex(0);while(i){var Cq=i.domInfo;Cp.push((Cq&&Cq.getInnerHTML())||domline.processSpaces(domline.escapeHTML(i.text),K)||"&nbsp;");\\ni=A.lines.next(i);}}return\\\'\\x3cdiv class="syntax">\\x3cdiv>\\\'+Cp.join("\\x3c/div>\\\\n\\x3cdiv>")+"\\x3c/div>\\x3c/div>";}var AZ={bold:function(){c("bold");\\n},italic:function(){c("italic");},underline:function(){c("underline");},strikethrough:function(){c("strikethrough");\\n},undo:function(){s("undo");},redo:function(){s("redo");},clearauthorship:function(i){if((!(A.selStart&&A.selEnd))||U()){if(i){i();\\n}else{A2(0,A.alltext.length,[["author",""]]);}}else{Bi("author","");}},insertunorderedlist:As,indent:function(){if(!AT(false)){As();\\n}},outdent:function(){AT(true);}};function CR(i){i=i.toLowerCase();var Cp=Array.prototype.slice.call(arguments,1);\\nif(AZ[i]){a(i,function(){G(9);AZ[i].apply(AZ,Cp);});}}D.ace_focus=Bc;D.ace_importText=CA;D.ace_importAText=B9;\\nD.ace_exportText=CL;D.ace_editorChangedSize=B7;D.ace_setOnKeyPress=Bn;D.ace_setOnKeyDown=Bq;D.ace_setNotifyDirty=Bp;\\nD.ace_dispose=B8;D.ace_getFormattedCode=Bm;D.ace_setEditable=BG;D.ace_execCommand=CR;D.ace_setProperty=function(Cq,i){var Cp=Cq.toLowerCase();\\nif(Cp=="wraps"){CD(i);}else{if(Cp=="showsauthorcolors"){Q(B,"authorColors",!!i);}else{if(Cp=="showsuserselections"){Q(B,"userSelections",!!i);\\n}else{if(Cp=="showslinenumbers"){AP=!!i;Q(T,"sidedivhidden",!AP);h();}else{if(Cp=="grayedout"){Q(F.document.body,"grayedout",!!i);\\n}else{if(Cp=="dmesg"){v=i;window.dmesg=i;}else{if(Cp=="userauthor"){e=String(i);}else{if(Cp=="styled"){CK(i);\\n}else{if(Cp=="textface"){Bv(i);}else{if(Cp=="textsize"){Bl(i);}}}}}}}}}}};D.ace_setBaseText=function(i){M.setBaseText(i);\\n};D.ace_setBaseAttributedText=function(Cp,i){AS();M.setBaseAttributedText(Cp,i);};D.ace_applyChangesToBase=function(Cq,i,Cp){M.applyChangesToBase(Cq,i,Cp);\\n};D.ace_prepareUserChangeset=function(){return M.prepareUserChangeset();};D.ace_applyPreparedChangesetToBase=function(){M.applyPreparedChangesetToBase();\\n};D.ace_setUserChangeNotificationCallback=function(i){M.setUserChangeNotificationCallback(i);};D.ace_setAuthorInfo=function(i,Cp){CV(i,Cp);\\n};D.ace_setAuthorSelectionRange=function(Cp,Cq,i){M.setAuthorSelectionRange(Cp,Cq,i);};D.ace_getUnhandledErrors=function(){return BU.slice();\\n};D.ace_getDebugProperty=function(i){if(i=="debugger"){window["eval"]("debugger");}else{if(i=="rep"){return A;\\n}else{if(i=="window"){return window;}else{if(i=="document"){return document;}}}}return undefined;};function R(){return(new Date()).getTime();\\n}function AC(Cs){var Cq=R();var Ct=0;var i=false;var Cr=false;var Cp=function(){if(i){if((!Cr)){Cr=true;\\n}return true;}var Cu=R()-Cq;if(Cu>Cs){i=true;return true;}else{Ct=Cu;return false;}};Cp.elapsed=function(){return R()-Cq;\\n};return Cp;}function CZ(Cs){var i=null;var Cp=0;function Cr(){if(i){N.clearTimeout(i);i=null;}}function Cq(Cv){Cr();\\nCp=Cv;var Cu=Cv-R();if(Cu\\x3c0){Cu=0;}i=N.setTimeout(Ct,Cu);}function Ct(){i=null;Cs();}return{atMost:function(Cv){var Cu=R()+Cv;\\nif((!i)||Cp>Cu){Cq(Cu);}},atLeast:function(Cv){var Cu=R()+Cv;if((!i)||Cp\\x3cCu){Cq(Cu);}},never:function(){Cr();\\n}};}function G(i){q(AC(0));}function A8(){var i=A8;var Cr=(i.failures||0);if(Cr\\x3c5){var Cq=AC(40);var Cs=q(Cq);\\nif(Cq()){i.failures=Cr+1;}return true;}else{var Cp=(i.skipCount||0);Cp++;if(Cp==20){Cp=0;i.failures=0;\\n}i.skipCount=Cp;}return false;}var H=CZ(function(){if(!k){return;}if(r){H.atLeast(500);return;}a("idleWorkTimer",function(){var i=AC(250);\\nvar Cq=false;var Cr=false;try{q(i);if(i()){return;}CN();if(i()){return;}var Ct=BI();var Cs=[0,A.lines.totalWidth()];\\nCq=true;Cr=true;}finally{if(Cr){H.atMost(1000);}else{if(Cq){H.atMost(500);}else{var Cp=Math.round(i.elapsed()/2);\\nif(Cp\\x3c100){Cp=100;}H.atMost(Cp);}}}});});var B1=1;function L(Cp){var i=Cp.id;if(i){return i;}return(Cp.id="magicdomid"+(B1++));\\n}function AU(Cr,Cx,Cs,Cv){if(Cx\\x3c=Cr){return;}if(Cr\\x3c0||Cr>=A.lines.totalWidth()){return;}var i=A.lines.atOffset(Cr);\\nvar Cp=A.lines.offsetOfEntry(i);var Cq=A.lines.indexOfEntry(i);var Cw=false;var Cy=null;var C1=null;Cs=(Cs||I);\\nvar Cu;var Ct=function(C2,C3){i.domInfo.appendSpan(C2,C3);};if(Cv){var C0=Ct;Ct=function(C2,C3){Cv(C2,C3,C0,Cu);\\nCu+=C2.length;};}while(i&&Cp\\x3cCx&&!Cs()){var Cz=Cp+i.width;Cu=Cp;i.domInfo.clearSpans();BJ(i,Ct,Cp);i.domInfo.finishUpdate();\\nz(i.lineNode);if(A.selStart&&A.selStart[0]==Cq||A.selEnd&&A.selEnd[0]==Cq){Cw=true;}if(Cy===null){Cy=Cq;\\n}C1=Cq;Cp=Cz;i=A.lines.next(i);Cq++;}if(Cw){C.selectionAffected=true;}}function BJ(Cq,Cs,Cw){var Cr=Cw;\\nif((typeof Cr)!="number"){Cr=A.lines.offsetOfEntry(Cq);}var Cp=Cq.text;var Cx=Cq.width;if(Cp.length==0){var Ct=linestylefilter.getLineStyleFilter(0,"",Cs,A.apool);\\nCt("","");}else{var Cy=0;var i=Cs;i=linestylefilter.getURLFilter(Cp,i);if(browser.msie){i=linestylefilter.getAtSignSplitterFilter(Cp,i);\\n}var Cu=A.lines.indexOfEntry(Cq);var Cv=A.alines[Cu];i=linestylefilter.getLineStyleFilter(Cp.length,Cv,i,A.apool);\\ni(Cp,"");}}function BH(i){return"";}var AE;function A4(){AE={cleanNodesNearChanges:{}};}A4();function l(Cq){var i=O("getCleanNodeByKey",false);\\ni.extra=0;var Cp=E.getElementById(Cq);while(Cp&&V(Cp)){i.extra++;Cp.id="";Cp=E.getElementById(Cq);}i.literal(i.extra,"extra");\\ni.end();return Cp;}function y(Cs){var i;var Cu;if(!V(Cs)){i=Cs;var Ct=i.previousSibling;var Cr=i.nextSibling;\\nCu=((Ct&&V(Ct))||(Cr&&V(Cr)));}else{var Cp=Cs.previousSibling;while(Cp&&V(Cp)){Cp=Cp.previousSibling;\\n}if(Cp){i=Cp;}else{var Cq=Cs.nextSibling;while(Cq&&V(Cq)){Cq=Cq.nextSibling;}if(Cq){i=Cq;}}if(!i){return;\\n}Cu=true;}if(Cu){AE.cleanNodesNearChanges["$"+L(i)]=true;}else{var Cx=L(i);var Ct=i.previousSibling;var Cr=i.nextSibling;\\nvar C1=((Ct&&L(Ct))||null);var C0=((Cr&&L(Cr))||null);var Cv=A.lines.prev(A.lines.atKey(Cx));var Cw=A.lines.next(A.lines.atKey(Cx));\\nvar Cz=((Cv&&Cv.key)||null);var Cy=((Cw&&Cw.key)||null);if(C1!=Cz||C0!=Cy){AE.cleanNodesNearChanges["$"+L(i)]=true;\\n}}}function Aw(){if(C.observedSelection){return;}C.observedSelection=true;var Cs=O("getSelection",false);\\nvar Cq=Ae();Cs.end();if(Cq){function Cr(Ct){if((!Ct)||Ct==B){return null;}while(Ct.parentNode!=B){Ct=Ct.parentNode;\\n}return Ct;}var Cp=Cr(Cq.startPoint.node);var i=Cr(Cq.endPoint.node);if(Cp){y(Cp);}if(i&&Cp!=i){y(i);\\n}}}function BV(){if(B.getElementsByTagName){var Cr=B.getElementsByTagName("style");for(var Cq=0;Cq\\x3cCr.length;\\nCq++){var Cp=Cr[Cq];while(Cp.parentNode&&Cp.parentNode!=B){Cp=Cp.parentNode;}if(Cp.parentNode==B){y(Cp);\\n}}}}function q(C9){if(C.domClean){return false;}r=false;C.isUserChange=true;C9=(C9||function(){return false;\\n});if(AK&&top.DONT_INCORP||window.DEBUG_DONT_INCORP){return false;}var Cq=O("incorp",false);if(!B.firstChild){B.innerHTML="\\x3cdiv>\\x3c!-- -->\\x3c/div>";\\n}Cq.mark("obs");Aw();BV();Cq.mark("dirty");var Cy=BK();var DN=true;var C5=0;var Cp,Ct;while(C5\\x3cCy.length){Cp=Cy[C5][0];\\nCt=Cy[C5][1];if(!((Cp==0||l(A.lines.atIndex(Cp-1).key))&&(Ct==A.lines.length()||l(A.lines.atIndex(Ct).key)))){DN=false;\\nbreak;}C5++;}if(!DN){var DS=B.childNodes.length;for(var C0=0;C0\\x3cDS;C0++){var C7=B.childNodes.item(C0);\\nif((C7.tagName)&&((!C7.id)||(!A.lines.containsKey(C7.id)))){y(C7);}}Cy=BK();}A4();Cq.mark("getsel");var Cv=Ae();\\nvar Cs,Cr;var DE=0;var C6=[];var C3=0;var C8=[];Cq.mark("ranges");Cq.literal(Cy.length,"numdirt");var DI=[];\\nwhile(DE\\x3cCy.length){var DG=Cy[DE];Cp=DG[0];Ct=DG[1];var C1=(((Cp==0)&&B.firstChild)||l(A.lines.atIndex(Cp-1).key).nextSibling);\\nC1=(C1&&V(C1)&&C1);var Cu=(((Ct==A.lines.length())&&B.lastChild)||l(A.lines.atIndex(Ct).key).previousSibling);\\nCu=(Cu&&V(Cu)&&Cu);if(C1&&Cu){var Cz=makeContentCollector(AX,browser,A.apool,null,Bd);Cz.notifySelection(Cv);\\nvar DJ=[];for(var Cx=C1;Cx&&!(Cx.previousSibling&&Cx.previousSibling==Cu);Cx=Cx.nextSibling){if(browser.msie){try{Cx.createTextRange().execCommand("unlink",false,null);\\n}catch(DR){}}Cz.collectContent(Cx);DJ.push(Cx);}Cz.notifyNextNode(Cu.nextSibling);var Cw=Cz.getLines();\\nif((Cw.length\\x3c=1||Cw[Cw.length-1]!=="")&&Cu.nextSibling){Ct++;var DF=Cu.nextSibling;Cz.collectContent(DF);\\nC8.push(DF);Cz.notifyNextNode(DF.nextSibling);}var C2=Cz.finish();var DA=C2.selStart;var DB=C2.selEnd;\\nCw=C2.lines;var DP=C2.lineAttribs;var DC=C2.linesWrapped;if(DC>0){By("Editor warning: "+DC+" long line"+(DC==1?" was":"s were")+" hard-wrapped into "+C2.numLinesAfter+" lines.");\\n}if(DA[0]>=0){Cs=[DA[0]+Cp+C3,DA[1]];}if(DB[0]>=0){Cr=[DB[0]+Cp+C3,DB[1]];}var DL=[];var DO=Cu;var DH=new Array(Cw.length);\\nfor(var C0=0;C0\\x3cCw.length;C0++){var DQ=Cw[C0];var DK=AN(DQ);DL.push(DK);DH[C0]=DK.domInfo;}DI.push([DO,DH]);\\nforEach(DJ,function(i){C8.push(i);});var DD={};if(Cs){DD.selStart=Cs;}if(Cr){DD.selEnd=Cr;}C6.push([Cp+C3,Ct-Cp,DL,DP,DD]);\\nC3+=(Cw.length-(Ct-Cp));}else{if(Ct>Cp){C6.push([Cp+C3,Ct-Cp,[],[]]);}}DE++;}var DM=(C6.length>0);Cq.mark("splice");\\nforEach(C6,function(i){CI(i[0],i[1],i[2],i[3],i[4]);});Cq.mark("insert");forEach(DI,function(i){AH(i[0],i[1],C9);\\n});Cq.mark("del");forEach(C8,function(i){i.parentNode.removeChild(i);});Cq.mark("findsel");if(Cv&&!Cs){Cs=Aq(Cv.startPoint);\\n}if(Cv&&!Cr){Cr=Aq(Cv.endPoint);}var C4=A.lines.length();if(Cs&&Cs[0]>=C4){Cs[0]=C4-1;Cs[1]=A.lines.atIndex(Cs[0]).text.length;\\n}if(Cr&&Cr[0]>=C4){Cr[0]=C4-1;Cr[1]=A.lines.atIndex(Cr[0]).text.length;}Cq.mark("repsel");BR(Cs,Cr,Cv&&Cv.focusAtStart);\\nCq.mark("browsel");if(Cv&&(DM||U())){C.selectionAffected=true;}C.domClean=true;Cq.mark("fixview");h();\\nCq.end("END");return DM;}function Cc(Cp){var i=E.createElement("DIV");i.appendChild(Cp);return i.innerHTML;\\n}var Ac={bold:true,italic:true,underline:true,strikethrough:true,list:true};var CF={insertorder:true,author:true};\\nfunction A0(i){return !!Ac[i];}function Ck(i){return(!!Ac[i])||(!!CF[i]);}function AH(Cq,i,Cr){Cr=(Cr||function(){return false;\\n});var Cp;var Cs;if(i.length\\x3c1){return;}var Cu=A.lines.atKey(L(i[0].node));var Ct=A.lines.atKey(L(i[i.length-1].node));\\nvar Cv=A.lines.offsetOfEntry(Cu);var Cw=A.lines.offsetOfEntry(Ct)+Ct.width;forEach(i,function(C0){var Cx=O("insertLine",false);\\nvar Cz=C0.node;var C1=L(Cz);var Cy;Cx.mark("findEntry");if(Cp){var C2=A.lines.next(Cp);if(C2&&C2.key==C1){Cy=C2;\\nCs+=Cp.width;}}if(!Cy){Cx.literal(1,"nonopt");Cy=A.lines.atKey(C1);Cs=A.lines.offsetOfKey(C1);}else{Cx.literal(0,"nonopt");\\n}Cp=Cy;Cx.mark("spans");BJ(Cy,function(C3,C4){C0.appendSpan(C3,C4);},Cs,Cr());Cx.mark("addLine");C0.prepareForAdd();\\nCy.lineMarker=C0.lineMarker;if(!Cq){B.insertBefore(Cz,B.firstChild);}else{B.insertBefore(Cz,Cq.nextSibling);\\n}Cq=Cz;C0.notifyAdded();Cx.mark("markClean");z(Cz);Cx.end();});}function U(){return(A.selStart&&A.selEnd&&A.selStart[0]==A.selEnd[0]&&A.selStart[1]==A.selEnd[1]);\\n}function m(){return A.selStart[0];}function t(){return A.selStart[1];}function A7(){return A.lines.offsetOfIndex(m())+t();\\n}function CE(){if(U()&&t()==0&&m()>0){var i=m();var Ct=A.lines.atIndex(i);var Cs=A.lines.prev(Ct);var Cq=Cs.text;\\nvar Cp=/^ *(?:)/.exec(Cq)[0];if(/[\\\\[\\\\(\\\\{]\\\\s*$/.exec(Cq)){Cp+=Ad;}var Cr=Changeset.builder(A.lines.totalWidth()).keep(A.lines.offsetOfIndex(i),i).insert(Cp,[["author",e]],A.apool).toString();\\nb(Cr);d([i,Cp.length],[i,Cp.length]);}}function Bk(Cr){var Cq=A.lines.atIndex(Cr).lineNode;var i=Cq.firstChild;\\nwhile(AF(i)&&i.firstChild){i=i.firstChild;}var Cp;if(isNodeText(i)){i.nodeValue=" "+i.nodeValue;Cp=i;\\n}else{Cp=E.createTextNode(" ");i.parentNode.insertBefore(Cp,i);}z(Cq);return{unhack:function(){if(Cp.nodeValue==" "){Cp.parentNode.removeChild(Cp);\\n}else{Cp.nodeValue=Cp.nodeValue.substring(1);}z(Cq);}};}function Am(Cv){var Cw=Cv[0];var Cp=Cv[1];var Ct=A.lines.atIndex(Cw);\\nCp-=Ct.lineMarker;if(Cp\\x3c0){Cp=0;}var Cr=Ct.lineNode;var i=Cr;var Cq=false;if(Cp==0){var Cu=0;if(browser.msie&&Cw==(A.lines.length()-1)&&Cr.childNodes.length==0){Cu=1;\\n}return{node:Cr,index:Cu,maxIndex:1};}while(!(i==Cr&&Cq)){if(Cq){if(i.nextSibling){i=i.nextSibling;Cq=false;\\n}else{i=i.parentNode;}}else{if(isNodeText(i)){var Cs=i.nodeValue.length;if(Cp\\x3c=Cs){return{node:i,index:Cp,maxIndex:Cs};\\n}Cp-=Cs;Cq=true;}else{if(i.firstChild){i=i.firstChild;}else{Cq=true;}}}}return{node:Cr,index:1,maxIndex:1};\\n}function BD(i){return i.innerText||i.textContent||i.nodeValue||"";}function Aq(Cq){if(Cq.node==B){if(Cq.index==0){return[0,0];\\n}else{var Ct=A.lines.length();var Cw=A.lines.atIndex(Ct-1);return[Ct-1,Cw.text.length];}}else{var i=Cq.node;\\nvar Cp=0;if(isNodeText(i)){Cp=Cq.index;}else{if(Cq.index>0){Cp=BD(i).length;}}var Cr,Cs;while((Cr=i.parentNode)!=B){if((Cs=i.previousSibling)){i=Cs;\\nCp+=BD(i).length;}else{i=Cr;}}if(i.id==""){S.debug("BAD");}if(i.firstChild&&AF(i.firstChild)){Cp+=1;}var Cu=A.lines.atKey(i.id);\\nvar Cv=A.lines.indexOfEntry(Cu);return[Cv,Cp];}}function AN(Cq){var Cp=CS(Cq.length>0);var i=Cp.node;\\nreturn{key:L(i),text:Cq,lineNode:i,domInfo:Cp,lineMarker:0};}function Co(i){return Changeset.oldLen(i)==A.alltext.length;\\n}function b(Cp,Cr){Ap(Cp,Cr);var i=null;if(A.selStart&&A.selEnd){var Cv=A.lines.offsetOfIndex(A.selStart[0])+A.selStart[1];\\nvar Cs=A.lines.offsetOfIndex(A.selEnd[0])+A.selEnd[1];var Cq=Changeset.characterRangeFollow(Cp,Cv,Cs,Cr);\\ni=[Cq[0],Cq[1],A.selFocusAtStart];}var Cu={splice:function(Cx,Cw,Cy){Ct(Cx,Cw,map(Array.prototype.slice.call(arguments,2),function(Cz){return Cz.slice(0,-1);\\n}),null);},get:function(Cw){return A.lines.atIndex(Cw).text+"\\\\n";},length:function(){return A.lines.length();\\n},slice_notused:function(Cx,Cw){return map(A.lines.slice(Cx,Cw),function(Cy){return Cy.text+"\\\\n";});}};\\nChangeset.mutateTextLines(Cp,Cu);BN();if(i){d(P(i[0]),P(i[1]),i[2]);}function Ct(Cw,Cx,C4,Cz){Cz=(Cz||AC(50));\\nvar C1=[];if(Cx>0){var C0=A.lines.atIndex(Cw);for(var C3=0;C3\\x3cCx;C3++){C1.push(C0.key);C0=A.lines.next(C0);\\n}}var C2=map(C4,AN);AJ(Cw,Cx,C2);var Cy;if(Cw>0){Cy=l(A.lines.atIndex(Cw-1).key);}else{Cy=null;}AH(Cy,map(C2,function(C5){return C5.domInfo;\\n}),Cz);forEach(C1,function(C6){var C5=E.getElementById(C6);C5.parentNode.removeChild(C5);});if((A.selStart&&A.selStart[0]>=Cw&&A.selStart[0]\\x3c=Cw+Cx)||(A.selEnd&&A.selEnd[0]>=Cw&&A.selEnd[0]\\x3c=Cw+Cx)){C.selectionAffected=true;\\n}}}function Bz(Cw){return true;var Cs=Changeset.opIterator(Changeset.unpack(Cw).ops);var Cp=0;var Cr=0;\\nvar Cq=0;while(Cs.hasNext()){var i=Cs.next();if(i.opcode=="-"||i.opcode=="="){Cp+=i.chars;if(i.lines){Cr+=i.lines;\\nCq=0;}else{Cq+=i.chars;}}var Ct=A.lines.indexOfOffset(Cp);var Cv=A.lines.offsetOfIndex(Ct);var Cu=Cp-Cv;\\nif(Cu!=Cq||Ct!=Cr){return false;}}return true;}function Ap(i,Cq){Changeset.checkRep(i);if(Changeset.oldLen(i)!=A.alltext.length){throw new Error("doRepApplyChangeset length mismatch: "+Changeset.oldLen(i)+"/"+A.alltext.length);\\n}if(!Bz(i)){throw new Error("doRepApplyChangeset line break mismatch");}(function Cp(Cs){var Cr=C.editEvent;\\nif(Cr.eventType=="nonundoable"){if(!Cr.changeset){Cr.changeset=Cs;}else{Cr.changeset=Changeset.compose(Cr.changeset,Cs,A.apool);\\n}}else{var Ct=Changeset.inverse(Cs,{get:function(Cu){return A.lines.atIndex(Cu).text+"\\\\n";},length:function(){return A.lines.length();\\n}},A.alines,A.apool);if(!Cr.backset){Cr.backset=Ct;}else{Cr.backset=Changeset.compose(Ct,Cr.backset,A.apool);\\n}}})(i);Changeset.mutateAttributionLines(i,A.alines,A.apool);if(M.isTracking()){M.composeUserChangeset(i);\\n}}function P(i){var Cp=A.lines.atOffset(i);var Cq=A.lines.offsetOfEntry(Cp);var Cr=A.lines.indexOfEntry(Cp);\\nreturn[Cr,i-Cq];}function BA(Cq,Cp,i){if(Cq==Cp&&i.length==0){return;}if(Cp==A.alltext.length){if(Cq==Cp){Cq--;\\nCp--;i="\\\\n"+i.substring(0,i.length-1);}else{if(i.length==0){Cq--;Cp--;}else{Cp--;i=i.substring(0,i.length-1);\\n}}}f(P(Cq),P(Cp),i);}function f(Cp,Cq,Cs){var i=Changeset.builder(A.lines.totalWidth());At(i,Cp);BQ(i,Cp,Cq);\\ni.insert(Cs,[["author",e]],A.apool);var Cr=i.toString();b(Cr);}function A2(Cq,i,Cp){if(i>=A.alltext.length){i=A.alltext.length-1;\\n}AB(P(Cq),P(i),Cp);}function AB(Cp,Cq,Cs){var i=Changeset.builder(A.lines.totalWidth());At(i,Cp);AR(i,Cp,Cq,Cs,A.apool);\\nvar Cr=i.toString();b(Cr);}function At(Cp,i){var Cq=A.lines.offsetOfIndex(i[0]);Cp.keep(Cq,i[0]);Cp.keep(i[1]);\\n}function BQ(Cq,Cp,i){var Cs=A.lines.offsetOfIndex(Cp[0]);var Cr=A.lines.offsetOfIndex(i[0]);if(i[0]>Cp[0]){Cq.remove(Cr-Cs-Cp[1],i[0]-Cp[0]);\\nCq.remove(i[1]);}else{Cq.remove(i[1]-Cp[1]);}}function AR(Cq,Cp,i,Cs,Cr){var Cu=A.lines.offsetOfIndex(Cp[0]);\\nvar Ct=A.lines.offsetOfIndex(i[0]);if(i[0]>Cp[0]){Cq.keep(Ct-Cu-Cp[1],i[0]-Cp[0],Cs,Cr);Cq.keep(i[1],0,Cs,Cr);\\n}else{Cq.keep(i[1]-Cp[1],0,Cs,Cr);}}function Bi(i,Cp){if(!(A.selStart&&A.selEnd)){return;}AB(A.selStart,A.selEnd,[[i,Cp]]);\\n}function c(Cq){if(!(A.selStart&&A.selEnd)){return;}var Cp=true;var C1=Changeset.makeAttribsString("+",[[Cq,"true"]],A.apool);\\nvar C2=new RegExp(C1.replace(/\\\\*/g,"\\\\\\\\*")+"(\\\\\\\\*|$)");function C0(C3){return C2.test(C3);}var Cx=A.selStart[0];\\nvar Cu=A.selEnd[0];for(var i=Cx;i\\x3c=Cu;i++){var Cs=Changeset.opIterator(A.alines[i]);var Cz=0;var Cw=0;\\nvar Cr=A.lines.atIndex(i).text.length;if(i==Cx){Cw=A.selStart[1];}if(i==Cu){Cr=A.selEnd[1];}while(Cs.hasNext()){var Cv=Cs.next();\\nvar Cy=Cz;var Ct=Cy+Cv.chars;if(!C0(Cv.attribs)){if(!(Ct\\x3c=Cw||Cy>=Cr)){Cp=false;break;}}Cz=Ct;}if(!Cp){break;\\n}}if(Cp){AB(A.selStart,A.selEnd,[[Cq,""]]);}else{AB(A.selStart,A.selEnd,[[Cq,"true"]]);}}function AY(i){if(!(A.selStart&&A.selEnd)){return;\\n}f(A.selStart,A.selEnd,i);}function AJ(i,Cq,Cp){forEach(Cp,function(Cx){Cx.width=Cx.text.length+1;});\\nvar Cs=A.lines.offsetOfIndex(i);var Ct=A.lines.offsetOfIndex(i+Cq);var Cu=A.lines.offsetOfIndex(i);var Cw=A.lines.offsetOfIndex(i+Cq);\\nA.lines.splice(i,Cq,Cp);C.docTextChanged=true;C.repChanged=true;var Cv=A.lines.offsetOfIndex(i+Cp.length);\\nvar Cr=map(Cp,function(Cx){return Cx.text+"\\\\n";}).join("");A.alltext=A.alltext.substring(0,Cs)+Cr+A.alltext.substring(Ct,A.alltext.length);\\n}function CI(Cv,C6,DE,DO,Cr){var DF=A.lines.offsetOfIndex(Cv);var DK=A.lines.offsetOfIndex(Cv+C6);var DJ=A.lines.offsetOfIndex(Cv);\\nvar DI,DM;if(Cr&&Cr.selStart){DI=A.lines.offsetOfIndex(Cr.selStart[0])+Cr.selStart[1]-DJ;}if(Cr&&Cr.selEnd){DM=A.lines.offsetOfIndex(Cr.selEnd[0])+Cr.selEnd[1]-DJ;\\n}var Cs=map(DE,function(DU){return DU.text+"\\\\n";}).join("");var C1=A.alltext.substring(DF,DK);var DG=A.alines.slice(Cv,Cv+C6).join("");\\nvar C0=DO.join("|1+1")+"|1+1";var DC=B6(C1,Cs,DG,C0,DI,DM);var Cz=DC[0];var Cx=DC[1];var Cq=C1.substring(Cz,C1.length-Cx);\\nvar i=Cs.substring(Cz,Cs.length-Cx);var Cp=DF+Cz;var Ct=DK-Cx;var Cw=false;if(Cq.charAt(Cq.length-1)=="\\\\n"&&i.charAt(i.length-1)=="\\\\n"){Cq=Cq.slice(0,-1);\\ni=i.slice(0,-1);Ct--;Cx++;}if(Cq.length==0&&Cp==A.alltext.length&&i.length>0){Cp--;Ct--;i="\\\\n"+i.slice(0,-1);\\nCw=true;}if(Ct==A.alltext.length&&Cq.length>0&&i.length==0){if(A.alltext.charAt(Cp-1)=="\\\\n"){Cp--;Ct--;\\n}}if(!(Cq.length==0&&i.length==0)){var DR=A.alltext;var DT=DR.length;var C4=A.lines.indexOfOffset(Cp);\\nvar DA=A.lines.offsetOfIndex(C4);function C8(){var DU=Changeset.builder(DT);DU.keep(DA,C4);DU.keep(Cp-DA);\\nreturn DU;}function Cy(Db,Da){var DW=Changeset.opIterator(Db);var DU=0;var DX=Cz;var DZ=Cs.length-Cx-(Cw?1:0);\\nwhile(DW.hasNext()){var DY=DW.next();var DV=DU+DY.chars;if(!(DV\\x3c=DX||DU>=DZ)){Da(Math.max(DX,DU),Math.min(DZ,DV),DY.attribs);\\n}DU=DV;}}var DP=(i==Cq);var C5;if(DP){var DN=BT(function(DU){return Changeset.mapAttribNumbers(DU,function(DW){var DV=A.apool.getAttribKey(DW);\\nif(A0(DV)){return A.apool.putAttrib([DV,""]);}return false;});});var C3=C8();if(Cw){C3.keep(1,1);}Cy(DG,function(DW,DU,DV){C3.keepText(Cs.substring(DW,DU),DN(DV));\\n});var DS=C3.toString();var C2=C8();if(Cw){C2.keep(1,1);}Cy(C0,function(DW,DU,DV){C2.keepText(Cs.substring(DW,DU),DV);\\n});var DQ=C2.toString();C5=Changeset.compose(DS,DQ,A.apool);}else{var Cu=C8();var DH=A.lines.indexOfOffset(Ct);\\nvar C9=A.lines.offsetOfIndex(DH);if(C9>Cp){Cu.remove(C9-Cp,DH-C4);Cu.remove(Ct-C9);}else{Cu.remove(Ct-Cp);\\n}var DL=false;var DD=Changeset.makeAttribsString("+",(e?[["author",e]]:[]),A.apool);var DB=BT(function(DU){if(DL){return Changeset.composeAttributes(DD,DU,true,A.apool);\\n}else{return Changeset.composeAttributes(DU,DD,true,A.apool);}});var C7="";Cy(C0,function(DX,DW,DV){var DU=Changeset.attribsAttributeValue(DV,"author",A.apool);\\nif(DU&&DU!=C7){if(!C7){C7=DU;}else{DL=true;}}});if(Cw){Cu.insert("\\\\n",DB(""));}Cy(C0,function(DW,DU,DV){Cu.insert(Cs.substring(DW,DU),DB(DV));\\n});C5=Cu.toString();}Ap(C5);}AJ(Cv,C6,DE);BN();}function BT(Cp){var i={};return function(Cq){if(!i[Cq]){i[Cq]=Cp(Cq);\\n}return i[Cq];};}function B6(Cv,Cw,C6,C7,DA,Cx){function Cy(DB){return A0(A.apool.getAttribKey(DB));}function C5(DF){var DC=[];\\nvar DE=[];var DB=Changeset.opIterator(DF);while(DB.hasNext()){var DD=DB.next();DC.push(DD.chars);DE.push(DD.attribs);\\n}return[DC,DE];}function Ct(DF,DE){var DD=DF[0];var DG=DF[1];var DB=(DE?DD.length-1:0);var DC=0;return function DH(){while(DC>=DD[DB]){if(DE){DB--;\\n}else{DB++;}DC=0;}var DI=DG[DB];DC++;return DI;};}var Cs=Cv.length;var Cr=Cw.length;var C2=Math.min(Cs,Cr);\\nvar C3=C5(Changeset.filterAttribNumbers(C6,Cy));var C1=C5(Changeset.filterAttribNumbers(C7,Cy));var Cp=0;\\nvar C9=Ct(C3,false);var C8=Ct(C1,false);while(Cp\\x3cC2){if(Cv.charAt(Cp)==Cw.charAt(Cp)&&C9()==C8()){Cp++;\\n}else{break;}}var i=0;var C0=Ct(C3,true);var C4=Ct(C1,true);while(i\\x3cC2){if(i==0){C0();C4();i++;}else{if(Cv.charAt(Cs-1-i)==Cw.charAt(Cr-1-i)&&C0()==C4()){i++;\\n}else{break;}}}var Cq=-1;if((typeof Cx)=="number"){Cq=Cr-Cx;}if(Cp+i>Cs){var Cu=Cs-Cp;var Cz=i;if(Cq>=Cu&&Cq\\x3c=Cz){i=Cq;\\n}else{i=Cu;}Cp=Cs-i;}if(Cp+i>Cr){var Cu=Cr-Cp;var Cz=i;if(Cq>=Cu&&Cq\\x3c=Cz){i=Cq;}else{i=Cu;}Cp=Cr-i;}return[Cp,i];\\n}function A3(Cp,i){if(!Cp){return !i;}if(!i){return !Cp;}return(Cp[0]==i[0]&&Cp[1]==i[1]);}function d(Cq,i,Cp){if(BR(Cq,i,Cp)){C.selectionAffected=true;\\n}}function BR(Cp,i,Cq){Cq=!!Cq;var Cr=(Cq&&((!Cp)||(!i)||(Cp[0]!=i[0])||(Cp[1]!=i[1])));if((!A3(A.selStart,Cp))||(!A3(A.selEnd,i))||(A.selFocusAtStart!=Cr)){A.selStart=Cp;\\nA.selEnd=i;A.selFocusAtStart=Cr;if(AA){AA.notifySelectionChanged();}C.repChanged=true;return true;}return false;\\n}function CS(Cs){if(browser.msie&&(!Cs)){var i={node:null,appendSpan:I,prepareForAdd:I,notifyAdded:I,clearSpans:I,finishUpdate:I,lineMarker:0};\\nvar Cq=E.createElement("div");i.node=Cq;i.notifyAdded=function(){Cq.innerHTML="";setAssoc(Cq,"shouldBeEmpty",true);\\nsetAssoc(Cq,"unpasted",{});};var Cp="ace-line";i.appendSpan=function(Cu,Ct){if((!Cu)&&Ct){Cp=domline.addToLineClass(Cp,Ct);\\n}};i.clearSpans=function(){Cp="";};function Cr(){if(Cp!==null){Cq.className=Cp;}}i.prepareForAdd=Cr;i.finishUpdate=Cr;\\ni.getInnerHTML=function(){return"";};return i;}else{return domline.createDomLine(Cs,K,browser,E);}}function CH(i){return i.replace(/[\\\\n\\\\r ]/g," ").replace(/\\\\xa0/g," ").replace(/\\\\t/g," ");\\n}var Br={div:1,p:1,pre:1,li:1,ol:1,ul:1};function AF(i){return !!Br[(i.tagName||"").toLowerCase()];}function BK(){var i=O("getDirtyRanges",false);\\ni.forIndices=0;i.consecutives=0;i.corrections=0;var Cs={};var Cq=A.lines.length();function Cu(C7){if(Cs[C7]===undefined){i.forIndices++;\\nvar C8;if(C7\\x3c0||C7>=Cq){C8=true;}else{var C9=A.lines.atIndex(C7).key;C8=(l(C9)||false);}Cs[C7]=C8;}return Cs[C7];\\n}var Cv={};function Cw(C7){if(Cv[C7]===undefined){i.consecutives++;Cv[C7]=(function(){var C9=Cu(C7-1);\\nvar C8=Cu(C7);if((!C9)||(!C8)){return false;}if((C9===true)&&(C8===true)){return !B.firstChild;}if((C9===true)&&C8.previousSibling){return false;\\n}if((C8===true)&&C9.nextSibling){return false;}if((C9===true)||(C8===true)){return true;}return C9.nextSibling==C8;\\n})();}return Cv[C7];}function Cx(C7){return !!Cu(C7);}var Cp=[[-1,Cq+1]];function C4(C7){var C8=-1;forEach(Cp,function(C9,DA){if(C7>=C9[1]){return false;\\n}if(C7\\x3cC9[0]){return true;}C8=DA;return true;});return C8;}function C3(C7,C8){var DA=Cp[C7][0];var C9=Cp[C7][1];\\nif((DA+1)==C9){Cp.splice(C7,1);}else{if(C8==DA){Cp[C7][0]++;}else{if(C8==(C9-1)){Cp[C7][1]--;}else{Cp.splice(C7,1,[DA,C8],[C8+1,C9]);\\n}}}}function Ct(C7,C8){var DA=Cp[C7][0];var C9=Cp[C7][1];Cp.splice(C7,1,[DA,C8],[C8,C9]);}var Cz={};function C1(C7){if(Cz[C7]){return true;\\n}i.corrections++;Cz[C7]=true;var C8=C4(C7);var DA=Cx(C7);if(C8\\x3c0){if(DA){S.debug("somehow lost clean line");\\n}return true;}if(!DA){C3(C8,C7);return false;}else{var DC=Cp[C8][0];var DB=Cp[C8][1];var C9=false;if(DC\\x3cC7&&Cx(C7-1)&&!Cw(C7)){Ct(C8,C7);\\nC9=true;}if(DB>(C7+1)&&Cx(C7+1)&&!Cw(C7+1)){Ct(C8,C7+1);C9=true;}return !C9;}}function Cy(C9,DA){var C8=0;\\nvar C7=C9;while(C8\\x3cDA&&C7>=0){if(C1(C7)){C8++;}else{C8=0;}C7--;}C8=0;C7=C9;while(C8\\x3cDA&&C7\\x3cCq){if(C1(C7)){C8++;\\n}else{C8=0;}C7++;}}if(Cq==0){i.cancel();if(!Cw(0)){Ct(0,0);}}else{i.mark("topbot");Cy(0,1);Cy(Cq-1,1);\\ni.mark("obs");for(var C6 in AE.cleanNodesNearChanges){var C2=C6.substring(1);if(A.lines.containsKey(C2)){var C5=A.lines.indexOfKey(C2);\\nCy(C5,2);}}i.mark("stats&calc");i.literal(i.forIndices,"byidx");i.literal(i.consecutives,"cons");i.literal(i.corrections,"corr");\\n}var C0=[];for(var Cr=0;Cr\\x3cCp.length-1;Cr++){C0.push([Cp[Cr][1],Cp[Cr+1][0]]);}i.end();return C0;}function z(Cp){var i={};\\ni.nodeId=L(Cp);i.knownHTML=Cp.innerHTML;if(browser.msie){i.knownText=Cp.innerText;}setAssoc(Cp,"dirtiness",i);\\n}function V(i){var Cq=O("cleanCheck",false);if(i.parentNode!=B){return true;}var Cp=getAssoc(i,"dirtiness");\\nif(!Cp){return true;}if(i.id!==Cp.nodeId){return true;}if(browser.msie){if(i.innerText!==Cp.knownText){return true;\\n}}if(i.innerHTML!==Cp.knownHTML){return true;}Cq.end();return false;}function A1(Ct,Cs){var Cq=Ct.lineNode;\\nvar Cp=Cq.offsetTop;var Cr=Cq.offsetHeight;var i=(Cs||{});i.top=Cp;i.bottom=(Cp+Cr);return i;}function B5(){var i=Ab();\\nvar Cq=F.document;var Cp=Cq.documentElement.clientHeight;return{top:i,bottom:(i+Cp)};}function Bs(){var Cq=B5();\\nvar Cr={};var Cp=A.lines.search(function(Cs){return A1(Cs,Cr).bottom>Cq.top;});var i=A.lines.search(function(Cs){return A1(Cs,Cr).top>=Cq.bottom;\\n});if(i\\x3cCp){i=Cp;}return[Cp,i];}function BI(){var i=Bs();return[A.lines.offsetOfIndex(i[0]),A.lines.offsetOfIndex(i[1])];\\n}function CY(Cp){a("handleClick",function(){H.atMost(200);});if((!Cp.ctrlKey)&&(Cp.button!=2)&&(Cp.button!=3)){function Cq(Ct){return(Ct.tagName||"").toLowerCase()=="a"&&Ct.href;\\n}var i=Cp.target;while(i&&i.parentNode&&!Cq(i)){i=i.parentNode;}if(i&&Cq(i)){try{var Cr=window.open(i.href,"_blank");\\nCr.focus();}catch(Cs){}Cp.preventDefault();}}}function Bu(){if(!(A.selStart&&A.selEnd)){return;}var i=A.selStart[0];\\nvar Cp=X(i);AY("\\\\n");if(Cp){if(i+1\\x3cA.lines.length()){Bg(i+1,Cp);}}else{CE();}}function AT(Cw){if(!(A.selStart&&A.selEnd)){return false;\\n}var Cq,Cv;Cq=A.selStart[0];Cv=Math.max(Cq,A.selEnd[0]-((A.selEnd[1]==0)?1:0));var Cr=[];var Cs=false;\\nfor(var Cp=Cq;Cp\\x3c=Cv;Cp++){var i=X(Cp);if(i){i=/([a-z]+)([12345678])/.exec(i);if(i){Cs=true;var Cx=i[1];\\nvar Ct=Number(i[2]);var Cu=Math.max(1,Math.min(BW,Ct+(Cw?-1:1)));if(Ct!=Cu){Cr.push([Cp,Cx+Cu]);}}}}if(Cr.length>0){AI(Cr);\\n}return Cs;}function Bw(i){if(!AT(i)){AY(Ad);}}function A5(C4){var Cu=C4||{};var Cw=false;if(A.selStart){if(U()){var Cv=m();\\nvar Ct=t();var Cp=A.lines.atIndex(Cv);var C0=Cp.text;var Cx=Cp.lineMarker;if(/^ +$/.exec(C0.substring(Cx,Ct))){var C3=Ct-Cx;\\nvar C1=Ad.length;var Cz=((C3-1)%C1)+1;f([Cv,Ct-Cz],[Cv,Ct],"");Cw=true;}}if(!Cw){if(U()){var i=m();var Cp=A.lines.atIndex(i);\\nif(t()\\x3c=Cp.lineMarker){var C6="delete_newline";var C2=(i>0?X(i-1):"");var C5=X(i);var Cq=(i>0&&A.lines.atIndex(i-1));\\nvar Cy=(Cq&&Cq.text.length==Cq.lineMarker);if(C5){if(Cy&&!C2){f([i-1,Cq.text.length],[i,0],"");}else{f([i,0],[i,Cp.lineMarker],"");\\n}}else{if(i>0){f([i-1,Cq.text.length],[i,0],"");}}}else{var Cr=A7();if(Cr>0){if(Cu.metaKey||Cu.ctrlKey||Cu.altKey){var Cs=Cr-1;\\nwhile(Cs>Cp.lineMarker&&n(A.alltext.charAt(Cs-1))){Cs--;}BA(Cs,Cr,"");}else{BA(Cr-1,Cr,"");}}}}else{AY("");\\n}}}}var Bf=/[\\\\u0030-\\\\u0039\\\\u0041-\\\\u005A\\\\u0061-\\\\u007A\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u00FF\\\\u0100-\\\\u1FFF\\\\u3040-\\\\u9FFF\\\\uF900-\\\\uFDFF\\\\uFE70-\\\\uFEFE\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFDC]/;\\nvar CU=/\\\\s/;function n(i){return !!Bf.exec(i);}function Cf(i){return !!CU.exec(i);}function x(Cu,Cv,Cr){var Cp=Cv;\\nfunction Ct(){if(Cr){return Cu.charAt(Cp);}else{return Cu.charAt(Cp-1);}}function Cs(){if(Cr){Cp++;}else{Cp--;\\n}}function Cq(){if(Cr){return Cp>=Cu.length;}else{return Cp\\x3c=0;}}if(browser.windows&&Cr){while((!Cq())&&n(Ct())){Cs();\\n}while((!Cq())&&!n(Ct())){Cs();}}else{while((!Cq())&&!n(Ct())){Cs();}while((!Cq())&&n(Ct())){Cs();}}return Cp;\\n}function AM(i){if(AK&&top.DONT_INCORP){return;}if(!k){return;}var Cq=i.type;var Cw=i.charCode;var Cr=i.keyCode;\\nvar Cs="";if(i.altKey){Cs=Cs+"A";}if(i.ctrlKey){Cs=Cs+"C";}if(i.shiftKey){Cs=Cs+"S";}if(i.metaKey){Cs=Cs+"M";\\n}var Cz="";if(Cs){Cz=Cs+"-";}var Ct=i.which;var Cy=((!Cw)&&((Cq=="keyup")||(Cq=="keydown"))&&(Cr==16||Cr==17||Cr==18||Cr==20||Cr==224||Cr==91));\\nif(Cy){return;}var Cp=false;var Cv=((browser.msie||browser.safari)?(Cq=="keydown"):(Cq=="keypress"));\\nvar Cu=((browser.msie||browser.safari)?(Cq=="keydown"):(Cq=="keypress"));var Cx=false;a("handleKeyEvent",function(){if(Cq=="keypress"||(Cv&&Cr==13)){if(!Ar(i)){i.preventDefault();\\nCx=true;}}else{if(Cq=="keydown"){Au(i);}}if(!Cx){if(Cv&&Cr==8){G(3);i.preventDefault();A5(i);Cp=true;\\n}if((!Cp)&&Cv&&Cr==13){G(4);i.preventDefault();Bu();N.setTimeout(function(){F.scrollBy(-100,0);},0);Cp=true;\\n}if((!Cp)&&Cv&&Cr==9&&!(i.metaKey||i.ctrlKey)){G(5);i.preventDefault();Bw(i.shiftKey);Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="z"&&(i.metaKey||i.ctrlKey)){G(6);\\ni.preventDefault();if(i.shiftKey){s("redo");}else{s("undo");}Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="y"&&(i.metaKey||i.ctrlKey)){G(10);\\ni.preventDefault();s("redo");Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="b"&&(i.metaKey||i.ctrlKey)){G(13);\\ni.preventDefault();c("bold");Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="i"&&(i.metaKey||i.ctrlKey)){G(14);\\ni.preventDefault();c("italic");Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="u"&&(i.metaKey||i.ctrlKey)){G(15);\\ni.preventDefault();c("underline");Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="h"&&(i.ctrlKey)){G(20);\\ni.preventDefault();A5();Cp=true;}if(AA&&AA.handleKeyEvent(i)){i.preventDefault();Cp=true;}}if(Cq=="keydown"){H.atLeast(500);\\n}else{if(Cq=="keypress"){if((!Cp)&&AG.shouldNormalizeOnChar(Cw)){H.atMost(0);}else{H.atLeast(500);}}else{if(Cq=="keyup"){var C0=200;\\nH.atLeast(C0);H.atMost(C0);}}}var C2=(browser.mozilla&&i.altKey&&Cw==0&&Cr==0);var C1=(browser.safari&&i.altKey&&Cr==229);\\nif(AD||C2||C1){H.atLeast(3000);AD=true;}if((!Cp)&&(!AD)&&(!r)){if(Cq!="keyup"||!A8()){Aw();}}if(Cq=="keyup"){AD=false;\\n}});}var AD=false;function s(Cp){if(undoModule.enabled){var i;if(Cp=="undo"){i="performUndo";}if(Cp=="redo"){i="performRedo";\\n}if(i){var Cq=C.editEvent.eventType;C.startNewEvent(Cp);undoModule[i](function(Cs,Cr){if(Cs){b(Cs);}if(Cr){d(P(Cr.selStart),P(Cr.selEnd),Cr.selFocusAtStart);\\n}var Ct=C.startNewEvent(Cq,true);return Ct;});}}}function Ba(){var i=A.selStart,Cp=A.selEnd;if(!(i&&Cp)){AW(null);\\nreturn;}var Cr=(false&&browser.mozilla&&i&&Cp&&i[0]==Cp[0]&&i[1]==A.lines.atIndex(i[0]).lineMarker&&Cp[1]==A.lines.atIndex(Cp[0]).lineMarker&&Bk(i[0]));\\nvar Cq={};var Cs=[i[0],i[1]];if(Cr){Cs[1]+=1;}Cq.startPoint=Am(Cs);var Ct=[Cp[0],Cp[1]];if(Cr){Ct[1]+=1;\\n}Cq.endPoint=Am(Ct);Cq.focusAtStart=!!A.selFocusAtStart;AW(Cq);if(Cr){Cr.unhack();}}function Ca(){return map(A.lines.slice(),function(Cq){var Cp=Cq.text;\\nvar i;if(Cp.length==0){i=\\\'\\x3cspan style="color: #aaa">--\\x3c/span>\\\';}else{i=htmlPrettyEscape(Cp);}return"\\x3cdiv>\\x3ccode>"+i+"\\x3c/div>\\x3c/code>";\\n}).join("");}function j(i){if(isNodeText(i)){return i.nodeValue.length;}else{return 1;}}function CX(){var i;\\ntry{i=E.selection;}catch(Cq){}if(!i){return false;}var Cp;try{Cp=i.createRange();}catch(Cq){}if(!Cp){return false;\\n}var Cr=Cp.parentElement();if(Cr.ownerDocument!=E){return false;}return true;}function Ae(){if(browser.msie){var i;\\ntry{i=E.selection;}catch(Cx){}if(!i){return null;}var Cr;try{Cr=i.createRange();}catch(Cx){}if(!Cr){return null;\\n}var C0=Cr.parentElement();if(C0.ownerDocument!=E){return null;}function C1(){return E.body.createTextRange();\\n}function Cv(C3){var C2=C1();C2.moveToElementText(C3);return C2;}function Ct(C6){var C2=C6.parentElement();\\nvar C5=-1;var C8=C2.childNodes.length;var C7=Cv(C2);if(C6.compareEndPoints("StartToStart",C7)==0){return{node:C2,index:0,maxIndex:1};\\n}else{if(C6.compareEndPoints("EndToEnd",C7)==0){if(AF(C2)&&C2.nextSibling){return{node:C2.nextSibling,index:0,maxIndex:1};\\n}return{node:C2,index:1,maxIndex:1};}else{if(C2.childNodes.length==0){return{node:C2,index:0,maxIndex:1};\\n}}}for(var C3=0;C3\\x3cC2.childNodes.length;C3++){var DD=C2.childNodes.item(C3);if(!isNodeText(DD)){var DA=Cv(DD);\\nvar DE=C6.compareEndPoints("StartToStart",DA);var DH=C6.compareEndPoints("EndToEnd",DA);if(DE>=0&&DH\\x3c=0){var DG=0;\\nif(DE>0){DG=1;}return{node:DD,index:DG,maxIndex:1};}else{if(DH>0){if(C3>C5){C5=C3;C7.setEndPoint("StartToEnd",DA);\\n}}else{if(DE\\x3c0){if(C3\\x3cC8){C8=C3;C7.setEndPoint("EndToStart",DA);}}}}}}if((C8-C5)==1){if(C5>=0){return{node:C2.childNodes.item(C5),index:1,maxIndex:1};\\n}else{return{node:C2.childNodes.item(C8),index:0,maxIndex:1};}}var DF=0;var C9=C6.duplicate();var DI=binarySearchInfinite(40,function(DL){var DK=DL-DF;\\nvar DJ=Math.abs(C9.move("character",-DK));if(C9.move("character",-1)){C9.move("character",1);}if(DK\\x3c0){DF-=DJ;\\n}else{DF+=DJ;}return(C9.compareEndPoints("StartToStart",C7)\\x3c=0);});var DB=C5+1;var DC=DI;while(DB\\x3cC8){var C4=C2.childNodes.item(DB);\\nif(DC\\x3c=C4.nodeValue.length){return{node:C4,index:DC,maxIndex:C4.nodeValue.length};}DC-=C4.nodeValue.length;\\nDB++;}var C4=C2.childNodes.item(DB-1);return{node:C4,index:C4.nodeValue.length,maxIndex:C4.nodeValue.length};\\n}var Cq={};if(Cr.compareEndPoints("StartToEnd",Cr)==0){var Cs=Ct(Cr);Cq.startPoint=Cs;Cq.endPoint={node:Cs.node,index:Cs.index,maxIndex:Cs.maxIndex};\\n}else{var Cu=Cr.duplicate();Cu.collapse(true);var Cw=Cr.duplicate();Cw.collapse(false);Cq.startPoint=Ct(Cu);\\nCq.endPoint=Ct(Cw);}return Cq;}else{var i=window.getSelection();if(i&&i.type!="None"&&i.rangeCount!==0){var Cp=i.getRangeAt(0);\\nfunction Cz(C2){while(C2&&!(C2.tagName&&C2.tagName.toLowerCase()=="body")){C2=C2.parentNode;}return !!C2;\\n}function Cy(C7,C6){if(!Cz(C7)){return{node:B,index:0,maxIndex:1};}var C2=C7;var C5=C2.childNodes.length;\\nif(isNodeText(C2)){return{node:C2,index:C6,maxIndex:C2.nodeValue.length};}else{if(C5==0){return{node:C2,index:0,maxIndex:1};\\n}else{if(C6==C5){var C3=C2.childNodes.item(C5-1);var C4=j(C3);return{node:C3,index:C4,maxIndex:C4};}else{var C3=C2.childNodes.item(C6);\\nvar C4=j(C3);return{node:C3,index:0,maxIndex:C4};}}}}var Cq={};Cq.startPoint=Cy(Cp.startContainer,Cp.startOffset);\\nCq.endPoint=Cy(Cp.endContainer,Cp.endOffset);Cq.focusAtStart=(((Cp.startContainer!=Cp.endContainer)||(Cp.startOffset!=Cp.endOffset))&&i.anchorNode&&(i.anchorNode==Cp.endContainer)&&(i.anchorOffset==Cp.endOffset));\\nreturn Cq;}else{return null;}}}function AW(i){function Cv(C5){return{node:C5.node,index:C5.index,maxIndex:C5.maxIndex};\\n}if(browser.msie){E.body.scrollHeight;function Cz(C6,C5){while(C5.firstChild&&!isNodeText(C5.firstChild)){C5=C5.firstChild;\\n}C6.moveToElementText(C5);}function C4(){return E.body.createTextRange();}function Cs(C5,C6){if(isNodeText(C6)){if(C6.previousSibling&&!isNodeText(C6.previousSibling)){Cx(C5,C6.previousSibling);\\n}else{Cs(C5,C6.parentNode);}}else{Cz(C5,C6);if(C5.move("character",1)){C5.move("character",-1);}C5.collapse(true);\\n}}function Cx(C5,C6){if(isNodeText(C6)){Cs(C5,C6);C5.move("character",C6.nodeValue.length);}else{Cz(C5,C6);\\nC5.collapse(false);}}function Cy(C7){var C5=C4();var C6=C7.node;if(isNodeText(C6)){Cs(C5,C6);C5.move("character",C7.index);\\n}else{if(C7.index==0){Cs(C5,C6);}else{Cx(C5,C6);}}return C5;}if(i){if(!CX()){return;}var C1=Cv(i.startPoint);\\nvar Cp=Cv(i.endPoint);if(Cp.index==Cp.maxIndex&&Cp.node.nextSibling){Cp.node=Cp.node.nextSibling;Cp.index=0;\\nCp.maxIndex=j(Cp.node);}var Cr=Cy(C1);Cr.setEndPoint("EndToEnd",Cy(Cp));function C3(C7){var C6;try{C6=E.selection;\\n}catch(C8){}if(!C6){return false;}var C5=C6.createRange();if(C5.parentElement().ownerDocument!=E){return false;\\n}if(C7.compareEndPoints("StartToStart",C5)!==0){return false;}if(C7.compareEndPoints("EndToEnd",C5)!==0){return false;\\n}return true;}if(!C3(Cr)){Cr.select();}}else{try{E.selection.empty();}catch(C2){}}}else{var Cw;function C0(C8){var C5=Cv(C8);\\nif(Cw){function C7(){while(C5.node.childNodes.length>0){if(C5.index==0){C5.node=C5.node.firstChild;C5.maxIndex=j(C5.node);\\n}else{if(C5.index==C5.maxIndex){C5.node=C5.node.lastChild;C5.maxIndex=j(C5.node);C5.index=C5.maxIndex;\\n}else{break;}}}}if(isNodeText(C5.node)&&C5.index==C5.maxIndex){var C6=C5.node;while((!C6.nextSibling)&&(C6!=B)&&(C6.parentNode!=B)){C6=C6.parentNode;\\n}if(C6.nextSibling&&(!((typeof C6.nextSibling.tagName)=="string"&&C6.nextSibling.tagName.toLowerCase()=="br"))&&(C6!=C5.node)&&(C6!=B)&&(C6.parentNode!=B)){C5.node=C6.nextSibling;\\nC5.maxIndex=j(C5.node);C5.index=0;C7();}}if(!isNodeText(C5.node)){C7();}}if(isNodeText(C5.node)){return{container:C5.node,offset:C5.index};\\n}else{return{container:C5.node.parentNode,offset:Bx(C5.node)+C5.index};}}var Cq=window.getSelection();\\nif(Cq){Cq.removeAllRanges();if(i){Cw=(i.startPoint.node===i.endPoint.node&&i.startPoint.index===i.endPoint.index);\\nvar Ct=C0(i.startPoint);var Cu=C0(i.endPoint);if((!Cw)&&i.focusAtStart&&Cq.collapse&&Cq.extend){Cq.collapse(Cu.container,Cu.offset);\\nCq.extend(Ct.container,Ct.offset);}else{var Cr=E.createRange();Cr.setStart(Ct.container,Ct.offset);Cr.setEnd(Cu.container,Cu.offset);\\nCq.removeAllRanges();Cq.addRange(Cr);}}}}}function Bx(i){var Cp=0;while(i.previousSibling){Cp++;i=i.previousSibling;\\n}return Cp;}function h(){if(AO()==0||Ak()==0){return;}function Cp(C3,C4,i){if(C3[C4]!=i){C3[C4]=i;}}var Cx=T.firstChild.offsetWidth;\\nvar Cs=Cx+CC;if(Cs\\x3cAh){Cs=Ah;}p=BS;if(AP){p+=Cs+BO;}Cp(g.style,"left",p+"px");Cp(T.style,"width",Cs+"px");\\nfor(var Cv=0;Cv\\x3c2;Cv++){var Cq=B.clientHeight;var Cr=(browser.msie?B.createTextRange().boundingWidth:B.clientWidth);\\nvar Ct=Ak()-Bo-Aj;var Cu=AO()-p-CQ;if(Cq\\x3cCt){Cq=Ct;if(browser.msie){Cp(F.document.documentElement.style,"overflowY","auto");\\n}}else{if(browser.msie){Cp(F.document.documentElement.style,"overflowY","scroll");}}if(K){Cr=Cu;}else{if(Cr\\x3cCu){Cr=Cu;\\n}}if(Cq>32000){Cq=32000;}if(Cr>32000){Cr=32000;}Cp(g.style,"height",Cq+"px");Cp(g.style,"width",Cr+"px");\\nCp(T.style,"height",Cq+"px");}if(browser.mozilla){if(!K){var Cy=B;var Cw=Ct+"px";Cp(Cy.style,"height",Cw);\\n}else{Cp(B.style,"height","");}}var C2=BB();var C1=Ab();var C0=F;var Cz=20;Ax();o(T,"sidedivdelayed");\\n}function BE(){var Cp=F;var Cq=F.document;if(typeof(Cp.pageYOffset)=="number"){return{x:Cp.pageXOffset,y:Cp.pageYOffset};\\n}var i=Cq.documentElement;if(i&&typeof(i.scrollTop)=="number"){return{x:i.scrollLeft,y:i.scrollTop};}}function BB(){return BE().x;\\n}function Ab(){return BE().y;}function Cm(i){F.scrollTo(i,Ab());}function Cl(i){F.scrollTo(BB(),i);}function Ch(i,Cp){F.scrollTo(i,Cp);\\n}var BM=[];function BF(){forEach(BM,function(i){i();});}J(window,"load",CB);function Az(i){try{function Cp(Cs,Cu,Ct){if(String(Cs[Cu]).toLowerCase()!=Ct){Cs[Cu]=Ct;\\nreturn true;}return false;}if(browser.msie||browser.safari){Cp(B,"contentEditable",(i?"true":"false"));\\n}else{var Cq=Cp(E,"designMode",(i?"on":"off"));if(Cq&&i&&browser.opera){A9();}}return true;}catch(Cr){return false;\\n}}var Cg=null;function B3(Cp){var i=window.clipboardData&&window.clipboardData.getData("Text");if(i&&E.selection){}}var r=false;\\nfunction A6(i){if(i.type=="compositionstart"){r=true;}else{if(i.type=="compositionend"){r=false;}}}function A9(){J(window,"unload",BF);\\nJ(document,"keydown",AM);J(document,"keypress",AM);J(document,"keyup",AM);J(document,"click",CY);J(B,"blur",CJ);\\nif(browser.msie){J(document,"click",CM);}if(browser.msie){J(B,"paste",B3);}if((!browser.msie)&&document.documentElement){J(document.documentElement,"compositionstart",A6);\\nJ(document.documentElement,"compositionend",A6);}}function CM(i){if((i.target.tagName||"").toLowerCase()!="html"){return;\\n}if(!(i.pageY>B.clientHeight)){return;}a("handleOuterClick",function(){G(11);if(U()){var Cp=A.lines.length()-1;\\nvar Cq=A.lines.atIndex(Cp).text.length;d([Cp,Cq],[Cp,Cq]);}});}function BC(Cq,i){var Cp=[];(Cq.className||"").replace(/\\\\S+/g,function(Cr){if((!i)||(i(Cr))){Cp.push(Cr);\\n}});return Cp;}function Ay(i,Cp){i.className=Cp.join(" ");}function o(Cq,Cp){var i=false;var Cr=BC(Cq,function(Cs){if(Cs==Cp){i=true;\\n}return true;});if(!i){Cr.push(Cp);Ay(Cq,Cr);}}function CG(Cp,Cq){var i=false;var Cr=BC(Cp,function(Cs){if(Cs==Cq){i=true;\\nreturn false;}return true;});if(i){Ay(Cp,Cr);}}function Q(Cp,i,Cq){if(Cq){o(Cp,i);}else{CG(Cp,i);}}function CB(){E=document;\\na("setup",function(){var Cp=E.getElementById("innerdocbody");B=Cp;if(browser.mozilla){o(B,"mozilla");\\n}if(browser.safari){o(B,"safari");}if(browser.msie){o(B,"msie");}if(browser.msie){try{E.execCommand("BackgroundImageCache",false,true);\\n}catch(Cq){}}Q(B,"authorColors",true);Q(B,"doesWrap",K);Bh();Ax();while(B.firstChild){B.removeChild(B.firstChild);\\n}var i=AN("");AJ(0,A.lines.length(),[i]);AH(null,[i.domInfo],null);A.alines=Changeset.splitAttributionLines(Changeset.makeAttribution("\\\\n"),"\\\\n");\\nA9();});N.setTimeout(function(){parent.readyFunc();},0);B4=true;}function Bc(){window.focus();}function CJ(i){if(browser.msie){AW(null);\\n}}function J(Cp,Cq,i){var Cr;if((typeof i._wrapper)!="function"){i._wrapper=function(Cs){i(CO(Cs||window.event||{}));\\n};}var Cr=i._wrapper;if(Cp.addEventListener){Cp.addEventListener(Cq,Cr,false);}else{Cp.attachEvent("on"+Cq,Cr);\\n}BM.push(function(){B2(Cp,Cq,i);});}function B2(i,Cq,Cr){var Cp=Cr._wrapper;if(i.removeEventListener){i.removeEventListener(Cq,Cp,false);\\n}else{i.detachEvent("on"+Cq,Cp);}}function B0(Cw){var Cp=Cw.node;var Ct=Cw.index;function Cq(C0){return C0.offsetLeft;\\n}function Cr(C0){return C0.offsetLeft+C0.offsetWidth;}if(!isNodeText(Cp)){if(Ct==0){return Cq(Cp);}else{return Cr(Cp);\\n}}else{var Cs=Ct;var Cv=Cp.nodeValue.length-Ct;var i;for(i=Cp.previousSibling;i&&isNodeText(i);i=i.previousSibling){Cs+=i.nodeValue;\\n}var Cu=(i?Cr(i):Cq(Cp.parentNode));for(i=Cp.nextSibling;i&&isNodeText(i);i=i.nextSibling){Cv+=i.nodeValue;\\n}var Cz=(i?Cq(i):Cr(Cp.parentNode));var Cx=(Cs/(Cs+Cv));var Cy=Cu+Cx*(Cz-Cu);return Math.round(Cy);}}function Cd(){var i=F;\\nvar Cp=i.document;if(i.innerHeight&&i.scrollMaxY){return i.innerHeight+i.scrollMaxY;}else{if(Cp.body.scrollHeight>Cp.body.offsetHeight){return Cp.body.scrollHeight;\\n}else{return Cp.body.offsetHeight;}}}function Cn(){var i=F;var Cp=i.document;if(i.innerWidth&&i.scrollMaxX){return i.innerWidth+i.scrollMaxX;\\n}else{if(Cp.body.scrollWidth>Cp.body.offsetWidth){return Cp.body.scrollWidth;}else{return Cp.body.offsetWidth;\\n}}}function Ak(){var Cp=F;var Cq=Cp.document;var i;if(browser.opera){i=Cp.innerHeight;}else{i=Cq.documentElement.clientHeight;\\n}if(i){return i;}return Number(D.frame.parentNode.style.height.replace(/[^0-9]/g,"")||0);}function AO(){var Cp=F;\\nvar i=Cp.document;return i.documentElement.clientWidth;}function Bt(Cp){var i=F;var Cs=F.document;var Cq=Cp.offsetTop+Aj-i.scrollY;\\nvar Cr=i.scrollY+Ak()-(Cp.offsetTop+Aj+Cp.offsetHeight);if(Cq\\x3c0){i.scrollBy(0,Cq);}else{if(Cr\\x3c0){i.scrollBy(0,-Cr);\\n}}}function CT(Cp){var i=F;var Cs=F.document;Cp+=p;var Cq=Cp-i.scrollX;var Cr=i.scrollX+AO()-Cp;if(Cq\\x3c0){i.scrollBy(Cq,0);\\n}else{if(Cr\\x3c0){i.scrollBy(-Cr+1,0);}}}function CP(){if(!A.selStart){return;}h();var Cq=(A.selFocusAtStart?A.selStart[0]:A.selEnd[0]);\\nBt(A.lines.atIndex(Cq).lineNode);if(!K){var i=Ae();if(i){var Cr=(i.focusAtStart?i.startPoint:i.endPoint);\\nvar Cp=B0(Cr);CT(Cp);h();}}}function X(Cq){var Cp=A.alines[Cq];if(Cp){var i=Changeset.opIterator(Cp);\\nif(i.hasNext()){return Changeset.opAttributeValue(i.next(),"list",A.apool)||"";}}return"";}function Bg(Cp,i){AI([[Cp,i]]);\\n}function AI(Cw){var Cp=[0,0];var Cq=Changeset.builder(A.lines.totalWidth());for(var Ct=0;Ct\\x3cCw.length;\\nCt++){var Cv=Cw[Ct];var Cs=Cv[0];var Cr=Cv[1];AR(Cq,Cp,(Cp=[Cs,0]));if(X(Cs)){if(Cr){AR(Cq,Cp,(Cp=[Cs,1]),[["list",Cr]],A.apool);\\n}else{BQ(Cq,Cp,(Cp=[Cs,1]));}}else{if(Cr){Cq.insert("*",[["author",e],["insertorder","first"],["list",Cr]],A.apool);\\n}}}var Cu=Cq.toString();if(!Changeset.isIdentity(Cu)){b(Cu);}}function As(){if(!(A.selStart&&A.selEnd)){return;\\n}var Cp,Cq;Cp=A.selStart[0];Cq=Math.max(Cp,A.selEnd[0]-((A.selEnd[1]==0)?1:0));var Ct=true;for(var i=Cp;\\ni\\x3c=Cq;i++){if(!X(i)){Ct=false;break;}}var Cs=[];for(var i=Cp;i\\x3c=Cq;i++){var Cr=X(i);Cs.push([i,Ct?"":(Cr?Cr:"bullet1")]);\\n}AI(Cs);}var AA=(browser.mozilla&&(function(){var i=0;var Cp=false;function Cr(Cu){var Ct=A.lines.atIndex(Cu).lineNode;\\nwhile(Ct.firstChild&&AF(Ct.firstChild)){Ct=Ct.firstChild;}return makeVirtualLineView(Ct);}function Cs(Ct,Cu){return[Ct,Cu-A.lines.atIndex(Ct).lineMarker];\\n}function Cq(Ct,Cu){return[Ct,Cu+A.lines.atIndex(Ct).lineMarker];}return{notifySelectionChanged:function(){if(!Cp){i=0;\\n}},handleKeyEvent:function(C0){if(C0.type!="keypress"){return false;}var Cw=C0.keyCode;if(Cw\\x3c37||Cw>40){return false;\\n}q();if(!(A.selStart&&A.selEnd)){return true;}var Cx=(C0.altKey?"byWord":(C0.ctrlKey?"byWord":(C0.metaKey?"toEnd":"normal")));\\nvar Cu=Cs(A.selStart[0],A.selStart[1]);var Ct=Cs(A.selEnd[0],A.selEnd[1]);var DB=U();if(A.selFocusAtStart){var DK=Cu;\\nCu=Ct;Ct=DK;}var DH=38,DJ=40,C7=37,DE=39;var C8=false;if(DB&&!C0.shiftKey){Cu=Ct;}else{if((!DB)&&(!C0.shiftKey)){if(Cw==C7){if(A.selFocusAtStart){Cu=Ct;\\n}else{Ct=Cu;}if(Cx=="normal"){C8=true;}}else{if(Cw==DE){if(A.selFocusAtStart){Ct=Cu;}else{Cu=Ct;}if(Cx=="normal"){C8=true;\\n}}else{Cu=Ct;}}}}if(!C8){function C1(DN){var DM=A.lines.atIndex(DN);return DM.text.length-DM.lineMarker;\\n}function C4(DN){var DM=A.lines.atIndex(DN);return DM.text.substring(DM.lineMarker);}if(Cw==DH||Cw==DJ){var Cy=(Cw==DH);\\nvar C3=((Cy&&Ct[0])||((!Cy)&&Ct[0]\\x3cA.lines.length()-1));var C6,C2,DA=false;if(K){C6=Cr(Ct[0]);C2=C6.getVLineAndOffsetForChar(Ct[1]);\\nDA=((Cy&&C2.vline>0)||((!Cy)&&C2.vline\\x3c(C6.getNumVirtualLines()-1)));}var DL;if(Cx=="toEnd"){if(Cy){Ct[0]=0;\\nCt[1]=0;}else{Ct[0]=A.lines.length()-1;Ct[1]=C1(Ct[0]);}}else{if(Cx=="byWord"){if(Cy){if(Ct[1]==0&&C3){Ct[0]--;\\nCt[1]=0;}else{Ct[1]=0;}}else{var Cz=C1(Ct[0]);if(browser.windows){if(C3){Ct[0]++;Ct[1]=0;}else{Ct[1]=Cz;\\n}}else{if(Ct[1]==Cz&&C3){Ct[0]++;Ct[1]=C1(Ct[0]);}else{Ct[1]=Cz;}}}i=0;}else{if(DA){var C5=C2.vline;var Cv=C2.offset;\\nif(Cy){C5--;}else{C5++;}if(i>Cv){Cv=i;}else{i=Cv;}var DF=C6.getCharForVLineAndOffset(C5,Cv);Ct[1]=DF.lineChar;\\n}else{if(C3){if(Cy){Ct[0]--;}else{Ct[0]++;}var Cv=Ct[1];if(K){Cv=C2.offset;}if(i>Cv){Cv=i;}else{i=Cv;\\n}if(K){var DG=Cr(Ct[0]);var C5=(Cy?DG.getNumVirtualLines()-1:0);var DF=DG.getCharForVLineAndOffset(C5,Cv);\\nCt[1]=DF.lineChar;}else{var Cz=C1(Ct[0]);if(Cv>Cz){Cv=Cz;}Ct[1]=Cv;}}else{if(Cy){Ct[1]=0;}else{Ct[1]=C1(Ct[0]);\\n}i=0;}}}}}else{if(Cw==C7||Cw==DE){var DI=(Cw==C7);if(DI){if(Cx=="toEnd"){Ct[1]=0;}else{if(Ct[1]>0){if(Cx=="byWord"){Ct[1]=x(C4(Ct[0]),Ct[1],false);\\n}else{Ct[1]--;}}else{if(Ct[0]>0){Ct[0]--;Ct[1]=C1(Ct[0]);if(Cx=="byWord"){Ct[1]=x(C4(Ct[0]),Ct[1],false);\\n}}}}}else{var Cz=C1(Ct[0]);if(Cx=="toEnd"){Ct[1]=Cz;}else{if(Ct[1]\\x3cCz){if(Cx=="byWord"){Ct[1]=x(C4(Ct[0]),Ct[1],true);\\n}else{Ct[1]++;}}else{if(Ct[0]\\x3cA.lines.length()-1){Ct[0]++;Ct[1]=0;if(Cx=="byWord"){Ct[1]=x(C4(Ct[0]),Ct[1],true);\\n}}}}}i=0;}}}var C9=((Ct[0]\\x3cCu[0])||(Ct[0]==Cu[0]&&Ct[1]\\x3cCu[1]));var DD=(C9?Ct:Cu);var DC=(C9?Cu:Ct);Cp=true;\\nd(Cq(DD[0],DD[1]),Cq(DC[0],DC[1]),C9);Cp=false;C.userChangedSelection=true;return true;}};})());function CO(i){var Cp=i;\\ni=extend({},Cp);i.preventDefault=function(){if(Cp.preventDefault){Cp.preventDefault();}Cp.returnValue=false;\\n};i.stopPropagation=function(){if(Cp.stopPropagation){Cp.stopPropagation();}Cp.cancelBubble=true;};if(!i.target&&i.srcElement){i.target=i.srcElement;\\n}if(browser.safari&&i.target.nodeType==3){i.target=Cp.target.parentNode;}if(!i.relatedTarget&&i.fromElement){i.relatedTarget=i.fromElement==i.target?i.toElement:i.fromElement;\\n}if(i.pageX==null&&i.clientX!=null){var Cq=document.documentElement,Cr=document.body;i.pageX=i.clientX+(Cq&&Cq.scrollLeft||Cr.scrollLeft||0);\\ni.pageY=i.clientY+(Cq&&Cq.scrollTop||Cr.scrollTop||0);}if(!i.which&&(i.charCode||i.keyCode)){i.which=i.charCode||i.keyCode;\\n}if(!i.metaKey&&i.ctrlKey){i.metaKey=i.ctrlKey;}if(!i.which&&i.button){i.which=(i.button&1?1:(i.button&2?3:(i.button&4?2:0)));\\n}return i;}var Z;var Ai;function BX(){Z=1;T.innerHTML=\\\'\\x3ctable border="0" cellpadding="0" cellspacing="0" align="right">\\x3ctr>\\x3ctd id="sidedivinner">\\x3cdiv>1\\x3c/div>\\x3c/td>\\x3c/tr>\\x3c/table>\\\';\\nAi=F.document.getElementById("sidedivinner");}function CN(){var Cq=A.lines.length();if(Cq\\x3c1){Cq=1;}if(Cq!=Z){var Cr=Ai;\\nvar Cv=F.document;while(Z\\x3cCq){Z++;var Cw=Z;var Ct=Cv.createElement("DIV");Ct.appendChild(Cv.createTextNode(String(Cw)));\\nCr.appendChild(Ct);}while(Z>Cq){Cr.removeChild(Cr.lastChild);Z--;}}if(C&&C.domClean){var Cp=Ai.firstChild;\\nvar i=E.body.firstChild;while(Cp&&i){var Cs=(i.clientHeight||i.offsetHeight);if(i.nextSibling){Cs=i.nextSibling.offsetTop-i.offsetTop;\\n}if(Cs){var Cu=Cs+"px";if(Cp.style.height!=Cu){Cp.style.height=Cu;}}Cp=Cp.nextSibling;i=i.nextSibling;\\n}}}}OUTER(this);\'+\'//-->\\n\\x3c/script>\')'));
-T.push('\'\\n<style type="text/css" title="dynamicsyntax"></style>\\n\'');T.push('\'</head><body id="innerdocbody" class="syntax" spellcheck="false">&nbsp;</body></html>\'');
-var X='editorId = "'+A.id+'"; editorInfo = parent.'+K+'.registry[editorId]; window.onload = function() { window.onload = null; setTimeout(function() { var iframe = document.createElement("IFRAME"); iframe.scrolling = "no"; var outerdocbody = document.getElementById("outerdocbody"); iframe.frameBorder = 0; iframe.allowTransparency = true; outerdocbody.insertBefore(iframe, outerdocbody.firstChild); iframe.ace_outerWin = window; readyFunc = function() { editorInfo.onEditorReady(); readyFunc = null; editorInfo = null; }; var doc = iframe.contentWindow.document; doc.open(); doc.write('+T.join("+")+"); doc.close(); }, 0); }";
-var Y=[W,"<html><head>",('<style type="text/css">body{margin:0;white-space:nowrap;}#outerdocbody{background-color:#fff;}body.grayedout{background-color:#eee!important;}#innerdocbody{font-size:12px;font-family:monospace;line-height:16px;}body.doesWrap{white-space:normal;}#innerdocbody{padding-top:1px;padding-right:10px;padding-bottom:8px;padding-left:1px;overflow:hidden;background-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);}#sidediv{font-size:11px;font-family:monospace;line-height:16px;padding-top:8px;padding-right:3px;position:absolute;width:20px;top:0;left:0;cursor:default;color:white;}#sidedivinner{text-align:right;}.sidedivdelayed{background-color:#eee;color:#888!important;border-right:1px solid #999;}.sidedivhidden{display:none;}#outerdocbody iframe{display:block;position:relative;left:32px;top:7px;border:0;width:1px;height:1px;}#outerdocbody .hotrect{border:1px solid #999;position:absolute;}body.mozilla,body.safari{display:table-cell;}body.doesWrap{display:block!important;}.safari div{padding-right:1px;}p{margin:0;}#linemetricsdiv{position:absolute;left:-1000px;top:-1000px;color:white;z-index:-1;font-size:12px;font-family:monospace;}#overlaysdiv{position:absolute;left:-1000px;top:-1000px;}</style>'),'<link rel="stylesheet" type="text/css" href="data:text/css,"/>',"\x3cscript>",X,"\x3c/script>",'</head><body id="outerdocbody"><div id="sidediv"><!-- --></div><div id="linemetricsdiv">x</div><div id="overlaysdiv"><!-- --></div></body></html>'];
-var U=document.createElement("IFRAME");U.frameBorder=0;A.frame=U;document.getElementById(Q).appendChild(U);
-var V=U.contentWindow.document;V.open();V.write(Y.join(""));V.close();B.adjustSize();})();};return B;
-} \ No newline at end of file
diff --git a/trunk/etherpad/src/static/js/colorutils.js b/trunk/etherpad/src/static/js/colorutils.js
deleted file mode 100644
index e745f8e..0000000
--- a/trunk/etherpad/src/static/js/colorutils.js
+++ /dev/null
@@ -1,91 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/colorutils.js
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var colorutils = {};
-
-// "#ffffff" or "#fff" or "ffffff" or "fff" to [1.0, 1.0, 1.0]
-colorutils.css2triple = function(cssColor) {
- var sixHex = colorutils.css2sixhex(cssColor);
- function hexToFloat(hh) {
- return Number("0x"+hh)/255;
- }
- return [hexToFloat(sixHex.substr(0,2)),
- hexToFloat(sixHex.substr(2,2)),
- hexToFloat(sixHex.substr(4,2))];
-}
-
-// "#ffffff" or "#fff" or "ffffff" or "fff" to "ffffff"
-colorutils.css2sixhex = function(cssColor) {
- var h = /[0-9a-fA-F]+/.exec(cssColor)[0];
- if (h.length != 6) {
- var a = h.charAt(0);
- var b = h.charAt(1);
- var c = h.charAt(2);
- h = a+a+b+b+c+c;
- }
- return h;
-}
-
-// [1.0, 1.0, 1.0] -> "#ffffff"
-colorutils.triple2css = function(triple) {
- function floatToHex(n) {
- var n2 = colorutils.clamp(Math.round(n*255), 0, 255);
- return ("0"+n2.toString(16)).slice(-2);
- }
- return "#" + floatToHex(triple[0]) +
- floatToHex(triple[1]) + floatToHex(triple[2]);
-}
-
-
-colorutils.clamp = function(v,bot,top) { return v < bot ? bot : (v > top ? top : v); };
-colorutils.min3 = function(a,b,c) { return (a < b) ? (a < c ? a : c) : (b < c ? b : c); };
-colorutils.max3 = function(a,b,c) { return (a > b) ? (a > c ? a : c) : (b > c ? b : c); };
-colorutils.colorMin = function(c) { return colorutils.min3(c[0], c[1], c[2]); };
-colorutils.colorMax = function(c) { return colorutils.max3(c[0], c[1], c[2]); };
-colorutils.scale = function(v, bot, top) { return colorutils.clamp(bot + v*(top-bot), 0, 1); };
-colorutils.unscale = function(v, bot, top) { return colorutils.clamp((v-bot)/(top-bot), 0, 1); };
-
-colorutils.scaleColor = function(c, bot, top) {
- return [colorutils.scale(c[0], bot, top),
- colorutils.scale(c[1], bot, top),
- colorutils.scale(c[2], bot, top)];
-}
-
-colorutils.unscaleColor = function(c, bot, top) {
- return [colorutils.unscale(c[0], bot, top),
- colorutils.unscale(c[1], bot, top),
- colorutils.unscale(c[2], bot, top)];
-}
-
-colorutils.luminosity = function(c) {
- // rule of thumb for RGB brightness; 1.0 is white
- return c[0]*0.30 + c[1]*0.59 + c[2]*0.11;
-}
-
-colorutils.saturate = function(c) {
- var min = colorutils.colorMin(c);
- var max = colorutils.colorMax(c);
- if (max - min <= 0) return [1.0, 1.0, 1.0];
- return colorutils.unscaleColor(c, min, max);
-}
-
-colorutils.blend = function(c1, c2, t) {
- return [colorutils.scale(t, c1[0], c2[0]),
- colorutils.scale(t, c1[1], c2[1]),
- colorutils.scale(t, c1[2], c2[2])];
-}
diff --git a/trunk/etherpad/src/static/js/cssmanager_client.js b/trunk/etherpad/src/static/js/cssmanager_client.js
deleted file mode 100644
index 04ed641..0000000
--- a/trunk/etherpad/src/static/js/cssmanager_client.js
+++ /dev/null
@@ -1,88 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/cssmanager.js
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT 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 makeCSSManager(emptyStylesheetTitle) {
-
- function getSheetByTitle(title) {
- var allSheets = document.styleSheets;
- for(var i=0;i<allSheets.length;i++) {
- var s = allSheets[i];
- if (s.title == title) {
- return s;
- }
- }
- return null;
- }
-
- /*function getSheetTagByTitle(title) {
- var allStyleTags = document.getElementsByTagName("style");
- for(var i=0;i<allStyleTags.length;i++) {
- var t = allStyleTags[i];
- if (t.title == title) {
- return t;
- }
- }
- return null;
- }*/
-
- var browserSheet = getSheetByTitle(emptyStylesheetTitle);
- //var browserTag = getSheetTagByTitle(emptyStylesheetTitle);
- function browserRules() { return (browserSheet.cssRules || browserSheet.rules); }
- function browserDeleteRule(i) {
- if (browserSheet.deleteRule) browserSheet.deleteRule(i);
- else browserSheet.removeRule(i);
- }
- function browserInsertRule(i, selector) {
- if (browserSheet.insertRule) browserSheet.insertRule(selector+' {}', i);
- else browserSheet.addRule(selector, null, i);
- }
- var selectorList = [];
-
- function indexOfSelector(selector) {
- for(var i=0;i<selectorList.length;i++) {
- if (selectorList[i] == selector) {
- return i;
- }
- }
- return -1;
- }
-
- function selectorStyle(selector) {
- var i = indexOfSelector(selector);
- if (i < 0) {
- // add selector
- browserInsertRule(0, selector);
- selectorList.splice(0, 0, selector);
- i = 0;
- }
- return browserRules().item(i).style;
- }
-
- function removeSelectorStyle(selector) {
- var i = indexOfSelector(selector);
- if (i >= 0) {
- browserDeleteRule(i);
- selectorList.splice(i, 1);
- }
- }
-
- return {selectorStyle:selectorStyle, removeSelectorStyle:removeSelectorStyle,
- info: function() {
- return selectorList.length+":"+browserRules().length;
- }};
-}
diff --git a/trunk/etherpad/src/static/js/domline_client.js b/trunk/etherpad/src/static/js/domline_client.js
deleted file mode 100644
index de2e7d3..0000000
--- a/trunk/etherpad/src/static/js/domline_client.js
+++ /dev/null
@@ -1,210 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/domline.js
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var domline = {};
-domline.noop = function() {};
-domline.identity = function(x) { return x; };
-
-domline.addToLineClass = function(lineClass, cls) {
- // an "empty span" at any point can be used to add classes to
- // the line, using line:className. otherwise, we ignore
- // the span.
- cls.replace(/\S+/g, function (c) {
- if (c.indexOf("line:") == 0) {
- // add class to line
- lineClass = (lineClass ? lineClass+' ' : '')+c.substring(5);
- }
- });
- return lineClass;
-}
-
-// if "document" is falsy we don't create a DOM node, just
-// an object with innerHTML and className
-domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) {
- var result = { node: null,
- appendSpan: domline.noop,
- prepareForAdd: domline.noop,
- notifyAdded: domline.noop,
- clearSpans: domline.noop,
- finishUpdate: domline.noop,
- lineMarker: 0 };
-
- var browser = (optBrowser || {});
- var document = optDocument;
-
- if (document) {
- result.node = document.createElement("div");
- }
- else {
- result.node = {innerHTML: '', className: ''};
- }
-
- var html = [];
- var preHtml, postHtml;
- var curHTML = null;
- function processSpaces(s) {
- return domline.processSpaces(s, doesWrap);
- }
- var identity = domline.identity;
- var perTextNodeProcess = (doesWrap ? identity : processSpaces);
- var perHtmlLineProcess = (doesWrap ? processSpaces : identity);
- var lineClass = 'ace-line';
- result.appendSpan = function(txt, cls) {
- if (cls.indexOf('list') >= 0) {
- var listType = /(?:^| )list:(\S+)/.exec(cls);
- if (listType) {
- listType = listType[1];
- if (listType) {
- preHtml = '<ul class="list-'+listType+'"><li>';
- postHtml = '</li></ul>';
- }
- result.lineMarker += txt.length;
- return; // don't append any text
- }
- }
- var href = null;
- var simpleTags = null;
- if (cls.indexOf('url') >= 0) {
- cls = cls.replace(/(^| )url:(\S+)/g, function(x0, space, url) {
- href = url;
- return space+"url";
- });
- }
- if (cls.indexOf('tag') >= 0) {
- cls = cls.replace(/(^| )tag:(\S+)/g, function(x0, space, tag) {
- if (! simpleTags) simpleTags = [];
- simpleTags.push(tag.toLowerCase());
- return space+tag;
- });
- }
- if ((! txt) && cls) {
- lineClass = domline.addToLineClass(lineClass, cls);
- }
- else if (txt) {
- var extraOpenTags = "";
- var extraCloseTags = "";
- if (href) {
- extraOpenTags = extraOpenTags+'<a href="'+
- href.replace(/\"/g, '&quot;')+'">';
- extraCloseTags = '</a>'+extraCloseTags;
- }
- if (simpleTags) {
- simpleTags.sort();
- extraOpenTags = extraOpenTags+'<'+simpleTags.join('><')+'>';
- simpleTags.reverse();
- extraCloseTags = '</'+simpleTags.join('></')+'>'+extraCloseTags;
- }
- html.push('<span class="',cls||'','">',extraOpenTags,
- perTextNodeProcess(domline.escapeHTML(txt)),
- extraCloseTags,'</span>');
- }
- };
- result.clearSpans = function() {
- html = [];
- lineClass = ''; // non-null to cause update
- result.lineMarker = 0;
- };
- function writeHTML() {
- var newHTML = perHtmlLineProcess(html.join(''));
- if (! newHTML) {
- if ((! document) || (! optBrowser)) {
- newHTML += '&nbsp;';
- }
- else if (! browser.msie) {
- newHTML += '<br/>';
- }
- }
- if (nonEmpty) {
- newHTML = (preHtml||'')+newHTML+(postHtml||'');
- }
- html = preHtml = postHtml = null; // free memory
- if (newHTML !== curHTML) {
- curHTML = newHTML;
- result.node.innerHTML = curHTML;
- }
- if (lineClass !== null) result.node.className = lineClass;
- }
- result.prepareForAdd = writeHTML;
- result.finishUpdate = writeHTML;
- result.getInnerHTML = function() { return curHTML || ''; };
-
- return result;
-};
-
-domline.escapeHTML = function(s) {
- var re = /[&<>'"]/g; /']/; // stupid indentation thing
- if (! re.MAP) {
- // persisted across function calls!
- re.MAP = {
- '&': '&amp;',
- '<': '&lt;',
- '>': '&gt;',
- '"': '&#34;',
- "'": '&#39;'
- };
- }
- return s.replace(re, function(c) { return re.MAP[c]; });
-};
-
-domline.processSpaces = function(s, doesWrap) {
- if (s.indexOf("<") < 0 && ! doesWrap) {
- // short-cut
- return s.replace(/ /g, '&nbsp;');
- }
- var parts = [];
- s.replace(/<[^>]*>?| |[^ <]+/g, function(m) { parts.push(m); });
- if (doesWrap) {
- var endOfLine = true;
- var beforeSpace = false;
- // last space in a run is normal, others are nbsp,
- // end of line is nbsp
- for(var i=parts.length-1;i>=0;i--) {
- var p = parts[i];
- if (p == " ") {
- if (endOfLine || beforeSpace)
- parts[i] = '&nbsp;';
- endOfLine = false;
- beforeSpace = true;
- }
- else if (p.charAt(0) != "<") {
- endOfLine = false;
- beforeSpace = false;
- }
- }
- // beginning of line is nbsp
- for(var i=0;i<parts.length;i++) {
- var p = parts[i];
- if (p == " ") {
- parts[i] = '&nbsp;';
- break;
- }
- else if (p.charAt(0) != "<") {
- break;
- }
- }
- }
- else {
- for(var i=0;i<parts.length;i++) {
- var p = parts[i];
- if (p == " ") {
- parts[i] = '&nbsp;';
- }
- }
- }
- return parts.join('');
-};
diff --git a/trunk/etherpad/src/static/js/easysync2_client.js b/trunk/etherpad/src/static/js/easysync2_client.js
deleted file mode 100644
index 043099c..0000000
--- a/trunk/etherpad/src/static/js/easysync2_client.js
+++ /dev/null
@@ -1,1777 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/easysync2.js
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-//var _opt = (this.Easysync2Support || null);
-var _opt = null; // disable optimization for now
-
-function AttribPool() {
- var p = {};
- p.numToAttrib = {}; // e.g. {0: ['foo','bar']}
- p.attribToNum = {}; // e.g. {'foo,bar': 0}
- p.nextNum = 0;
-
- p.putAttrib = function(attrib, dontAddIfAbsent) {
- var str = String(attrib);
- if (str in p.attribToNum) {
- return p.attribToNum[str];
- }
- if (dontAddIfAbsent) {
- return -1;
- }
- var num = p.nextNum++;
- p.attribToNum[str] = num;
- p.numToAttrib[num] = [String(attrib[0]||''),
- String(attrib[1]||'')];
- return num;
- };
-
- p.getAttrib = function(num) {
- var pair = p.numToAttrib[num];
- if (! pair) return pair;
- return [pair[0], pair[1]]; // return a mutable copy
- };
-
- p.getAttribKey = function(num) {
- var pair = p.numToAttrib[num];
- if (! pair) return '';
- return pair[0];
- };
-
- p.getAttribValue = function(num) {
- var pair = p.numToAttrib[num];
- if (! pair) return '';
- return pair[1];
- };
-
- p.eachAttrib = function(func) {
- for(var n in p.numToAttrib) {
- var pair = p.numToAttrib[n];
- func(pair[0], pair[1]);
- }
- };
-
- p.toJsonable = function() {
- return {numToAttrib: p.numToAttrib, nextNum: p.nextNum};
- };
-
- p.fromJsonable = function(obj) {
- p.numToAttrib = obj.numToAttrib;
- p.nextNum = obj.nextNum;
- p.attribToNum = {};
- for(var n in p.numToAttrib) {
- p.attribToNum[String(p.numToAttrib[n])] = Number(n);
- }
- return p;
- };
-
- return p;
-}
-
-var Changeset = {};
-
-Changeset.error = function error(msg) { var e = new Error(msg); e.easysync = true; throw e; };
-Changeset.assert = function assert(b, msgParts) {
- if (! b) {
- var msg = Array.prototype.slice.call(arguments, 1).join('');
- Changeset.error("Changeset: "+msg);
- }
-};
-
-Changeset.parseNum = function(str) { return parseInt(str, 36); };
-Changeset.numToString = function(num) { return num.toString(36).toLowerCase(); };
-Changeset.toBaseTen = function(cs) {
- var dollarIndex = cs.indexOf('$');
- var beforeDollar = cs.substring(0, dollarIndex);
- var fromDollar = cs.substring(dollarIndex);
- return beforeDollar.replace(/[0-9a-z]+/g, function(s) {
- return String(Changeset.parseNum(s)); }) + fromDollar;
-};
-
-Changeset.oldLen = function(cs) {
- return Changeset.unpack(cs).oldLen;
-};
-Changeset.newLen = function(cs) {
- return Changeset.unpack(cs).newLen;
-};
-
-Changeset.opIterator = function(opsStr, optStartIndex) {
- //print(opsStr);
- var regex = /((?:\*[0-9a-z]+)*)(?:\|([0-9a-z]+))?([-+=])([0-9a-z]+)|\?|/g;
- var startIndex = (optStartIndex || 0);
- var curIndex = startIndex;
- var prevIndex = curIndex;
- function nextRegexMatch() {
- prevIndex = curIndex;
- var result;
- if (_opt) {
- result = _opt.nextOpInString(opsStr, curIndex);
- if (result) {
- if (result.opcode() == '?') {
- Changeset.error("Hit error opcode in op stream");
- }
- curIndex = result.lastIndex();
- }
- }
- else {
- regex.lastIndex = curIndex;
- result = regex.exec(opsStr);
- curIndex = regex.lastIndex;
- if (result[0] == '?') {
- Changeset.error("Hit error opcode in op stream");
- }
- }
- return result;
- }
- var regexResult = nextRegexMatch();
- var obj = Changeset.newOp();
- function next(optObj) {
- var op = (optObj || obj);
- if (_opt && regexResult) {
- op.attribs = regexResult.attribs();
- op.lines = regexResult.lines();
- op.chars = regexResult.chars();
- op.opcode = regexResult.opcode();
- regexResult = nextRegexMatch();
- }
- else if ((! _opt) && regexResult[0]) {
- op.attribs = regexResult[1];
- op.lines = Changeset.parseNum(regexResult[2] || 0);
- op.opcode = regexResult[3];
- op.chars = Changeset.parseNum(regexResult[4]);
- regexResult = nextRegexMatch();
- }
- else {
- Changeset.clearOp(op);
- }
- return op;
- }
- function hasNext() { return !! (_opt ? regexResult : regexResult[0]); }
- function lastIndex() { return prevIndex; }
- return {next: next, hasNext: hasNext, lastIndex: lastIndex};
-};
-
-Changeset.clearOp = function(op) {
- op.opcode = '';
- op.chars = 0;
- op.lines = 0;
- op.attribs = '';
-};
-Changeset.newOp = function(optOpcode) {
- return {opcode:(optOpcode || ''), chars:0, lines:0, attribs:''};
-};
-Changeset.cloneOp = function(op) {
- return {opcode: op.opcode, chars: op.chars, lines: op.lines, attribs: op.attribs};
-};
-Changeset.copyOp = function(op1, op2) {
- op2.opcode = op1.opcode;
- op2.chars = op1.chars;
- op2.lines = op1.lines;
- op2.attribs = op1.attribs;
-};
-Changeset.opString = function(op) {
- // just for debugging
- if (! op.opcode) return 'null';
- var assem = Changeset.opAssembler();
- assem.append(op);
- return assem.toString();
-};
-Changeset.stringOp = function(str) {
- // just for debugging
- return Changeset.opIterator(str).next();
-};
-
-Changeset.checkRep = function(cs) {
- // doesn't check things that require access to attrib pool (e.g. attribute order)
- // or original string (e.g. newline positions)
- var unpacked = Changeset.unpack(cs);
- var oldLen = unpacked.oldLen;
- var newLen = unpacked.newLen;
- var ops = unpacked.ops;
- var charBank = unpacked.charBank;
-
- var assem = Changeset.smartOpAssembler();
- var oldPos = 0;
- var calcNewLen = 0;
- var numInserted = 0;
- var iter = Changeset.opIterator(ops);
- while (iter.hasNext()) {
- var o = iter.next();
- switch (o.opcode) {
- case '=': oldPos += o.chars; calcNewLen += o.chars; break;
- case '-': oldPos += o.chars; Changeset.assert(oldPos < oldLen, oldPos," >= ",oldLen," in ",cs); break;
- case '+': {
- calcNewLen += o.chars; numInserted += o.chars;
- Changeset.assert(calcNewLen < newLen, calcNewLen," >= ",newLen," in ",cs);
- break;
- }
- }
- assem.append(o);
- }
-
- calcNewLen += oldLen - oldPos;
- charBank = charBank.substring(0, numInserted);
- while (charBank.length < numInserted) {
- charBank += "?";
- }
-
- assem.endDocument();
- var normalized = Changeset.pack(oldLen, calcNewLen, assem.toString(), charBank);
- Changeset.assert(normalized == cs, normalized,' != ',cs);
-
- return cs;
-}
-
-Changeset.smartOpAssembler = function() {
- // Like opAssembler but able to produce conforming changesets
- // from slightly looser input, at the cost of speed.
- // Specifically:
- // - merges consecutive operations that can be merged
- // - strips final "="
- // - ignores 0-length changes
- // - reorders consecutive + and - (which margingOpAssembler doesn't do)
-
- var minusAssem = Changeset.mergingOpAssembler();
- var plusAssem = Changeset.mergingOpAssembler();
- var keepAssem = Changeset.mergingOpAssembler();
- var assem = Changeset.stringAssembler();
- var lastOpcode = '';
- var lengthChange = 0;
-
- function flushKeeps() {
- assem.append(keepAssem.toString());
- keepAssem.clear();
- }
-
- function flushPlusMinus() {
- assem.append(minusAssem.toString());
- minusAssem.clear();
- assem.append(plusAssem.toString());
- plusAssem.clear();
- }
-
- function append(op) {
- if (! op.opcode) return;
- if (! op.chars) return;
-
- if (op.opcode == '-') {
- if (lastOpcode == '=') {
- flushKeeps();
- }
- minusAssem.append(op);
- lengthChange -= op.chars;
- }
- else if (op.opcode == '+') {
- if (lastOpcode == '=') {
- flushKeeps();
- }
- plusAssem.append(op);
- lengthChange += op.chars;
- }
- else if (op.opcode == '=') {
- if (lastOpcode != '=') {
- flushPlusMinus();
- }
- keepAssem.append(op);
- }
- lastOpcode = op.opcode;
- }
-
- function appendOpWithText(opcode, text, attribs, pool) {
- var op = Changeset.newOp(opcode);
- op.attribs = Changeset.makeAttribsString(opcode, attribs, pool);
- var lastNewlinePos = text.lastIndexOf('\n');
- if (lastNewlinePos < 0) {
- op.chars = text.length;
- op.lines = 0;
- append(op);
- }
- else {
- op.chars = lastNewlinePos+1;
- op.lines = text.match(/\n/g).length;
- append(op);
- op.chars = text.length - (lastNewlinePos+1);
- op.lines = 0;
- append(op);
- }
- }
-
- function toString() {
- flushPlusMinus();
- flushKeeps();
- return assem.toString();
- }
-
- function clear() {
- minusAssem.clear();
- plusAssem.clear();
- keepAssem.clear();
- assem.clear();
- lengthChange = 0;
- }
-
- function endDocument() {
- keepAssem.endDocument();
- }
-
- function getLengthChange() {
- return lengthChange;
- }
-
- return {append: append, toString: toString, clear: clear, endDocument: endDocument,
- appendOpWithText: appendOpWithText, getLengthChange: getLengthChange };
-};
-
-if (_opt) {
- Changeset.mergingOpAssembler = function() {
- var assem = _opt.mergingOpAssembler();
-
- function append(op) {
- assem.append(op.opcode, op.chars, op.lines, op.attribs);
- }
- function toString() {
- return assem.toString();
- }
- function clear() {
- assem.clear();
- }
- function endDocument() {
- assem.endDocument();
- }
-
- return {append: append, toString: toString, clear: clear, endDocument: endDocument};
- };
-}
-else {
- Changeset.mergingOpAssembler = function() {
- // This assembler can be used in production; it efficiently
- // merges consecutive operations that are mergeable, ignores
- // no-ops, and drops final pure "keeps". It does not re-order
- // operations.
- var assem = Changeset.opAssembler();
- var bufOp = Changeset.newOp();
-
- // If we get, for example, insertions [xxx\n,yyy], those don't merge,
- // but if we get [xxx\n,yyy,zzz\n], that merges to [xxx\nyyyzzz\n].
- // This variable stores the length of yyy and any other newline-less
- // ops immediately after it.
- var bufOpAdditionalCharsAfterNewline = 0;
-
- function flush(isEndDocument) {
- if (bufOp.opcode) {
- if (isEndDocument && bufOp.opcode == '=' && ! bufOp.attribs) {
- // final merged keep, leave it implicit
- }
- else {
- assem.append(bufOp);
- if (bufOpAdditionalCharsAfterNewline) {
- bufOp.chars = bufOpAdditionalCharsAfterNewline;
- bufOp.lines = 0;
- assem.append(bufOp);
- bufOpAdditionalCharsAfterNewline = 0;
- }
- }
- bufOp.opcode = '';
- }
- }
- function append(op) {
- if (op.chars > 0) {
- if (bufOp.opcode == op.opcode && bufOp.attribs == op.attribs) {
- if (op.lines > 0) {
- // bufOp and additional chars are all mergeable into a multi-line op
- bufOp.chars += bufOpAdditionalCharsAfterNewline + op.chars;
- bufOp.lines += op.lines;
- bufOpAdditionalCharsAfterNewline = 0;
- }
- else if (bufOp.lines == 0) {
- // both bufOp and op are in-line
- bufOp.chars += op.chars;
- }
- else {
- // append in-line text to multi-line bufOp
- bufOpAdditionalCharsAfterNewline += op.chars;
- }
- }
- else {
- flush();
- Changeset.copyOp(op, bufOp);
- }
- }
- }
- function endDocument() {
- flush(true);
- }
- function toString() {
- flush();
- return assem.toString();
- }
- function clear() {
- assem.clear();
- Changeset.clearOp(bufOp);
- }
- return {append: append, toString: toString, clear: clear, endDocument: endDocument};
- };
-}
-
-if (_opt) {
- Changeset.opAssembler = function() {
- var assem = _opt.opAssembler();
- // this function allows op to be mutated later (doesn't keep a ref)
- function append(op) {
- assem.append(op.opcode, op.chars, op.lines, op.attribs);
- }
- function toString() {
- return assem.toString();
- }
- function clear() {
- assem.clear();
- }
- return {append: append, toString: toString, clear: clear};
- };
-}
-else {
- Changeset.opAssembler = function() {
- var pieces = [];
- // this function allows op to be mutated later (doesn't keep a ref)
- function append(op) {
- pieces.push(op.attribs);
- if (op.lines) {
- pieces.push('|', Changeset.numToString(op.lines));
- }
- pieces.push(op.opcode);
- pieces.push(Changeset.numToString(op.chars));
- }
- function toString() {
- return pieces.join('');
- }
- function clear() {
- pieces.length = 0;
- }
- return {append: append, toString: toString, clear: clear};
- };
-}
-
-Changeset.stringIterator = function(str) {
- var curIndex = 0;
- function assertRemaining(n) {
- Changeset.assert(n <= remaining(), "!(",n," <= ",remaining(),")");
- }
- function take(n) {
- assertRemaining(n);
- var s = str.substr(curIndex, n);
- curIndex += n;
- return s;
- }
- function peek(n) {
- assertRemaining(n);
- var s = str.substr(curIndex, n);
- return s;
- }
- function skip(n) {
- assertRemaining(n);
- curIndex += n;
- }
- function remaining() {
- return str.length - curIndex;
- }
- return {take:take, skip:skip, remaining:remaining, peek:peek};
-};
-
-Changeset.stringAssembler = function() {
- var pieces = [];
- function append(x) {
- pieces.push(String(x));
- }
- function toString() {
- return pieces.join('');
- }
- return {append: append, toString: toString};
-};
-
-// "lines" need not be an array as long as it supports certain calls (lines_foo inside).
-Changeset.textLinesMutator = function(lines) {
- // Mutates lines, an array of strings, in place.
- // Mutation operations have the same constraints as changeset operations
- // with respect to newlines, but not the other additional constraints
- // (i.e. ins/del ordering, forbidden no-ops, non-mergeability, final newline).
- // Can be used to mutate lists of strings where the last char of each string
- // is not actually a newline, but for the purposes of N and L values,
- // the caller should pretend it is, and for things to work right in that case, the input
- // to insert() should be a single line with no newlines.
-
- var curSplice = [0,0];
- var inSplice = false;
- // position in document after curSplice is applied:
- var curLine = 0, curCol = 0;
- // invariant: if (inSplice) then (curLine is in curSplice[0] + curSplice.length - {2,3}) &&
- // curLine >= curSplice[0]
- // invariant: if (inSplice && (curLine >= curSplice[0] + curSplice.length - 2)) then
- // curCol == 0
-
- function lines_applySplice(s) {
- lines.splice.apply(lines, s);
- }
- function lines_toSource() {
- return lines.toSource();
- }
- function lines_get(idx) {
- if (lines.get) {
- return lines.get(idx);
- }
- else {
- return lines[idx];
- }
- }
- // can be unimplemented if removeLines's return value not needed
- function lines_slice(start, end) {
- if (lines.slice) {
- return lines.slice(start, end);
- }
- else {
- return [];
- }
- }
- function lines_length() {
- if ((typeof lines.length) == "number") {
- return lines.length;
- }
- else {
- return lines.length();
- }
- }
-
- function enterSplice() {
- curSplice[0] = curLine;
- curSplice[1] = 0;
- if (curCol > 0) {
- putCurLineInSplice();
- }
- inSplice = true;
- }
- function leaveSplice() {
- lines_applySplice(curSplice);
- curSplice.length = 2;
- curSplice[0] = curSplice[1] = 0;
- inSplice = false;
- }
- function isCurLineInSplice() {
- return (curLine - curSplice[0] < (curSplice.length - 2));
- }
- function debugPrint(typ) {
- print(typ+": "+curSplice.toSource()+" / "+curLine+","+curCol+" / "+lines_toSource());
- }
- function putCurLineInSplice() {
- if (! isCurLineInSplice()) {
- curSplice.push(lines_get(curSplice[0] + curSplice[1]));
- curSplice[1]++;
- }
- return 2 + curLine - curSplice[0];
- }
-
- function skipLines(L, includeInSplice) {
- if (L) {
- if (includeInSplice) {
- if (! inSplice) {
- enterSplice();
- }
- for(var i=0;i<L;i++) {
- curCol = 0;
- putCurLineInSplice();
- curLine++;
- }
- }
- else {
- if (inSplice) {
- if (L > 1) {
- leaveSplice();
- }
- else {
- putCurLineInSplice();
- }
- }
- curLine += L;
- curCol = 0;
- }
- //print(inSplice+" / "+isCurLineInSplice()+" / "+curSplice[0]+" / "+curSplice[1]+" / "+lines.length);
- /*if (inSplice && (! isCurLineInSplice()) && (curSplice[0] + curSplice[1] < lines.length)) {
- print("BLAH");
- putCurLineInSplice();
- }*/ // tests case foo in remove(), which isn't otherwise covered in current impl
- }
- //debugPrint("skip");
- }
-
- function skip(N, L, includeInSplice) {
- if (N) {
- if (L) {
- skipLines(L, includeInSplice);
- }
- else {
- if (includeInSplice && ! inSplice) {
- enterSplice();
- }
- if (inSplice) {
- putCurLineInSplice();
- }
- curCol += N;
- //debugPrint("skip");
- }
- }
- }
-
- function removeLines(L) {
- var removed = '';
- if (L) {
- if (! inSplice) {
- enterSplice();
- }
- function nextKLinesText(k) {
- var m = curSplice[0] + curSplice[1];
- return lines_slice(m, m+k).join('');
- }
- if (isCurLineInSplice()) {
- //print(curCol);
- if (curCol == 0) {
- removed = curSplice[curSplice.length-1];
- // print("FOO"); // case foo
- curSplice.length--;
- removed += nextKLinesText(L-1);
- curSplice[1] += L-1;
- }
- else {
- removed = nextKLinesText(L-1);
- curSplice[1] += L-1;
- var sline = curSplice.length - 1;
- removed = curSplice[sline].substring(curCol) + removed;
- curSplice[sline] = curSplice[sline].substring(0, curCol) +
- lines_get(curSplice[0] + curSplice[1]);
- curSplice[1] += 1;
- }
- }
- else {
- removed = nextKLinesText(L);
- curSplice[1] += L;
- }
- //debugPrint("remove");
- }
- return removed;
- }
-
- function remove(N, L) {
- var removed = '';
- if (N) {
- if (L) {
- return removeLines(L);
- }
- else {
- if (! inSplice) {
- enterSplice();
- }
- var sline = putCurLineInSplice();
- removed = curSplice[sline].substring(curCol, curCol+N);
- curSplice[sline] = curSplice[sline].substring(0, curCol) +
- curSplice[sline].substring(curCol+N);
- //debugPrint("remove");
- }
- }
- return removed;
- }
-
- function insert(text, L) {
- if (text) {
- if (! inSplice) {
- enterSplice();
- }
- if (L) {
- var newLines = Changeset.splitTextLines(text);
- if (isCurLineInSplice()) {
- //if (curCol == 0) {
- //curSplice.length--;
- //curSplice[1]--;
- //Array.prototype.push.apply(curSplice, newLines);
- //curLine += newLines.length;
- //}
- //else {
- var sline = curSplice.length - 1;
- var theLine = curSplice[sline];
- var lineCol = curCol;
- curSplice[sline] = theLine.substring(0, lineCol) + newLines[0];
- curLine++;
- newLines.splice(0, 1);
- Array.prototype.push.apply(curSplice, newLines);
- curLine += newLines.length;
- curSplice.push(theLine.substring(lineCol));
- curCol = 0;
- //}
- }
- else {
- Array.prototype.push.apply(curSplice, newLines);
- curLine += newLines.length;
- }
- }
- else {
- var sline = putCurLineInSplice();
- curSplice[sline] = curSplice[sline].substring(0, curCol) +
- text + curSplice[sline].substring(curCol);
- curCol += text.length;
- }
- //debugPrint("insert");
- }
- }
-
- function hasMore() {
- //print(lines.length+" / "+inSplice+" / "+(curSplice.length - 2)+" / "+curSplice[1]);
- var docLines = lines_length();
- if (inSplice) {
- docLines += curSplice.length - 2 - curSplice[1];
- }
- return curLine < docLines;
- }
-
- function close() {
- if (inSplice) {
- leaveSplice();
- }
- //debugPrint("close");
- }
-
- var self = {skip:skip, remove:remove, insert:insert, close:close, hasMore:hasMore,
- removeLines:removeLines, skipLines: skipLines};
- return self;
-};
-
-Changeset.applyZip = function(in1, idx1, in2, idx2, func) {
- var iter1 = Changeset.opIterator(in1, idx1);
- var iter2 = Changeset.opIterator(in2, idx2);
- var assem = Changeset.smartOpAssembler();
- var op1 = Changeset.newOp();
- var op2 = Changeset.newOp();
- var opOut = Changeset.newOp();
- while (op1.opcode || iter1.hasNext() || op2.opcode || iter2.hasNext()) {
- if ((! op1.opcode) && iter1.hasNext()) iter1.next(op1);
- if ((! op2.opcode) && iter2.hasNext()) iter2.next(op2);
- func(op1, op2, opOut);
- if (opOut.opcode) {
- //print(opOut.toSource());
- assem.append(opOut);
- opOut.opcode = '';
- }
- }
- assem.endDocument();
- return assem.toString();
-};
-
-Changeset.unpack = function(cs) {
- var headerRegex = /Z:([0-9a-z]+)([><])([0-9a-z]+)|/;
- var headerMatch = headerRegex.exec(cs);
- if ((! headerMatch) || (! headerMatch[0])) {
- Changeset.error("Not a changeset: "+cs);
- }
- var oldLen = Changeset.parseNum(headerMatch[1]);
- var changeSign = (headerMatch[2] == '>') ? 1 : -1;
- var changeMag = Changeset.parseNum(headerMatch[3]);
- var newLen = oldLen + changeSign*changeMag;
- var opsStart = headerMatch[0].length;
- var opsEnd = cs.indexOf("$");
- if (opsEnd < 0) opsEnd = cs.length;
- return {oldLen: oldLen, newLen: newLen, ops: cs.substring(opsStart, opsEnd),
- charBank: cs.substring(opsEnd+1)};
-};
-
-Changeset.pack = function(oldLen, newLen, opsStr, bank) {
- var lenDiff = newLen - oldLen;
- var lenDiffStr = (lenDiff >= 0 ?
- '>'+Changeset.numToString(lenDiff) :
- '<'+Changeset.numToString(-lenDiff));
- var a = [];
- a.push('Z:', Changeset.numToString(oldLen), lenDiffStr, opsStr, '$', bank);
- return a.join('');
-};
-
-Changeset.applyToText = function(cs, str) {
- var unpacked = Changeset.unpack(cs);
- Changeset.assert(str.length == unpacked.oldLen,
- "mismatched apply: ",str.length," / ",unpacked.oldLen);
- var csIter = Changeset.opIterator(unpacked.ops);
- var bankIter = Changeset.stringIterator(unpacked.charBank);
- var strIter = Changeset.stringIterator(str);
- var assem = Changeset.stringAssembler();
- while (csIter.hasNext()) {
- var op = csIter.next();
- switch(op.opcode) {
- case '+': assem.append(bankIter.take(op.chars)); break;
- case '-': strIter.skip(op.chars); break;
- case '=': assem.append(strIter.take(op.chars)); break;
- }
- }
- assem.append(strIter.take(strIter.remaining()));
- return assem.toString();
-};
-
-Changeset.mutateTextLines = function(cs, lines) {
- var unpacked = Changeset.unpack(cs);
- var csIter = Changeset.opIterator(unpacked.ops);
- var bankIter = Changeset.stringIterator(unpacked.charBank);
- var mut = Changeset.textLinesMutator(lines);
- while (csIter.hasNext()) {
- var op = csIter.next();
- switch(op.opcode) {
- case '+': mut.insert(bankIter.take(op.chars), op.lines); break;
- case '-': mut.remove(op.chars, op.lines); break;
- case '=': mut.skip(op.chars, op.lines, (!! op.attribs)); break;
- }
- }
- mut.close();
-};
-
-Changeset.composeAttributes = function(att1, att2, resultIsMutation, pool) {
- // att1 and att2 are strings like "*3*f*1c", asMutation is a boolean.
-
- // Sometimes attribute (key,value) pairs are treated as attribute presence
- // information, while other times they are treated as operations that
- // mutate a set of attributes, and this affects whether an empty value
- // is a deletion or a change.
- // Examples, of the form (att1Items, att2Items, resultIsMutation) -> result
- // ([], [(bold, )], true) -> [(bold, )]
- // ([], [(bold, )], false) -> []
- // ([], [(bold, true)], true) -> [(bold, true)]
- // ([], [(bold, true)], false) -> [(bold, true)]
- // ([(bold, true)], [(bold, )], true) -> [(bold, )]
- // ([(bold, true)], [(bold, )], false) -> []
-
- // pool can be null if att2 has no attributes.
-
- if ((! att1) && resultIsMutation) {
- // In the case of a mutation (i.e. composing two changesets),
- // an att2 composed with an empy att1 is just att2. If att1
- // is part of an attribution string, then att2 may remove
- // attributes that are already gone, so don't do this optimization.
- return att2;
- }
- if (! att2) return att1;
- var atts = [];
- att1.replace(/\*([0-9a-z]+)/g, function(_, a) {
- atts.push(pool.getAttrib(Changeset.parseNum(a)));
- return '';
- });
- att2.replace(/\*([0-9a-z]+)/g, function(_, a) {
- var pair = pool.getAttrib(Changeset.parseNum(a));
- var found = false;
- for(var i=0;i<atts.length;i++) {
- var oldPair = atts[i];
- if (oldPair[0] == pair[0]) {
- if (pair[1] || resultIsMutation) {
- oldPair[1] = pair[1];
- }
- else {
- atts.splice(i, 1);
- }
- found = true;
- break;
- }
- }
- if ((! found) && (pair[1] || resultIsMutation)) {
- atts.push(pair);
- }
- return '';
- });
- atts.sort();
- var buf = Changeset.stringAssembler();
- for(var i=0;i<atts.length;i++) {
- buf.append('*');
- buf.append(Changeset.numToString(pool.putAttrib(atts[i])));
- }
- //print(att1+" / "+att2+" / "+buf.toString());
- return buf.toString();
-};
-
-Changeset._slicerZipperFunc = function(attOp, csOp, opOut, pool) {
- // attOp is the op from the sequence that is being operated on, either an
- // attribution string or the earlier of two changesets being composed.
- // pool can be null if definitely not needed.
-
- //print(csOp.toSource()+" "+attOp.toSource()+" "+opOut.toSource());
- if (attOp.opcode == '-') {
- Changeset.copyOp(attOp, opOut);
- attOp.opcode = '';
- }
- else if (! attOp.opcode) {
- Changeset.copyOp(csOp, opOut);
- csOp.opcode = '';
- }
- else {
- switch (csOp.opcode) {
- case '-': {
- if (csOp.chars <= attOp.chars) {
- // delete or delete part
- if (attOp.opcode == '=') {
- opOut.opcode = '-';
- opOut.chars = csOp.chars;
- opOut.lines = csOp.lines;
- opOut.attribs = '';
- }
- attOp.chars -= csOp.chars;
- attOp.lines -= csOp.lines;
- csOp.opcode = '';
- if (! attOp.chars) {
- attOp.opcode = '';
- }
- }
- else {
- // delete and keep going
- if (attOp.opcode == '=') {
- opOut.opcode = '-';
- opOut.chars = attOp.chars;
- opOut.lines = attOp.lines;
- opOut.attribs = '';
- }
- csOp.chars -= attOp.chars;
- csOp.lines -= attOp.lines;
- attOp.opcode = '';
- }
- break;
- }
- case '+': {
- // insert
- Changeset.copyOp(csOp, opOut);
- csOp.opcode = '';
- break;
- }
- case '=': {
- if (csOp.chars <= attOp.chars) {
- // keep or keep part
- opOut.opcode = attOp.opcode;
- opOut.chars = csOp.chars;
- opOut.lines = csOp.lines;
- opOut.attribs = Changeset.composeAttributes(attOp.attribs, csOp.attribs,
- attOp.opcode == '=', pool);
- csOp.opcode = '';
- attOp.chars -= csOp.chars;
- attOp.lines -= csOp.lines;
- if (! attOp.chars) {
- attOp.opcode = '';
- }
- }
- else {
- // keep and keep going
- opOut.opcode = attOp.opcode;
- opOut.chars = attOp.chars;
- opOut.lines = attOp.lines;
- opOut.attribs = Changeset.composeAttributes(attOp.attribs, csOp.attribs,
- attOp.opcode == '=', pool);
- attOp.opcode = '';
- csOp.chars -= attOp.chars;
- csOp.lines -= attOp.lines;
- }
- break;
- }
- case '': {
- Changeset.copyOp(attOp, opOut);
- attOp.opcode = '';
- break;
- }
- }
- }
-};
-
-Changeset.applyToAttribution = function(cs, astr, pool) {
- var unpacked = Changeset.unpack(cs);
-
- return Changeset.applyZip(astr, 0, unpacked.ops, 0, function(op1, op2, opOut) {
- return Changeset._slicerZipperFunc(op1, op2, opOut, pool);
- });
-};
-
-/*Changeset.oneInsertedLineAtATimeOpIterator = function(opsStr, optStartIndex, charBank) {
- var iter = Changeset.opIterator(opsStr, optStartIndex);
- var bankIndex = 0;
-
-};*/
-
-Changeset.mutateAttributionLines = function(cs, lines, pool) {
- //dmesg(cs);
- //dmesg(lines.toSource()+" ->");
-
- var unpacked = Changeset.unpack(cs);
- var csIter = Changeset.opIterator(unpacked.ops);
- var csBank = unpacked.charBank;
- var csBankIndex = 0;
- // treat the attribution lines as text lines, mutating a line at a time
- var mut = Changeset.textLinesMutator(lines);
-
- var lineIter = null;
- function isNextMutOp() {
- return (lineIter && lineIter.hasNext()) || mut.hasMore();
- }
- function nextMutOp(destOp) {
- if ((!(lineIter && lineIter.hasNext())) && mut.hasMore()) {
- var line = mut.removeLines(1);
- lineIter = Changeset.opIterator(line);
- }
- if (lineIter && lineIter.hasNext()) {
- lineIter.next(destOp);
- }
- else {
- destOp.opcode = '';
- }
- }
- var lineAssem = null;
- function outputMutOp(op) {
- //print("outputMutOp: "+op.toSource());
- if (! lineAssem) {
- lineAssem = Changeset.mergingOpAssembler();
- }
- lineAssem.append(op);
- if (op.lines > 0) {
- Changeset.assert(op.lines == 1, "Can't have op.lines of ",op.lines," in attribution lines");
- // ship it to the mut
- mut.insert(lineAssem.toString(), 1);
- lineAssem = null;
- }
- }
-
- var csOp = Changeset.newOp();
- var attOp = Changeset.newOp();
- var opOut = Changeset.newOp();
- while (csOp.opcode || csIter.hasNext() || attOp.opcode || isNextMutOp()) {
- if ((! csOp.opcode) && csIter.hasNext()) {
- csIter.next(csOp);
- }
- //print(csOp.toSource()+" "+attOp.toSource()+" "+opOut.toSource());
- //print(csOp.opcode+"/"+csOp.lines+"/"+csOp.attribs+"/"+lineAssem+"/"+lineIter+"/"+(lineIter?lineIter.hasNext():null));
- //print("csOp: "+csOp.toSource());
- if ((! csOp.opcode) && (! attOp.opcode) &&
- (! lineAssem) && (! (lineIter && lineIter.hasNext()))) {
- break; // done
- }
- else if (csOp.opcode == '=' && csOp.lines > 0 && (! csOp.attribs) && (! attOp.opcode) &&
- (! lineAssem) && (! (lineIter && lineIter.hasNext()))) {
- // skip multiple lines; this is what makes small changes not order of the document size
- mut.skipLines(csOp.lines);
- //print("skipped: "+csOp.lines);
- csOp.opcode = '';
- }
- else if (csOp.opcode == '+') {
- if (csOp.lines > 1) {
- var firstLineLen = csBank.indexOf('\n', csBankIndex) + 1 - csBankIndex;
- Changeset.copyOp(csOp, opOut);
- csOp.chars -= firstLineLen;
- csOp.lines--;
- opOut.lines = 1;
- opOut.chars = firstLineLen;
- }
- else {
- Changeset.copyOp(csOp, opOut);
- csOp.opcode = '';
- }
- outputMutOp(opOut);
- csBankIndex += opOut.chars;
- opOut.opcode = '';
- }
- else {
- if ((! attOp.opcode) && isNextMutOp()) {
- nextMutOp(attOp);
- }
- //print("attOp: "+attOp.toSource());
- Changeset._slicerZipperFunc(attOp, csOp, opOut, pool);
- if (opOut.opcode) {
- outputMutOp(opOut);
- opOut.opcode = '';
- }
- }
- }
-
- Changeset.assert(! lineAssem, "line assembler not finished");
- mut.close();
-
- //dmesg("-> "+lines.toSource());
-};
-
-Changeset.joinAttributionLines = function(theAlines) {
- var assem = Changeset.mergingOpAssembler();
- for(var i=0;i<theAlines.length;i++) {
- var aline = theAlines[i];
- var iter = Changeset.opIterator(aline);
- while (iter.hasNext()) {
- assem.append(iter.next());
- }
- }
- return assem.toString();
-};
-
-Changeset.splitAttributionLines = function(attrOps, text) {
- var iter = Changeset.opIterator(attrOps);
- var assem = Changeset.mergingOpAssembler();
- var lines = [];
- var pos = 0;
-
- function appendOp(op) {
- assem.append(op);
- if (op.lines > 0) {
- lines.push(assem.toString());
- assem.clear();
- }
- pos += op.chars;
- }
-
- while (iter.hasNext()) {
- var op = iter.next();
- var numChars = op.chars;
- var numLines = op.lines;
- while (numLines > 1) {
- var newlineEnd = text.indexOf('\n', pos)+1;
- Changeset.assert(newlineEnd > 0, "newlineEnd <= 0 in splitAttributionLines");
- op.chars = newlineEnd - pos;
- op.lines = 1;
- appendOp(op);
- numChars -= op.chars;
- numLines -= op.lines;
- }
- if (numLines == 1) {
- op.chars = numChars;
- op.lines = 1;
- }
- appendOp(op);
- }
-
- return lines;
-};
-
-Changeset.splitTextLines = function(text) {
- return text.match(/[^\n]*(?:\n|[^\n]$)/g);
-};
-
-Changeset.compose = function(cs1, cs2, pool) {
- var unpacked1 = Changeset.unpack(cs1);
- var unpacked2 = Changeset.unpack(cs2);
- var len1 = unpacked1.oldLen;
- var len2 = unpacked1.newLen;
- Changeset.assert(len2 == unpacked2.oldLen, "mismatched composition");
- var len3 = unpacked2.newLen;
- var bankIter1 = Changeset.stringIterator(unpacked1.charBank);
- var bankIter2 = Changeset.stringIterator(unpacked2.charBank);
- var bankAssem = Changeset.stringAssembler();
-
- var newOps = Changeset.applyZip(unpacked1.ops, 0, unpacked2.ops, 0, function(op1, op2, opOut) {
- //var debugBuilder = Changeset.stringAssembler();
- //debugBuilder.append(Changeset.opString(op1));
- //debugBuilder.append(',');
- //debugBuilder.append(Changeset.opString(op2));
- //debugBuilder.append(' / ');
-
- var op1code = op1.opcode;
- var op2code = op2.opcode;
- if (op1code == '+' && op2code == '-') {
- bankIter1.skip(Math.min(op1.chars, op2.chars));
- }
- Changeset._slicerZipperFunc(op1, op2, opOut, pool);
- if (opOut.opcode == '+') {
- if (op2code == '+') {
- bankAssem.append(bankIter2.take(opOut.chars));
- }
- else {
- bankAssem.append(bankIter1.take(opOut.chars));
- }
- }
-
- //debugBuilder.append(Changeset.opString(op1));
- //debugBuilder.append(',');
- //debugBuilder.append(Changeset.opString(op2));
- //debugBuilder.append(' -> ');
- //debugBuilder.append(Changeset.opString(opOut));
- //print(debugBuilder.toString());
- });
-
- return Changeset.pack(len1, len3, newOps, bankAssem.toString());
-};
-
-Changeset.attributeTester = function(attribPair, pool) {
- // returns a function that tests if a string of attributes
- // (e.g. *3*4) contains a given attribute key,value that
- // is already present in the pool.
- if (! pool) {
- return never;
- }
- var attribNum = pool.putAttrib(attribPair, true);
- if (attribNum < 0) {
- return never;
- }
- else {
- var re = new RegExp('\\*'+Changeset.numToString(attribNum)+
- '(?!\\w)');
- return function(attribs) {
- return re.test(attribs);
- };
- }
- function never(attribs) { return false; }
-};
-
-Changeset.identity = function(N) {
- return Changeset.pack(N, N, "", "");
-};
-
-Changeset.makeSplice = function(oldFullText, spliceStart, numRemoved, newText, optNewTextAPairs, pool) {
- var oldLen = oldFullText.length;
-
- if (spliceStart >= oldLen) {
- spliceStart = oldLen - 1;
- }
- if (numRemoved > oldFullText.length - spliceStart - 1) {
- numRemoved = oldFullText.length - spliceStart - 1;
- }
- var oldText = oldFullText.substring(spliceStart, spliceStart+numRemoved);
- var newLen = oldLen + newText.length - oldText.length;
-
- var assem = Changeset.smartOpAssembler();
- assem.appendOpWithText('=', oldFullText.substring(0, spliceStart));
- assem.appendOpWithText('-', oldText);
- assem.appendOpWithText('+', newText, optNewTextAPairs, pool);
- assem.endDocument();
- return Changeset.pack(oldLen, newLen, assem.toString(), newText);
-};
-
-Changeset.toSplices = function(cs) {
- // get a list of splices, [startChar, endChar, newText]
-
- var unpacked = Changeset.unpack(cs);
- var splices = [];
-
- var oldPos = 0;
- var iter = Changeset.opIterator(unpacked.ops);
- var charIter = Changeset.stringIterator(unpacked.charBank);
- var inSplice = false;
- while (iter.hasNext()) {
- var op = iter.next();
- if (op.opcode == '=') {
- oldPos += op.chars;
- inSplice = false;
- }
- else {
- if (! inSplice) {
- splices.push([oldPos, oldPos, ""]);
- inSplice = true;
- }
- if (op.opcode == '-') {
- oldPos += op.chars;
- splices[splices.length-1][1] += op.chars;
- }
- else if (op.opcode == '+') {
- splices[splices.length-1][2] += charIter.take(op.chars);
- }
- }
- }
-
- return splices;
-};
-
-Changeset.characterRangeFollow = function(cs, startChar, endChar, insertionsAfter) {
- var newStartChar = startChar;
- var newEndChar = endChar;
- var splices = Changeset.toSplices(cs);
- var lengthChangeSoFar = 0;
- for(var i=0;i<splices.length;i++) {
- var splice = splices[i];
- var spliceStart = splice[0] + lengthChangeSoFar;
- var spliceEnd = splice[1] + lengthChangeSoFar;
- var newTextLength = splice[2].length;
- var thisLengthChange = newTextLength - (spliceEnd - spliceStart);
-
- if (spliceStart <= newStartChar && spliceEnd >= newEndChar) {
- // splice fully replaces/deletes range
- // (also case that handles insertion at a collapsed selection)
- if (insertionsAfter) {
- newStartChar = newEndChar = spliceStart;
- }
- else {
- newStartChar = newEndChar = spliceStart + newTextLength;
- }
- }
- else if (spliceEnd <= newStartChar) {
- // splice is before range
- newStartChar += thisLengthChange;
- newEndChar += thisLengthChange;
- }
- else if (spliceStart >= newEndChar) {
- // splice is after range
- }
- else if (spliceStart >= newStartChar && spliceEnd <= newEndChar) {
- // splice is inside range
- newEndChar += thisLengthChange;
- }
- else if (spliceEnd < newEndChar) {
- // splice overlaps beginning of range
- newStartChar = spliceStart + newTextLength;
- newEndChar += thisLengthChange;
- }
- else {
- // splice overlaps end of range
- newEndChar = spliceStart;
- }
-
- lengthChangeSoFar += thisLengthChange;
- }
-
- return [newStartChar, newEndChar];
-};
-
-Changeset.moveOpsToNewPool = function(cs, oldPool, newPool) {
- // works on changeset or attribution string
- var dollarPos = cs.indexOf('$');
- if (dollarPos < 0) {
- dollarPos = cs.length;
- }
- var upToDollar = cs.substring(0, dollarPos);
- var fromDollar = cs.substring(dollarPos);
- // order of attribs stays the same
- return upToDollar.replace(/\*([0-9a-z]+)/g, function(_, a) {
- var oldNum = Changeset.parseNum(a);
- var pair = oldPool.getAttrib(oldNum);
- var newNum = newPool.putAttrib(pair);
- return '*'+Changeset.numToString(newNum);
- }) + fromDollar;
-};
-
-Changeset.makeAttribution = function(text) {
- var assem = Changeset.smartOpAssembler();
- assem.appendOpWithText('+', text);
- return assem.toString();
-};
-
-// callable on a changeset, attribution string, or attribs property of an op
-Changeset.eachAttribNumber = function(cs, func) {
- var dollarPos = cs.indexOf('$');
- if (dollarPos < 0) {
- dollarPos = cs.length;
- }
- var upToDollar = cs.substring(0, dollarPos);
-
- upToDollar.replace(/\*([0-9a-z]+)/g, function(_, a) {
- func(Changeset.parseNum(a));
- return '';
- });
-};
-
-// callable on a changeset, attribution string, or attribs property of an op,
-// though it may easily create adjacent ops that can be merged.
-Changeset.filterAttribNumbers = function(cs, filter) {
- return Changeset.mapAttribNumbers(cs, filter);
-};
-
-Changeset.mapAttribNumbers = function(cs, func) {
- var dollarPos = cs.indexOf('$');
- if (dollarPos < 0) {
- dollarPos = cs.length;
- }
- var upToDollar = cs.substring(0, dollarPos);
-
- var newUpToDollar = upToDollar.replace(/\*([0-9a-z]+)/g, function(s, a) {
- var n = func(Changeset.parseNum(a));
- if (n === true) {
- return s;
- }
- else if ((typeof n) === "number") {
- return '*'+Changeset.numToString(n);
- }
- else {
- return '';
- }
- });
-
- return newUpToDollar + cs.substring(dollarPos);
-};
-
-Changeset.makeAText = function(text, attribs) {
- return { text: text, attribs: (attribs || Changeset.makeAttribution(text)) };
-};
-
-Changeset.applyToAText = function(cs, atext, pool) {
- return { text: Changeset.applyToText(cs, atext.text),
- attribs: Changeset.applyToAttribution(cs, atext.attribs, pool) };
-};
-
-Changeset.cloneAText = function(atext) {
- return { text: atext.text, attribs: atext.attribs };
-};
-
-Changeset.copyAText = function(atext1, atext2) {
- atext2.text = atext1.text;
- atext2.attribs = atext1.attribs;
-};
-
-Changeset.appendATextToAssembler = function(atext, assem) {
- // intentionally skips last newline char of atext
- var iter = Changeset.opIterator(atext.attribs);
- var op = Changeset.newOp();
- while (iter.hasNext()) {
- iter.next(op);
- if (! iter.hasNext()) {
- // last op, exclude final newline
- if (op.lines <= 1) {
- op.lines = 0;
- op.chars--;
- if (op.chars) {
- assem.append(op);
- }
- }
- else {
- var nextToLastNewlineEnd =
- atext.text.lastIndexOf('\n', atext.text.length-2) + 1;
- var lastLineLength = atext.text.length - nextToLastNewlineEnd - 1;
- op.lines--;
- op.chars -= (lastLineLength + 1);
- assem.append(op);
- op.lines = 0;
- op.chars = lastLineLength;
- if (op.chars) {
- assem.append(op);
- }
- }
- }
- else {
- assem.append(op);
- }
- }
-};
-
-Changeset.prepareForWire = function(cs, pool) {
- var newPool = new AttribPool();
- var newCs = Changeset.moveOpsToNewPool(cs, pool, newPool);
- return {translated: newCs, pool: newPool};
-};
-
-Changeset.isIdentity = function(cs) {
- var unpacked = Changeset.unpack(cs);
- return unpacked.ops == "" && unpacked.oldLen == unpacked.newLen;
-};
-
-Changeset.opAttributeValue = function(op, key, pool) {
- return Changeset.attribsAttributeValue(op.attribs, key, pool);
-};
-
-Changeset.attribsAttributeValue = function(attribs, key, pool) {
- var value = '';
- if (attribs) {
- Changeset.eachAttribNumber(attribs, function(n) {
- if (pool.getAttribKey(n) == key) {
- value = pool.getAttribValue(n);
- }
- });
- }
- return value;
-};
-
-Changeset.builder = function(oldLen) {
- var assem = Changeset.smartOpAssembler();
- var o = Changeset.newOp();
- var charBank = Changeset.stringAssembler();
-
- var self = {
- // attribs are [[key1,value1],[key2,value2],...] or '*0*1...' (no pool needed in latter case)
- keep: function(N, L, attribs, pool) {
- o.opcode = '=';
- o.attribs = (attribs &&
- Changeset.makeAttribsString('=', attribs, pool)) || '';
- o.chars = N;
- o.lines = (L || 0);
- assem.append(o);
- return self;
- },
- keepText: function(text, attribs, pool) {
- assem.appendOpWithText('=', text, attribs, pool);
- return self;
- },
- insert: function(text, attribs, pool) {
- assem.appendOpWithText('+', text, attribs, pool);
- charBank.append(text);
- return self;
- },
- remove: function(N, L) {
- o.opcode = '-';
- o.attribs = '';
- o.chars = N;
- o.lines = (L || 0);
- assem.append(o);
- return self;
- },
- toString: function() {
- assem.endDocument();
- var newLen = oldLen + assem.getLengthChange();
- return Changeset.pack(oldLen, newLen, assem.toString(),
- charBank.toString());
- }
- };
-
- return self;
-};
-
-Changeset.makeAttribsString = function(opcode, attribs, pool) {
- // makeAttribsString(opcode, '*3') or makeAttribsString(opcode, [['foo','bar']], myPool) work
- if (! attribs) {
- return '';
- }
- else if ((typeof attribs) == "string") {
- return attribs;
- }
- else if (pool && attribs && attribs.length) {
- if (attribs.length > 1) {
- attribs = attribs.slice();
- attribs.sort();
- }
- var result = [];
- for(var i=0;i<attribs.length;i++) {
- var pair = attribs[i];
- if (opcode == '=' || (opcode == '+' && pair[1])) {
- result.push('*'+Changeset.numToString(pool.putAttrib(pair)));
- }
- }
- return result.join('');
- }
-};
-
-// like "substring" but on a single-line attribution string
-Changeset.subattribution = function(astr, start, optEnd) {
- var iter = Changeset.opIterator(astr, 0);
- var assem = Changeset.smartOpAssembler();
- var attOp = Changeset.newOp();
- var csOp = Changeset.newOp();
- var opOut = Changeset.newOp();
-
- function doCsOp() {
- if (csOp.chars) {
- while (csOp.opcode && (attOp.opcode || iter.hasNext())) {
- if (! attOp.opcode) iter.next(attOp);
-
- if (csOp.opcode && attOp.opcode && csOp.chars >= attOp.chars &&
- attOp.lines > 0 && csOp.lines <= 0) {
- csOp.lines++;
- }
-
- Changeset._slicerZipperFunc(attOp, csOp, opOut, null);
- if (opOut.opcode) {
- assem.append(opOut);
- opOut.opcode = '';
- }
- }
- }
- }
-
- csOp.opcode = '-';
- csOp.chars = start;
-
- doCsOp();
-
- if (optEnd === undefined) {
- if (attOp.opcode) {
- assem.append(attOp);
- }
- while (iter.hasNext()) {
- iter.next(attOp);
- assem.append(attOp);
- }
- }
- else {
- csOp.opcode = '=';
- csOp.chars = optEnd - start;
- doCsOp();
- }
-
- return assem.toString();
-};
-
-Changeset.inverse = function(cs, lines, alines, pool) {
- // lines and alines are what the changeset is meant to apply to.
- // They may be arrays or objects with .get(i) and .length methods.
- // They include final newlines on lines.
- function lines_get(idx) {
- if (lines.get) {
- return lines.get(idx);
- }
- else {
- return lines[idx];
- }
- }
- function lines_length() {
- if ((typeof lines.length) == "number") {
- return lines.length;
- }
- else {
- return lines.length();
- }
- }
- function alines_get(idx) {
- if (alines.get) {
- return alines.get(idx);
- }
- else {
- return alines[idx];
- }
- }
- function alines_length() {
- if ((typeof alines.length) == "number") {
- return alines.length;
- }
- else {
- return alines.length();
- }
- }
-
- var curLine = 0;
- var curChar = 0;
- var curLineOpIter = null;
- var curLineOpIterLine;
- var curLineNextOp = Changeset.newOp('+');
-
- var unpacked = Changeset.unpack(cs);
- var csIter = Changeset.opIterator(unpacked.ops);
- var builder = Changeset.builder(unpacked.newLen);
-
- function consumeAttribRuns(numChars, func/*(len, attribs, endsLine)*/) {
-
- if ((! curLineOpIter) || (curLineOpIterLine != curLine)) {
- // create curLineOpIter and advance it to curChar
- curLineOpIter = Changeset.opIterator(alines_get(curLine));
- curLineOpIterLine = curLine;
- var indexIntoLine = 0;
- var done = false;
- while (! done) {
- curLineOpIter.next(curLineNextOp);
- if (indexIntoLine + curLineNextOp.chars >= curChar) {
- curLineNextOp.chars -= (curChar - indexIntoLine);
- done = true;
- }
- else {
- indexIntoLine += curLineNextOp.chars;
- }
- }
- }
-
- while (numChars > 0) {
- if ((! curLineNextOp.chars) && (! curLineOpIter.hasNext())) {
- curLine++;
- curChar = 0;
- curLineOpIterLine = curLine;
- curLineNextOp.chars = 0;
- curLineOpIter = Changeset.opIterator(alines_get(curLine));
- }
- if (! curLineNextOp.chars) {
- curLineOpIter.next(curLineNextOp);
- }
- var charsToUse = Math.min(numChars, curLineNextOp.chars);
- func(charsToUse, curLineNextOp.attribs,
- charsToUse == curLineNextOp.chars && curLineNextOp.lines > 0);
- numChars -= charsToUse;
- curLineNextOp.chars -= charsToUse;
- curChar += charsToUse;
- }
-
- if ((! curLineNextOp.chars) && (! curLineOpIter.hasNext())) {
- curLine++;
- curChar = 0;
- }
- }
-
- function skip(N, L) {
- if (L) {
- curLine += L;
- curChar = 0;
- }
- else {
- if (curLineOpIter && curLineOpIterLine == curLine) {
- consumeAttribRuns(N, function() {});
- }
- else {
- curChar += N;
- }
- }
- }
-
- function nextText(numChars) {
- var len = 0;
- var assem = Changeset.stringAssembler();
- var firstString = lines_get(curLine).substring(curChar);
- len += firstString.length;
- assem.append(firstString);
-
- var lineNum = curLine+1;
- while (len < numChars) {
- var nextString = lines_get(lineNum);
- len += nextString.length;
- assem.append(nextString);
- lineNum++;
- }
-
- return assem.toString().substring(0, numChars);
- }
-
- function cachedStrFunc(func) {
- var cache = {};
- return function(s) {
- if (! cache[s]) {
- cache[s] = func(s);
- }
- return cache[s];
- };
- }
-
- var attribKeys = [];
- var attribValues = [];
- while (csIter.hasNext()) {
- var csOp = csIter.next();
- if (csOp.opcode == '=') {
- if (csOp.attribs) {
- attribKeys.length = 0;
- attribValues.length = 0;
- Changeset.eachAttribNumber(csOp.attribs, function(n) {
- attribKeys.push(pool.getAttribKey(n));
- attribValues.push(pool.getAttribValue(n));
- });
- var undoBackToAttribs = cachedStrFunc(function(attribs) {
- var backAttribs = [];
- for(var i=0;i<attribKeys.length;i++) {
- var appliedKey = attribKeys[i];
- var appliedValue = attribValues[i];
- var oldValue = Changeset.attribsAttributeValue(attribs, appliedKey, pool);
- if (appliedValue != oldValue) {
- backAttribs.push([appliedKey, oldValue]);
- }
- }
- return Changeset.makeAttribsString('=', backAttribs, pool);
- });
- consumeAttribRuns(csOp.chars, function(len, attribs, endsLine) {
- builder.keep(len, endsLine ? 1 : 0, undoBackToAttribs(attribs));
- });
- }
- else {
- skip(csOp.chars, csOp.lines);
- builder.keep(csOp.chars, csOp.lines);
- }
- }
- else if (csOp.opcode == '+') {
- builder.remove(csOp.chars, csOp.lines);
- }
- else if (csOp.opcode == '-') {
- var textBank = nextText(csOp.chars);
- var textBankIndex = 0;
- consumeAttribRuns(csOp.chars, function(len, attribs, endsLine) {
- builder.insert(textBank.substr(textBankIndex, len), attribs);
- textBankIndex += len;
- });
- }
- }
-
- return Changeset.checkRep(builder.toString());
-};
diff --git a/trunk/etherpad/src/static/js/linestylefilter_client.js b/trunk/etherpad/src/static/js/linestylefilter_client.js
deleted file mode 100644
index df35c3c..0000000
--- a/trunk/etherpad/src/static/js/linestylefilter_client.js
+++ /dev/null
@@ -1,246 +0,0 @@
-// DO NOT EDIT THIS FILE, edit infrastructure/ace/www/linestylefilter.js
-
-/**
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS-IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// requires: easysync2.Changeset
-
-var linestylefilter = {};
-
-linestylefilter.ATTRIB_CLASSES = {
- 'bold':'tag:b',
- 'italic':'tag:i',
- 'underline':'tag:u',
- 'strikethrough':'tag:s'
-};
-
-linestylefilter.getAuthorClassName = function(author) {
- return "author-"+author.replace(/[^a-y0-9]/g, function(c) {
- if (c == ".") return "-";
- return 'z'+c.charCodeAt(0)+'z';
- });
-};
-
-// lineLength is without newline; aline includes newline,
-// but may be falsy if lineLength == 0
-linestylefilter.getLineStyleFilter = function(lineLength, aline,
- textAndClassFunc, apool) {
-
- if (lineLength == 0) return textAndClassFunc;
-
- var nextAfterAuthorColors = textAndClassFunc;
-
- var authorColorFunc = (function() {
- var lineEnd = lineLength;
- var curIndex = 0;
- var extraClasses;
- var leftInAuthor;
-
- function attribsToClasses(attribs) {
- var classes = '';
- Changeset.eachAttribNumber(attribs, function(n) {
- var key = apool.getAttribKey(n);
- if (key) {
- var value = apool.getAttribValue(n);
- if (value) {
- if (key == 'author') {
- classes += ' '+linestylefilter.getAuthorClassName(value);
- }
- else if (key == 'list') {
- classes += ' list:'+value;
- }
- else if (linestylefilter.ATTRIB_CLASSES[key]) {
- classes += ' '+linestylefilter.ATTRIB_CLASSES[key];
- }
- }
- }
- });
- return classes.substring(1);
- }
-
- var attributionIter = Changeset.opIterator(aline);
- var nextOp, nextOpClasses;
- function goNextOp() {
- nextOp = attributionIter.next();
- nextOpClasses = (nextOp.opcode && attribsToClasses(nextOp.attribs));
- }
- goNextOp();
- function nextClasses() {
- if (curIndex < lineEnd) {
- extraClasses = nextOpClasses;
- leftInAuthor = nextOp.chars;
- goNextOp();
- while (nextOp.opcode && nextOpClasses == extraClasses) {
- leftInAuthor += nextOp.chars;
- goNextOp();
- }
- }
- }
- nextClasses();
-
- return function(txt, cls) {
- while (txt.length > 0) {
- if (leftInAuthor <= 0) {
- // prevent infinite loop if something funny's going on
- return nextAfterAuthorColors(txt, cls);
- }
- var spanSize = txt.length;
- if (spanSize > leftInAuthor) {
- spanSize = leftInAuthor;
- }
- var curTxt = txt.substring(0, spanSize);
- txt = txt.substring(spanSize);
- nextAfterAuthorColors(curTxt, (cls&&cls+" ")+extraClasses);
- curIndex += spanSize;
- leftInAuthor -= spanSize;
- if (leftInAuthor == 0) {
- nextClasses();
- }
- }
- };
- })();
- return authorColorFunc;
-};
-
-linestylefilter.getAtSignSplitterFilter = function(lineText,
- textAndClassFunc) {
- var at = /@/g;
- at.lastIndex = 0;
- var splitPoints = null;
- var execResult;
- while ((execResult = at.exec(lineText))) {
- if (! splitPoints) {
- splitPoints = [];
- }
- splitPoints.push(execResult.index);
- }
-
- if (! splitPoints) return textAndClassFunc;
-
- return linestylefilter.textAndClassFuncSplitter(textAndClassFunc,
- splitPoints);
-};
-
-linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/;
-linestylefilter.REGEX_URLCHAR = new RegExp('('+/[-:@a-zA-Z0-9_.,~%+\/\\?=&#;()$]/.source+'|'+linestylefilter.REGEX_WORDCHAR.source+')');
-linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:)/.source+linestylefilter.REGEX_URLCHAR.source+'*(?![:.,;])'+linestylefilter.REGEX_URLCHAR.source, 'g');
-
-linestylefilter.getURLFilter = function(lineText, textAndClassFunc) {
- linestylefilter.REGEX_URL.lastIndex = 0;
- var urls = null;
- var splitPoints = null;
- var execResult;
- while ((execResult = linestylefilter.REGEX_URL.exec(lineText))) {
- if (! urls) {
- urls = [];
- splitPoints = [];
- }
- var startIndex = execResult.index;
- var url = execResult[0];
- urls.push([startIndex, url]);
- splitPoints.push(startIndex, startIndex + url.length);
- }
-
- if (! urls) return textAndClassFunc;
-
- function urlForIndex(idx) {
- for(var k=0; k<urls.length; k++) {
- var u = urls[k];
- if (idx >= u[0] && idx < u[0]+u[1].length) {
- return u[1];
- }
- }
- return false;
- }
-
- var handleUrlsAfterSplit = (function() {
- var curIndex = 0;
- return function(txt, cls) {
- var txtlen = txt.length;
- var newCls = cls;
- var url = urlForIndex(curIndex);
- if (url) {
- newCls += " url:"+url;
- }
- textAndClassFunc(txt, newCls);
- curIndex += txtlen;
- };
- })();
-
- return linestylefilter.textAndClassFuncSplitter(handleUrlsAfterSplit,
- splitPoints);
-};
-
-linestylefilter.textAndClassFuncSplitter = function(func, splitPointsOpt) {
- var nextPointIndex = 0;
- var idx = 0;
-
- // don't split at 0
- while (splitPointsOpt &&
- nextPointIndex < splitPointsOpt.length &&
- splitPointsOpt[nextPointIndex] == 0) {
- nextPointIndex++;
- }
-
- function spanHandler(txt, cls) {
- if ((! splitPointsOpt) || nextPointIndex >= splitPointsOpt.length) {
- func(txt, cls);
- idx += txt.length;
- }
- else {
- var splitPoints = splitPointsOpt;
- var pointLocInSpan = splitPoints[nextPointIndex] - idx;
- var txtlen = txt.length;
- if (pointLocInSpan >= txtlen) {
- func(txt, cls);
- idx += txt.length;
- if (pointLocInSpan == txtlen) {
- nextPointIndex++;
- }
- }
- else {
- if (pointLocInSpan > 0) {
- func(txt.substring(0, pointLocInSpan), cls);
- idx += pointLocInSpan;
- }
- nextPointIndex++;
- // recurse
- spanHandler(txt.substring(pointLocInSpan), cls);
- }
- }
- }
- return spanHandler;
-};
-
-// domLineObj is like that returned by domline.createDomLine
-linestylefilter.populateDomLine = function(textLine, aline, apool,
- domLineObj) {
- // remove final newline from text if any
- var text = textLine;
- if (text.slice(-1) == '\n') {
- text = text.substring(0, text.length-1);
- }
-
- function textAndClassFunc(tokenText, tokenClass) {
- domLineObj.appendSpan(tokenText, tokenClass);
- }
-
- var func = textAndClassFunc;
- func = linestylefilter.getURLFilter(text, func);
- func = linestylefilter.getLineStyleFilter(text.length, aline,
- func, apool);
- func(text, '');
-};