diff --git a/Documentation/Books/AQL/Examples/Join.md b/Documentation/Books/AQL/Examples/Join.md
index a4cd13da29..668b3914c8 100644
--- a/Documentation/Books/AQL/Examples/Join.md
+++ b/Documentation/Books/AQL/Examples/Join.md
@@ -15,54 +15,24 @@ Relationships are established by using the *friendOf* and *thisUser* attributes
We'll start with a SQL-ish result set and return each tuple (user name, friends userId)
separately. The AQL query to generate such result is:
-```js
-FOR u IN users
- FILTER u.active == true
- LIMIT 0, 4
- FOR f IN relations
- FILTER f.type == "friend" && f.friendOf == u.userId
- RETURN {
- "user" : u.name,
- "friendId" : f.thisUser
- }
-```
-```json
-[
- {
- "user" : "Abigail",
- "friendId" : 108
- },
- {
- "user" : "Abigail",
- "friendId" : 102
- },
- {
- "user" : "Abigail",
- "friendId" : 106
- },
- {
- "user" : "Fred",
- "friendId" : 209
- },
- {
- "user" : "Mary",
- "friendId" : 207
- },
- {
- "user" : "Mary",
- "friendId" : 104
- },
- {
- "user" : "Mariah",
- "friendId" : 203
- },
- {
- "user" : "Mariah",
- "friendId" : 205
- }
-]
-```
+ @startDocuBlockInline joinTuples
+ @EXAMPLE_AQL{joinTuples}
+ @DATASET{joinSampleDataset}
+ FOR u IN users
+ FILTER u.active == true
+ LIMIT 0, 4
+ FOR f IN relations
+ FILTER f.type == @friend && f.friendOf == u.userId
+ RETURN {
+ "user" : u.name,
+ "friendId" : f.thisUser
+ }
+ @BV {
+ friend: "friend"
+ }
+ @END_EXAMPLE_AQL
+ @endDocuBlock joinTuples
We iterate over the collection users. Only the 'active' users will be examined.
For each of these users we will search for up to 4 friends. We locate friends
diff --git a/Documentation/Books/AQL/Graphs/Traversals.md b/Documentation/Books/AQL/Graphs/Traversals.md
index 125a599b7f..67bfca5211 100644
--- a/Documentation/Books/AQL/Graphs/Traversals.md
+++ b/Documentation/Books/AQL/Graphs/Traversals.md
@@ -350,12 +350,27 @@ Now let's have a look what the optimizer does behind the curtain and inspect
traversal queries using [the explainer](../ExecutionAndPerformance/Optimizer.md):
@startDocuBlockInline GRAPHTRAV_07_traverse_7
- @EXAMPLE_ARANGOSH_OUTPUT{GRAPHTRAV_07_traverse_7}
- db._explain("FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph' LET localScopeVar = RAND() > 0.5 FILTER p.edges[0].theTruth != localScopeVar RETURN v._key", {}, {colors: false});
- db._explain("FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph' FILTER p.edges[0].label == 'right_foo' RETURN v._key", {}, {colors: false});
- @END_EXAMPLE_ARANGOSH_OUTPUT
+ @EXAMPLE_AQL{GRAPHTRAV_07_traverse_7}
+ @DATASET{traversalGraph}
+ @EXPLAIN{TRUE}
+ FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph'
+ LET localScopeVar = RAND() > 0.5
+ FILTER p.edges[0].theTruth != localScopeVar
+ RETURN v._key
+ @END_EXAMPLE_AQL
@endDocuBlock GRAPHTRAV_07_traverse_7
+
+ @startDocuBlockInline GRAPHTRAV_07_traverse_8
+ @EXAMPLE_AQL{GRAPHTRAV_07_traverse_8}
+ @DATASET{traversalGraph}
+ @EXPLAIN{TRUE}
+ FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph'
+ FILTER p.edges[0].label == 'right_foo'
+ RETURN v._key
+ @END_EXAMPLE_AQL
+ @endDocuBlock GRAPHTRAV_07_traverse_8
+
We now see two queries: In one we add a variable *localScopeVar*, which is outside
the scope of the traversal itself - it is not known inside of the traverser.
Therefore, this filter can only be executed after the traversal, which may be
diff --git a/Documentation/Examples/AQLEXP_11_explainjs.generated b/Documentation/Examples/AQLEXP_11_explainjs.generated
index 9e3e4e2750..c6af862777 100644
--- a/Documentation/Examples/AQLEXP_11_explainjs.generated
+++ b/Documentation/Examples/AQLEXP_11_explainjs.generated
@@ -8,9 +8,9 @@ Execution plan:
1 SingletonNode 1 * ROOT
2 CalculationNode 1 - LET #5 = 1 .. 10 /* range */ /* simple expression */
3 EnumerateListNode 10 - FOR x IN #5 /* list iteration */
- 4 CalculationNode 10 - LET then = DATE_NOW() /* v8 expression */
+ 4 CalculationNode 10 - LET then = DATE_NOW() /* simple expression */
6 EnumerateListNode 100 - FOR y IN #5 /* list iteration */
- 7 CalculationNode 100 - LET now = DATE_NOW() /* v8 expression */
+ 7 CalculationNode 100 - LET now = DATE_NOW() /* simple expression */
8 CalculationNode 100 - LET nowstr = CONCAT(now, x, y, then) /* simple expression */
9 ReturnNode 100 - RETURN nowstr
@@ -32,7 +32,7 @@ Execution plan:
Id NodeType Est. Comment
1 SingletonNode 1 * ROOT
3 CalculationNode 1 - LET #4 = 1 .. 10 /* range */ /* simple expression */
- 2 CalculationNode 1 - LET now = DATE_NOW() /* v8 expression */
+ 2 CalculationNode 1 - LET now = DATE_NOW() /* simple expression */
4 EnumerateListNode 10 - FOR x IN #4 /* list iteration */
6 EnumerateListNode 100 - FOR y IN #4 /* list iteration */
7 CalculationNode 100 - LET nowstr = CONCAT(now, x, y, now) /* simple expression */
diff --git a/Documentation/Examples/GRAPHTRAV_07_traverse_7.generated b/Documentation/Examples/GRAPHTRAV_07_traverse_7.generated
index e1943250e3..e48fc47fc3 100644
--- a/Documentation/Examples/GRAPHTRAV_07_traverse_7.generated
+++ b/Documentation/Examples/GRAPHTRAV_07_traverse_7.generated
@@ -1,63 +1,38 @@
-arangosh> db._explain("FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph' LET localScopeVar = RAND() > 0.5 FILTER p.edges[0].theTruth != localScopeVar RETURN v._key", {}, {colors: false});
-Query string:
- FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph' LET localScopeVar = RAND() > 0.5
- FILTER p.edges[0].theTruth != localScopeVar RETURN v._key
+@Q:
+ FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph'
+ LET localScopeVar = RAND() > 0.5
+ FILTER p.edges[0].theTruth != localScopeVar
+ RETURN v._key
-Execution plan:
- Id NodeType Est. Comment
- 1 SingletonNode 1 * ROOT
- 2 TraversalNode 1 - FOR v /* vertex */, p /* paths */ IN 1..3 /* min..maxPathDepth */ OUTBOUND 'circles/A' /* startnode */ GRAPH 'traversalGraph'
- 3 CalculationNode 1 - LET localScopeVar = (RAND() > 0.5) /* simple expression */
- 4 CalculationNode 1 - LET #6 = (p.`edges`[0].`theTruth` != localScopeVar) /* simple expression */
- 5 FilterNode 1 - FILTER #6
- 6 CalculationNode 1 - LET #8 = v.`_key` /* attribute expression */
- 7 ReturnNode 1 - RETURN #8
+@R
+Query string:
+ FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph'
+ LET localScopeVar = RAND() > 0.5
+ FILTER p.edges[0].theTruth != localScopeVar
+ RETURN v._key
+
-Indexes used:
- By Type Collection Unique Sparse Selectivity Fields Ranges
- 2 edge edges false false 85.00 % [ `_from`, `_to` ] base OUTBOUND
+Execution plan:
+ Id NodeType Est. Comment
+ 1 SingletonNode 1 * ROOT
+ 2 TraversalNode 1 - FOR v /* vertex */, p /* paths */ IN 1..3 /* min..maxPathDepth */ OUTBOUND 'circles/A' /* startnode */ GRAPH 'traversalGraph'
+ 3 CalculationNode 1 - LET localScopeVar = (RAND() > 0.5) /* simple expression */
+ 4 CalculationNode 1 - LET #6 = (p.`edges`[0].`theTruth` != localScopeVar) /* simple expression */
+ 5 FilterNode 1 - FILTER #6
+ 6 CalculationNode 1 - LET #8 = v.`_key` /* attribute expression */
+ 7 ReturnNode 1 - RETURN #8
-Traversals on graphs:
- Id Depth Vertex collections Edge collections Options Filter conditions
- 2 1..3 circles edges uniqueVertices: none, uniqueEdges: path
+Indexes used:
+ By Type Collection Unique Sparse Selectivity Fields Ranges
+ 2 edge edges false false 85.00 % [ `_from`, `_to` ] base OUTBOUND
-Optimization rules applied:
- Id RuleName
- 1 move-calculations-up
- 2 optimize-traversals
- 3 move-calculations-down
-
-
-arangosh> db._explain("FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph' FILTER p.edges[0].label == 'right_foo' RETURN v._key", {}, {colors: false});
-Query string:
- FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph' FILTER p.edges[0].label == 'right_foo'
- RETURN v._key
-
-Execution plan:
- Id NodeType Est. Comment
- 1 SingletonNode 1 * ROOT
- 2 TraversalNode 1 - FOR v /* vertex */ IN 1..3 /* min..maxPathDepth */ OUTBOUND 'circles/A' /* startnode */ GRAPH 'traversalGraph'
- 5 CalculationNode 1 - LET #7 = v.`_key` /* attribute expression */
- 6 ReturnNode 1 - RETURN #7
-
-Indexes used:
- By Type Collection Unique Sparse Selectivity Fields Ranges
- 2 edge edges false false 85.00 % [ `_from`, `_to` ] base OUTBOUND
- 2 edge edges false false 85.00 % [ `_from`, `_to` ] level 0 OUTBOUND
-
-Traversals on graphs:
- Id Depth Vertex collections Edge collections Options Filter conditions
- 2 1..3 circles edges uniqueVertices: none, uniqueEdges: path (p.`edges`[0].`label` == "right_foo")
-
-Optimization rules applied:
- Id RuleName
- 1 move-calculations-up
- 2 move-filters-up
- 3 move-calculations-up-2
- 4 move-filters-up-2
- 5 optimize-traversals
- 6 remove-filter-covered-by-traversal
- 7 remove-unnecessary-calculations-2
- 8 remove-redundant-path-var
+Traversals on graphs:
+ Id Depth Vertex collections Edge collections Options Filter conditions
+ 2 1..3 circles edges uniqueVertices: none, uniqueEdges: path
+Optimization rules applied:
+ Id RuleName
+ 1 move-calculations-up
+ 2 optimize-traversals
+ 3 move-calculations-down
diff --git a/Documentation/Examples/MOD_06b_routingCurlRedirect.generated b/Documentation/Examples/MOD_06b_routingCurlRedirect.generated
index deb24457e0..c42e03a550 100644
--- a/Documentation/Examples/MOD_06b_routingCurlRedirect.generated
+++ b/Documentation/Examples/MOD_06b_routingCurlRedirect.generated
@@ -1,8 +1,8 @@
shell> curl --dump - http://localhost:8529/redirectMe
HTTP/1.1 301 Moved Permanently
-x-content-type-options: nosniff
content-type: text/html
+x-content-type-options: nosniff
location: /somewhere.else/
"<html><head><title>Moved</title></head><body><h1>Moved</h1><p>This page has moved to <a href=\"/somewhere.else/\">/somewhere.else/</a>.</p></body></html>"
diff --git a/Documentation/Examples/RestReplicationDumpEmpty.generated b/Documentation/Examples/RestReplicationDumpEmpty.generated
index 5d5632de37..0f6a205e5c 100644
--- a/Documentation/Examples/RestReplicationDumpEmpty.generated
+++ b/Documentation/Examples/RestReplicationDumpEmpty.generated
@@ -1,8 +1,8 @@
shell> curl --dump - http://localhost:8529/_api/replication/dump?collection=testCollection
HTTP/1.1 204 No Content
-x-content-type-options: nosniff
content-type: application/x-arango-dump; charset=utf-8
-x-arango-replication-checkmore: false
+x-content-type-options: nosniff
x-arango-replication-lastincluded: 0
+x-arango-replication-checkmore: false
diff --git a/Documentation/Examples/RestViewDeleteViewIdentifier.generated b/Documentation/Examples/RestViewDeleteViewIdentifier.generated
new file mode 100644
index 0000000000..c14ecdc18b
--- /dev/null
+++ b/Documentation/Examples/RestViewDeleteViewIdentifier.generated
@@ -0,0 +1,11 @@
+shell> curl -X DELETE --dump - http://localhost:8529/_api/view/15056
+
+HTTP/1.1 200 OK
+content-type: application/json; charset=utf-8
+x-content-type-options: nosniff
+
+{
+ "error" : false,
+ "code" : 200,
+ "result" : true
+}
diff --git a/Documentation/Examples/RestViewGetViewPropertiesIdentifier.generated b/Documentation/Examples/RestViewGetViewPropertiesIdentifier.generated
new file mode 100644
index 0000000000..8c98b175a0
--- /dev/null
+++ b/Documentation/Examples/RestViewGetViewPropertiesIdentifier.generated
@@ -0,0 +1,37 @@
+shell> curl --dump - http://localhost:8529/_api/view/15071/properties
+
+HTTP/1.1 200 OK
+content-type: application/json; charset=utf-8
+x-content-type-options: nosniff
+
+{
+ "collections" : [ ],
+ "commit" : {
+ "cleanupIntervalStep" : 10,
+ "commitIntervalMsec" : 60000,
+ "commitTimeoutMsec" : 5000,
+ "consolidate" : {
+ "bytes" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ },
+ "bytes_accum" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ },
+ "count" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ },
+ "fill" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ }
+ }
+ },
+ "locale" : "c.UTF-8",
+ "threadsMaxIdle" : 5,
+ "threadsMaxTotal" : 5,
+ "links" : {
+ }
+}
diff --git a/Documentation/Examples/RestViewPostView.generated b/Documentation/Examples/RestViewPostView.generated
new file mode 100644
index 0000000000..a121b4bccf
--- /dev/null
+++ b/Documentation/Examples/RestViewPostView.generated
@@ -0,0 +1,18 @@
+shell> curl -X POST --data-binary @- --dump - http://localhost:8529/_api/view <<EOF
+{
+ "name" : "testViewBasics",
+ "type" : "arangosearch",
+ "properties" : {
+ }
+}
+EOF
+
+HTTP/1.1 201 Created
+content-type: application/json; charset=utf-8
+x-content-type-options: nosniff
+
+{
+ "id" : "15079",
+ "name" : "testViewBasics",
+ "type" : "arangosearch"
+}
diff --git a/Documentation/Examples/RestViewPutViewRename.generated b/Documentation/Examples/RestViewPutViewRename.generated
new file mode 100644
index 0000000000..ceaacfa434
--- /dev/null
+++ b/Documentation/Examples/RestViewPutViewRename.generated
@@ -0,0 +1,46 @@
+shell> curl -X PUT --data-binary @- --dump - http://localhost:8529/_api/view/products1/rename <<EOF
+{
+ "name" : "viewNewName"
+}
+EOF
+
+HTTP/1.1 200 OK
+content-type: application/json; charset=utf-8
+x-content-type-options: nosniff
+
+{
+ "id" : "15081",
+ "name" : "viewNewName",
+ "type" : "arangosearch",
+ "properties" : {
+ "collections" : [ ],
+ "commit" : {
+ "cleanupIntervalStep" : 10,
+ "commitIntervalMsec" : 60000,
+ "commitTimeoutMsec" : 5000,
+ "consolidate" : {
+ "bytes" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ },
+ "bytes_accum" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ },
+ "count" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ },
+ "fill" : {
+ "segmentThreshold" : 300,
+ "threshold" : 0.8500000238418579
+ }
+ }
+ },
+ "locale" : "C",
+ "threadsMaxIdle" : 5,
+ "threadsMaxTotal" : 5,
+ "links" : {
+ }
+ }
+}
diff --git a/Documentation/Examples/collectionDatabaseName.generated b/Documentation/Examples/collectionDatabaseName.generated
index edb261b6ef..b9dd6250ae 100644
--- a/Documentation/Examples/collectionDatabaseName.generated
+++ b/Documentation/Examples/collectionDatabaseName.generated
@@ -1,2 +1,2 @@
arangosh> db._collection("demo");
-[ArangoCollection 92, "demo" (type document, status loaded)]
+[ArangoCollection 88, "demo" (type document, status loaded)]
diff --git a/Documentation/Examples/collectionDatabaseNameKnown.generated b/Documentation/Examples/collectionDatabaseNameKnown.generated
index edb261b6ef..b9dd6250ae 100644
--- a/Documentation/Examples/collectionDatabaseNameKnown.generated
+++ b/Documentation/Examples/collectionDatabaseNameKnown.generated
@@ -1,2 +1,2 @@
arangosh> db._collection("demo");
-[ArangoCollection 92, "demo" (type document, status loaded)]
+[ArangoCollection 88, "demo" (type document, status loaded)]
diff --git a/Documentation/Examples/cursorCountLimit.generated b/Documentation/Examples/cursorCountLimit.generated
index b890ec44ee..825b8f222b 100644
--- a/Documentation/Examples/cursorCountLimit.generated
+++ b/Documentation/Examples/cursorCountLimit.generated
@@ -1,2 +1,2 @@
arangosh> db.five.all().limit(2).count(true);
-2
+null
diff --git a/Documentation/Examples/generalGraphModuleCommonNeighbors1.generated b/Documentation/Examples/generalGraphModuleCommonNeighbors1.generated
index 44890bf2c4..078d134b2a 100644
--- a/Documentation/Examples/generalGraphModuleCommonNeighbors1.generated
+++ b/Documentation/Examples/generalGraphModuleCommonNeighbors1.generated
@@ -7,17 +7,17 @@ arangosh> graph._commonNeighbors({isCapital :
"right" : "frenchCity/Paris",
"neighbors" : [
"frenchCity/Lyon",
- "germanCity/Cologne",
- "germanCity/Hamburg"
+ "germanCity/Hamburg",
+ "germanCity/Cologne"
]
},
{
"left" : "frenchCity/Paris",
"right" : "germanCity/Berlin",
"neighbors" : [
- "germanCity/Cologne",
+ "germanCity/Hamburg",
"frenchCity/Lyon",
- "germanCity/Hamburg"
+ "germanCity/Cologne"
]
}
]
diff --git a/Documentation/Examples/generalGraphModuleCommonNeighbors2.generated b/Documentation/Examples/generalGraphModuleCommonNeighbors2.generated
index 8d4e2a3092..d01d61023e 100644
--- a/Documentation/Examples/generalGraphModuleCommonNeighbors2.generated
+++ b/Documentation/Examples/generalGraphModuleCommonNeighbors2.generated
@@ -10,16 +10,16 @@ arangosh> graph._commonNeighbors(
"left" : "germanCity/Hamburg",
"right" : "germanCity/Cologne",
"neighbors" : [
- "frenchCity/Lyon",
- "frenchCity/Paris"
+ "frenchCity/Paris",
+ "frenchCity/Lyon"
]
},
{
"left" : "germanCity/Hamburg",
"right" : "germanCity/Berlin",
"neighbors" : [
- "frenchCity/Lyon",
"frenchCity/Paris",
+ "frenchCity/Lyon",
"germanCity/Cologne"
]
},
diff --git a/Documentation/Examples/job_getStatusById_02.generated b/Documentation/Examples/job_getStatusById_02.generated
new file mode 100644
index 0000000000..4e4539a0f0
--- /dev/null
+++ b/Documentation/Examples/job_getStatusById_02.generated
@@ -0,0 +1,22 @@
+shell> curl -X POST --header 'x-arango-async: store' --data-binary @- --dump - http://localhost:8529/_api/transaction <<EOF
+{
+ "collections" : {
+ "read" : [
+ "_frontend"
+ ]
+ },
+ "action" : "function () {require('internal').sleep(15.0);}"
+}
+EOF
+
+HTTP/1.1 202 Accepted
+content-type: text/plain; charset=utf-8
+x-content-type-options: nosniff
+x-arango-async-id: 152098435649405
+
+shell> curl --dump - http://localhost:8529/_api/job/152098435649405
+
+HTTP/1.1 204 No Content
+content-type: text/plain; charset=utf-8
+x-content-type-options: nosniff
+
diff --git a/Documentation/Examples/joinTuples.generated b/Documentation/Examples/joinTuples.generated
new file mode 100644
index 0000000000..92fd4e5f66
--- /dev/null
+++ b/Documentation/Examples/joinTuples.generated
@@ -0,0 +1,53 @@
+@Q:
+ FOR u IN users
+ FILTER u.active == true
+ LIMIT 0, 4
+ FOR f IN relations
+ FILTER f.type == @friend && f.friendOf == u.userId
+ RETURN {
+ "user" : u.name,
+ "friendId" : f.thisUser
+ }
+@B
+{
+ "friend": "friend"
+}
+@R
+[
+ {
+ "user": "Abigail",
+ "friendId": 2
+ },
+ {
+ "user": "Abigail",
+ "friendId": 3
+ },
+ {
+ "user": "Abigail",
+ "friendId": 4
+ },
+ {
+ "user": "Mary",
+ "friendId": 1
+ },
+ {
+ "user": "Mary",
+ "friendId": 4
+ },
+ {
+ "user": "Mariah",
+ "friendId": 1
+ },
+ {
+ "user": "Mariah",
+ "friendId": 2
+ },
+ {
+ "user": "Fred",
+ "friendId": 5
+ },
+ {
+ "user": "Fred",
+ "friendId": 2
+ }
+]
\ No newline at end of file
diff --git a/LICENSES-OTHER-COMPONENTS.md b/LICENSES-OTHER-COMPONENTS.md
index 62dec9c45d..889f95ee97 100644
--- a/LICENSES-OTHER-COMPONENTS.md
+++ b/LICENSES-OTHER-COMPONENTS.md
@@ -1,3 +1,12 @@
+- [Other Licenses](#other-licenses)
+ * [C/C++ Libraries](#cc-libraries)
+ * [Programs](#programs)
+ * [Javascript](#javascript)
+ + [Node core modules](#node-core-modules)
+ + [Bundled NPM modules](#bundled-npm-modules)
+ + [Backend libraries](#backend-libraries)
+ + [Frontend libraries](#frontend-libraries)
+
# Other Licenses
## C/C++ Libraries
@@ -176,10 +185,10 @@ exception from the GPL license:
* Project Home: https://github.com/chalk/ansi-styles#readme
* License: [MIT License](https://github.com/arangodb/arangodb/blob/devel/js/node/node_modules/chalk/node_modules/ansi-styles/package.json)
-#### ansi-styles
+#### ansi_up
-* Project Home: https://github.com/chalk/ansi-styles#readme
-* License: [MIT License](https://github.com/arangodb/arangodb/blob/devel/js/node/node_modules/eslint/node_modules/ansi-styles/package.json)
+* Project Home: https://github.com/drudru/ansi_up
+* License: [MIT License](https://github.com/drudru/ansi_up#license)
#### aqb
diff --git a/README_maintainers.md b/README_maintainers.md
index c5c27656e0..7c486575be 100644
--- a/README_maintainers.md
+++ b/README_maintainers.md
@@ -655,8 +655,8 @@ Here is how its details work:
- all code in between is executed as javascript in the **arangosh** while talking to a valid **arangod**.
You may inspect the generated js code in `/tmp/arangosh.examples.js`
-OUTPUT and RUN specifics
----------------------------
+OUTPUT, RUN and AQL specifics
+-----------------------------
By default, Examples should be self contained and thus not depend on each other. They should clean up the collections they create.
Building will fail if resources aren't cleaned.
However, if you intend a set of OUTPUT and RUN to demonstrate interactively and share generated *ids*, you have to use an alphabetical
@@ -694,6 +694,14 @@ sortable naming scheme so they're executed in sequence. Using `_ ansi_up.js
+ mv ./dist/ansi_up.js ./dist/ansi_up.js.include
+
+test:
+ @NODE_ENV=test ./node_modules/.bin/mocha \
+ --require should \
+ --reporter $(REPORTER) \
+ $(TESTS)
+
+test_verbose:
+ @NODE_ENV=test ./node_modules/.bin/mocha \
+ --require should \
+ --reporter spec \
+ $(TESTS)
+
+clean:
+ rm -rf ./node_modules ansi_up.js
+
+.PHONY: test
diff --git a/js/node/node_modules/ansi_up/Readme.md b/js/node/node_modules/ansi_up/Readme.md
new file mode 100644
index 0000000000..d176266ad0
--- /dev/null
+++ b/js/node/node_modules/ansi_up/Readme.md
@@ -0,0 +1,220 @@
+# ansi_up.js
+
+__ansi_up__ is a simple, easy to use library that provides a streaming API to
+transform text containing
+[ANSI color escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors) into proper HTML.
+It can also transform any text that looks like a URL into an HTML anchor tag.
+
+This module is a single Javascript file with no dependencies. It is a UMD style module so it
+can be utilized in a browser, in node.js (CommonJS), or with AMD (require.js). The source code
+was compiled from TypeScript and its type description ships with the NPM. This code has been used in production since 2011 and is actively maintained.
+
+For example, turn this terminal output:
+
+ ESC[1;Foreground
+ [1;30m 30 [1;30m 30 [1;30m 30 [1;30m 30 [1;30m 30 [1;30m 30 [1;30m 30 [1;30m 30 [0m
+ [1;31m 31 [1;31m 31 [1;31m 31 [1;31m 31 [1;31m 31 [1;31m 31 [1;31m 31 [1;31m 31 [0m
+ [1;32m 32 [1;32m 32 [1;32m 32 [1;32m 32 [1;32m 32 [1;32m 32 [1;32m 32 [1;32m 32 [0m
+ ...
+
+...into this browser output:
+
+
+
+
+## Browser Example
+
+```HTML
+
+
+```
+
+## Node Example
+
+```JavaScript
+ var AU = require('ansi_up');
+ var ansi_up = new AU.default;
+
+ var txt = "\n\n\033[1;33;40m 33;40 \033[1;33;41m 33;41 \033[1;33;42m 33;42 \033[1;33;43m 33;43 \033[1;33;44m 33;44 \033[1;33;45m 33;45 \033[1;33;46m 33;46 \033[1m\033[0\n\n\033[1;33;42m >> Tests OK\n\n"
+
+ var html = ansi_up.ansi_to_html(txt);
+```
+
+More examples are in the 'examples' directory in the repo.
+
+## Installation
+
+ $ npm install ansi_up
+
+## Versions
+
+Version 2.x is the latest stateful, streaming version of the API. It is simpler and more correct.
+Version 1.3.0 was the last of the older, deprecated API.
+
+## Quick Start
+
+1. Use whatever module system to import the _ansi_up_ module.
+2. Instantiate the object.
+3. For every piece of input that arrives, call **ansi_to_html**.
+4. Append the emitted HTML to the previous HTML already emitted.
+
+
+## API Methods
+
+In order to use _ansi_up_, you must Instantiate an object using your given module
+system.
+
+#### ansi_to_html (txt)
+
+This replaces ANSI terminal escape codes with SPAN tags that wrap the content. See the example output above.
+
+This function only interprets ANSI SGR (Select Graphic Rendition) codes that can be represented in HTML. For example, cursor movement codes are ignored and hidden from output.
+
+The default style uses colors that are very close to the prescribed standard. The standard assumes that the text will have a black background. These colors are set as inline styles on the SPAN tags. Another option is to set 'use_classes: true' in the options argument. This will instead set classes on the spans so the colors can be set via CSS. The class names used are of the format ````ansi-*-fg/bg```` and ````ansi-bright-*-fg/bg```` where * is the colour name, i.e black/red/green/yellow/blue/magenta/cyan/white. See the examples directory for a complete CSS theme for these classes.
+
+#### ansi_to_text (txt)
+
+This simply removes the ANSI escape codes from the stream.
+No escaping is done.
+
+#### linkify(txt)
+
+This replaces any links in the text with anchor tags that display the link.
+Only strings starting with 'http' or 'https', and surrounded by whitespace are
+considered valid patterns.
+You should only call this method if you can guarantee that the full URL
+will be passed into ansi_to_html(). If the URL is split along a buffer
+boundary, then the wrong URL will be 'linkified'.
+
+## Properties
+
+#### escape_for_html
+(default: true)
+
+This does the minimum escaping of text to make it compliant with HTML.
+In particular, the '&','<', and '>' characters are escaped.
+
+
+#### use_classes
+(default: false)
+
+This causes the SPAN tags to use class names for the color style instead
+of specified RGB values.
+
+## API Overview
+
+On a high level, _ansi_up_ takes a stream of text and transforms it proper HTML with colors.
+It does this by buffering the data and performing multiple passes over the
+stream. Each time it consumes data, it may or may not emit HTML. This HTML will always be
+proper HTML.
+
+Because this process requires buffering (ie. stateful), you must insantiate an _ansi_up_ object
+in order to begin. Also, text may be received later that is styled by a previous.
+
+The first pass converts characters that are unsafe for HTML into their equivalents. It will only
+convert '&', '<', and '>' characters. This pass is optional, and is on by default.
+
+The second pass converts any ANSI color sequences to HTML spans. It does this by recognizing
+what is termed as ANSI **SGR** codes. All ANSI sequences (SGR and non-SGR) are removed from the
+output stream. The SGR codes create HTML **SPAN** tags to surround text that is styled by those
+codes. If the ANSI sequence is incomplete, it will be held in _ansi_up_'s internal buffer
+until new data is received to complete it.
+
+The third and final pass transforms URLs to HTML anchors. This will also buffer output until a non URL
+character is received. This pass is optional, and is off by default.
+
+
+### Recommended Style of Use
+
+There are two ways to stream this data to a web page. A push model or a pull model.
+
+I have personally used a pull model to 'tail' a file.
+
+In my 'pull' model, I had a process generating a log file on a remote machine.
+I had a web server running on the same machine. I developed a simple page
+that used AJAX to poll the web server periodically. Specifically I used an
+HTTP/1.1 GET request with RFC 7233 Range query. The server would return
+either range response.
+
+I would then process each chunk received with _ansi_up_, and append the new
+spans to the innerHTML of a PRE tag.
+
+
+### UTF8 note
+
+One last important note, _ansi_up_ takes its input in the form of a Javascript string.
+These strings are UTF8. When you take the output of some program and send it to
+Javascript, there will be buffering. Be sure to not send incomplete UTF8 sequences or
+Javascript will ignore or drop the sequence from the stream when it converts it to a
+string.
+
+
+_ansi_up_ should be called via the functions defined on the module. It is recommended that the HTML is rendered with a monospace font and black background. See the examples, for a basic theme as a CSS definition.
+At the same, it also properly escapes HTML unsafe characters (&,<,>,etc.) into their proper HTML representation.
+
+
+## Building
+
+To build, a simple Makefile handles it all.
+
+```shell
+ $ make
+```
+
+## Running tests
+
+To run the tests for _ansi_up_, run `npm install` to install dev dependencies. Then:
+
+```shell
+ $ make test
+```
+
+## Credits
+
+This code was developed by Dru Nelson ().
+
+Thanks goes to the following contributors for their patches:
+
+- AIZAWA Hina ()
+- James R. White ()
+- Aaron Stone ()
+- Maximilian Antoni ()
+- Jim Bauwens ()
+- Jacek Jędrzejewski ()
+
+## License
+
+(The MIT License)
+
+Copyright (c) 2011 Dru Nelson
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/js/node/node_modules/ansi_up/ansi_up.js b/js/node/node_modules/ansi_up/ansi_up.js
new file mode 100644
index 0000000000..8a41ec1013
--- /dev/null
+++ b/js/node/node_modules/ansi_up/ansi_up.js
@@ -0,0 +1,334 @@
+/* ansi_up.js
+ * author : Dru Nelson
+ * license : MIT
+ * http://github.com/drudru/ansi_up
+ */
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(['exports'], factory);
+ } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
+ // CommonJS
+ factory(exports);
+ } else {
+ // Browser globals
+ var exp = {};
+ factory(exp);
+ root.AnsiUp = exp.default;
+ }
+}(this, function (exports) {
+"use strict";
+function rgx(tmplObj) {
+ var subst = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ subst[_i - 1] = arguments[_i];
+ }
+ var regexText = tmplObj.raw[0];
+ var wsrgx = /^\s+|\s+\n|\s+#[\s\S]+?\n/gm;
+ var txt2 = regexText.replace(wsrgx, '');
+ return new RegExp(txt2, 'm');
+}
+var AnsiUp = (function () {
+ function AnsiUp() {
+ this.VERSION = "2.0.2";
+ this.ansi_colors = [
+ [
+ { rgb: [0, 0, 0], class_name: "ansi-black" },
+ { rgb: [187, 0, 0], class_name: "ansi-red" },
+ { rgb: [0, 187, 0], class_name: "ansi-green" },
+ { rgb: [187, 187, 0], class_name: "ansi-yellow" },
+ { rgb: [0, 0, 187], class_name: "ansi-blue" },
+ { rgb: [187, 0, 187], class_name: "ansi-magenta" },
+ { rgb: [0, 187, 187], class_name: "ansi-cyan" },
+ { rgb: [255, 255, 255], class_name: "ansi-white" }
+ ],
+ [
+ { rgb: [85, 85, 85], class_name: "ansi-bright-black" },
+ { rgb: [255, 85, 85], class_name: "ansi-bright-red" },
+ { rgb: [0, 255, 0], class_name: "ansi-bright-green" },
+ { rgb: [255, 255, 85], class_name: "ansi-bright-yellow" },
+ { rgb: [85, 85, 255], class_name: "ansi-bright-blue" },
+ { rgb: [255, 85, 255], class_name: "ansi-bright-magenta" },
+ { rgb: [85, 255, 255], class_name: "ansi-bright-cyan" },
+ { rgb: [255, 255, 255], class_name: "ansi-bright-white" }
+ ]
+ ];
+ this.htmlFormatter = {
+ transform: function (fragment, instance) {
+ var txt = fragment.text;
+ if (txt.length === 0)
+ return txt;
+ if (instance._escape_for_html)
+ txt = instance.old_escape_for_html(txt);
+ if (!fragment.bright && fragment.fg === null && fragment.bg === null)
+ return txt;
+ var styles = [];
+ var classes = [];
+ var fg = fragment.fg;
+ var bg = fragment.bg;
+ if (fg === null && fragment.bright)
+ fg = instance.ansi_colors[1][7];
+ if (!instance._use_classes) {
+ if (fg)
+ styles.push("color:rgb(" + fg.rgb.join(',') + ")");
+ if (bg)
+ styles.push("background-color:rgb(" + bg.rgb + ")");
+ }
+ else {
+ if (fg) {
+ if (fg.class_name !== 'truecolor') {
+ classes.push(fg.class_name + "-fg");
+ }
+ else {
+ styles.push("color:rgb(" + fg.rgb.join(',') + ")");
+ }
+ }
+ if (bg) {
+ if (bg.class_name !== 'truecolor') {
+ classes.push(bg.class_name + "-bg");
+ }
+ else {
+ styles.push("background-color:rgb(" + bg.rgb.join(',') + ")");
+ }
+ }
+ }
+ var class_string = '';
+ var style_string = '';
+ if (classes.length)
+ class_string = " class=\"" + classes.join(' ') + "\"";
+ if (styles.length)
+ style_string = " style=\"" + styles.join(';') + "\"";
+ return "" + txt + "";
+ },
+ compose: function (segments, instance) {
+ return segments.join("");
+ }
+ };
+ this.textFormatter = {
+ transform: function (fragment, instance) {
+ return fragment.text;
+ },
+ compose: function (segments, instance) {
+ return segments.join("");
+ }
+ };
+ this.setup_256_palette();
+ this._use_classes = false;
+ this._escape_for_html = true;
+ this.bright = false;
+ this.fg = this.bg = null;
+ this._buffer = '';
+ }
+ Object.defineProperty(AnsiUp.prototype, "use_classes", {
+ get: function () {
+ return this._use_classes;
+ },
+ set: function (arg) {
+ this._use_classes = arg;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnsiUp.prototype, "escape_for_html", {
+ get: function () {
+ return this._escape_for_html;
+ },
+ set: function (arg) {
+ this._escape_for_html = arg;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ AnsiUp.prototype.setup_256_palette = function () {
+ var _this = this;
+ this.palette_256 = [];
+ this.ansi_colors.forEach(function (palette) {
+ palette.forEach(function (rec) {
+ _this.palette_256.push(rec);
+ });
+ });
+ var levels = [0, 95, 135, 175, 215, 255];
+ for (var r = 0; r < 6; ++r) {
+ for (var g = 0; g < 6; ++g) {
+ for (var b = 0; b < 6; ++b) {
+ var col = { rgb: [levels[r], levels[g], levels[b]], class_name: 'truecolor' };
+ this.palette_256.push(col);
+ }
+ }
+ }
+ var grey_level = 8;
+ for (var i = 0; i < 24; ++i, grey_level += 10) {
+ var gry = { rgb: [grey_level, grey_level, grey_level], class_name: 'truecolor' };
+ this.palette_256.push(gry);
+ }
+ };
+ AnsiUp.prototype.old_escape_for_html = function (txt) {
+ return txt.replace(/[&<>]/gm, function (str) {
+ if (str === "&")
+ return "&";
+ if (str === "<")
+ return "<";
+ if (str === ">")
+ return ">";
+ });
+ };
+ AnsiUp.prototype.old_linkify = function (txt) {
+ return txt.replace(/(https?:\/\/[^\s]+)/gm, function (str) {
+ return "" + str + "";
+ });
+ };
+ AnsiUp.prototype.detect_incomplete_ansi = function (txt) {
+ return !(/.*?[\x40-\x7e]/.test(txt));
+ };
+ AnsiUp.prototype.detect_incomplete_link = function (txt) {
+ var found = false;
+ for (var i = txt.length - 1; i > 0; i--) {
+ if (/\s|\x1B/.test(txt[i])) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ if (/(https?:\/\/[^\s]+)/.test(txt))
+ return 0;
+ else
+ return -1;
+ }
+ var prefix = txt.substr(i + 1, 4);
+ if (prefix.length === 0)
+ return -1;
+ if ("http".indexOf(prefix) === 0)
+ return (i + 1);
+ };
+ AnsiUp.prototype.ansi_to = function (txt, formatter) {
+ var pkt = this._buffer + txt;
+ this._buffer = '';
+ var raw_text_pkts = pkt.split(/\x1B\[/);
+ if (raw_text_pkts.length === 1)
+ raw_text_pkts.push('');
+ this.handle_incomplete_sequences(raw_text_pkts);
+ var first_chunk = this.with_state(raw_text_pkts.shift());
+ var blocks = new Array(raw_text_pkts.length);
+ for (var i = 0, len = raw_text_pkts.length; i < len; ++i) {
+ blocks[i] = (formatter.transform(this.process_ansi(raw_text_pkts[i]), this));
+ }
+ if (first_chunk.text.length > 0)
+ blocks.unshift(formatter.transform(first_chunk, this));
+ return formatter.compose(blocks, this);
+ };
+ AnsiUp.prototype.ansi_to_html = function (txt) {
+ return this.ansi_to(txt, this.htmlFormatter);
+ };
+ AnsiUp.prototype.ansi_to_text = function (txt) {
+ return this.ansi_to(txt, this.textFormatter);
+ };
+ AnsiUp.prototype.with_state = function (text) {
+ return { bright: this.bright, fg: this.fg, bg: this.bg, text: text };
+ };
+ AnsiUp.prototype.handle_incomplete_sequences = function (chunks) {
+ var last_chunk = chunks[chunks.length - 1];
+ if ((last_chunk.length > 0) && this.detect_incomplete_ansi(last_chunk)) {
+ this._buffer = "\x1B[" + last_chunk;
+ chunks.pop();
+ chunks.push('');
+ }
+ else {
+ if (last_chunk.slice(-1) === "\x1B") {
+ this._buffer = "\x1B";
+ console.log("raw", chunks);
+ chunks.pop();
+ chunks.push(last_chunk.substr(0, last_chunk.length - 1));
+ console.log(chunks);
+ console.log(last_chunk);
+ }
+ if (chunks.length === 2 &&
+ chunks[1] === "" &&
+ chunks[0].slice(-1) === "\x1B") {
+ this._buffer = "\x1B";
+ last_chunk = chunks.shift();
+ chunks.unshift(last_chunk.substr(0, last_chunk.length - 1));
+ }
+ }
+ };
+ AnsiUp.prototype.process_ansi = function (block) {
+ if (!this._sgr_regex) {
+ this._sgr_regex = (_a = ["\n ^ # beginning of line\n ([!<-?]?) # a private-mode char (!, <, =, >, ?)\n ([d;]*) # any digits or semicolons\n ([ -/]? # an intermediate modifier\n [@-~]) # the command\n ([sS]*) # any text following this CSI sequence\n "], _a.raw = ["\n ^ # beginning of line\n ([!\\x3c-\\x3f]?) # a private-mode char (!, <, =, >, ?)\n ([\\d;]*) # any digits or semicolons\n ([\\x20-\\x2f]? # an intermediate modifier\n [\\x40-\\x7e]) # the command\n ([\\s\\S]*) # any text following this CSI sequence\n "], rgx(_a));
+ }
+ var matches = block.match(this._sgr_regex);
+ if (!matches) {
+ return this.with_state(block);
+ }
+ var orig_txt = matches[4];
+ if (matches[1] !== '' || matches[3] !== 'm') {
+ return this.with_state(orig_txt);
+ }
+ var sgr_cmds = matches[2].split(';');
+ while (sgr_cmds.length > 0) {
+ var sgr_cmd_str = sgr_cmds.shift();
+ var num = parseInt(sgr_cmd_str, 10);
+ if (isNaN(num) || num === 0) {
+ this.fg = this.bg = null;
+ this.bright = false;
+ }
+ else if (num === 1) {
+ this.bright = true;
+ }
+ else if (num === 22) {
+ this.bright = false;
+ }
+ else if (num === 39) {
+ this.fg = null;
+ }
+ else if (num === 49) {
+ this.bg = null;
+ }
+ else if ((num >= 30) && (num < 38)) {
+ var bidx = this.bright ? 1 : 0;
+ this.fg = this.ansi_colors[bidx][(num - 30)];
+ }
+ else if ((num >= 90) && (num < 98)) {
+ this.fg = this.ansi_colors[1][(num - 90)];
+ }
+ else if ((num >= 40) && (num < 48)) {
+ this.bg = this.ansi_colors[0][(num - 40)];
+ }
+ else if ((num >= 100) && (num < 108)) {
+ this.bg = this.ansi_colors[1][(num - 100)];
+ }
+ else if (num === 38 || num === 48) {
+ if (sgr_cmds.length > 0) {
+ var is_foreground = (num === 38);
+ var mode_cmd = sgr_cmds.shift();
+ if (mode_cmd === '5' && sgr_cmds.length > 0) {
+ var palette_index = parseInt(sgr_cmds.shift(), 10);
+ if (palette_index >= 0 && palette_index <= 255) {
+ if (is_foreground)
+ this.fg = this.palette_256[palette_index];
+ else
+ this.bg = this.palette_256[palette_index];
+ }
+ }
+ if (mode_cmd === '2' && sgr_cmds.length > 2) {
+ var r = parseInt(sgr_cmds.shift(), 10);
+ var g = parseInt(sgr_cmds.shift(), 10);
+ var b = parseInt(sgr_cmds.shift(), 10);
+ if ((r >= 0 && r <= 255) && (g >= 0 && g <= 255) && (b >= 0 && b <= 255)) {
+ var c = { rgb: [r, g, b], class_name: 'truecolor' };
+ if (is_foreground)
+ this.fg = c;
+ else
+ this.bg = c;
+ }
+ }
+ }
+ }
+ }
+ return this.with_state(orig_txt);
+ var _a;
+ };
+ return AnsiUp;
+}());
+//# sourceMappingURL=ansi_up.js.map
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.default = AnsiUp;
+}));
diff --git a/js/node/node_modules/ansi_up/ansi_up.ts b/js/node/node_modules/ansi_up/ansi_up.ts
new file mode 100644
index 0000000000..c55617a31e
--- /dev/null
+++ b/js/node/node_modules/ansi_up/ansi_up.ts
@@ -0,0 +1,487 @@
+/* ansi_up.js
+ * author : Dru Nelson
+ * license : MIT
+ * http://github.com/drudru/ansi_up
+ */
+
+"use strict";
+
+interface AU_Color
+{
+ rgb:number[];
+ class_name:string;
+}
+
+// Represents the output of process_ansi(): a snapshot of the AnsiUp state machine
+// at a given point in time, which wraps a fragment of text. This wouuld allow deferred
+// processing of text fragments and colors, if ever needed.
+interface TextWithData {
+ fg:AU_Color;
+ bg:AU_Color;
+ bright:boolean;
+ text:string;
+}
+
+// Represents an object that is responsible for generating output from parsed ANSI color
+// metadata and text content.
+interface Formatter {
+ // Invoked for each generated TextWithData fragment outputted by process_ansi().
+ // this function is responsible for generating output for a single TextWithData
+ // fragment. The result of transform() will be collected into an array that will
+ // be provided to compose().
+ transform(fragment:TextWithData, instance:AnsiUp):any;
+
+ // Invoked on the set of outputs from transform; the return value of this function
+ // will be the final output of ANSI processing.
+ compose(segments:any[], instance:AnsiUp):any;
+}
+
+// ES5 template string transformer
+// NOTE: default is multiline (workaround for now til I can
+// determine flags inline)
+function rgx(tmplObj, ...subst) {
+ // Use the 'raw' value so we don't have to double backslash in a template string
+ let regexText:string = tmplObj.raw[0];
+
+ // Remove white-space and comments
+ let wsrgx = /^\s+|\s+\n|\s+#[\s\S]+?\n/gm;
+ let txt2 = regexText.replace(wsrgx, '');
+ return new RegExp(txt2, 'm');
+}
+
+class AnsiUp
+{
+ VERSION = "2.0.2";
+
+ ansi_colors =
+ [
+ // Normal colors
+ [
+ { rgb: [ 0, 0, 0], class_name: "ansi-black" },
+ { rgb: [187, 0, 0], class_name: "ansi-red" },
+ { rgb: [ 0, 187, 0], class_name: "ansi-green" },
+ { rgb: [187, 187, 0], class_name: "ansi-yellow" },
+ { rgb: [ 0, 0, 187], class_name: "ansi-blue" },
+ { rgb: [187, 0, 187], class_name: "ansi-magenta" },
+ { rgb: [ 0, 187, 187], class_name: "ansi-cyan" },
+ { rgb: [255, 255, 255], class_name: "ansi-white" }
+ ],
+
+ // Bright colors
+ [
+ { rgb: [ 85, 85, 85], class_name: "ansi-bright-black" },
+ { rgb: [255, 85, 85], class_name: "ansi-bright-red" },
+ { rgb: [ 0, 255, 0], class_name: "ansi-bright-green" },
+ { rgb: [255, 255, 85], class_name: "ansi-bright-yellow" },
+ { rgb: [ 85, 85, 255], class_name: "ansi-bright-blue" },
+ { rgb: [255, 85, 255], class_name: "ansi-bright-magenta" },
+ { rgb: [ 85, 255, 255], class_name: "ansi-bright-cyan" },
+ { rgb: [255, 255, 255], class_name: "ansi-bright-white" }
+ ]
+ ];
+
+ htmlFormatter:Formatter = {
+ transform(fragment:TextWithData, instance:AnsiUp):string {
+ let txt = fragment.text;
+
+ if (txt.length === 0)
+ return txt;
+
+ if (instance._escape_for_html)
+ txt = instance.old_escape_for_html(txt);
+
+ // If colors not set, default style is used
+ if (!fragment.bright && fragment.fg === null && fragment.bg === null)
+ return txt;
+
+ let styles:string[] = [];
+ let classes:string[] = [];
+
+ let fg = fragment.fg;
+ let bg = fragment.bg;
+
+ // Handle the case where we are told to be bright, but without a color
+ if (fg === null && fragment.bright)
+ fg = instance.ansi_colors[1][7];
+
+ if (!instance._use_classes) {
+ // USE INLINE STYLES
+ if (fg)
+ styles.push(`color:rgb(${fg.rgb.join(',')})`);
+ if (bg)
+ styles.push(`background-color:rgb(${bg.rgb})`);
+ } else {
+ // USE CLASSES
+ if (fg) {
+ if (fg.class_name !== 'truecolor') {
+ classes.push(`${fg.class_name}-fg`);
+ } else {
+ styles.push(`color:rgb(${fg.rgb.join(',')})`);
+ }
+ }
+ if (bg) {
+ if (bg.class_name !== 'truecolor') {
+ classes.push(`${bg.class_name}-bg`);
+ } else {
+ styles.push(`background-color:rgb(${bg.rgb.join(',')})`);
+ }
+ }
+ }
+
+ let class_string = '';
+ let style_string = '';
+
+ if (classes.length)
+ class_string = ` class="${classes.join(' ')}"`;
+
+ if (styles.length)
+ style_string = ` style="${styles.join(';')}"`;
+
+ return `${txt}`;
+ },
+
+ compose(segments:string[], instance:AnsiUp):string {
+ return segments.join("");
+ }
+ };
+
+ textFormatter:Formatter = {
+ transform(fragment:TextWithData, instance:AnsiUp):string {
+ return fragment.text;
+ },
+
+ compose(segments:string[], instance:AnsiUp):string {
+ return segments.join("");
+ }
+ };
+
+ // 256 Colors Palette
+ // CSS RGB strings - ex. "255, 255, 255"
+ private palette_256:AU_Color[];
+
+ private fg:AU_Color;
+ private bg:AU_Color;
+ private bright:boolean;
+
+ private _use_classes:boolean;
+ private _escape_for_html;
+ private _sgr_regex:RegExp;
+
+ private _buffer:string;
+
+ constructor()
+ {
+ this.setup_256_palette();
+ this._use_classes = false;
+ this._escape_for_html = true;
+
+ this.bright = false;
+ this.fg = this.bg = null;
+
+ this._buffer = '';
+ }
+
+ set use_classes(arg:boolean)
+ {
+ this._use_classes = arg;
+ }
+
+ get use_classes():boolean
+ {
+ return this._use_classes;
+ }
+
+ set escape_for_html(arg:boolean)
+ {
+ this._escape_for_html = arg;
+ }
+
+ get escape_for_html():boolean
+ {
+ return this._escape_for_html;
+ }
+
+ private setup_256_palette():void
+ {
+ this.palette_256 = [];
+
+ // Index 0..15 : Ansi-Colors
+ this.ansi_colors.forEach( palette => {
+ palette.forEach( rec => {
+ this.palette_256.push(rec);
+ });
+ });
+
+ // Index 16..231 : RGB 6x6x6
+ // https://gist.github.com/jasonm23/2868981#file-xterm-256color-yaml
+ let levels = [0, 95, 135, 175, 215, 255];
+ for (let r = 0; r < 6; ++r) {
+ for (let g = 0; g < 6; ++g) {
+ for (let b = 0; b < 6; ++b) {
+ let col = {rgb:[levels[r], levels[g], levels[b]], class_name:'truecolor'};
+ this.palette_256.push(col);
+ }
+ }
+ }
+
+ // Index 232..255 : Grayscale
+ let grey_level = 8;
+ for (let i = 0; i < 24; ++i, grey_level += 10) {
+ let gry = {rgb:[grey_level, grey_level, grey_level], class_name:'truecolor'};
+ this.palette_256.push(gry);
+ }
+ }
+
+ private old_escape_for_html(txt:string):string
+ {
+ return txt.replace(/[&<>]/gm, (str) => {
+ if (str === "&") return "&";
+ if (str === "<") return "<";
+ if (str === ">") return ">";
+ });
+ }
+
+ private old_linkify(txt:string):string
+ {
+ return txt.replace(/(https?:\/\/[^\s]+)/gm, (str) => {
+ return `${str}`;
+ });
+ }
+
+ private detect_incomplete_ansi(txt:string)
+ {
+ // Scan forwards for a potential command character
+ // If one exists, we must assume we are good
+ // [\x40-\x7e]) # the command
+
+ return !(/.*?[\x40-\x7e]/.test(txt));
+ }
+
+ private detect_incomplete_link(txt:string)
+ {
+ // It would be nice if Javascript RegExp supported
+ // a hitEnd() method
+
+ // Scan backwards for first whitespace
+ var found = false;
+ for (var i = txt.length - 1; i > 0; i--) {
+ if (/\s|\x1B/.test(txt[i])) {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found) {
+ // Handle one other case
+ // Maybe the whole string is a URL?
+ if (/(https?:\/\/[^\s]+)/.test(txt))
+ return 0;
+ else
+ return -1;
+ }
+
+ // Test if possible prefix
+ var prefix = txt.substr(i + 1, 4);
+
+ if (prefix.length === 0) return -1;
+
+ if ("http".indexOf(prefix) === 0)
+ return (i + 1);
+ }
+
+ ansi_to(txt:string, formatter:Formatter):any {
+ var pkt = this._buffer + txt;
+ this._buffer = '';
+
+ var raw_text_pkts = pkt.split(/\x1B\[/);
+
+ if (raw_text_pkts.length === 1)
+ raw_text_pkts.push('');
+
+ this.handle_incomplete_sequences(raw_text_pkts);
+
+ let first_chunk = this.with_state(raw_text_pkts.shift()); // the first pkt is not the result of the split
+
+ let blocks = new Array(raw_text_pkts.length);
+ for (let i = 0, len = raw_text_pkts.length; i < len; ++i) {
+ blocks[i] = (formatter.transform(this.process_ansi(raw_text_pkts[i]), this));
+ }
+
+ if (first_chunk.text.length > 0)
+ blocks.unshift(formatter.transform(first_chunk, this));
+
+ return formatter.compose(blocks, this);
+ }
+
+ ansi_to_html(txt:string):string
+ {
+ return this.ansi_to(txt, this.htmlFormatter);
+ }
+
+ ansi_to_text(txt:string):string
+ {
+ return this.ansi_to(txt, this.textFormatter);
+ }
+
+ private with_state(text:string):TextWithData {
+ return { bright: this.bright, fg: this.fg, bg: this.bg, text: text };
+ }
+
+ private handle_incomplete_sequences(chunks:string[]):void {
+ // COMPLEX - BEGIN
+
+ // Validate the last chunks for:
+ // - incomplete ANSI sequence
+ // - incomplete ESC
+ // If any of these occur, we may have to buffer
+ var last_chunk = chunks[chunks.length - 1];
+
+ // - incomplete ANSI sequence
+ if ((last_chunk.length > 0) && this.detect_incomplete_ansi(last_chunk)) {
+ this._buffer = "\x1B[" + last_chunk;
+ chunks.pop();
+ chunks.push('');
+ } else {
+ // - incomplete ESC
+ if (last_chunk.slice(-1) === "\x1B") {
+ this._buffer = "\x1B";
+ console.log("raw", chunks);
+ chunks.pop();
+ chunks.push(last_chunk.substr(0, last_chunk.length - 1));
+ console.log(chunks);
+ console.log(last_chunk);
+ }
+ // - Incomplete ESC, only one packet
+ if (chunks.length === 2 &&
+ chunks[1] === "" &&
+ chunks[0].slice(-1) === "\x1B") {
+ this._buffer = "\x1B";
+ last_chunk = chunks.shift();
+ chunks.unshift(last_chunk.substr(0, last_chunk.length - 1));
+ }
+ }
+
+ // COMPLEX - END
+ }
+
+ private process_ansi(block:string):TextWithData
+ {
+ // This must only be called with a string that started with a CSI (the string split above)
+ // The CSI must not be in the string. We consider this string to be a 'block'.
+ // It has an ANSI command at the front that affects the text that follows it.
+ //
+ // All ansi codes are typically in the following format. We parse it and focus
+ // specifically on the graphics commands (SGR)
+ //
+ // CONTROL-SEQUENCE-INTRODUCER CSI (ESC, '[')
+ // PRIVATE-MODE-CHAR (!, <, >, ?)
+ // Numeric parameters separated by semicolons ('0' - '9', ';')
+ // Intermediate-modifiers (0x20 - 0x2f)
+ // COMMAND-CHAR (0x40 - 0x7e)
+ //
+ // We use a regex to parse into capture groups the PRIVATE-MODE-CHAR to the COMMAND
+ // and the following text
+
+ if (!this._sgr_regex) {
+ // This regex is designed to parse an ANSI terminal CSI command. To be more specific,
+ // we follow the XTERM conventions vs. the various other "standards".
+ // http://invisible-island.net/xterm/ctlseqs/ctlseqs.html
+ //
+ this._sgr_regex = rgx`
+ ^ # beginning of line
+ ([!\x3c-\x3f]?) # a private-mode char (!, <, =, >, ?)
+ ([\d;]*) # any digits or semicolons
+ ([\x20-\x2f]? # an intermediate modifier
+ [\x40-\x7e]) # the command
+ ([\s\S]*) # any text following this CSI sequence
+ `;
+ }
+
+ let matches = block.match(this._sgr_regex);
+
+ // The regex should have handled all cases!
+ if (!matches) {
+ return this.with_state(block);
+ }
+
+ let orig_txt = matches[4];
+
+ if (matches[1] !== '' || matches[3] !== 'm') {
+ return this.with_state(orig_txt);
+ }
+
+ // Ok - we have a valid "SGR" (Select Graphic Rendition)
+
+ let sgr_cmds = matches[2].split(';');
+
+ // Each of these params affects the SGR state
+
+ // Why do we shift through the array instead of a forEach??
+ // ... because some commands consume the params that follow !
+ while (sgr_cmds.length > 0) {
+ let sgr_cmd_str = sgr_cmds.shift();
+ let num = parseInt(sgr_cmd_str, 10);
+
+ if (isNaN(num) || num === 0) {
+ this.fg = this.bg = null;
+ this.bright = false;
+ } else if (num === 1) {
+ this.bright = true;
+ } else if (num === 22) {
+ this.bright = false;
+ } else if (num === 39) {
+ this.fg = null;
+ } else if (num === 49) {
+ this.bg = null;
+ } else if ((num >= 30) && (num < 38)) {
+ let bidx = this.bright ? 1 : 0;
+ this.fg = this.ansi_colors[bidx][(num - 30)];
+ } else if ((num >= 90) && (num < 98)) {
+ this.fg = this.ansi_colors[1][(num - 90)];
+ } else if ((num >= 40) && (num < 48)) {
+ this.bg = this.ansi_colors[0][(num - 40)];
+ } else if ((num >= 100) && (num < 108)) {
+ this.bg = this.ansi_colors[1][(num - 100)];
+ } else if (num === 38 || num === 48) {
+
+ // extended set foreground/background color
+
+ // validate that param exists
+ if (sgr_cmds.length > 0) {
+ // extend color (38=fg, 48=bg)
+ let is_foreground = (num === 38);
+
+ let mode_cmd = sgr_cmds.shift();
+
+ // MODE '5' - 256 color palette
+ if (mode_cmd === '5' && sgr_cmds.length > 0) {
+ let palette_index = parseInt(sgr_cmds.shift(), 10);
+ if (palette_index >= 0 && palette_index <= 255) {
+ if (is_foreground)
+ this.fg = this.palette_256[palette_index];
+ else
+ this.bg = this.palette_256[palette_index];
+ }
+ }
+
+ // MODE '2' - True Color
+ if (mode_cmd === '2' && sgr_cmds.length > 2) {
+ let r = parseInt(sgr_cmds.shift(), 10);
+ let g = parseInt(sgr_cmds.shift(), 10);
+ let b = parseInt(sgr_cmds.shift(), 10);
+
+ if ((r >= 0 && r <= 255) && (g >= 0 && g <= 255) && (b >= 0 && b <= 255)) {
+ let c = { rgb: [r,g,b], class_name: 'truecolor'};
+ if (is_foreground)
+ this.fg = c;
+ else
+ this.bg = c;
+ }
+ }
+ }
+ }
+ }
+
+ return this.with_state(orig_txt);
+ }
+}
diff --git a/js/node/node_modules/ansi_up/dist/ansi_up.d.ts b/js/node/node_modules/ansi_up/dist/ansi_up.d.ts
new file mode 100644
index 0000000000..c284f5474a
--- /dev/null
+++ b/js/node/node_modules/ansi_up/dist/ansi_up.d.ts
@@ -0,0 +1,46 @@
+interface AU_Color {
+ rgb: number[];
+ class_name: string;
+}
+interface TextWithData {
+ fg: AU_Color;
+ bg: AU_Color;
+ bright: boolean;
+ text: string;
+}
+interface Formatter {
+ transform(fragment: TextWithData, instance: AnsiUp): any;
+ compose(segments: any[], instance: AnsiUp): any;
+}
+declare function rgx(tmplObj: any, ...subst: any[]): RegExp;
+declare class AnsiUp {
+ VERSION: string;
+ ansi_colors: {
+ rgb: number[];
+ class_name: string;
+ }[][];
+ htmlFormatter: Formatter;
+ textFormatter: Formatter;
+ private palette_256;
+ private fg;
+ private bg;
+ private bright;
+ private _use_classes;
+ private _escape_for_html;
+ private _sgr_regex;
+ private _buffer;
+ constructor();
+ use_classes: boolean;
+ escape_for_html: boolean;
+ private setup_256_palette();
+ private old_escape_for_html(txt);
+ private old_linkify(txt);
+ private detect_incomplete_ansi(txt);
+ private detect_incomplete_link(txt);
+ ansi_to(txt: string, formatter: Formatter): any;
+ ansi_to_html(txt: string): string;
+ ansi_to_text(txt: string): string;
+ private with_state(text);
+ private handle_incomplete_sequences(chunks);
+ private process_ansi(block);
+}
diff --git a/js/node/node_modules/ansi_up/dist/ansi_up.js.include b/js/node/node_modules/ansi_up/dist/ansi_up.js.include
new file mode 100644
index 0000000000..f0d4324da4
--- /dev/null
+++ b/js/node/node_modules/ansi_up/dist/ansi_up.js.include
@@ -0,0 +1,312 @@
+"use strict";
+function rgx(tmplObj) {
+ var subst = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ subst[_i - 1] = arguments[_i];
+ }
+ var regexText = tmplObj.raw[0];
+ var wsrgx = /^\s+|\s+\n|\s+#[\s\S]+?\n/gm;
+ var txt2 = regexText.replace(wsrgx, '');
+ return new RegExp(txt2, 'm');
+}
+var AnsiUp = (function () {
+ function AnsiUp() {
+ this.VERSION = "2.0.1";
+ this.ansi_colors = [
+ [
+ { rgb: [0, 0, 0], class_name: "ansi-black" },
+ { rgb: [187, 0, 0], class_name: "ansi-red" },
+ { rgb: [0, 187, 0], class_name: "ansi-green" },
+ { rgb: [187, 187, 0], class_name: "ansi-yellow" },
+ { rgb: [0, 0, 187], class_name: "ansi-blue" },
+ { rgb: [187, 0, 187], class_name: "ansi-magenta" },
+ { rgb: [0, 187, 187], class_name: "ansi-cyan" },
+ { rgb: [255, 255, 255], class_name: "ansi-white" }
+ ],
+ [
+ { rgb: [85, 85, 85], class_name: "ansi-bright-black" },
+ { rgb: [255, 85, 85], class_name: "ansi-bright-red" },
+ { rgb: [0, 255, 0], class_name: "ansi-bright-green" },
+ { rgb: [255, 255, 85], class_name: "ansi-bright-yellow" },
+ { rgb: [85, 85, 255], class_name: "ansi-bright-blue" },
+ { rgb: [255, 85, 255], class_name: "ansi-bright-magenta" },
+ { rgb: [85, 255, 255], class_name: "ansi-bright-cyan" },
+ { rgb: [255, 255, 255], class_name: "ansi-bright-white" }
+ ]
+ ];
+ this.htmlFormatter = {
+ transform: function (fragment, instance) {
+ var txt = fragment.text;
+ if (txt.length === 0)
+ return txt;
+ if (instance._escape_for_html)
+ txt = instance.old_escape_for_html(txt);
+ if (!fragment.bright && fragment.fg === null && fragment.bg === null)
+ return txt;
+ var styles = [];
+ var classes = [];
+ var fg = fragment.fg;
+ var bg = fragment.bg;
+ if (fg === null && fragment.bright)
+ fg = instance.ansi_colors[1][7];
+ if (!instance._use_classes) {
+ if (fg)
+ styles.push("color:rgb(" + fg.rgb.join(',') + ")");
+ if (bg)
+ styles.push("background-color:rgb(" + bg.rgb + ")");
+ }
+ else {
+ if (fg) {
+ if (fg.class_name !== 'truecolor') {
+ classes.push(fg.class_name + "-fg");
+ }
+ else {
+ styles.push("color:rgb(" + fg.rgb.join(',') + ")");
+ }
+ }
+ if (bg) {
+ if (bg.class_name !== 'truecolor') {
+ classes.push(bg.class_name + "-bg");
+ }
+ else {
+ styles.push("background-color:rgb(" + bg.rgb.join(',') + ")");
+ }
+ }
+ }
+ var class_string = '';
+ var style_string = '';
+ if (classes.length)
+ class_string = " class=\"" + classes.join(' ') + "\"";
+ if (styles.length)
+ style_string = " style=\"" + styles.join(';') + "\"";
+ return "" + txt + "";
+ },
+ compose: function (segments, instance) {
+ return segments.join("");
+ }
+ };
+ this.textFormatter = {
+ transform: function (fragment, instance) {
+ return fragment.text;
+ },
+ compose: function (segments, instance) {
+ return segments.join("");
+ }
+ };
+ this.setup_256_palette();
+ this._use_classes = false;
+ this._escape_for_html = true;
+ this.bright = false;
+ this.fg = this.bg = null;
+ this._buffer = '';
+ }
+ Object.defineProperty(AnsiUp.prototype, "use_classes", {
+ get: function () {
+ return this._use_classes;
+ },
+ set: function (arg) {
+ this._use_classes = arg;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnsiUp.prototype, "escape_for_html", {
+ get: function () {
+ return this._escape_for_html;
+ },
+ set: function (arg) {
+ this._escape_for_html = arg;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ AnsiUp.prototype.setup_256_palette = function () {
+ var _this = this;
+ this.palette_256 = [];
+ this.ansi_colors.forEach(function (palette) {
+ palette.forEach(function (rec) {
+ _this.palette_256.push(rec);
+ });
+ });
+ var levels = [0, 95, 135, 175, 215, 255];
+ for (var r = 0; r < 6; ++r) {
+ for (var g = 0; g < 6; ++g) {
+ for (var b = 0; b < 6; ++b) {
+ var col = { rgb: [levels[r], levels[g], levels[b]], class_name: 'truecolor' };
+ this.palette_256.push(col);
+ }
+ }
+ }
+ var grey_level = 8;
+ for (var i = 0; i < 24; ++i, grey_level += 10) {
+ var gry = { rgb: [grey_level, grey_level, grey_level], class_name: 'truecolor' };
+ this.palette_256.push(gry);
+ }
+ };
+ AnsiUp.prototype.old_escape_for_html = function (txt) {
+ return txt.replace(/[&<>]/gm, function (str) {
+ if (str === "&")
+ return "&";
+ if (str === "<")
+ return "<";
+ if (str === ">")
+ return ">";
+ });
+ };
+ AnsiUp.prototype.old_linkify = function (txt) {
+ return txt.replace(/(https?:\/\/[^\s]+)/gm, function (str) {
+ return "" + str + "";
+ });
+ };
+ AnsiUp.prototype.detect_incomplete_ansi = function (txt) {
+ return !(/.*?[\x40-\x7e]/.test(txt));
+ };
+ AnsiUp.prototype.detect_incomplete_link = function (txt) {
+ var found = false;
+ for (var i = txt.length - 1; i > 0; i--) {
+ if (/\s|\x1B/.test(txt[i])) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ if (/(https?:\/\/[^\s]+)/.test(txt))
+ return 0;
+ else
+ return -1;
+ }
+ var prefix = txt.substr(i + 1, 4);
+ if (prefix.length === 0)
+ return -1;
+ if ("http".indexOf(prefix) === 0)
+ return (i + 1);
+ };
+ AnsiUp.prototype.ansi_to = function (txt, formatter) {
+ var pkt = this._buffer + txt;
+ this._buffer = '';
+ var raw_text_pkts = pkt.split(/\x1B\[/);
+ if (raw_text_pkts.length === 1)
+ raw_text_pkts.push('');
+ this.handle_incomplete_sequences(raw_text_pkts);
+ var first_chunk = this.with_state(raw_text_pkts.shift());
+ var blocks = new Array(raw_text_pkts.length);
+ for (var i = 0, len = raw_text_pkts.length; i < len; ++i) {
+ blocks[i] = (formatter.transform(this.process_ansi(raw_text_pkts[i]), this));
+ }
+ if (first_chunk.text.length > 0)
+ blocks.unshift(formatter.transform(first_chunk, this));
+ return formatter.compose(blocks, this);
+ };
+ AnsiUp.prototype.ansi_to_html = function (txt) {
+ return this.ansi_to(txt, this.htmlFormatter);
+ };
+ AnsiUp.prototype.ansi_to_text = function (txt) {
+ return this.ansi_to(txt, this.textFormatter);
+ };
+ AnsiUp.prototype.with_state = function (text) {
+ return { bright: this.bright, fg: this.fg, bg: this.bg, text: text };
+ };
+ AnsiUp.prototype.handle_incomplete_sequences = function (chunks) {
+ var last_chunk = chunks[chunks.length - 1];
+ if ((last_chunk.length > 0) && this.detect_incomplete_ansi(last_chunk)) {
+ this._buffer = "\x1B[" + last_chunk;
+ chunks.pop();
+ chunks.push('');
+ }
+ else {
+ if (last_chunk.slice(-1) === "\x1B") {
+ this._buffer = "\x1B";
+ console.log("raw", chunks);
+ chunks.pop();
+ chunks.push(last_chunk.substr(0, last_chunk.length - 1));
+ console.log(chunks);
+ console.log(last_chunk);
+ }
+ if (chunks.length === 2 &&
+ chunks[1] === "" &&
+ chunks[0].slice(-1) === "\x1B") {
+ this._buffer = "\x1B";
+ last_chunk = chunks.shift();
+ chunks.unshift(last_chunk.substr(0, last_chunk.length - 1));
+ }
+ }
+ };
+ AnsiUp.prototype.process_ansi = function (block) {
+ if (!this._sgr_regex) {
+ this._sgr_regex = (_a = ["\n ^ # beginning of line\n ([!<-?]?) # a private-mode char (!, <, =, >, ?)\n ([d;]*) # any digits or semicolons\n ([ -/]? # an intermediate modifier\n [@-~]) # the command\n ([sS]*) # any text following this CSI sequence\n "], _a.raw = ["\n ^ # beginning of line\n ([!\\x3c-\\x3f]?) # a private-mode char (!, <, =, >, ?)\n ([\\d;]*) # any digits or semicolons\n ([\\x20-\\x2f]? # an intermediate modifier\n [\\x40-\\x7e]) # the command\n ([\\s\\S]*) # any text following this CSI sequence\n "], rgx(_a));
+ }
+ var matches = block.match(this._sgr_regex);
+ if (!matches) {
+ return this.with_state(block);
+ }
+ var orig_txt = matches[4];
+ if (matches[1] !== '' || matches[3] !== 'm') {
+ return this.with_state(orig_txt);
+ }
+ var sgr_cmds = matches[2].split(';');
+ while (sgr_cmds.length > 0) {
+ var sgr_cmd_str = sgr_cmds.shift();
+ var num = parseInt(sgr_cmd_str, 10);
+ if (isNaN(num) || num === 0) {
+ this.fg = this.bg = null;
+ this.bright = false;
+ }
+ else if (num === 1) {
+ this.bright = true;
+ }
+ else if (num === 22) {
+ this.bright = false;
+ }
+ else if (num === 39) {
+ this.fg = null;
+ }
+ else if (num === 49) {
+ this.bg = null;
+ }
+ else if ((num >= 30) && (num < 38)) {
+ var bidx = this.bright ? 1 : 0;
+ this.fg = this.ansi_colors[bidx][(num - 30)];
+ }
+ else if ((num >= 90) && (num < 98)) {
+ this.fg = this.ansi_colors[1][(num - 90)];
+ }
+ else if ((num >= 40) && (num < 48)) {
+ this.bg = this.ansi_colors[0][(num - 40)];
+ }
+ else if ((num >= 100) && (num < 108)) {
+ this.bg = this.ansi_colors[1][(num - 100)];
+ }
+ else if (num === 38 || num === 48) {
+ if (sgr_cmds.length > 0) {
+ var is_foreground = (num === 38);
+ var mode_cmd = sgr_cmds.shift();
+ if (mode_cmd === '5' && sgr_cmds.length > 0) {
+ var palette_index = parseInt(sgr_cmds.shift(), 10);
+ if (palette_index >= 0 && palette_index <= 255) {
+ if (is_foreground)
+ this.fg = this.palette_256[palette_index];
+ else
+ this.bg = this.palette_256[palette_index];
+ }
+ }
+ if (mode_cmd === '2' && sgr_cmds.length > 2) {
+ var r = parseInt(sgr_cmds.shift(), 10);
+ var g = parseInt(sgr_cmds.shift(), 10);
+ var b = parseInt(sgr_cmds.shift(), 10);
+ if ((r >= 0 && r <= 255) && (g >= 0 && g <= 255) && (b >= 0 && b <= 255)) {
+ var c = { rgb: [r, g, b], class_name: 'truecolor' };
+ if (is_foreground)
+ this.fg = c;
+ else
+ this.bg = c;
+ }
+ }
+ }
+ }
+ }
+ return this.with_state(orig_txt);
+ var _a;
+ };
+ return AnsiUp;
+}());
+//# sourceMappingURL=ansi_up.js.map
\ No newline at end of file
diff --git a/js/node/node_modules/ansi_up/dist/ansi_up.js.map b/js/node/node_modules/ansi_up/dist/ansi_up.js.map
new file mode 100644
index 0000000000..3d561a8b2e
--- /dev/null
+++ b/js/node/node_modules/ansi_up/dist/ansi_up.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ansi_up.js","sourceRoot":"","sources":["../ansi_up.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/js/node/node_modules/ansi_up/examples/browser.html b/js/node/node_modules/ansi_up/examples/browser.html
new file mode 100644
index 0000000000..c59d3941ff
--- /dev/null
+++ b/js/node/node_modules/ansi_up/examples/browser.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/js/node/node_modules/ansi_up/examples/browser_amd.html b/js/node/node_modules/ansi_up/examples/browser_amd.html
new file mode 100644
index 0000000000..ddd981d9bb
--- /dev/null
+++ b/js/node/node_modules/ansi_up/examples/browser_amd.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/js/node/node_modules/ansi_up/examples/jquery-1.7.2.min.js b/js/node/node_modules/ansi_up/examples/jquery-1.7.2.min.js
new file mode 100644
index 0000000000..16ad06c5ac
--- /dev/null
+++ b/js/node/node_modules/ansi_up/examples/jquery-1.7.2.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;ca",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q=""+"",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,""],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>$2>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/