{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.Xxbk37y1/b1/jsjac_1.3.4+dfsg-3_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.Xxbk37y1/b2/jsjac_1.3.4+dfsg-3_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,2 +1,2 @@\n \n- 6edc2e157f52546364c777ca6b03806a 92000 javascript optional libjs-jac_1.3.4+dfsg-3_all.deb\n+ 62726615fb72d95d311d2cfb78979a43 84780 javascript optional libjs-jac_1.3.4+dfsg-3_all.deb\n"}, {"source1": "libjs-jac_1.3.4+dfsg-3_all.deb", "source2": "libjs-jac_1.3.4+dfsg-3_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2021-01-04 23:02:43.000000 debian-binary\n--rw-r--r-- 0 0 0 2684 2021-01-04 23:02:43.000000 control.tar.xz\n--rw-r--r-- 0 0 0 89124 2021-01-04 23:02:43.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 2688 2021-01-04 23:02:43.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 81900 2021-01-04 23:02:43.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./control", "source2": "./control", "unified_diff": "@@ -1,13 +1,13 @@\n Package: libjs-jac\n Source: jsjac\n Version: 1.3.4+dfsg-3\n Architecture: all\n Maintainer: Debian XMPP Maintainers \n-Installed-Size: 1043\n+Installed-Size: 1011\n Recommends: javascript-common\n Suggests: ejabberd\n Section: javascript\n Priority: optional\n Homepage: https://github.com/sstrigler/JSJaC\n Description: JavaScript Jabber Client Library\n JSJaC is a jabber client library written in JavaScript to ease implementation\n"}, {"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -76,11 +76,11 @@\n -rw-r--r-- 0 root (0) root (0) 6305 2021-01-04 23:02:43.000000 ./usr/share/doc/libjs-jac/doc/overview-tree.html\n -rw-r--r-- 0 root (0) root (0) 660 2021-01-04 23:02:43.000000 ./usr/share/doc/libjs-jac/doc/overview-xmlextras.js.html\n -rw-r--r-- 0 root (0) root (0) 1583 2021-01-04 23:02:43.000000 ./usr/share/doc/libjs-jac/doc/stylesheet.css\n drwxr-xr-x 0 root (0) root (0) 0 2011-03-14 00:20:43.000000 ./usr/share/doc/libjs-jac/examples/\n -rw-r--r-- 0 root (0) root (0) 9874 2011-03-14 00:20:43.000000 ./usr/share/doc/libjs-jac/examples/simpleclient.html\n drwxr-xr-x 0 root (0) root (0) 0 2021-01-04 23:02:43.000000 ./usr/share/javascript/\n drwxr-xr-x 0 root (0) root (0) 0 2021-01-04 23:02:43.000000 ./usr/share/javascript/jsjac/\n--rw-r--r-- 0 root (0) root (0) 62311 2021-01-04 23:02:43.000000 ./usr/share/javascript/jsjac/jsjac.min.js\n--rw-r--r-- 0 root (0) root (0) 164096 2021-01-04 23:02:43.000000 ./usr/share/javascript/jsjac/jsjac.uncompressed.js\n+-rw-r--r-- 0 root (0) root (0) 19782 2021-01-04 23:02:43.000000 ./usr/share/javascript/jsjac/jsjac.min.js\n+-rw-r--r-- 0 root (0) root (0) 173999 2021-01-04 23:02:43.000000 ./usr/share/javascript/jsjac/jsjac.uncompressed.js\n lrwxrwxrwx 0 root (0) root (0) 0 2021-01-04 23:02:43.000000 ./usr/share/javascript/jsjac/jsjac.js -> jsjac.uncompressed.js\n lrwxrwxrwx 0 root (0) root (0) 0 2021-01-04 23:02:43.000000 ./usr/share/javascript/jsjac/jsjac.packed.js -> jsjac.min.js\n"}, {"source1": "./usr/share/doc/libjs-jac/doc/Date.html", "source2": "./usr/share/doc/libjs-jac/doc/Date.html", "unified_diff": "@@ -362,10 +362,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -61,8 +61,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/Document.html", "source2": "./usr/share/doc/libjs-jac/doc/Document.html", "unified_diff": "@@ -200,10 +200,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -20,8 +20,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/GLOBALS.html", "source2": "./usr/share/doc/libjs-jac/doc/GLOBALS.html", "unified_diff": "@@ -1609,10 +1609,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -278,8 +278,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCConnection.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCConnection.html", "unified_diff": "@@ -79,15 +79,15 @@\n \n \n \n
\n
\n Direct Known Subclasses: \n
\n- JSJaCHttpPollingConnection, JSJaCHttpBindingConnection\n+ JSJaCHttpBindingConnection, JSJaCHttpPollingConnection\n
\n
\n \n \n \n
\n
\n@@ -1054,10 +1054,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n \n ===============================================================================\n ***** Class JSJaCConnection *****\n Object\n |\n +--JSJaCConnection\n Direct Known Subclasses:\n- JSJaCHttpPollingConnection, JSJaCHttpBindingConnection\n+ JSJaCHttpBindingConnection, JSJaCHttpPollingConnection\n ===============================================================================\n class JSJaCConnection\n \n Somewhat abstract base class for jabber connections. Contains all of the code\n in common for all jabber connections\n Defined in JSJaCConnection.js\n \n@@ -283,8 +283,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCConsoleLogger.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCConsoleLogger.html", "unified_diff": "@@ -448,10 +448,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -90,8 +90,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCCookie.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCCookie.html", "unified_diff": "@@ -911,10 +911,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -203,8 +203,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCCookieException.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCCookieException.html", "unified_diff": "@@ -308,10 +308,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -51,8 +51,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCHttpBindingConnection.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCHttpBindingConnection.html", "unified_diff": "@@ -416,10 +416,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -78,8 +78,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCHttpPollingConnection.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCHttpPollingConnection.html", "unified_diff": "@@ -350,10 +350,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -69,8 +69,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCIQ.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCIQ.html", "unified_diff": "@@ -542,10 +542,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -113,8 +113,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCJID.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCJID.html", "unified_diff": "@@ -747,10 +747,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -158,8 +158,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCJIDInvalidException.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCJIDInvalidException.html", "unified_diff": "@@ -309,10 +309,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -55,8 +55,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCJSON.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCJSON.html", "unified_diff": "@@ -330,10 +330,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -50,8 +50,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCKeys.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCKeys.html", "unified_diff": "@@ -444,10 +444,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -86,8 +86,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCMessage.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCMessage.html", "unified_diff": "@@ -579,10 +579,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -119,8 +119,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCPacket.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCPacket.html", "unified_diff": "@@ -79,15 +79,15 @@\n \n \n \n
\n
\n Direct Known Subclasses: \n
\n- JSJaCMessage, JSJaCIQ, JSJaCPresence\n+ JSJaCMessage, JSJaCPresence, JSJaCIQ\n
\n
\n \n \n \n
\n
\n@@ -1332,10 +1332,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -8,15 +8,15 @@\n \n ===============================================================================\n ***** Class JSJaCPacket *****\n Object\n |\n +--JSJaCPacket\n Direct Known Subclasses:\n- JSJaCMessage, JSJaCIQ, JSJaCPresence\n+ JSJaCMessage, JSJaCPresence, JSJaCIQ\n ===============================================================================\n class JSJaCPacket\n \n Somewhat abstract base class for all kinds of specialised packets\n Defined in JSJaCPacket.js\n \n ===============================================================================\n@@ -294,8 +294,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/JSJaCPresence.html", "source2": "./usr/share/doc/libjs-jac/doc/JSJaCPresence.html", "unified_diff": "@@ -639,10 +639,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -137,8 +137,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/Node.html", "source2": "./usr/share/doc/libjs-jac/doc/Node.html", "unified_diff": "@@ -200,10 +200,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -20,8 +20,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/Number.html", "source2": "./usr/share/doc/libjs-jac/doc/Number.html", "unified_diff": "@@ -309,10 +309,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -44,8 +44,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/STANZA_ERROR.html", "source2": "./usr/share/doc/libjs-jac/doc/STANZA_ERROR.html", "unified_diff": "@@ -314,10 +314,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -53,8 +53,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/String.html", "source2": "./usr/share/doc/libjs-jac/doc/String.html", "unified_diff": "@@ -265,10 +265,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -36,8 +36,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT_CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/XMLDocument.html", "source2": "./usr/share/doc/libjs-jac/doc/XMLDocument.html", "unified_diff": "@@ -200,10 +200,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -20,8 +20,8 @@\n \n Overview\u00a0File\u00a0\u00a0Class\ufffdTree\u00a0Index\u00a0Help\u00a0 JSJaC\n \u00a0PREV_CLASS \u00a0NEXT CLASS FRAMES \u00a0 \u00a0NO FRAMES \u00a0 \u00a0 /TR>\n All_Classes\n SUMMARY:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0MEDETAIL:\u00a0FIELD\u00a0|\u00a0CONSTR\u00a0|\u00a0METHOD\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/help-doc.html", "source2": "./usr/share/doc/libjs-jac/doc/help-doc.html", "unified_diff": "@@ -151,10 +151,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -38,8 +38,8 @@\n ===============================================================================\n \n Overview\u00a0File\u00a0Class\u00a0Tree\u00a0Index\u00a0\u00a0HelpJSJaC\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0 \u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/index-all.html", "source2": "./usr/share/doc/libjs-jac/doc/index-all.html", "unified_diff": "@@ -1379,10 +1379,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -440,8 +440,8 @@\n ===============================================================================\n \u00a0A\u00a0B\u00a0C\u00a0D\u00a0E\u00a0G\u00a0H\u00a0I\u00a0J\u00a0L\u00a0M\u00a0N\u00a0O\u00a0P\u00a0R\u00a0S\u00a0T\u00a0U\u00a0V\u00a0W\u00a0X\n Overview\u00a0File\u00a0Class\u00a0Tree\u00a0\u00a0Index\ufffdHelp\ufffdJSJaC\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0 \u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaC.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaC.js.html", "unified_diff": "@@ -200,10 +200,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -71,8 +71,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCBuilder.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCBuilder.js.html", "unified_diff": "@@ -277,10 +277,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -148,8 +148,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConfig.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConfig.js.html", "unified_diff": "@@ -172,10 +172,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -41,8 +41,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConnection.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConnection.js.html", "unified_diff": "@@ -76,16 +76,16 @@\n \n \n

Summary

\n

\n \t\n \t\tContains all things in common for all subtypes of connections\n supported.\n-

Author: Stefan Strigler steve@zeank.in-berlin.de\n-
Version: $Revision$

\n+

Version: $Revision$

Author: Stefan Strigler steve@zeank.in-berlin.de\n+
\n \t\n

\n \n
\n \n \n \n@@ -1454,10 +1454,10 @@\n
\n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,17 +5,17 @@\n All_Classes\n \n ===============================================================================\n ***** JSJaCConnection.js *****\n *** Summary ***\n Contains all things in common for all subtypes of connections supported.\n \n-Author: Stefan Strigler steve@zeank.in-berlin.de\n Version:$Revision$\n \n+Author: Stefan Strigler steve@zeank.in-berlin.de\n ===============================================================================\n ____________________________________________________________________\n |Class_Summary_______________________________________________________|\n |JSJaCConnection|Somewhat_abstract_base_class_for_jabber_connections.|\n ===============================================================================\n \n /**\n@@ -1343,8 +1343,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConsoleLogger.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConsoleLogger.js.html", "unified_diff": "@@ -239,10 +239,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -95,8 +95,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConstants.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCConstants.js.html", "unified_diff": "@@ -259,10 +259,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -115,8 +115,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCCookie.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCCookie.js.html", "unified_diff": "@@ -392,10 +392,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -243,8 +243,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCError.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCError.js.html", "unified_diff": "@@ -161,10 +161,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -30,8 +30,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCHttpBindingConnection.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCHttpBindingConnection.js.html", "unified_diff": "@@ -75,16 +75,16 @@\n \t\n \n \n

Summary

\n

\n \t\n \t\tAll stuff related to HTTP Binding\n-

Version: $Revision$

Author: Stefan Strigler steve@zeank.in-berlin.de\n-
\n+

Author: Stefan Strigler steve@zeank.in-berlin.de\n+
Version: $Revision$

\n \t\n

\n \n
\n \n \n \n@@ -695,10 +695,10 @@\n
\n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,17 +5,17 @@\n All_Classes\n \n ===============================================================================\n ***** JSJaCHttpBindingConnection.js *****\n *** Summary ***\n All stuff related to HTTP Binding\n \n+Author: Stefan Strigler steve@zeank.in-berlin.de\n Version:$Revision$\n \n-Author: Stefan Strigler steve@zeank.in-berlin.de\n ===============================================================================\n _____________________________________________________________________________\n |Class_Summary________________________________________________________________|\n |JSJaCHttpBindingConnection|Implementation of XMPP_Over_BOSH formerly known as|\n |__________________________|HTTP_Binding._____________________________________|\n ===============================================================================\n \n@@ -572,8 +572,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCHttpPollingConnection.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCHttpPollingConnection.js.html", "unified_diff": "@@ -498,10 +498,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -364,8 +364,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCJID.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCJID.js.html", "unified_diff": "@@ -370,10 +370,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -222,8 +222,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCJSON.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCJSON.js.html", "unified_diff": "@@ -295,10 +295,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -153,8 +153,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCKeys.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCKeys.js.html", "unified_diff": "@@ -229,10 +229,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -85,8 +85,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCPacket.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-JSJaCPacket.js.html", "unified_diff": "@@ -75,16 +75,16 @@\n \t\n \n \n

Summary

\n

\n \t\n \t\tContains all Jabber/XMPP packet related classes.\n-

Version: $Revision$

Author: Stefan Strigler steve@zeank.in-berlin.de\n-
\n+

Author: Stefan Strigler steve@zeank.in-berlin.de\n+
Version: $Revision$

\n \t\n

\n \n
\n \n \n \n@@ -908,10 +908,10 @@\n
\n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,17 +5,17 @@\n All_Classes\n \n ===============================================================================\n ***** JSJaCPacket.js *****\n *** Summary ***\n Contains all Jabber/XMPP packet related classes.\n \n+Author: Stefan Strigler steve@zeank.in-berlin.de\n Version:$Revision$\n \n-Author: Stefan Strigler steve@zeank.in-berlin.de\n ===============================================================================\n _______________________________________________________________________\n |Class_Summary__________________________________________________________|\n |JSJaCIQ______|Models_the_XMPP_notion_of_an_'iq'_packet_________________|\n |JSJaCMessage_|Models_the_XMPP_notion_of_an_'message'_packet____________|\n |JSJaCPacket |Somewhat abstract base class for all kinds of specialised|\n |_____________|packets__________________________________________________|\n@@ -772,8 +772,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-crypt.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-crypt.js.html", "unified_diff": "@@ -1523,10 +1523,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -764,8 +764,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-header.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-header.js.html", "unified_diff": "@@ -155,10 +155,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -25,8 +25,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-jsextras.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-jsextras.js.html", "unified_diff": "@@ -75,16 +75,16 @@\n \t\n \n \n

Summary

\n

\n \t\n \t\tCollection of functions to make live easier\n-

Author: Stefan Strigler\n-
Version: $Revision$

\n+

Version: $Revision$

Author: Stefan Strigler\n+
\n \t\n

\n \n
\n \n \n \n@@ -239,10 +239,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -5,17 +5,17 @@\n All_Classes\n \n ===============================================================================\n ***** jsextras.js *****\n *** Summary ***\n Collection of functions to make live easier\n \n-Author: Stefan Strigler\n Version:$Revision$\n \n+Author: Stefan Strigler\n ===============================================================================\n \n /**\n * @fileoverview Collection of functions to make live easier\n * @author Stefan Strigler\n * @version $Revision$\n */\n@@ -112,8 +112,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary-xmlextras.js.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary-xmlextras.js.html", "unified_diff": "@@ -78,16 +78,16 @@\n

Summary

\n

\n \t\n \t\tWrapper to make working with XmlHttpRequest and the\n DOM more convenient (cross browser compliance).\n this code is taken from\n http://webfx.eae.net/dhtml/xmlextras/xmlextras.html\n-

Version: $Revision$

Author: Stefan Strigler steve@zeank.in-berlin.de\n-
\n+

Author: Stefan Strigler steve@zeank.in-berlin.de\n+
Version: $Revision$

\n \t\n

\n \n
\n \n \n \n@@ -383,10 +383,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -7,17 +7,17 @@\n ===============================================================================\n ***** xmlextras.js *****\n *** Summary ***\n Wrapper to make working with XmlHttpRequest and the DOM more convenient (cross\n browser compliance). this code is taken from http://webfx.eae.net/dhtml/\n xmlextras/xmlextras.html\n \n+Author: Stefan Strigler steve@zeank.in-berlin.de\n Version:$Revision$\n \n-Author: Stefan Strigler steve@zeank.in-berlin.de\n ===============================================================================\n \n /* Copyright 2006 Erik Arvidsson\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you\n * may not use this file except in compliance with the License. You\n * may obtain a copy of the License at\n@@ -255,8 +255,8 @@\n \n Overview\u00a0\u00a0File\ufffdClass\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-summary.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-summary.html", "unified_diff": "@@ -258,10 +258,10 @@\n \n \n \n
\n \n \n \n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -41,8 +41,8 @@\n \n \u00a0Overview\ufffdFile\u00a0Class\u00a0Tree\u00a0->Index Help\u00a0JSJaC\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/doc/libjs-jac/doc/overview-tree.html", "source2": "./usr/share/doc/libjs-jac/doc/overview-tree.html", "unified_diff": "@@ -133,10 +133,10 @@\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n-
Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024
\r\n+
Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025
\r\n \r\n \r\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -35,8 +35,8 @@\n Overview File\u00a0Class\u00a0\u00a0Tree\ufffd - Help\u00a0JSJaC\n \u00a0 >Index\n \u00a0\n \u00a0PREV\u00a0 \u00a0NEFRAMES \u00a0 \u00a0NO_FRAMES \u00a0\u00a0\n All_Classes\n \n ===============================================================================\n-Documentation generated by JSDoc on Sat Jan 6 09:39:37 2024\n+Documentation generated by JSDoc on Sat Feb 8 18:04:39 2025\n"}]}, {"source1": "./usr/share/javascript/jsjac/jsjac.min.js", "source2": "./usr/share/javascript/jsjac/jsjac.min.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -903,1859 +903,8 @@\n var ERR_REDIRECT = STANZA_ERROR(\"302\", \"modify\", \"redirect\");\n var ERR_REGISTRATION_REQUIRED = STANZA_ERROR(\"407\", \"auth\", \"registration-required\");\n var ERR_REMOTE_SERVER_NOT_FOUND = STANZA_ERROR(\"404\", \"cancel\", \"remote-server-not-found\");\n var ERR_REMOTE_SERVER_TIMEOUT = STANZA_ERROR(\"504\", \"wait\", \"remote-server-timeout\");\n var ERR_RESOURCE_CONSTRAINT = STANZA_ERROR(\"500\", \"wait\", \"resource-constraint\");\n var ERR_SERVICE_UNAVAILABLE = STANZA_ERROR(\"503\", \"cancel\", \"service-unavailable\");\n var ERR_SUBSCRIPTION_REQUIRED = STANZA_ERROR(\"407\", \"auth\", \"subscription-required\");\n-var ERR_UNEXPECTED_REQUEST = STANZA_ERROR(\"400\", \"wait\", \"unexpected-request\");\n-\n-function JSJaCConsoleLogger(a) {\n- this.level = a || 4;\n- this.start = function() {};\n- this.log = function(c, d) {\n- d = d || 0;\n- if (d > this.level) {\n- return\n- }\n- if (typeof(console) == \"undefined\") {\n- return\n- }\n- try {\n- switch (d) {\n- case 0:\n- console.warn(c);\n- break;\n- case 1:\n- console.error(c);\n- break;\n- case 2:\n- console.info(c);\n- break;\n- case 4:\n- console.debug(c);\n- break;\n- default:\n- console.log(c);\n- break\n- }\n- } catch (b) {\n- try {\n- console.log(c)\n- } catch (b) {}\n- }\n- };\n- this.setLevel = function(b) {\n- this.level = b;\n- return this\n- };\n- this.getLevel = function() {\n- return this.level\n- }\n-}\n-\n-function JSJaCCookie(a, d, b, c, e) {\n- if (window == this) {\n- return new JSJaCCookie(a, d, b, c, e)\n- }\n- this.name = a;\n- this.value = d;\n- this.secs = b;\n- this.domain = c;\n- this.path = e;\n- this.write = function() {\n- if (this.secs) {\n- var g = new Date();\n- g.setTime(g.getTime() + (this.secs * 1000));\n- var f = \"; expires=\" + g.toGMTString()\n- } else {\n- var f = \"\"\n- }\n- var h = this.domain ? \"; domain=\" + this.domain : \"\";\n- var i = this.path ? \"; path=\" + this.path : \"; path=/\";\n- document.cookie = this.getName() + \"=\" + JSJaCCookie._escape(this.getValue()) + f + h + i\n- };\n- this.erase = function() {\n- var f = new JSJaCCookie(this.getName(), \"\", -1);\n- f.write()\n- };\n- this.getName = function() {\n- return this.name\n- };\n- this.setName = function(f) {\n- this.name = f;\n- return this\n- };\n- this.getValue = function() {\n- return this.value\n- };\n- this.setValue = function(f) {\n- this.value = f;\n- return this\n- };\n- this.setDomain = function(f) {\n- this.domain = f;\n- return this\n- };\n- this.setPath = function(f) {\n- this.path = f;\n- return this\n- }\n-}\n-JSJaCCookie.read = function(b) {\n- var e = b + \"=\";\n- var a = document.cookie.split(\";\");\n- for (var d = 0; d < a.length; d++) {\n- var f = a[d];\n- while (f.charAt(0) == \" \") {\n- f = f.substring(1, f.length)\n- }\n- if (f.indexOf(e) == 0) {\n- return new JSJaCCookie(b, JSJaCCookie._unescape(f.substring(e.length, f.length)))\n- }\n- }\n- throw new JSJaCCookieException(\"Cookie not found\")\n-};\n-JSJaCCookie.get = function(a) {\n- return JSJaCCookie.read(a).getValue()\n-};\n-JSJaCCookie.remove = function(a) {\n- JSJaCCookie.read(a).erase()\n-};\n-JSJaCCookie._escape = function(a) {\n- return a.replace(/;/g, \"%3AB\")\n-};\n-JSJaCCookie._unescape = function(a) {\n- return a.replace(/%3AB/g, \";\")\n-};\n-\n-function JSJaCCookieException(a) {\n- this.message = a;\n- this.name = \"CookieException\"\n-}\n-\n-function JSJaCError(c, b, d) {\n- var a = XmlDocument.create(\"error\", \"jsjac\");\n- a.documentElement.setAttribute(\"code\", c);\n- a.documentElement.setAttribute(\"type\", b);\n- if (d) {\n- a.documentElement.appendChild(a.createElement(d)).setAttribute(\"xmlns\", \"urn:ietf:params:xml:ns:xmpp-stanzas\")\n- }\n- return a.documentElement\n-}\n-var JSJACJID_FORBIDDEN = ['\"', \" \", \"&\", \"'\", \"/\", \":\", \"<\", \">\", \"@\"];\n-\n-function JSJaCJID(a) {\n- this._node = \"\";\n- this._domain = \"\";\n- this._resource = \"\";\n- if (typeof(a) == \"string\") {\n- if (a.indexOf(\"@\") != -1) {\n- this.setNode(a.substring(0, a.indexOf(\"@\")));\n- a = a.substring(a.indexOf(\"@\") + 1)\n- }\n- if (a.indexOf(\"/\") != -1) {\n- this.setResource(a.substring(a.indexOf(\"/\") + 1));\n- a = a.substring(0, a.indexOf(\"/\"))\n- }\n- this.setDomain(a)\n- } else {\n- this.setNode(a.node);\n- this.setDomain(a.domain);\n- this.setResource(a.resource)\n- }\n-}\n-JSJaCJID.prototype.getNode = function() {\n- return this._node\n-};\n-JSJaCJID.prototype.getDomain = function() {\n- return this._domain\n-};\n-JSJaCJID.prototype.getResource = function() {\n- return this._resource\n-};\n-JSJaCJID.prototype.setNode = function(a) {\n- JSJaCJID._checkNodeName(a);\n- this._node = a || \"\";\n- return this\n-};\n-JSJaCJID.prototype.setDomain = function(a) {\n- if (!a || a == \"\") {\n- throw new JSJaCJIDInvalidException(\"domain name missing\")\n- }\n- JSJaCJID._checkNodeName(a);\n- this._domain = a;\n- return this\n-};\n-JSJaCJID.prototype.setResource = function(a) {\n- this._resource = a || \"\";\n- return this\n-};\n-JSJaCJID.prototype.toString = function() {\n- var a = \"\";\n- if (this.getNode() && this.getNode() != \"\") {\n- a = this.getNode() + \"@\"\n- }\n- a += this.getDomain();\n- if (this.getResource() && this.getResource() != \"\") {\n- a += \"/\" + this.getResource()\n- }\n- return a\n-};\n-JSJaCJID.prototype.removeResource = function() {\n- return this.setResource()\n-};\n-JSJaCJID.prototype.clone = function() {\n- return new JSJaCJID(this.toString())\n-};\n-JSJaCJID.prototype.isEntity = function(a) {\n- if (typeof a == \"string\") {\n- a = (new JSJaCJID(a))\n- }\n- a.removeResource();\n- return (this.clone().removeResource().toString() === a.toString())\n-};\n-JSJaCJID._checkNodeName = function(a) {\n- if (!a || a == \"\") {\n- return\n- }\n- for (var b = 0; b < JSJACJID_FORBIDDEN.length; b++) {\n- if (a.indexOf(JSJACJID_FORBIDDEN[b]) != -1) {\n- throw new JSJaCJIDInvalidException(\"forbidden char in nodename: \" + JSJACJID_FORBIDDEN[b])\n- }\n- }\n-};\n-\n-function JSJaCJIDInvalidException(a) {\n- this.message = a;\n- this.name = \"JSJaCJIDInvalidException\"\n-}\n-\n-function JSJaCKeys(d, c) {\n- var a = Math.random();\n- this._k = new Array();\n- this._k[0] = a.toString();\n- if (c) {\n- this.oDbg = c\n- } else {\n- this.oDbg = {};\n- this.oDbg.log = function() {}\n- }\n- if (d) {\n- for (var b = 1; b < JSJAC_NKEYS; b++) {\n- this._k[b] = d(this._k[b - 1]);\n- c.log(b + \": \" + this._k[b], 4)\n- }\n- }\n- this._indexAt = JSJAC_NKEYS - 1;\n- this.getKey = function() {\n- return this._k[this._indexAt--]\n- };\n- this.lastKey = function() {\n- return (this._indexAt == 0)\n- };\n- this.size = function() {\n- return this._k.length\n- };\n- this._getSuspendVars = function() {\n- return (\"_k,_indexAt\").split(\",\")\n- }\n-}\n-var JSJACPACKET_USE_XMLNS = true;\n-\n-function JSJaCPacket(a) {\n- this.name = a;\n- if (typeof(JSJACPACKET_USE_XMLNS) != \"undefined\" && JSJACPACKET_USE_XMLNS) {\n- this.doc = XmlDocument.create(a, \"jabber:client\")\n- } else {\n- this.doc = XmlDocument.create(a, \"\")\n- }\n-}\n-JSJaCPacket.prototype.pType = function() {\n- return this.name\n-};\n-JSJaCPacket.prototype.getDoc = function() {\n- return this.doc\n-};\n-JSJaCPacket.prototype.getNode = function() {\n- if (this.getDoc() && this.getDoc().documentElement) {\n- return this.getDoc().documentElement\n- } else {\n- return null\n- }\n-};\n-JSJaCPacket.prototype.setTo = function(a) {\n- if (!a || a == \"\") {\n- this.getNode().removeAttribute(\"to\")\n- } else {\n- if (typeof(a) == \"string\") {\n- this.getNode().setAttribute(\"to\", a)\n- } else {\n- this.getNode().setAttribute(\"to\", a.toString())\n- }\n- }\n- return this\n-};\n-JSJaCPacket.prototype.setFrom = function(a) {\n- if (!a || a == \"\") {\n- this.getNode().removeAttribute(\"from\")\n- } else {\n- if (typeof(a) == \"string\") {\n- this.getNode().setAttribute(\"from\", a)\n- } else {\n- this.getNode().setAttribute(\"from\", a.toString())\n- }\n- }\n- return this\n-};\n-JSJaCPacket.prototype.setID = function(a) {\n- if (!a || a == \"\") {\n- this.getNode().removeAttribute(\"id\")\n- } else {\n- this.getNode().setAttribute(\"id\", a)\n- }\n- return this\n-};\n-JSJaCPacket.prototype.setType = function(a) {\n- if (!a || a == \"\") {\n- this.getNode().removeAttribute(\"type\")\n- } else {\n- this.getNode().setAttribute(\"type\", a)\n- }\n- return this\n-};\n-JSJaCPacket.prototype.setXMLLang = function(a) {\n- if (!a || a == \"\") {\n- this.getNode().removeAttribute(\"xml:lang\")\n- } else {\n- this.getNode().setAttribute(\"xml:lang\", a)\n- }\n- return this\n-};\n-JSJaCPacket.prototype.getTo = function() {\n- return this.getNode().getAttribute(\"to\")\n-};\n-JSJaCPacket.prototype.getFrom = function() {\n- return this.getNode().getAttribute(\"from\")\n-};\n-JSJaCPacket.prototype.getToJID = function() {\n- return new JSJaCJID(this.getTo())\n-};\n-JSJaCPacket.prototype.getFromJID = function() {\n- return new JSJaCJID(this.getFrom())\n-};\n-JSJaCPacket.prototype.getID = function() {\n- return this.getNode().getAttribute(\"id\")\n-};\n-JSJaCPacket.prototype.getType = function() {\n- return this.getNode().getAttribute(\"type\")\n-};\n-JSJaCPacket.prototype.getXMLLang = function() {\n- return this.getNode().getAttribute(\"xml:lang\")\n-};\n-JSJaCPacket.prototype.getXMLNS = function() {\n- return this.getNode().namespaceURI || this.getNode().getAttribute(\"xmlns\")\n-};\n-JSJaCPacket.prototype.getChild = function(b, d) {\n- if (!this.getNode()) {\n- return null\n- }\n- b = b || \"*\";\n- d = d || \"*\";\n- if (this.getNode().getElementsByTagNameNS) {\n- return this.getNode().getElementsByTagNameNS(d, b).item(0)\n- }\n- var a = this.getNode().getElementsByTagName(b);\n- if (d != \"*\") {\n- for (var c = 0; c < a.length; c++) {\n- if (a.item(c).namespaceURI == d || a.item(c).getAttribute(\"xmlns\") == d) {\n- return a.item(c)\n- }\n- }\n- } else {\n- return a.item(0)\n- }\n- return null\n-};\n-JSJaCPacket.prototype.getChildVal = function(b, d) {\n- var e = this.getChild(b, d);\n- var a = \"\";\n- if (e && e.hasChildNodes()) {\n- for (var c = 0; c < e.childNodes.length; c++) {\n- if (e.childNodes.item(c).nodeValue) {\n- a += e.childNodes.item(c).nodeValue\n- }\n- }\n- }\n- return a\n-};\n-JSJaCPacket.prototype.clone = function() {\n- return JSJaCPacket.wrapNode(this.getNode())\n-};\n-JSJaCPacket.prototype.isError = function() {\n- return (this.getType() == \"error\")\n-};\n-JSJaCPacket.prototype.errorReply = function(a) {\n- var b = this.clone();\n- b.setTo(this.getFrom());\n- b.setFrom();\n- b.setType(\"error\");\n- b.appendNode(\"error\", {\n- code: a.code,\n- type: a.type\n- }, [\n- [a.cond]\n- ]);\n- return b\n-};\n-JSJaCPacket.prototype.xml = typeof XMLSerializer != \"undefined\" ? function() {\n- var a = (new XMLSerializer()).serializeToString(this.getNode());\n- if (typeof(a) == \"undefined\") {\n- a = (new XMLSerializer()).serializeToString(this.doc)\n- }\n- return a\n-} : function() {\n- return this.getDoc().xml\n-};\n-JSJaCPacket.prototype._getAttribute = function(a) {\n- return this.getNode().getAttribute(a)\n-};\n-if (document.ELEMENT_NODE == null) {\n- document.ELEMENT_NODE = 1;\n- document.ATTRIBUTE_NODE = 2;\n- document.TEXT_NODE = 3;\n- document.CDATA_SECTION_NODE = 4;\n- document.ENTITY_REFERENCE_NODE = 5;\n- document.ENTITY_NODE = 6;\n- document.PROCESSING_INSTRUCTION_NODE = 7;\n- document.COMMENT_NODE = 8;\n- document.DOCUMENT_NODE = 9;\n- document.DOCUMENT_TYPE_NODE = 10;\n- document.DOCUMENT_FRAGMENT_NODE = 11;\n- document.NOTATION_NODE = 12\n-}\n-JSJaCPacket.prototype._importNode = function(f, b) {\n- switch (f.nodeType) {\n- case document.ELEMENT_NODE:\n- if (this.getDoc().createElementNS) {\n- var e = this.getDoc().createElementNS(f.namespaceURI, f.nodeName)\n- } else {\n- var e = this.getDoc().createElement(f.nodeName)\n- }\n- if (f.attributes && f.attributes.length > 0) {\n- for (var d = 0, c = f.attributes.length; d < c; d++) {\n- var a = f.attributes.item(d);\n- if (a.nodeName == \"xmlns\" && e.getAttribute(\"xmlns\") != null) {\n- continue\n- }\n- if (e.setAttributeNS && a.namespaceURI) {\n- e.setAttributeNS(a.namespaceURI, a.nodeName, a.nodeValue)\n- } else {\n- e.setAttribute(a.nodeName, a.nodeValue)\n- }\n- }\n- }\n- if (b && f.childNodes && f.childNodes.length > 0) {\n- for (var d = 0, c = f.childNodes.length; d < c; d++) {\n- e.appendChild(this._importNode(f.childNodes.item(d), b))\n- }\n- }\n- return e;\n- break;\n- case document.TEXT_NODE:\n- case document.CDATA_SECTION_NODE:\n- case document.COMMENT_NODE:\n- return this.getDoc().createTextNode(f.nodeValue);\n- break\n- }\n-};\n-JSJaCPacket.prototype._setChildNode = function(g, b) {\n- var a = this.getChild(g);\n- var d = this.getDoc().createTextNode(b);\n- if (a) {\n- try {\n- a.replaceChild(d, a.firstChild)\n- } catch (f) {}\n- } else {\n- try {\n- a = this.getDoc().createElementNS(this.getNode().namespaceURI, g)\n- } catch (c) {\n- a = this.getDoc().createElement(g)\n- }\n- this.getNode().appendChild(a);\n- a.appendChild(d)\n- }\n- return a\n-};\n-JSJaCPacket.prototype.buildNode = function(a) {\n- return JSJaCBuilder.buildNode(this.getDoc(), a, arguments[1], arguments[2])\n-};\n-JSJaCPacket.prototype.appendNode = function(a) {\n- if (typeof a == \"object\") {\n- return this.getNode().appendChild(a)\n- } else {\n- return this.getNode().appendChild(this.buildNode(a, arguments[1], arguments[2], null, this.getNode().namespaceURI))\n- }\n-};\n-\n-function JSJaCPresence() {\n- this.base = JSJaCPacket;\n- this.base(\"presence\")\n-}\n-JSJaCPresence.prototype = new JSJaCPacket;\n-JSJaCPresence.prototype.setStatus = function(a) {\n- this._setChildNode(\"status\", a);\n- return this\n-};\n-JSJaCPresence.prototype.setShow = function(a) {\n- if (a == \"chat\" || a == \"away\" || a == \"xa\" || a == \"dnd\") {\n- this._setChildNode(\"show\", a)\n- }\n- return this\n-};\n-JSJaCPresence.prototype.setPriority = function(a) {\n- this._setChildNode(\"priority\", a);\n- return this\n-};\n-JSJaCPresence.prototype.setPresence = function(b, a, c) {\n- if (b) {\n- this.setShow(b)\n- }\n- if (a) {\n- this.setStatus(a)\n- }\n- if (c) {\n- this.setPriority(c)\n- }\n- return this\n-};\n-JSJaCPresence.prototype.getStatus = function() {\n- return this.getChildVal(\"status\")\n-};\n-JSJaCPresence.prototype.getShow = function() {\n- return this.getChildVal(\"show\")\n-};\n-JSJaCPresence.prototype.getPriority = function() {\n- return this.getChildVal(\"priority\")\n-};\n-\n-function JSJaCIQ() {\n- this.base = JSJaCPacket;\n- this.base(\"iq\")\n-}\n-JSJaCIQ.prototype = new JSJaCPacket;\n-JSJaCIQ.prototype.setIQ = function(c, a, b) {\n- if (c) {\n- this.setTo(c)\n- }\n- if (a) {\n- this.setType(a)\n- }\n- if (b) {\n- this.setID(b)\n- }\n- return this\n-};\n-JSJaCIQ.prototype.setQuery = function(c) {\n- var a;\n- try {\n- a = this.getDoc().createElementNS(c, \"query\")\n- } catch (b) {\n- a = this.getDoc().createElement(\"query\");\n- a.setAttribute(\"xmlns\", c)\n- }\n- this.getNode().appendChild(a);\n- return a\n-};\n-JSJaCIQ.prototype.getQuery = function() {\n- return this.getNode().getElementsByTagName(\"query\").item(0)\n-};\n-JSJaCIQ.prototype.getQueryXMLNS = function() {\n- if (this.getQuery()) {\n- return this.getQuery().namespaceURI || this.getQuery().getAttribute(\"xmlns\")\n- } else {\n- return null\n- }\n-};\n-JSJaCIQ.prototype.reply = function(d) {\n- var b = this.clone();\n- b.setTo(this.getFrom());\n- b.setFrom();\n- b.setType(\"result\");\n- if (d) {\n- if (typeof d == \"string\") {\n- b.getChild().appendChild(b.getDoc().loadXML(d))\n- } else {\n- if (d.constructor == Array) {\n- var c = b.getChild();\n- for (var a = 0; a < d.length; a++) {\n- if (typeof d[a] == \"string\") {\n- c.appendChild(b.getDoc().loadXML(d[a]))\n- } else {\n- if (typeof d[a] == \"object\") {\n- c.appendChild(d[a])\n- }\n- }\n- }\n- } else {\n- if (typeof d == \"object\") {\n- b.getChild().appendChild(d)\n- }\n- }\n- }\n- }\n- return b\n-};\n-\n-function JSJaCMessage() {\n- this.base = JSJaCPacket;\n- this.base(\"message\")\n-}\n-JSJaCMessage.prototype = new JSJaCPacket;\n-JSJaCMessage.prototype.setBody = function(a) {\n- this._setChildNode(\"body\", a);\n- return this\n-};\n-JSJaCMessage.prototype.setSubject = function(a) {\n- this._setChildNode(\"subject\", a);\n- return this\n-};\n-JSJaCMessage.prototype.setThread = function(a) {\n- this._setChildNode(\"thread\", a);\n- return this\n-};\n-JSJaCMessage.prototype.getThread = function() {\n- return this.getChildVal(\"thread\")\n-};\n-JSJaCMessage.prototype.getBody = function() {\n- return this.getChildVal(\"body\")\n-};\n-JSJaCMessage.prototype.getSubject = function() {\n- return this.getChildVal(\"subject\")\n-};\n-JSJaCPacket.wrapNode = function(b) {\n- var a = null;\n- switch (b.nodeName.toLowerCase()) {\n- case \"presence\":\n- a = new JSJaCPresence();\n- break;\n- case \"message\":\n- a = new JSJaCMessage();\n- break;\n- case \"iq\":\n- a = new JSJaCIQ();\n- break\n- }\n- if (a) {\n- a.getDoc().replaceChild(a._importNode(b, true), a.getNode())\n- }\n- return a\n-};\n-\n-function JSJaCConnection(a) {\n- if (a && a.oDbg && a.oDbg.log) {\n- this.oDbg = a.oDbg\n- } else {\n- this.oDbg = new Object();\n- this.oDbg.log = function() {}\n- }\n- if (a && a.timerval) {\n- this.setPollInterval(a.timerval)\n- } else {\n- this.setPollInterval(JSJAC_TIMERVAL)\n- }\n- if (a && a.httpbase) {\n- this._httpbase = a.httpbase\n- }\n- if (a && a.allow_plain) {\n- this.allow_plain = a.allow_plain\n- } else {\n- this.allow_plain = JSJAC_ALLOW_PLAIN\n- }\n- if (a && a.cookie_prefix) {\n- this._cookie_prefix = a.cookie_prefix\n- } else {\n- this._cookie_prefix = \"\"\n- }\n- this._connected = false;\n- this._events = new Array();\n- this._keys = null;\n- this._ID = 0;\n- this._inQ = new Array();\n- this._pQueue = new Array();\n- this._regIDs = new Array();\n- this._req = new Array();\n- this._status = \"intialized\";\n- this._errcnt = 0;\n- this._inactivity = JSJAC_INACTIVITY;\n- this._sendRawCallbacks = new Array()\n-}\n-JSJaCConnection.prototype.connect = function(a) {\n- this._setStatus(\"connecting\");\n- this.domain = a.domain || \"localhost\";\n- this.username = a.username;\n- this.resource = a.resource;\n- this.pass = a.pass;\n- this.register = a.register;\n- this.authhost = a.authhost || this.domain;\n- this.authtype = a.authtype || \"sasl\";\n- if (a.xmllang && a.xmllang != \"\") {\n- this._xmllang = a.xmllang\n- }\n- this.host = a.host || this.domain;\n- this.port = a.port || 5222;\n- if (a.secure) {\n- this.secure = \"true\"\n- } else {\n- this.secure = \"false\"\n- }\n- if (a.wait) {\n- this._wait = a.wait\n- }\n- this.jid = this.username + \"@\" + this.domain;\n- this.fulljid = this.jid + \"/\" + this.resource;\n- this._rid = Math.round(100000.5 + (((900000.49999) - (100000.5)) * Math.random()));\n- var c = this._getFreeSlot();\n- this._req[c] = this._setupRequest(true);\n- var b = this._getInitialRequestString();\n- this.oDbg.log(b, 4);\n- this._req[c].r.onreadystatechange = JSJaC.bind(function() {\n- if (this._req[c].r.readyState == 4) {\n- this.oDbg.log(\"async recv: \" + this._req[c].r.responseText, 4);\n- this._handleInitialResponse(c)\n- }\n- }, this);\n- if (typeof(this._req[c].r.onerror) != \"undefined\") {\n- this._req[c].r.onerror = JSJaC.bind(function(d) {\n- this.oDbg.log(\"XmlHttpRequest error\", 1);\n- return false\n- }, this)\n- }\n- this._req[c].r.send(b)\n-};\n-JSJaCConnection.prototype.connected = function() {\n- return this._connected\n-};\n-JSJaCConnection.prototype.disconnect = function() {\n- this._setStatus(\"disconnecting\");\n- if (!this.connected()) {\n- return\n- }\n- this._connected = false;\n- clearInterval(this._interval);\n- clearInterval(this._inQto);\n- if (this._timeout) {\n- clearTimeout(this._timeout)\n- }\n- var b = this._getFreeSlot();\n- this._req[b] = this._setupRequest(false);\n- request = this._getRequestString(false, true);\n- this.oDbg.log(\"Disconnecting: \" + request, 4);\n- this._req[b].r.send(request);\n- try {\n- JSJaCCookie.read(this._cookie_prefix + \"JSJaC_State\").erase()\n- } catch (a) {}\n- this.oDbg.log(\"Disconnected: \" + this._req[b].r.responseText, 2);\n- this._handleEvent(\"ondisconnect\")\n-};\n-JSJaCConnection.prototype.getPollInterval = function() {\n- return this._timerval\n-};\n-JSJaCConnection.prototype.registerHandler = function(event) {\n- event = event.toLowerCase();\n- var eArg = {\n- handler: arguments[arguments.length - 1],\n- childName: \"*\",\n- childNS: \"*\",\n- type: \"*\"\n- };\n- if (arguments.length > 2) {\n- eArg.childName = arguments[1]\n- }\n- if (arguments.length > 3) {\n- eArg.childNS = arguments[2]\n- }\n- if (arguments.length > 4) {\n- eArg.type = arguments[3]\n- }\n- if (!this._events[event]) {\n- this._events[event] = new Array(eArg)\n- } else {\n- this._events[event] = this._events[event].concat(eArg)\n- }\n- this._events[event] = this._events[event].sort(function(a, b) {\n- var aRank = 0;\n- var bRank = 0;\n- with(a) {\n- if (type == \"*\") {\n- aRank++\n- }\n- if (childNS == \"*\") {\n- aRank++\n- }\n- if (childName == \"*\") {\n- aRank++\n- }\n- }\n- with(b) {\n- if (type == \"*\") {\n- bRank++\n- }\n- if (childNS == \"*\") {\n- bRank++\n- }\n- if (childName == \"*\") {\n- bRank++\n- }\n- }\n- if (aRank > bRank) {\n- return 1\n- }\n- if (aRank < bRank) {\n- return -1\n- }\n- return 0\n- });\n- this.oDbg.log(\"registered handler for event '\" + event + \"'\", 2)\n-};\n-JSJaCConnection.prototype.unregisterHandler = function(e, d) {\n- e = e.toLowerCase();\n- if (!this._events[e]) {\n- return\n- }\n- var a = this._events[e],\n- c = new Array();\n- for (var b = 0; b < a.length; b++) {\n- if (a[b].handler != d) {\n- c.push(a[b])\n- }\n- }\n- if (a.length != c.length) {\n- this._events[e] = c;\n- this.oDbg.log(\"unregistered handler for event '\" + e + \"'\", 2)\n- }\n-};\n-JSJaCConnection.prototype.registerIQGet = function(a, b, c) {\n- this.registerHandler(\"iq\", a, b, \"get\", c)\n-};\n-JSJaCConnection.prototype.registerIQSet = function(a, b, c) {\n- this.registerHandler(\"iq\", a, b, \"set\", c)\n-};\n-JSJaCConnection.prototype.resume = function() {\n- try {\n- var a = JSJaCCookie.read(this._cookie_prefix + \"JSJaC_State\").getValue();\n- this.oDbg.log(\"read cookie: \" + a, 2);\n- JSJaCCookie.read(this._cookie_prefix + \"JSJaC_State\").erase();\n- return this.resumeFromData(JSJaCJSON.parse(a))\n- } catch (b) {}\n- return false\n-};\n-JSJaCConnection.prototype.resumeFromData = function(c) {\n- try {\n- this._setStatus(\"resuming\");\n- for (var b in c) {\n- if (c.hasOwnProperty(b)) {\n- this[b] = c[b]\n- }\n- }\n- if (this._keys) {\n- this._keys2 = new JSJaCKeys();\n- var a = this._keys2._getSuspendVars();\n- for (var b = 0; b < a.length; b++) {\n- this._keys2[a[b]] = this._keys[a[b]]\n- }\n- this._keys = this._keys2\n- }\n- if (this._connected) {\n- this._handleEvent(\"onresume\");\n- setTimeout(JSJaC.bind(this._resume, this), this.getPollInterval());\n- this._interval = setInterval(JSJaC.bind(this._checkQueue, this), JSJAC_CHECKQUEUEINTERVAL);\n- this._inQto = setInterval(JSJaC.bind(this._checkInQ, this), JSJAC_CHECKINQUEUEINTERVAL)\n- }\n- return (this._connected === true)\n- } catch (d) {\n- if (d.message) {\n- this.oDbg.log(\"Resume failed: \" + d.message, 1)\n- } else {\n- this.oDbg.log(\"Resume failed: \" + d, 1)\n- }\n- return false\n- }\n-};\n-JSJaCConnection.prototype.send = function(d, b, a) {\n- if (!d || !d.pType) {\n- this.oDbg.log(\"no packet: \" + d, 1);\n- return false\n- }\n- if (!this.connected()) {\n- return false\n- }\n- if (b) {\n- if (!d.getID()) {\n- d.setID(\"JSJaCID_\" + this._ID++)\n- }\n- this._registerPID(d.getID(), b, a)\n- }\n- try {\n- this._handleEvent(d.pType() + \"_out\", d);\n- this._handleEvent(\"packet_out\", d);\n- this._pQueue = this._pQueue.concat(d.xml())\n- } catch (c) {\n- this.oDbg.log(c.toString(), 1);\n- return false\n- }\n- return true\n-};\n-JSJaCConnection.prototype.sendIQ = function(e, c, a) {\n- if (!e || e.pType() != \"iq\") {\n- return false\n- }\n- c = c || {};\n- var b = c.error_handler || JSJaC.bind(function(g) {\n- this.oDbg.log(g.xml(), 1)\n- }, this);\n- var d = c.result_handler || JSJaC.bind(function(g) {\n- this.oDbg.log(g.xml(), 2)\n- }, this);\n- var f = function(h, g) {\n- switch (h.getType()) {\n- case \"error\":\n- b(h);\n- break;\n- case \"result\":\n- d(h, g);\n- break\n- }\n- };\n- return this.send(e, f, a)\n-};\n-JSJaCConnection.prototype.setPollInterval = function(a) {\n- if (a && !isNaN(a)) {\n- this._timerval = a\n- }\n- return this._timerval\n-};\n-JSJaCConnection.prototype.status = function() {\n- return this._status\n-};\n-JSJaCConnection.prototype.suspend = function() {\n- var b = this.suspendToData();\n- try {\n- var f = new JSJaCCookie(this._cookie_prefix + \"JSJaC_State\", JSJaCJSON.toString(b));\n- this.oDbg.log(\"writing cookie: \" + f.getValue() + \"\\n(length:\" + f.getValue().length + \")\", 2);\n- f.write();\n- var a = JSJaCCookie.get(this._cookie_prefix + \"JSJaC_State\");\n- if (f.getValue() != a) {\n- this.oDbg.log(\"Suspend failed writing cookie.\\nread: \" + a, 1);\n- f.erase();\n- return false\n- }\n- return true\n- } catch (d) {\n- this.oDbg.log(\"Failed creating cookie '\" + this._cookie_prefix + \"JSJaC_State': \" + d.message, 1)\n- }\n- return false\n-};\n-JSJaCConnection.prototype.suspendToData = function() {\n- clearTimeout(this._timeout);\n- clearInterval(this._interval);\n- clearInterval(this._inQto);\n- this._suspend();\n- var c = (\"_connected,_keys,_ID,_inQ,_pQueue,_regIDs,_errcnt,_inactivity,domain,username,resource,jid,fulljid,_sid,_httpbase,_timerval,_is_polling\").split(\",\");\n- c = c.concat(this._getSuspendVars());\n- var e = new Object();\n- for (var d = 0; d < c.length; d++) {\n- if (!this[c[d]]) {\n- continue\n- }\n- if (this[c[d]]._getSuspendVars) {\n- var a = this[c[d]]._getSuspendVars();\n- var f = new Object();\n- for (var b = 0; b < a.length; b++) {\n- f[a[b]] = this[c[d]][a[b]]\n- }\n- } else {\n- var f = this[c[d]]\n- }\n- e[c[d]] = f\n- }\n- this._connected = false;\n- this._setStatus(\"suspending\");\n- return e\n-};\n-JSJaCConnection.prototype._abort = function() {\n- clearTimeout(this._timeout);\n- clearInterval(this._inQto);\n- clearInterval(this._interval);\n- this._connected = false;\n- this._setStatus(\"aborted\");\n- this.oDbg.log(\"Disconnected.\", 1);\n- this._handleEvent(\"ondisconnect\");\n- this._handleEvent(\"onerror\", JSJaCError(\"500\", \"cancel\", \"service-unavailable\"))\n-};\n-JSJaCConnection.prototype._checkInQ = function() {\n- for (var a = 0; a < this._inQ.length && a < 10; a++) {\n- var b = this._inQ[0];\n- this._inQ = this._inQ.slice(1, this._inQ.length);\n- var c = JSJaCPacket.wrapNode(b);\n- if (!c) {\n- return\n- }\n- this._handleEvent(\"packet_in\", c);\n- if (c.pType && !this._handlePID(c)) {\n- this._handleEvent(c.pType() + \"_in\", c);\n- this._handleEvent(c.pType(), c)\n- }\n- }\n-};\n-JSJaCConnection.prototype._checkQueue = function() {\n- if (this._pQueue.length != 0) {\n- this._process()\n- }\n- return true\n-};\n-JSJaCConnection.prototype._doAuth = function() {\n- if (this.has_sasl && this.authtype == \"nonsasl\") {\n- this.oDbg.log(\"Warning: SASL present but not used\", 1)\n- }\n- if (!this._doSASLAuth() && !this._doLegacyAuth()) {\n- this.oDbg.log(\"Auth failed for authtype \" + this.authtype, 1);\n- this.disconnect();\n- return false\n- }\n- return true\n-};\n-JSJaCConnection.prototype._doInBandReg = function() {\n- if (this.authtype == \"saslanon\" || this.authtype == \"anonymous\") {\n- return\n- }\n- var a = new JSJaCIQ();\n- a.setType(\"set\");\n- a.setID(\"reg1\");\n- a.appendNode(\"query\", {\n- xmlns: \"jabber:iq:register\"\n- }, [\n- [\"username\", this.username],\n- [\"password\", this.pass]\n- ]);\n- this.send(a, this._doInBandRegDone)\n-};\n-JSJaCConnection.prototype._doInBandRegDone = function(a) {\n- if (a && a.getType() == \"error\") {\n- this.oDbg.log(\"registration failed for \" + this.username, 0);\n- this._handleEvent(\"onerror\", a.getChild(\"error\"));\n- return\n- }\n- this.oDbg.log(this.username + \" registered succesfully\", 0);\n- this._doAuth()\n-};\n-JSJaCConnection.prototype._doLegacyAuth = function() {\n- if (this.authtype != \"nonsasl\" && this.authtype != \"anonymous\") {\n- return false\n- }\n- var a = new JSJaCIQ();\n- a.setIQ(this.server, \"get\", \"auth1\");\n- a.appendNode(\"query\", {\n- xmlns: \"jabber:iq:auth\"\n- }, [\n- [\"username\", this.username]\n- ]);\n- this.send(a, this._doLegacyAuth2);\n- return true\n-};\n-JSJaCConnection.prototype._doLegacyAuth2 = function(b) {\n- if (!b || b.getType() != \"result\") {\n- if (b && b.getType() == \"error\") {\n- this._handleEvent(\"onerror\", b.getChild(\"error\"))\n- }\n- this.disconnect();\n- return\n- }\n- var a = (b.getChild(\"digest\") != null);\n- var b = new JSJaCIQ();\n- b.setIQ(this.server, \"set\", \"auth2\");\n- query = b.appendNode(\"query\", {\n- xmlns: \"jabber:iq:auth\"\n- }, [\n- [\"username\", this.username],\n- [\"resource\", this.resource]\n- ]);\n- if (a) {\n- query.appendChild(b.buildNode(\"digest\", {\n- xmlns: \"jabber:iq:auth\"\n- }, hex_sha1(this.streamid + this.pass)))\n- } else {\n- if (this.allow_plain) {\n- query.appendChild(b.buildNode(\"password\", {\n- xmlns: \"jabber:iq:auth\"\n- }, this.pass))\n- } else {\n- this.oDbg.log(\"no valid login mechanism found\", 1);\n- this.disconnect();\n- return false\n- }\n- }\n- this.send(b, this._doLegacyAuthDone)\n-};\n-JSJaCConnection.prototype._doLegacyAuthDone = function(a) {\n- if (a.getType() != \"result\") {\n- if (a.getType() == \"error\") {\n- this._handleEvent(\"onerror\", a.getChild(\"error\"))\n- }\n- this.disconnect()\n- } else {\n- this._handleEvent(\"onconnect\")\n- }\n-};\n-JSJaCConnection.prototype._doSASLAuth = function() {\n- if (this.authtype == \"nonsasl\" || this.authtype == \"anonymous\") {\n- return false\n- }\n- if (this.authtype == \"saslanon\") {\n- if (this.mechs.ANONYMOUS) {\n- this.oDbg.log(\"SASL using mechanism 'ANONYMOUS'\", 2);\n- return this._sendRaw(\"\", this._doSASLAuthDone)\n- }\n- this.oDbg.log(\"SASL ANONYMOUS requested but not supported\", 1)\n- } else {\n- if (this.mechs[\"DIGEST-MD5\"]) {\n- this.oDbg.log(\"SASL using mechanism 'DIGEST-MD5'\", 2);\n- return this._sendRaw(\"\", this._doSASLAuthDigestMd5S1)\n- } else {\n- if (this.allow_plain && this.mechs.PLAIN) {\n- this.oDbg.log(\"SASL using mechanism 'PLAIN'\", 2);\n- var a = this.username + \"@\" + this.domain + String.fromCharCode(0) + this.username + String.fromCharCode(0) + this.pass;\n- this.oDbg.log(\"authenticating with '\" + a + \"'\", 2);\n- a = btoa(a);\n- return this._sendRaw(\"\" + a + \"\", this._doSASLAuthDone)\n- }\n- }\n- this.oDbg.log(\"No SASL mechanism applied\", 1);\n- this.authtype = \"nonsasl\"\n- }\n- return false\n-};\n-JSJaCConnection.prototype._doSASLAuthDigestMd5S1 = function(e) {\n- if (e.nodeName != \"challenge\") {\n- this.oDbg.log(\"challenge missing\", 1);\n- this._handleEvent(\"onerror\", JSJaCError(\"401\", \"auth\", \"not-authorized\"));\n- this.disconnect()\n- } else {\n- var d = atob(e.firstChild.nodeValue);\n- this.oDbg.log(\"got challenge: \" + d, 2);\n- this._nonce = d.substring(d.indexOf(\"nonce=\") + 7);\n- this._nonce = this._nonce.substring(0, this._nonce.indexOf('\"'));\n- this.oDbg.log(\"nonce: \" + this._nonce, 2);\n- if (this._nonce == \"\" || this._nonce.indexOf('\"') != -1) {\n- this.oDbg.log(\"nonce not valid, aborting\", 1);\n- this.disconnect();\n- return\n- }\n- this._digest_uri = \"xmpp/\";\n- this._digest_uri += this.domain;\n- this._cnonce = cnonce(14);\n- this._nc = \"00000001\";\n- var c = str_md5(this.username + \":\" + this.domain + \":\" + this.pass) + \":\" + this._nonce + \":\" + this._cnonce;\n- var b = \"AUTHENTICATE:\" + this._digest_uri;\n- var a = hex_md5(hex_md5(c) + \":\" + this._nonce + \":\" + this._nc + \":\" + this._cnonce + \":auth:\" + hex_md5(b));\n- var f = 'username=\"' + this.username + '\",realm=\"' + this.domain + '\",nonce=\"' + this._nonce + '\",cnonce=\"' + this._cnonce + '\",nc=\"' + this._nc + '\",qop=auth,digest-uri=\"' + this._digest_uri + '\",response=\"' + a + '\",charset=\"utf-8\"';\n- this.oDbg.log(\"response: \" + f, 2);\n- this._sendRaw(\"\" + binb2b64(str2binb(f)) + \"\", this._doSASLAuthDigestMd5S2)\n- }\n-};\n-JSJaCConnection.prototype._doSASLAuthDigestMd5S2 = function(e) {\n- if (e.nodeName == \"failure\") {\n- if (e.xml) {\n- this.oDbg.log(\"auth error: \" + e.xml, 1)\n- } else {\n- this.oDbg.log(\"auth error\", 1)\n- }\n- this._handleEvent(\"onerror\", JSJaCError(\"401\", \"auth\", \"not-authorized\"));\n- this.disconnect();\n- return\n- }\n- var c = atob(e.firstChild.nodeValue);\n- this.oDbg.log(\"response: \" + c, 2);\n- var f = c.substring(c.indexOf(\"rspauth=\") + 8);\n- this.oDbg.log(\"rspauth: \" + f, 2);\n- var d = str_md5(this.username + \":\" + this.domain + \":\" + this.pass) + \":\" + this._nonce + \":\" + this._cnonce;\n- var b = \":\" + this._digest_uri;\n- var a = hex_md5(hex_md5(d) + \":\" + this._nonce + \":\" + this._nc + \":\" + this._cnonce + \":auth:\" + hex_md5(b));\n- this.oDbg.log(\"rsptest: \" + a, 2);\n- if (a != f) {\n- this.oDbg.log(\"SASL Digest-MD5: server repsonse with wrong rspauth\", 1);\n- this.disconnect();\n- return\n- }\n- if (e.nodeName == \"success\") {\n- this._reInitStream(this.domain, this._doStreamBind)\n- } else {\n- this._sendRaw(\"\", this._doSASLAuthDone)\n- }\n-};\n-JSJaCConnection.prototype._doSASLAuthDone = function(a) {\n- if (a.nodeName != \"success\") {\n- this.oDbg.log(\"auth failed\", 1);\n- this._handleEvent(\"onerror\", JSJaCError(\"401\", \"auth\", \"not-authorized\"));\n- this.disconnect()\n- } else {\n- this._reInitStream(this.domain, this._doStreamBind)\n- }\n-};\n-JSJaCConnection.prototype._doStreamBind = function() {\n- var a = new JSJaCIQ();\n- a.setIQ(null, \"set\", \"bind_1\");\n- a.appendNode(\"bind\", {\n- xmlns: \"urn:ietf:params:xml:ns:xmpp-bind\"\n- }, [\n- [\"resource\", this.resource]\n- ]);\n- this.oDbg.log(a.xml());\n- this.send(a, this._doXMPPSess)\n-};\n-JSJaCConnection.prototype._doXMPPSess = function(a) {\n- if (a.getType() != \"result\" || a.getType() == \"error\") {\n- this.disconnect();\n- if (a.getType() == \"error\") {\n- this._handleEvent(\"onerror\", a.getChild(\"error\"))\n- }\n- return\n- }\n- this.fulljid = a.getChildVal(\"jid\");\n- this.jid = this.fulljid.substring(0, this.fulljid.lastIndexOf(\"/\"));\n- a = new JSJaCIQ();\n- a.setIQ(this.domain, \"set\", \"sess_1\");\n- a.appendNode(\"session\", {\n- xmlns: \"urn:ietf:params:xml:ns:xmpp-session\"\n- }, []);\n- this.oDbg.log(a.xml());\n- this.send(a, this._doXMPPSessDone)\n-};\n-JSJaCConnection.prototype._doXMPPSessDone = function(a) {\n- if (a.getType() != \"result\" || a.getType() == \"error\") {\n- this.disconnect();\n- if (a.getType() == \"error\") {\n- this._handleEvent(\"onerror\", a.getChild(\"error\"))\n- }\n- return\n- } else {\n- this._handleEvent(\"onconnect\")\n- }\n-};\n-JSJaCConnection.prototype._handleEvent = function(d, a) {\n- d = d.toLowerCase();\n- this.oDbg.log(\"incoming event '\" + d + \"'\", 3);\n- if (!this._events[d]) {\n- return\n- }\n- this.oDbg.log(\"handling event '\" + d + \"'\", 2);\n- for (var b = 0; b < this._events[d].length; b++) {\n- var c = this._events[d][b];\n- if (typeof c.handler == \"function\") {\n- try {\n- if (a) {\n- if (a.pType) {\n- if ((!a.getNode().hasChildNodes() && c.childName != \"*\") || (a.getNode().hasChildNodes() && !a.getChild(c.childName, c.childNS))) {\n- continue\n- }\n- if (c.type != \"*\" && a.getType() != c.type) {\n- continue\n- }\n- this.oDbg.log(c.childName + \"/\" + c.childNS + \"/\" + c.type + \" => match for handler \" + c.handler, 3)\n- }\n- if (c.handler(a)) {\n- break\n- }\n- } else {\n- if (c.handler()) {\n- break\n- }\n- }\n- } catch (f) {\n- if (f.fileName && f.lineNumber) {\n- this.oDbg.log(c.handler + \"\\n>>>\" + f.name + \": \" + f.message + \" in \" + f.fileName + \" line \" + f.lineNumber, 1)\n- } else {\n- this.oDbg.log(c.handler + \"\\n>>>\" + f.name + \": \" + f.message, 1)\n- }\n- }\n- }\n- }\n-};\n-JSJaCConnection.prototype._handlePID = function(d) {\n- if (!d.getID()) {\n- return false\n- }\n- for (var b in this._regIDs) {\n- if (this._regIDs.hasOwnProperty(b) && this._regIDs[b] && b == d.getID()) {\n- var a = d.getID();\n- this.oDbg.log(\"handling \" + a, 3);\n- try {\n- if (this._regIDs[b].cb.call(this, d, this._regIDs[b].arg) === false) {\n- return false\n- } else {\n- this._unregisterPID(a);\n- return true\n- }\n- } catch (c) {\n- this.oDbg.log(c.name + \": \" + c.message, 1);\n- this._unregisterPID(a);\n- return true\n- }\n- }\n- }\n- return false\n-};\n-JSJaCConnection.prototype._handleResponse = function(d) {\n- var c = this._parseResponse(d);\n- if (!c) {\n- return\n- }\n- for (var b = 0; b < c.childNodes.length; b++) {\n- if (this._sendRawCallbacks.length) {\n- var a = this._sendRawCallbacks[0];\n- this._sendRawCallbacks = this._sendRawCallbacks.slice(1, this._sendRawCallbacks.length);\n- a.fn.call(this, c.childNodes.item(b), a.arg);\n- continue\n- }\n- this._inQ = this._inQ.concat(c.childNodes.item(b))\n- }\n-};\n-JSJaCConnection.prototype._parseStreamFeatures = function(f) {\n- if (!f) {\n- this.oDbg.log(\"nothing to parse ... aborting\", 1);\n- return false\n- }\n- var e;\n- if (f.getElementsByTagNameNS) {\n- e = f.getElementsByTagNameNS(\"http://etherx.jabber.org/streams\", \"error\").item(0)\n- } else {\n- var g = f.getElementsByTagName(\"error\");\n- for (var b = 0; b < g.length; b++) {\n- if (g.item(b).namespaceURI == \"http://etherx.jabber.org/streams\") {\n- e = g.item(b);\n- break\n- }\n- }\n- }\n- if (e) {\n- this._setStatus(\"internal_server_error\");\n- clearTimeout(this._timeout);\n- clearInterval(this._interval);\n- clearInterval(this._inQto);\n- this._handleEvent(\"onerror\", JSJaCError(\"503\", \"cancel\", \"session-terminate\"));\n- this._connected = false;\n- this.oDbg.log(\"Disconnected.\", 1);\n- this._handleEvent(\"ondisconnect\");\n- return false\n- }\n- this.mechs = new Object();\n- var d = f.getElementsByTagName(\"mechanisms\");\n- this.has_sasl = false;\n- for (var b = 0; b < d.length; b++) {\n- if (d.item(b).getAttribute(\"xmlns\") == \"urn:ietf:params:xml:ns:xmpp-sasl\") {\n- this.has_sasl = true;\n- var c = d.item(b).getElementsByTagName(\"mechanism\");\n- for (var a = 0; a < c.length; a++) {\n- this.mechs[c.item(a).firstChild.nodeValue] = true\n- }\n- break\n- }\n- }\n- if (this.has_sasl) {\n- this.oDbg.log(\"SASL detected\", 2)\n- } else {\n- this.oDbg.log(\"No support for SASL detected\", 2);\n- return false\n- }\n- return true\n-};\n-JSJaCConnection.prototype._process = function(a) {\n- if (!this.connected()) {\n- this.oDbg.log(\"Connection lost ...\", 1);\n- if (this._interval) {\n- clearInterval(this._interval)\n- }\n- return\n- }\n- this.setPollInterval(a);\n- if (this._timeout) {\n- clearTimeout(this._timeout)\n- }\n- var d = this._getFreeSlot();\n- if (d < 0) {\n- return\n- }\n- if (typeof(this._req[d]) != \"undefined\" && typeof(this._req[d].r) != \"undefined\" && this._req[d].r.readyState != 4) {\n- this.oDbg.log(\"Slot \" + d + \" is not ready\");\n- return\n- }\n- if (!this.isPolling() && this._pQueue.length == 0 && this._req[(d + 1) % 2] && this._req[(d + 1) % 2].r.readyState != 4) {\n- this.oDbg.log(\"all slots busy, standby ...\", 2);\n- return\n- }\n- if (!this.isPolling()) {\n- this.oDbg.log(\"Found working slot at \" + d, 2)\n- }\n- this._req[d] = this._setupRequest(true);\n- this._req[d].r.onreadystatechange = JSJaC.bind(function() {\n- if (!this.connected()) {\n- return\n- }\n- if (this._req[d].r.readyState == 4) {\n- this._setStatus(\"processing\");\n- this.oDbg.log(\"async recv: \" + this._req[d].r.responseText, 4);\n- this._handleResponse(this._req[d]);\n- if (this._pQueue.length) {\n- this._timeout = setTimeout(JSJaC.bind(this._process, this), 100)\n- } else {\n- this.oDbg.log(\"scheduling next poll in \" + this.getPollInterval() + \" msec\", 4);\n- this._timeout = setTimeout(JSJaC.bind(this._process, this), this.getPollInterval())\n- }\n- }\n- }, this);\n- try {\n- this._req[d].r.onerror = JSJaC.bind(function() {\n- if (!this.connected()) {\n- return\n- }\n- this._errcnt++;\n- this.oDbg.log(\"XmlHttpRequest error (\" + this._errcnt + \")\", 1);\n- if (this._errcnt > JSJAC_ERR_COUNT) {\n- this._abort();\n- return false\n- }\n- this._setStatus(\"onerror_fallback\");\n- setTimeout(JSJaC.bind(this._resume, this), this.getPollInterval());\n- return false\n- }, this)\n- } catch (b) {}\n- var c = this._getRequestString();\n- if (typeof(this._rid) != \"undefined\") {\n- this._req[d].rid = this._rid\n- }\n- this.oDbg.log(\"sending: \" + c, 4);\n- this._req[d].r.send(c)\n-};\n-JSJaCConnection.prototype._registerPID = function(c, b, a) {\n- if (!c || !b) {\n- return false\n- }\n- this._regIDs[c] = new Object();\n- this._regIDs[c].cb = b;\n- if (a) {\n- this._regIDs[c].arg = a\n- }\n- this.oDbg.log(\"registered \" + c, 3);\n- return true\n-};\n-JSJaCConnection.prototype._sendEmpty = function JSJaCSendEmpty() {\n- var b = this._getFreeSlot();\n- this._req[b] = this._setupRequest(true);\n- this._req[b].r.onreadystatechange = JSJaC.bind(function() {\n- if (this._req[b].r.readyState == 4) {\n- this.oDbg.log(\"async recv: \" + this._req[b].r.responseText, 4);\n- this._getStreamID(b)\n- }\n- }, this);\n- if (typeof(this._req[b].r.onerror) != \"undefined\") {\n- this._req[b].r.onerror = JSJaC.bind(function(c) {\n- this.oDbg.log(\"XmlHttpRequest error\", 1);\n- return false\n- }, this)\n- }\n- var a = this._getRequestString();\n- this.oDbg.log(\"sending: \" + a, 4);\n- this._req[b].r.send(a)\n-};\n-JSJaCConnection.prototype._sendRaw = function(c, b, a) {\n- if (b) {\n- this._sendRawCallbacks.push({\n- fn: b,\n- arg: a\n- })\n- }\n- this._pQueue.push(c);\n- this._process();\n- return true\n-};\n-JSJaCConnection.prototype._setStatus = function(a) {\n- if (!a || a == \"\") {\n- return\n- }\n- if (a != this._status) {\n- this._status = a;\n- this._handleEvent(\"onstatuschanged\", a);\n- this._handleEvent(\"status_changed\", a)\n- }\n-};\n-JSJaCConnection.prototype._unregisterPID = function(a) {\n- if (!this._regIDs[a]) {\n- return false\n- }\n- this._regIDs[a] = null;\n- this.oDbg.log(\"unregistered \" + a, 3);\n- return true\n-};\n-\n-function JSJaCHttpBindingConnection(a) {\n- this.base = JSJaCConnection;\n- this.base(a);\n- this._hold = JSJACHBC_MAX_HOLD;\n- this._inactivity = 0;\n- this._last_requests = new Object();\n- this._last_rid = 0;\n- this._min_polling = 0;\n- this._pause = 0;\n- this._wait = JSJACHBC_MAX_WAIT\n-}\n-JSJaCHttpBindingConnection.prototype = new JSJaCConnection();\n-JSJaCHttpBindingConnection.prototype.inherit = function(a) {\n- if (a.jid) {\n- var b = new JSJaCJID(a.jid);\n- this.domain = b.getDomain();\n- this.username = b.getNode();\n- this.resource = b.getResource()\n- } else {\n- this.domain = a.domain || \"localhost\";\n- this.username = a.username;\n- this.resource = a.resource\n- }\n- this._sid = a.sid;\n- this._rid = a.rid;\n- this._min_polling = a.polling;\n- this._inactivity = a.inactivity;\n- this._setHold(a.requests - 1);\n- this.setPollInterval(this._timerval);\n- if (a.wait) {\n- this._wait = a.wait\n- }\n- this._connected = true;\n- this._handleEvent(\"onconnect\");\n- this._interval = setInterval(JSJaC.bind(this._checkQueue, this), JSJAC_CHECKQUEUEINTERVAL);\n- this._inQto = setInterval(JSJaC.bind(this._checkInQ, this), JSJAC_CHECKINQUEUEINTERVAL);\n- this._timeout = setTimeout(JSJaC.bind(this._process, this), this.getPollInterval())\n-};\n-JSJaCHttpBindingConnection.prototype.setPollInterval = function(a) {\n- if (a && !isNaN(a)) {\n- if (!this.isPolling()) {\n- this._timerval = 100\n- } else {\n- if (this._min_polling && a < this._min_polling * 1000) {\n- this._timerval = this._min_polling * 1000\n- } else {\n- if (this._inactivity && a > this._inactivity * 1000) {\n- this._timerval = this._inactivity * 1000\n- } else {\n- this._timerval = a\n- }\n- }\n- }\n- }\n- return this._timerval\n-};\n-JSJaCHttpBindingConnection.prototype.isPolling = function() {\n- return (this._hold == 0)\n-};\n-JSJaCHttpBindingConnection.prototype._getFreeSlot = function() {\n- for (var a = 0; a < this._hold + 1; a++) {\n- if (typeof(this._req[a]) == \"undefined\" || typeof(this._req[a].r) == \"undefined\" || this._req[a].r.readyState == 4) {\n- return a\n- }\n- }\n- return -1\n-};\n-JSJaCHttpBindingConnection.prototype._getHold = function() {\n- return this._hold\n-};\n-JSJaCHttpBindingConnection.prototype._getRequestString = function(b, e) {\n- b = b || \"\";\n- var f = \"\";\n- if (this._rid <= this._last_rid && typeof(this._last_requests[this._rid]) != \"undefined\") {\n- f = this._last_requests[this._rid].xml\n- } else {\n- var a = \"\";\n- while (this._pQueue.length) {\n- var d = this._pQueue[0];\n- a += d;\n- this._pQueue = this._pQueue.slice(1, this._pQueue.length)\n- }\n- f = \"\" + b + a + \"\"\n- } else {\n- f += \"/>\"\n- }\n- this._last_requests[this._rid] = new Object();\n- this._last_requests[this._rid].xml = f;\n- this._last_rid = this._rid;\n- for (var c in this._last_requests) {\n- if (this._last_requests.hasOwnProperty(c) && c < this._rid - this._hold) {\n- delete(this._last_requests[c])\n- }\n- }\n- }\n- return f\n-};\n-JSJaCHttpBindingConnection.prototype._getInitialRequestString = function() {\n- var a = \"\";\n- return a\n-};\n-JSJaCHttpBindingConnection.prototype._getStreamID = function(b) {\n- this.oDbg.log(this._req[b].r.responseText, 4);\n- if (!this._req[b].r.responseXML || !this._req[b].r.responseXML.documentElement) {\n- this._handleEvent(\"onerror\", JSJaCError(\"503\", \"cancel\", \"service-unavailable\"));\n- return\n- }\n- var a = this._req[b].r.responseXML.documentElement;\n- if (a.getAttribute(\"authid\")) {\n- this.streamid = a.getAttribute(\"authid\");\n- this.oDbg.log(\"got streamid: \" + this.streamid, 2)\n- }\n- if (!this._parseStreamFeatures(a) || !this.streamid) {\n- this._timeout = setTimeout(JSJaC.bind(this._sendEmpty, this), this.getPollInterval());\n- return\n- }\n- this._timeout = setTimeout(JSJaC.bind(this._process, this), this.getPollInterval());\n- if (this.register) {\n- this._doInBandReg()\n- } else {\n- this._doAuth()\n- }\n-};\n-JSJaCHttpBindingConnection.prototype._getSuspendVars = function() {\n- return (\"host,port,secure,_rid,_last_rid,_wait,_min_polling,_inactivity,_hold,_last_requests,_pause\").split(\",\")\n-};\n-JSJaCHttpBindingConnection.prototype._handleInitialResponse = function(c) {\n- try {\n- this.oDbg.log(this._req[c].r.getAllResponseHeaders(), 4);\n- this.oDbg.log(this._req[c].r.responseText, 4)\n- } catch (b) {\n- this.oDbg.log(\"No response\", 4)\n- }\n- if (this._req[c].r.status != 200 || !this._req[c].r.responseXML) {\n- this.oDbg.log(\"initial response broken (status: \" + this._req[c].r.status + \")\", 1);\n- this._handleEvent(\"onerror\", JSJaCError(\"503\", \"cancel\", \"service-unavailable\"));\n- return\n- }\n- var a = this._req[c].r.responseXML.documentElement;\n- if (!a || a.tagName != \"body\" || a.namespaceURI != \"http://jabber.org/protocol/httpbind\") {\n- this.oDbg.log(\"no body element or incorrect body in initial response\", 1);\n- this._handleEvent(\"onerror\", JSJaCError(\"500\", \"wait\", \"internal-service-error\"));\n- return\n- }\n- if (a.getAttribute(\"type\") == \"terminate\") {\n- this.oDbg.log(\"invalid response:\\n\" + this._req[c].r.responseText, 1);\n- clearTimeout(this._timeout);\n- this._connected = false;\n- this.oDbg.log(\"Disconnected.\", 1);\n- this._handleEvent(\"ondisconnect\");\n- this._handleEvent(\"onerror\", JSJaCError(\"503\", \"cancel\", \"service-unavailable\"));\n- return\n- }\n- this._sid = a.getAttribute(\"sid\");\n- this.oDbg.log(\"got sid: \" + this._sid, 2);\n- if (a.getAttribute(\"polling\")) {\n- this._min_polling = a.getAttribute(\"polling\")\n- }\n- if (a.getAttribute(\"inactivity\")) {\n- this._inactivity = a.getAttribute(\"inactivity\")\n- }\n- if (a.getAttribute(\"requests\")) {\n- this._setHold(a.getAttribute(\"requests\") - 1)\n- }\n- this.oDbg.log(\"set hold to \" + this._getHold(), 2);\n- if (a.getAttribute(\"ver\")) {\n- this._bosh_version = a.getAttribute(\"ver\")\n- }\n- if (a.getAttribute(\"maxpause\")) {\n- this._pause = Number.min(a.getAttribute(\"maxpause\"), JSJACHBC_MAXPAUSE)\n- }\n- this.setPollInterval(this._timerval);\n- this._connected = true;\n- this._inQto = setInterval(JSJaC.bind(this._checkInQ, this), JSJAC_CHECKINQUEUEINTERVAL);\n- this._interval = setInterval(JSJaC.bind(this._checkQueue, this), JSJAC_CHECKQUEUEINTERVAL);\n- this._getStreamID(c)\n-};\n-JSJaCHttpBindingConnection.prototype._parseResponse = function(c) {\n- if (!this.connected() || !c) {\n- return null\n- }\n- var b = c.r;\n- try {\n- if (b.status == 404 || b.status == 403) {\n- this._abort();\n- return null\n- }\n- if (b.status != 200 || !b.responseXML) {\n- this._errcnt++;\n- var g = \"invalid response (\" + b.status + \"):\\n\" + b.getAllResponseHeaders() + \"\\n\" + b.responseText;\n- if (!b.responseXML) {\n- g += \"\\nResponse failed to parse!\"\n- }\n- this.oDbg.log(g, 1);\n- if (this._errcnt > JSJAC_ERR_COUNT) {\n- this._abort();\n- return null\n- }\n- if (this.connected()) {\n- this.oDbg.log(\"repeating (\" + this._errcnt + \")\", 1);\n- this._setStatus(\"proto_error_fallback\");\n- setTimeout(JSJaC.bind(this._resume, this), this.getPollInterval())\n- }\n- return null\n- }\n- } catch (d) {\n- this.oDbg.log(\"XMLHttpRequest error: status not available\", 1);\n- this._errcnt++;\n- if (this._errcnt > JSJAC_ERR_COUNT) {\n- this._abort()\n- } else {\n- if (this.connected()) {\n- this.oDbg.log(\"repeating (\" + this._errcnt + \")\", 1);\n- this._setStatus(\"proto_error_fallback\");\n- setTimeout(JSJaC.bind(this._resume, this), this.getPollInterval())\n- }\n- }\n- return null\n- }\n- var a = b.responseXML.documentElement;\n- if (!a || a.tagName != \"body\" || a.namespaceURI != \"http://jabber.org/protocol/httpbind\") {\n- this.oDbg.log(\"invalid response:\\n\" + b.responseText, 1);\n- clearTimeout(this._timeout);\n- clearInterval(this._interval);\n- clearInterval(this._inQto);\n- this._connected = false;\n- this.oDbg.log(\"Disconnected.\", 1);\n- this._handleEvent(\"ondisconnect\");\n- this._setStatus(\"internal_server_error\");\n- this._handleEvent(\"onerror\", JSJaCError(\"500\", \"wait\", \"internal-server-error\"));\n- return null\n- }\n- if (typeof(c.rid) != \"undefined\" && this._last_requests[c.rid]) {\n- if (this._last_requests[c.rid].handled) {\n- this.oDbg.log(\"already handled \" + c.rid, 2);\n- return null\n- } else {\n- this._last_requests[c.rid].handled = true\n- }\n- }\n- if (a.getAttribute(\"type\") == \"terminate\") {\n- this.oDbg.log(\"session terminated:\\n\" + b.responseText, 1);\n- clearTimeout(this._timeout);\n- clearInterval(this._interval);\n- clearInterval(this._inQto);\n- var f = a.getAttribute(\"condition\");\n- if (f == \"remote-stream-error\") {\n- if (a.getElementsByTagName(\"conflict\").length > 0) {\n- this._setStatus(\"session-terminate-conflict\")\n- }\n- }\n- if (f == null) {\n- f = \"session-terminate\"\n- }\n- this._handleEvent(\"onerror\", JSJaCError(\"503\", \"cancel\", f));\n- this._connected = false;\n- this.oDbg.log(\"Disconnected.\", 1);\n- this._handleEvent(\"ondisconnect\");\n- return null\n- }\n- this._errcnt = 0;\n- return b.responseXML.documentElement\n-};\n-JSJaCHttpBindingConnection.prototype._reInitStream = function(c, b, a) {\n- this._reinit = true;\n- b.call(this, a)\n-};\n-JSJaCHttpBindingConnection.prototype._resume = function() {\n- if (this._pause == 0 && this._rid >= this._last_rid) {\n- this._rid = this._last_rid - 1\n- }\n- this._process()\n-};\n-JSJaCHttpBindingConnection.prototype._setHold = function(a) {\n- if (!a || isNaN(a) || a < 0) {\n- a = 0\n- } else {\n- if (a > JSJACHBC_MAX_HOLD) {\n- a = JSJACHBC_MAX_HOLD\n- }\n- }\n- this._hold = a;\n- return this._hold\n-};\n-JSJaCHttpBindingConnection.prototype._setupRequest = function(a) {\n- var c = new Object();\n- var b = XmlHttp.create();\n- try {\n- b.open(\"POST\", this._httpbase, a);\n- b.setRequestHeader(\"Content-Type\", \"text/xml; charset=utf-8\")\n- } catch (d) {\n- this.oDbg.log(d, 1)\n- }\n- c.r = b;\n- this._rid++;\n- c.rid = this._rid;\n- return c\n-};\n-JSJaCHttpBindingConnection.prototype._suspend = function() {\n- if (this._pause == 0) {\n- return\n- }\n- var c = this._getFreeSlot();\n- this._req[c] = this._setupRequest(false);\n- var b = \"\";\n- while (this._pQueue.length) {\n- var a = this._pQueue[0];\n- b += a;\n- this._pQueue = this._pQueue.slice(1, this._pQueue.length)\n- }\n- b += \"\";\n- this.oDbg.log(\"Disconnecting: \" + b, 4);\n- this._req[c].r.send(b)\n-};\n+var ERR_UNEXPECTED_REQUEST = STANZA_ERROR(\"400\", \"wait\", \"unexpected-request\");\n"}]}, {"source1": "./usr/share/javascript/jsjac/jsjac.uncompressed.js", "source2": "./usr/share/javascript/jsjac/jsjac.uncompressed.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -5690,8 +5690,371 @@\n function cnonce(size) {\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n var cnonce = '';\n for (var i = 0; i < size; i++) {\n cnonce += tab.charAt(Math.round(Math.random(new Date().getTime()) * (tab.length - 1)));\n }\n return cnonce;\n+}\n+/* Copyright (c) 2005-2007 Sam Stephenson\n+ *\n+ * Permission is hereby granted, free of charge, to any person\n+ * obtaining a copy of this software and associated documentation\n+ * files (the \"Software\"), to deal in the Software without\n+ * restriction, including without limitation the rights to use, copy,\n+ * modify, merge, publish, distribute, sublicense, and/or sell copies\n+ * of the Software, and to permit persons to whom the Software is\n+ * furnished to do so, subject to the following conditions:\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+ * SOFTWARE.\n+ */\n+\n+/*\n+ json.js\n+ taken from prototype.js, made static\n+*/\n+function JSJaCJSON() {}\n+JSJaCJSON.toString = function(obj) {\n+ var m = {\n+ '\\b': '\\\\b',\n+ '\\t': '\\\\t',\n+ '\\n': '\\\\n',\n+ '\\f': '\\\\f',\n+ '\\r': '\\\\r',\n+ '\"': '\\\\\"',\n+ '\\\\': '\\\\\\\\'\n+ },\n+ s = {\n+ array: function(x) {\n+ var a = ['['],\n+ b, f, i, l = x.length,\n+ v;\n+ for (i = 0; i < l; i += 1) {\n+ v = x[i];\n+ f = s[typeof v];\n+ if (f) {\n+ try {\n+ v = f(v);\n+ if (typeof v == 'string') {\n+ if (b) {\n+ a[a.length] = ',';\n+ }\n+ a[a.length] = v;\n+ b = true;\n+ }\n+ } catch (e) {}\n+ }\n+ }\n+ a[a.length] = ']';\n+ return a.join('');\n+ },\n+ 'boolean': function(x) {\n+ return String(x);\n+ },\n+ 'null': function(x) {\n+ return \"null\";\n+ },\n+ number: function(x) {\n+ return isFinite(x) ? String(x) : 'null';\n+ },\n+ object: function(x) {\n+ if (x) {\n+ if (x instanceof Array) {\n+ return s.array(x);\n+ }\n+ var a = ['{'],\n+ b, f, i, v;\n+ for (i in x) {\n+ if (x.hasOwnProperty(i)) {\n+ v = x[i];\n+ f = s[typeof v];\n+ if (f) {\n+ try {\n+ v = f(v);\n+ if (typeof v == 'string') {\n+ if (b) {\n+ a[a.length] = ',';\n+ }\n+ a.push(s.string(i), ':', v);\n+ b = true;\n+ }\n+ } catch (e) {}\n+ }\n+ }\n+ }\n+\n+ a[a.length] = '}';\n+ return a.join('');\n+ }\n+ return 'null';\n+ },\n+ string: function(x) {\n+ if (/[\"\\\\\\x00-\\x1f]/.test(x)) {\n+ x = x.replace(/([\\x00-\\x1f\\\\\"])/g, function(a, b) {\n+ var c = m[b];\n+ if (c) {\n+ return c;\n+ }\n+ c = b.charCodeAt();\n+ return '\\\\u00' +\n+ Math.floor(c / 16).toString(16) +\n+ (c % 16).toString(16);\n+ });\n+ }\n+ return '\"' + x + '\"';\n+ }\n+ };\n+\n+ switch (typeof(obj)) {\n+ case 'object':\n+ return s.object(obj);\n+ case 'array':\n+ return s.array(obj);\n+\n+ }\n+};\n+\n+JSJaCJSON.parse = function(str) {\n+ try {\n+ return !(/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/.test(\n+ str.replace(/\"(\\\\.|[^\"\\\\])*\"/g, ''))) &&\n+ eval('(' + str + ')');\n+ } catch (e) {\n+ return false;\n+ }\n+};\n+\n+/* Copyright 2006 Erik Arvidsson\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\"); you\n+ * may not use this file except in compliance with the License. You\n+ * may obtain a copy of the License at\n+ *\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n+ * implied. See the License for the specific language governing\n+ * permissions and limitations under the License.\n+ */\n+\n+/**\n+ * @fileoverview Wrapper to make working with XmlHttpRequest and the\n+ * DOM more convenient (cross browser compliance).\n+ * this code is taken from\n+ * http://webfx.eae.net/dhtml/xmlextras/xmlextras.html\n+ * @author Stefan Strigler steve@zeank.in-berlin.de\n+ * @version $Revision$\n+ */\n+\n+/**\n+ * XmlHttp factory\n+ * @private\n+ */\n+function XmlHttp() {}\n+\n+/**\n+ * creates a cross browser compliant XmlHttpRequest object\n+ */\n+XmlHttp.create = function() {\n+ try {\n+ if (window.XMLHttpRequest) {\n+ var req = new XMLHttpRequest();\n+\n+ // some versions of Moz do not support the readyState property\n+ // and the onreadystate event so we patch it!\n+ if (req.readyState == null) {\n+ req.readyState = 1;\n+ req.addEventListener(\"load\", function() {\n+ req.readyState = 4;\n+ if (typeof req.onreadystatechange == \"function\")\n+ req.onreadystatechange();\n+ }, false);\n+ }\n+\n+ return req;\n+ }\n+ if (window.ActiveXObject) {\n+ return new ActiveXObject(XmlHttp.getPrefix() + \".XmlHttp\");\n+ }\n+ } catch (ex) {}\n+ // fell through\n+ throw new Error(\"Your browser does not support XmlHttp objects\");\n+};\n+\n+/**\n+ * used to find the Automation server name\n+ * @private\n+ */\n+XmlHttp.getPrefix = function() {\n+ if (XmlHttp.prefix) // I know what you did last summer\n+ return XmlHttp.prefix;\n+\n+ var prefixes = [\"MSXML2\", \"Microsoft\", \"MSXML\", \"MSXML3\"];\n+ var o;\n+ for (var i = 0; i < prefixes.length; i++) {\n+ try {\n+ // try to create the objects\n+ o = new ActiveXObject(prefixes[i] + \".XmlHttp\");\n+ return XmlHttp.prefix = prefixes[i];\n+ } catch (ex) {};\n+ }\n+\n+ throw new Error(\"Could not find an installed XML parser\");\n+};\n+\n+\n+/**\n+ * XmlDocument factory\n+ * @private\n+ */\n+function XmlDocument() {}\n+\n+XmlDocument.create = function(name, ns) {\n+ name = name || 'foo';\n+ ns = ns || '';\n+\n+ try {\n+ var doc;\n+ // DOM2\n+ if (document.implementation && document.implementation.createDocument) {\n+ doc = document.implementation.createDocument(ns, name, null);\n+ // some versions of Moz do not support the readyState property\n+ // and the onreadystate event so we patch it!\n+ if (doc.readyState == null) {\n+ doc.readyState = 1;\n+ doc.addEventListener(\"load\", function() {\n+ doc.readyState = 4;\n+ if (typeof doc.onreadystatechange == \"function\")\n+ doc.onreadystatechange();\n+ }, false);\n+ }\n+ } else if (window.ActiveXObject) {\n+ doc = new ActiveXObject(XmlDocument.getPrefix() + \".DomDocument\");\n+ }\n+\n+ if (!doc.documentElement || doc.documentElement.tagName != name ||\n+ (doc.documentElement.namespaceURI &&\n+ doc.documentElement.namespaceURI != ns)) {\n+ try {\n+ if (ns != '')\n+ doc.appendChild(doc.createElement(name)).\n+ setAttribute('xmlns', ns);\n+ else\n+ doc.appendChild(doc.createElement(name));\n+ } catch (dex) {\n+ doc = document.implementation.createDocument(ns, name, null);\n+\n+ if (doc.documentElement == null)\n+ doc.appendChild(doc.createElement(name));\n+\n+ // fix buggy opera 8.5x\n+ if (ns != '' &&\n+ doc.documentElement.getAttribute('xmlns') != ns) {\n+ doc.documentElement.setAttribute('xmlns', ns);\n+ }\n+ }\n+ }\n+\n+ return doc;\n+ } catch (ex) {}\n+ throw new Error(\"Your browser does not support XmlDocument objects\");\n+};\n+\n+/**\n+ * used to find the Automation server name\n+ * @private\n+ */\n+XmlDocument.getPrefix = function() {\n+ if (XmlDocument.prefix)\n+ return XmlDocument.prefix;\n+\n+ var prefixes = [\"MSXML2\", \"Microsoft\", \"MSXML\", \"MSXML3\"];\n+ var o;\n+ for (var i = 0; i < prefixes.length; i++) {\n+ try {\n+ // try to create the objects\n+ o = new ActiveXObject(prefixes[i] + \".DomDocument\");\n+ return XmlDocument.prefix = prefixes[i];\n+ } catch (ex) {};\n+ }\n+\n+ throw new Error(\"Could not find an installed XML parser\");\n+};\n+\n+\n+// Create the loadXML method\n+if (typeof(Document) != 'undefined' && window.DOMParser) {\n+\n+ /**\n+ * XMLDocument did not extend the Document interface in some\n+ * versions of Mozilla.\n+ * @private\n+ */\n+ Document.prototype.loadXML = function(s) {\n+\n+ // parse the string to a new doc\n+ var doc2 = (new DOMParser()).parseFromString(s, \"text/xml\");\n+\n+ // remove all initial children\n+ while (this.hasChildNodes())\n+ this.removeChild(this.lastChild);\n+\n+ // insert and import nodes\n+ for (var i = 0; i < doc2.childNodes.length; i++) {\n+ this.appendChild(this.importNode(doc2.childNodes[i], true));\n+ }\n+ };\n+}\n+\n+// Create xml getter for Mozilla\n+if (window.XMLSerializer &&\n+ window.Node && Node.prototype && Node.prototype.__defineGetter__) {\n+\n+ /**\n+ * xml getter\n+ *\n+ * This serializes the DOM tree to an XML String\n+ *\n+ * Usage: var sXml = oNode.xml\n+ * @deprecated\n+ * @private\n+ */\n+ // XMLDocument did not extend the Document interface in some versions\n+ // of Mozilla. Extend both!\n+ XMLDocument.prototype.__defineGetter__(\"xml\", function() {\n+ return (new XMLSerializer()).serializeToString(this);\n+ });\n+ /**\n+ * xml getter\n+ *\n+ * This serializes the DOM tree to an XML String\n+ *\n+ * Usage: var sXml = oNode.xml\n+ * @deprecated\n+ * @private\n+ */\n+ Document.prototype.__defineGetter__(\"xml\", function() {\n+ return (new XMLSerializer()).serializeToString(this);\n+ });\n+\n+ /**\n+ * xml getter\n+ *\n+ * This serializes the DOM tree to an XML String\n+ *\n+ * Usage: var sXml = oNode.xml\n+ * @deprecated\n+ * @private\n+ */\n+ Node.prototype.__defineGetter__(\"xml\", function() {\n+ return (new XMLSerializer()).serializeToString(this);\n+ });\n }\n"}]}]}]}]}]}