From 36c80d45fcb0a7b06c8eb8f50a010d85e107745a Mon Sep 17 00:00:00 2001 From: "Christopher C. Wells" Date: Mon, 7 Jun 2021 20:59:25 -0700 Subject: [PATCH] Update to Plotly 2.x. --- package-lock.json | 319 +- package.json | 4 +- ....455350929c2f.js => graph.09e32032c8ef.js} | 33914 +++++++++------- static/babybuddy/js/graph.09e32032c8ef.js.gz | Bin 0 -> 824232 bytes static/babybuddy/js/graph.455350929c2f.js.gz | Bin 749718 -> 0 bytes static/babybuddy/js/graph.js | 33914 +++++++++------- static/babybuddy/js/graph.js.gz | Bin 749718 -> 824232 bytes static/staticfiles.json | 2 +- 8 files changed, 39828 insertions(+), 28325 deletions(-) rename static/babybuddy/js/{graph.455350929c2f.js => graph.09e32032c8ef.js} (82%) create mode 100644 static/babybuddy/js/graph.09e32032c8ef.js.gz delete mode 100644 static/babybuddy/js/graph.455350929c2f.js.gz diff --git a/package-lock.json b/package-lock.json index 530b2ae9..8c252ac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,11 +21,11 @@ "jquery": "^3.6.0", "moment": "^2.29.1", "moment-timezone": "^0.5.33", - "plotly.js": "^1.58.4", + "plotly.js": "^2.0.0", "popper.js": "^1.16.1", "pulltorefreshjs": "^0.1.22", "pump": "^3.0.0", - "stylelint": "^13.12.0", + "stylelint": "^13.13.1", "stylelint-config-recommended-scss": "^4.2.0", "stylelint-order": "^4.1.0", "stylelint-scss": "^3.19.0", @@ -482,6 +482,12 @@ "node": ">= 8" } }, + "node_modules/@plotly/d3": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.6.0.tgz", + "integrity": "sha512-5p6+3TlVn4k/xEfnohYzC2sWQBLW+4l0JbRdNJpO5dAVMOuNTXd0Bdbcsu299u/AjVHmBAGsXPrSNQSXugBrHA==", + "dev": true + }, "node_modules/@plotly/d3-sankey": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz", @@ -2476,12 +2482,6 @@ "type": "^1.0.1" } }, - "node_modules/d3": { - "version": "3.5.17", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", - "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=", - "dev": true - }, "node_modules/d3-array": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", @@ -2977,12 +2977,6 @@ "es6-symbol": "^3.1.1" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, "node_modules/es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -3985,23 +3979,6 @@ "integrity": "sha1-WXpQTjZHUP9QJTqjX43qevSl0jM=", "dev": true }, - "node_modules/gl-contour2d": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/gl-contour2d/-/gl-contour2d-1.1.7.tgz", - "integrity": "sha512-GdebvJ9DtT3pJDpoE+eU2q+Wo9S3MijPpPz5arZbhK85w2bARmpFpVfPaDlZqWkB644W3BlH8TVyvAo1KE4Bhw==", - "dev": true, - "dependencies": { - "binary-search-bounds": "^2.0.4", - "cdt2d": "^1.0.0", - "clean-pslg": "^1.1.2", - "gl-buffer": "^2.1.2", - "gl-shader": "^4.2.1", - "glslify": "^7.0.0", - "iota-array": "^1.0.0", - "ndarray": "^1.0.18", - "surface-nets": "^1.0.2" - } - }, "node_modules/gl-error3d": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/gl-error3d/-/gl-error3d-1.0.16.tgz", @@ -5460,6 +5437,18 @@ "npm": ">=1.3.7" } }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -5500,18 +5489,6 @@ "quantize": "^1.0.2" } }, - "node_modules/image-size": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz", - "integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==", - "dev": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -6380,6 +6357,12 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -7377,6 +7360,12 @@ "node": ">=0.10.0" } }, + "node_modules/native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, "node_modules/ndarray": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz", @@ -7451,6 +7440,38 @@ "typedarray-pool": "^1.0.0" } }, + "node_modules/needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -8310,11 +8331,12 @@ } }, "node_modules/plotly.js": { - "version": "1.58.4", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.58.4.tgz", - "integrity": "sha512-hdt/aEvkPjS1HJ7tJKcPqsqi9ErEZPhUFs4d2ANTLeBim+AmVcHzS1rtwr7ZrVCINgliW/+92u81omJoy+lbUw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.0.0.tgz", + "integrity": "sha512-h3Qt6arIEBFnR3Vgw04SrORmjJEcsdGK29R6o6pyUqejJjXiRVR7zNBwQsPPfTP7JP5IHpXFs2sIukSSREmSAQ==", "dev": true, "dependencies": { + "@plotly/d3": "^3.6.0", "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", "@plotly/point-cluster": "^3.1.9", @@ -8329,18 +8351,15 @@ "color-rgba": "2.1.1", "convex-hull": "^1.0.3", "country-regex": "^1.1.0", - "d3": "^3.5.17", "d3-force": "^1.2.1", "d3-hierarchy": "^1.1.9", "d3-interpolate": "^1.4.0", "d3-time-format": "^2.2.3", "delaunay-triangulate": "^1.1.6", - "es6-promise": "^4.2.8", "fast-isnumeric": "^1.1.4", "gl-cone3d": "^1.5.2", - "gl-contour2d": "^1.1.7", "gl-error3d": "^1.0.16", - "gl-heatmap2d": "^1.1.0", + "gl-heatmap2d": "^1.1.1", "gl-line3d": "1.2.1", "gl-mat4": "^1.2.0", "gl-mesh3d": "^2.3.1", @@ -8356,25 +8375,25 @@ "glslify": "^7.1.1", "has-hover": "^1.0.1", "has-passive-events": "^1.0.0", - "image-size": "^0.7.5", "is-mobile": "^2.2.2", "mapbox-gl": "1.10.1", "matrix-camera-controller": "^2.1.3", "mouse-change": "^1.4.0", "mouse-event-offset": "^3.0.2", "mouse-wheel": "^1.2.0", + "native-promise-only": "^0.8.1", "ndarray": "^1.0.19", "ndarray-linear-interpolate": "^1.0.0", "parse-svg-path": "^0.1.2", "polybooljs": "^1.2.0", + "probe-image-size": "^7.1.0", "regl": "^1.6.1", "regl-error2d": "^2.0.11", - "regl-line2d": "^3.0.18", - "regl-scatter2d": "^3.2.1", - "regl-splom": "^1.0.12", + "regl-line2d": "^3.1.0", + "regl-scatter2d": "^3.2.3", + "regl-splom": "^1.0.14", "right-now": "^1.0.0", "robust-orientation": "^1.1.3", - "sane-topojson": "^4.0.0", "strongly-connected-components": "^1.0.1", "superscript-text": "^1.0.0", "svg-path-sdf": "^1.1.3", @@ -8650,6 +8669,17 @@ "node": ">= 0.8" } }, + "node_modules/probe-image-size": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.1.tgz", + "integrity": "sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==", + "dev": true, + "dependencies": { + "lodash.merge": "^4.6.2", + "needle": "^2.5.2", + "stream-parser": "~0.3.1" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -9677,12 +9707,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "node_modules/sane-topojson": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/sane-topojson/-/sane-topojson-4.0.0.tgz", - "integrity": "sha512-bJILrpBboQfabG3BNnHI2hZl52pbt80BE09u4WhnrmzuF2JbMKZdl62G5glXskJ46p+gxE2IzOwGj/awR4g8AA==", - "dev": true - }, "node_modules/sass-graph": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", @@ -9843,6 +9867,12 @@ "decamelize": "^1.2.0" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "node_modules/scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -10425,6 +10455,15 @@ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", "dev": true }, + "node_modules/stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "dev": true, + "dependencies": { + "debug": "2" + } + }, "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -13137,6 +13176,12 @@ "fastq": "^1.6.0" } }, + "@plotly/d3": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.6.0.tgz", + "integrity": "sha512-5p6+3TlVn4k/xEfnohYzC2sWQBLW+4l0JbRdNJpO5dAVMOuNTXd0Bdbcsu299u/AjVHmBAGsXPrSNQSXugBrHA==", + "dev": true + }, "@plotly/d3-sankey": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz", @@ -14831,12 +14876,6 @@ "type": "^1.0.1" } }, - "d3": { - "version": "3.5.17", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", - "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=", - "dev": true - }, "d3-array": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", @@ -15282,12 +15321,6 @@ "es6-symbol": "^3.1.1" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -16116,23 +16149,6 @@ "integrity": "sha1-WXpQTjZHUP9QJTqjX43qevSl0jM=", "dev": true }, - "gl-contour2d": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/gl-contour2d/-/gl-contour2d-1.1.7.tgz", - "integrity": "sha512-GdebvJ9DtT3pJDpoE+eU2q+Wo9S3MijPpPz5arZbhK85w2bARmpFpVfPaDlZqWkB644W3BlH8TVyvAo1KE4Bhw==", - "dev": true, - "requires": { - "binary-search-bounds": "^2.0.4", - "cdt2d": "^1.0.0", - "clean-pslg": "^1.1.2", - "gl-buffer": "^2.1.2", - "gl-shader": "^4.2.1", - "glslify": "^7.0.0", - "iota-array": "^1.0.0", - "ndarray": "^1.0.18", - "surface-nets": "^1.0.2" - } - }, "gl-error3d": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/gl-error3d/-/gl-error3d-1.0.16.tgz", @@ -17416,6 +17432,15 @@ "sshpk": "^1.7.0" } }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -17439,12 +17464,6 @@ "quantize": "^1.0.2" } }, - "image-size": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz", - "integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==", - "dev": true - }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -18129,6 +18148,12 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -18932,6 +18957,12 @@ } } }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, "ndarray": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/ndarray/-/ndarray-1.0.19.tgz", @@ -19006,6 +19037,34 @@ "typedarray-pool": "^1.0.0" } }, + "needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dev": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -19694,11 +19753,12 @@ } }, "plotly.js": { - "version": "1.58.4", - "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-1.58.4.tgz", - "integrity": "sha512-hdt/aEvkPjS1HJ7tJKcPqsqi9ErEZPhUFs4d2ANTLeBim+AmVcHzS1rtwr7ZrVCINgliW/+92u81omJoy+lbUw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.0.0.tgz", + "integrity": "sha512-h3Qt6arIEBFnR3Vgw04SrORmjJEcsdGK29R6o6pyUqejJjXiRVR7zNBwQsPPfTP7JP5IHpXFs2sIukSSREmSAQ==", "dev": true, "requires": { + "@plotly/d3": "^3.6.0", "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", "@plotly/point-cluster": "^3.1.9", @@ -19713,18 +19773,15 @@ "color-rgba": "2.1.1", "convex-hull": "^1.0.3", "country-regex": "^1.1.0", - "d3": "^3.5.17", "d3-force": "^1.2.1", "d3-hierarchy": "^1.1.9", "d3-interpolate": "^1.4.0", "d3-time-format": "^2.2.3", "delaunay-triangulate": "^1.1.6", - "es6-promise": "^4.2.8", "fast-isnumeric": "^1.1.4", "gl-cone3d": "^1.5.2", - "gl-contour2d": "^1.1.7", "gl-error3d": "^1.0.16", - "gl-heatmap2d": "^1.1.0", + "gl-heatmap2d": "^1.1.1", "gl-line3d": "1.2.1", "gl-mat4": "^1.2.0", "gl-mesh3d": "^2.3.1", @@ -19740,25 +19797,25 @@ "glslify": "^7.1.1", "has-hover": "^1.0.1", "has-passive-events": "^1.0.0", - "image-size": "^0.7.5", "is-mobile": "^2.2.2", "mapbox-gl": "1.10.1", "matrix-camera-controller": "^2.1.3", "mouse-change": "^1.4.0", "mouse-event-offset": "^3.0.2", "mouse-wheel": "^1.2.0", + "native-promise-only": "^0.8.1", "ndarray": "^1.0.19", "ndarray-linear-interpolate": "^1.0.0", "parse-svg-path": "^0.1.2", "polybooljs": "^1.2.0", + "probe-image-size": "^7.1.0", "regl": "^1.6.1", "regl-error2d": "^2.0.11", - "regl-line2d": "^3.0.18", - "regl-scatter2d": "^3.2.1", - "regl-splom": "^1.0.12", + "regl-line2d": "^3.1.0", + "regl-scatter2d": "^3.2.3", + "regl-splom": "^1.0.14", "right-now": "^1.0.0", "robust-orientation": "^1.1.3", - "sane-topojson": "^4.0.0", "strongly-connected-components": "^1.0.1", "superscript-text": "^1.0.0", "svg-path-sdf": "^1.1.3", @@ -19981,6 +20038,17 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, + "probe-image-size": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.1.tgz", + "integrity": "sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==", + "dev": true, + "requires": { + "lodash.merge": "^4.6.2", + "needle": "^2.5.2", + "stream-parser": "~0.3.1" + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -20822,12 +20890,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sane-topojson": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/sane-topojson/-/sane-topojson-4.0.0.tgz", - "integrity": "sha512-bJILrpBboQfabG3BNnHI2hZl52pbt80BE09u4WhnrmzuF2JbMKZdl62G5glXskJ46p+gxE2IzOwGj/awR4g8AA==", - "dev": true - }, "sass-graph": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", @@ -20963,6 +21025,12 @@ } } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -21462,6 +21530,15 @@ "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", "dev": true }, + "stream-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", + "dev": true, + "requires": { + "debug": "2" + } + }, "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -22235,14 +22312,24 @@ "resolved": "https://registry.npmjs.org/tempusdominus-bootstrap-4/-/tempusdominus-bootstrap-4-5.39.0.tgz", "integrity": "sha512-vYnkmQYQq4+A51WyRc/6e03eM0BHDoPaxd556K1pd4Nhr0eGeB3+Mi9b+3CDx4189fg3gQlrsKzgJiHPRwSX3Q==", "dev": true, - "requires": {} + "requires": { + "bootstrap": "^4.5.2", + "jquery": "^3.5.1", + "moment": "^2.29.0", + "moment-timezone": "^0.5.31", + "popper.js": "^1.16.1" + } }, "tempusdominus-core": { "version": "5.19.0", "resolved": "https://registry.npmjs.org/tempusdominus-core/-/tempusdominus-core-5.19.0.tgz", "integrity": "sha512-7a4oBQw4cjz6C87BLRg3KHVvzpnPlnRTkuDZ7SwcJayQQ4QgOryX5u6wj0q07TXhgtMQLCntZO6nVhHIKPaeUw==", "dev": true, - "requires": {} + "requires": { + "jquery": "^3.5.0", + "moment": "~2.24.0", + "moment-timezone": "^0.5.28" + } }, "text-cache": { "version": "4.2.2", diff --git a/package.json b/package.json index 712c6676..70a85130 100644 --- a/package.json +++ b/package.json @@ -22,11 +22,11 @@ "jquery": "^3.6.0", "moment": "^2.29.1", "moment-timezone": "^0.5.33", - "plotly.js": "^1.58.4", + "plotly.js": "^2.0.0", "popper.js": "^1.16.1", "pulltorefreshjs": "^0.1.22", "pump": "^3.0.0", - "stylelint": "^13.12.0", + "stylelint": "^13.13.1", "stylelint-config-recommended-scss": "^4.2.0", "stylelint-order": "^4.1.0", "stylelint-scss": "^3.19.0", diff --git a/static/babybuddy/js/graph.455350929c2f.js b/static/babybuddy/js/graph.09e32032c8ef.js similarity index 82% rename from static/babybuddy/js/graph.455350929c2f.js rename to static/babybuddy/js/graph.09e32032c8ef.js index 87e8690c..b966640e 100644 --- a/static/babybuddy/js/graph.455350929c2f.js +++ b/static/babybuddy/js/graph.09e32032c8ef.js @@ -1,6 +1,6 @@ /** -* plotly.js (cartesian) v1.58.4 -* Copyright 2012-2020, Plotly, Inc. +* plotly.js (cartesian) v2.0.0 +* Copyright 2012-2021, Plotly, Inc. * All rights reserved. * Licensed under the MIT license */ @@ -72,3694 +72,126 @@ for(var selector in rules) { Lib.addStyleRule(fullSelector, rules[selector]); } -},{"../src/lib":233}],2:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/lib":285}],2:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/transforms/aggregate'); + +},{"../src/transforms/aggregate":541}],3:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/bar'); -},{"../src/traces/bar":344}],3:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/bar":391}],4:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/box'); -},{"../src/traces/box":359}],4:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/traces/box":406}],5:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/components/calendars'); + +},{"../src/components/calendars":153}],6:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/contour'); -},{"../src/traces/contour":379}],5:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/contour":426}],7:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/core'); -},{"../src/core":214}],6:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/core":267}],8:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/transforms/filter'); + +},{"../src/transforms/filter":542}],9:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = _dereq_('../src/transforms/groupby'); + +},{"../src/transforms/groupby":543}],10:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/heatmap'); -},{"../src/traces/heatmap":395}],7:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/heatmap":442}],11:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram'); -},{"../src/traces/histogram":413}],8:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/histogram":460}],12:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2d'); -},{"../src/traces/histogram2d":419}],9:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/histogram2d":466}],13:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2dcontour'); -},{"../src/traces/histogram2dcontour":423}],10:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/histogram2dcontour":470}],14:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/image'); -},{"../src/traces/image":431}],11:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/image":478}],15:[function(_dereq_,module,exports){ 'use strict'; var Plotly = _dereq_('./core'); Plotly.register([ + // traces _dereq_('./bar'), _dereq_('./box'), _dereq_('./heatmap'), _dereq_('./histogram'), _dereq_('./histogram2d'), _dereq_('./histogram2dcontour'), - _dereq_('./image'), - _dereq_('./pie'), _dereq_('./contour'), _dereq_('./scatterternary'), - _dereq_('./violin') + _dereq_('./violin'), + _dereq_('./image'), + _dereq_('./pie'), + + // transforms + _dereq_('./aggregate'), + _dereq_('./filter'), + _dereq_('./groupby'), + _dereq_('./sort'), + + // components + _dereq_('./calendars'), ]); module.exports = Plotly; -},{"./bar":2,"./box":3,"./contour":4,"./core":5,"./heatmap":6,"./histogram":7,"./histogram2d":8,"./histogram2dcontour":9,"./image":10,"./pie":12,"./scatterternary":13,"./violin":14}],12:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./aggregate":2,"./bar":3,"./box":4,"./calendars":5,"./contour":6,"./core":7,"./filter":8,"./groupby":9,"./heatmap":10,"./histogram":11,"./histogram2d":12,"./histogram2dcontour":13,"./image":14,"./pie":16,"./scatterternary":17,"./sort":18,"./violin":19}],16:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/pie'); -},{"../src/traces/pie":440}],13:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/pie":487}],17:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/scatterternary'); -},{"../src/traces/scatterternary":481}],14:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/traces/scatterternary":528}],18:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/transforms/sort'); + +},{"../src/transforms/sort":545}],19:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/violin'); -},{"../src/traces/violin":489}],15:[function(_dereq_,module,exports){ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function getLens (b64) { - var len = b64.length - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4) - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - - var curByte = 0 - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen - - var i - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk( - uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) - )) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } - - return parts.join('') -} - -},{}],16:[function(_dereq_,module,exports){ - -},{}],17:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -'use strict'; - -var R = typeof Reflect === 'object' ? Reflect : null -var ReflectApply = R && typeof R.apply === 'function' - ? R.apply - : function ReflectApply(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - } - -var ReflectOwnKeys -if (R && typeof R.ownKeys === 'function') { - ReflectOwnKeys = R.ownKeys -} else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target) - .concat(Object.getOwnPropertySymbols(target)); - }; -} else { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target); - }; -} - -function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); -} - -var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { - return value !== value; -} - -function EventEmitter() { - EventEmitter.init.call(this); -} -module.exports = EventEmitter; -module.exports.once = once; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._eventsCount = 0; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -var defaultMaxListeners = 10; - -function checkListener(listener) { - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } -} - -Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); - } - defaultMaxListeners = arg; - } -}); - -EventEmitter.init = function() { - - if (this._events === undefined || - this._events === Object.getPrototypeOf(this)._events) { - this._events = Object.create(null); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; -}; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); - } - this._maxListeners = n; - return this; -}; - -function _getMaxListeners(that) { - if (that._maxListeners === undefined) - return EventEmitter.defaultMaxListeners; - return that._maxListeners; -} - -EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); -}; - -EventEmitter.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = (type === 'error'); - - var events = this._events; - if (events !== undefined) - doError = (doError && events.error === undefined); - else if (!doError) - return false; - - // If there is no 'error' event listener then throw. - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - // Note: The comments on the `throw` lines are intentional, they show - // up in Node's output if this results in an unhandled exception. - throw er; // Unhandled 'error' event - } - // At least give some kind of context to the user - var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); - err.context = er; - throw err; // Unhandled 'error' event - } - - var handler = events[type]; - - if (handler === undefined) - return false; - - if (typeof handler === 'function') { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - - return true; -}; - -function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - checkListener(listener); - - events = target._events; - if (events === undefined) { - events = target._events = Object.create(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener !== undefined) { - target.emit('newListener', type, - listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; - } - existing = events[type]; - } - - if (existing === undefined) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = - prepend ? [listener, existing] : [existing, listener]; - // If we've already got an array, just append. - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - - // Check for listener leak - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - // No error code for this since it is a Warning - // eslint-disable-next-line no-restricted-syntax - var w = new Error('Possible EventEmitter memory leak detected. ' + - existing.length + ' ' + String(type) + ' listeners ' + - 'added. Use emitter.setMaxListeners() to ' + - 'increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - - return target; -} - -EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.prependListener = - function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - -function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } -} - -function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; -} - -EventEmitter.prototype.once = function once(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; -}; - -EventEmitter.prototype.prependOnceListener = - function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - -// Emits a 'removeListener' event if and only if the listener was removed. -EventEmitter.prototype.removeListener = - function removeListener(type, listener) { - var list, events, position, i, originalListener; - - checkListener(listener); - - events = this._events; - if (events === undefined) - return this; - - list = events[type]; - if (list === undefined) - return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else { - delete events[type]; - if (events.removeListener) - this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) - return this; - - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - - if (list.length === 1) - events[type] = list[0]; - - if (events.removeListener !== undefined) - this.emit('removeListener', type, originalListener || listener); - } - - return this; - }; - -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; - -EventEmitter.prototype.removeAllListeners = - function removeAllListeners(type) { - var listeners, events, i; - - events = this._events; - if (events === undefined) - return this; - - // not listening for removeListener, no need to emit - if (events.removeListener === undefined) { - if (arguments.length === 0) { - this._events = Object.create(null); - this._eventsCount = 0; - } else if (events[type] !== undefined) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else - delete events[type]; - } - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = Object.keys(events); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = Object.create(null); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners !== undefined) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - - return this; - }; - -function _listeners(target, type, unwrap) { - var events = target._events; - - if (events === undefined) - return []; - - var evlistener = events[type]; - if (evlistener === undefined) - return []; - - if (typeof evlistener === 'function') - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - - return unwrap ? - unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); -} - -EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); -}; - -EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); -}; - -EventEmitter.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } -}; - -EventEmitter.prototype.listenerCount = listenerCount; -function listenerCount(type) { - var events = this._events; - - if (events !== undefined) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener !== undefined) { - return evlistener.length; - } - } - - return 0; -} - -EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; -}; - -function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; -} - -function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); -} - -function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; -} - -function once(emitter, name) { - return new Promise(function (resolve, reject) { - function eventListener() { - if (errorListener !== undefined) { - emitter.removeListener('error', errorListener); - } - resolve([].slice.call(arguments)); - }; - var errorListener; - - // Adding an error listener is not optional because - // if an error is thrown on an event emitter we cannot - // guarantee that the actual event we are waiting will - // be fired. The result could be a silent way to create - // memory or file descriptor leaks, which is something - // we should avoid. - if (name !== 'error') { - errorListener = function errorListener(err) { - emitter.removeListener(name, eventListener); - reject(err); - }; - - emitter.once('error', errorListener); - } - - emitter.once(name, eventListener); - }); -} - -},{}],18:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = _dereq_('base64-js') -var ieee754 = _dereq_('ieee754') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -var K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1) - arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length) - buf.__proto__ = Buffer.prototype - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }) -} - -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - var valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - var b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -} - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Buffer.prototype.__proto__ = Uint8Array.prototype -Buffer.__proto__ = Uint8Array - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -} - -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - var length = byteLength(string, encoding) | 0 - var buf = createBuffer(length) - - var actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) - } - - return buf -} - -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - var buf = createBuffer(length) - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 - } - return buf -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - var buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) - } - - // Return an augmented `Uint8Array` instance - buf.__proto__ = Buffer.prototype - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - var buf = createBuffer(len) - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -} - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf) - } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - var len = string.length - var mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - var strLen = string.length - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - newBuf.__proto__ = Buffer.prototype - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } - } - } else if (typeof val === 'number') { - val = val & 255 - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - var len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -}).call(this)}).call(this,_dereq_("buffer").Buffer) -},{"base64-js":15,"buffer":18,"ieee754":56}],19:[function(_dereq_,module,exports){ -// https://d3js.org/d3-time-format/ v2.2.3 Copyright 2019 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, _dereq_('d3-time')) : -typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) : -(global = global || self, factory(global.d3 = global.d3 || {}, global.d3)); -}(this, function (exports, d3Time) { 'use strict'; - -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date.setFullYear(d.y); - return date; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} - -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date.setUTCFullYear(d.y); - return date; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} - -function newDate(y, m, d) { - return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; -} - -function formatLocale(locale) { - var locale_dateTime = locale.dateTime, - locale_date = locale.date, - locale_time = locale.time, - locale_periods = locale.periods, - locale_weekdays = locale.days, - locale_shortWeekdays = locale.shortDays, - locale_months = locale.months, - locale_shortMonths = locale.shortMonths; - - var periodRe = formatRe(locale_periods), - periodLookup = formatLookup(locale_periods), - weekdayRe = formatRe(locale_weekdays), - weekdayLookup = formatLookup(locale_weekdays), - shortWeekdayRe = formatRe(locale_shortWeekdays), - shortWeekdayLookup = formatLookup(locale_shortWeekdays), - monthRe = formatRe(locale_months), - monthLookup = formatLookup(locale_months), - shortMonthRe = formatRe(locale_shortMonths), - shortMonthLookup = formatLookup(locale_shortMonths); - - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - - // These recursive directive definitions must be deferred. - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - - function newFormat(specifier, formats) { - return function(date) { - var string = [], - i = -1, - j = 0, - n = specifier.length, - c, - pad, - format; - - if (!(date instanceof Date)) date = new Date(+date); - - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); - else pad = c === "e" ? " " : "0"; - if (format = formats[c]) c = format(date, pad); - string.push(c); - j = i + 1; - } - } - - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, undefined, 1), - i = parseSpecifier(d, specifier, string += "", 0), - week, day; - if (i != string.length) return null; - - // If a UNIX timestamp is specified, return it. - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); - - // If this is utcParse, never use the local timezone. - if (Z && !("Z" in d)) d.Z = 0; - - // The am-pm flag is 0 for AM, and 1 for PM. - if ("p" in d) d.H = d.H % 12 + d.p * 12; - - // If the month was not specified, inherit from the quarter. - if (d.m === undefined) d.m = "q" in d ? d.q : 0; - - // Convert day-of-week and week-of-year to day-of-year. - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); - week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week); - week = d3Time.utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); - week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week); - week = d3Time.timeDay.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; - } - - // If a time zone is specified, all fields are interpreted as UTC and then - // offset according to the specified time zone. - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - - // Otherwise, all fields are in local time. - return localDate(d); - }; - } - - function parseSpecifier(d, specifier, string, j) { - var i = 0, - n = specifier.length, - m = string.length, - c, - parse; - - while (i < n) { - if (j >= m) return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || ((j = parse(d, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - - return j; - } - - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { return specifier; }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { return specifier; }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { return specifier; }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { return specifier; }; - return p; - } - }; -} - -var pads = {"-": "", "_": " ", "0": "0"}, - numberRe = /^\s*\d+/, // note: ignores next directive - percentRe = /^%/, - requoteRe = /[\\^$*+?|[\]().{}]/g; - -function pad(value, fill, width) { - var sign = value < 0 ? "-" : "", - string = (sign ? -value : value) + "", - length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); -} - -function requote(s) { - return s.replace(requoteRe, "\\$&"); -} - -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} - -function formatLookup(names) { - var map = {}, i = -1, n = names.length; - while (++i < n) map[names[i].toLowerCase()] = i; - return map; -} - -function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} - -function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} - -function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} - -function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; -} - -function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} - -function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} - -function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} - -function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} - -function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} - -function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} - -function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} - -function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} - -function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} - -function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; -} - -function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} - -function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} - -function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} - -function formatDayOfMonth(d, p) { - return pad(d.getDate(), p, 2); -} - -function formatHour24(d, p) { - return pad(d.getHours(), p, 2); -} - -function formatHour12(d, p) { - return pad(d.getHours() % 12 || 12, p, 2); -} - -function formatDayOfYear(d, p) { - return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3); -} - -function formatMilliseconds(d, p) { - return pad(d.getMilliseconds(), p, 3); -} - -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} - -function formatMonthNumber(d, p) { - return pad(d.getMonth() + 1, p, 2); -} - -function formatMinutes(d, p) { - return pad(d.getMinutes(), p, 2); -} - -function formatSeconds(d, p) { - return pad(d.getSeconds(), p, 2); -} - -function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; -} - -function formatWeekNumberSunday(d, p) { - return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2); -} - -function formatWeekNumberISO(d, p) { - var day = d.getDay(); - d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d); - return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2); -} - -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} - -function formatWeekNumberMonday(d, p) { - return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2); -} - -function formatYear(d, p) { - return pad(d.getFullYear() % 100, p, 2); -} - -function formatFullYear(d, p) { - return pad(d.getFullYear() % 10000, p, 4); -} - -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) - + pad(z / 60 | 0, "0", 2) - + pad(z % 60, "0", 2); -} - -function formatUTCDayOfMonth(d, p) { - return pad(d.getUTCDate(), p, 2); -} - -function formatUTCHour24(d, p) { - return pad(d.getUTCHours(), p, 2); -} - -function formatUTCHour12(d, p) { - return pad(d.getUTCHours() % 12 || 12, p, 2); -} - -function formatUTCDayOfYear(d, p) { - return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3); -} - -function formatUTCMilliseconds(d, p) { - return pad(d.getUTCMilliseconds(), p, 3); -} - -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} - -function formatUTCMonthNumber(d, p) { - return pad(d.getUTCMonth() + 1, p, 2); -} - -function formatUTCMinutes(d, p) { - return pad(d.getUTCMinutes(), p, 2); -} - -function formatUTCSeconds(d, p) { - return pad(d.getUTCSeconds(), p, 2); -} - -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} - -function formatUTCWeekNumberSunday(d, p) { - return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2); -} - -function formatUTCWeekNumberISO(d, p) { - var day = d.getUTCDay(); - d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d); - return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2); -} - -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} - -function formatUTCWeekNumberMonday(d, p) { - return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2); -} - -function formatUTCYear(d, p) { - return pad(d.getUTCFullYear() % 100, p, 2); -} - -function formatUTCFullYear(d, p) { - return pad(d.getUTCFullYear() % 10000, p, 4); -} - -function formatUTCZone() { - return "+0000"; -} - -function formatLiteralPercent() { - return "%"; -} - -function formatUnixTimestamp(d) { - return +d; -} - -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1000); -} - -var locale; - -defaultLocale({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); - -function defaultLocale(definition) { - locale = formatLocale(definition); - exports.timeFormat = locale.format; - exports.timeParse = locale.parse; - exports.utcFormat = locale.utcFormat; - exports.utcParse = locale.utcParse; - return locale; -} - -var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; - -function formatIsoNative(date) { - return date.toISOString(); -} - -var formatIso = Date.prototype.toISOString - ? formatIsoNative - : exports.utcFormat(isoSpecifier); - -function parseIsoNative(string) { - var date = new Date(string); - return isNaN(date) ? null : date; -} - -var parseIso = +new Date("2000-01-01T00:00:00.000Z") - ? parseIsoNative - : exports.utcParse(isoSpecifier); - -exports.isoFormat = formatIso; -exports.isoParse = parseIso; -exports.timeFormatDefaultLocale = defaultLocale; -exports.timeFormatLocale = formatLocale; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); - -},{"d3-time":20}],20:[function(_dereq_,module,exports){ -// https://d3js.org/d3-time/ v1.1.0 Copyright 2019 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : -typeof define === 'function' && define.amd ? define(['exports'], factory) : -(global = global || self, factory(global.d3 = global.d3 || {})); -}(this, function (exports) { 'use strict'; - -var t0 = new Date, - t1 = new Date; - -function newInterval(floori, offseti, count, field) { - - function interval(date) { - return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; - } - - interval.floor = function(date) { - return floori(date = new Date(+date)), date; - }; - - interval.ceil = function(date) { - return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; - }; - - interval.round = function(date) { - var d0 = interval(date), - d1 = interval.ceil(date); - return date - d0 < d1 - date ? d0 : d1; - }; - - interval.offset = function(date, step) { - return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; - }; - - interval.range = function(start, stop, step) { - var range = [], previous; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date - do range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - - interval.filter = function(test) { - return newInterval(function(date) { - if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); - }, function(date, step) { - if (date >= date) { - if (step < 0) while (++step <= 0) { - while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty - } else while (--step >= 0) { - while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty - } - } - }); - }; - - if (count) { - interval.count = function(start, end) { - t0.setTime(+start), t1.setTime(+end); - floori(t0), floori(t1); - return Math.floor(count(t0, t1)); - }; - - interval.every = function(step) { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null - : !(step > 1) ? interval - : interval.filter(field - ? function(d) { return field(d) % step === 0; } - : function(d) { return interval.count(0, d) % step === 0; }); - }; - } - - return interval; -} - -var millisecond = newInterval(function() { - // noop -}, function(date, step) { - date.setTime(+date + step); -}, function(start, end) { - return end - start; -}); - -// An optimized implementation for this simple case. -millisecond.every = function(k) { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) return null; - if (!(k > 1)) return millisecond; - return newInterval(function(date) { - date.setTime(Math.floor(date / k) * k); - }, function(date, step) { - date.setTime(+date + step * k); - }, function(start, end) { - return (end - start) / k; - }); -}; -var milliseconds = millisecond.range; - -var durationSecond = 1e3; -var durationMinute = 6e4; -var durationHour = 36e5; -var durationDay = 864e5; -var durationWeek = 6048e5; - -var second = newInterval(function(date) { - date.setTime(date - date.getMilliseconds()); -}, function(date, step) { - date.setTime(+date + step * durationSecond); -}, function(start, end) { - return (end - start) / durationSecond; -}, function(date) { - return date.getUTCSeconds(); -}); -var seconds = second.range; - -var minute = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getMinutes(); -}); -var minutes = minute.range; - -var hour = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getHours(); -}); -var hours = hour.range; - -var day = newInterval(function(date) { - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setDate(date.getDate() + step); -}, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; -}, function(date) { - return date.getDate() - 1; -}); -var days = day.range; - -function weekday(i) { - return newInterval(function(date) { - date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setDate(date.getDate() + step * 7); - }, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} - -var sunday = weekday(0); -var monday = weekday(1); -var tuesday = weekday(2); -var wednesday = weekday(3); -var thursday = weekday(4); -var friday = weekday(5); -var saturday = weekday(6); - -var sundays = sunday.range; -var mondays = monday.range; -var tuesdays = tuesday.range; -var wednesdays = wednesday.range; -var thursdays = thursday.range; -var fridays = friday.range; -var saturdays = saturday.range; - -var month = newInterval(function(date) { - date.setDate(1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setMonth(date.getMonth() + step); -}, function(start, end) { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; -}, function(date) { - return date.getMonth(); -}); -var months = month.range; - -var year = newInterval(function(date) { - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setFullYear(date.getFullYear() + step); -}, function(start, end) { - return end.getFullYear() - start.getFullYear(); -}, function(date) { - return date.getFullYear(); -}); - -// An optimized implementation for this simple case. -year.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setFullYear(Math.floor(date.getFullYear() / k) * k); - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setFullYear(date.getFullYear() + step * k); - }); -}; -var years = year.range; - -var utcMinute = newInterval(function(date) { - date.setUTCSeconds(0, 0); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getUTCMinutes(); -}); -var utcMinutes = utcMinute.range; - -var utcHour = newInterval(function(date) { - date.setUTCMinutes(0, 0, 0); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getUTCHours(); -}); -var utcHours = utcHour.range; - -var utcDay = newInterval(function(date) { - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCDate(date.getUTCDate() + step); -}, function(start, end) { - return (end - start) / durationDay; -}, function(date) { - return date.getUTCDate() - 1; -}); -var utcDays = utcDay.range; - -function utcWeekday(i) { - return newInterval(function(date) { - date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCDate(date.getUTCDate() + step * 7); - }, function(start, end) { - return (end - start) / durationWeek; - }); -} - -var utcSunday = utcWeekday(0); -var utcMonday = utcWeekday(1); -var utcTuesday = utcWeekday(2); -var utcWednesday = utcWeekday(3); -var utcThursday = utcWeekday(4); -var utcFriday = utcWeekday(5); -var utcSaturday = utcWeekday(6); - -var utcSundays = utcSunday.range; -var utcMondays = utcMonday.range; -var utcTuesdays = utcTuesday.range; -var utcWednesdays = utcWednesday.range; -var utcThursdays = utcThursday.range; -var utcFridays = utcFriday.range; -var utcSaturdays = utcSaturday.range; - -var utcMonth = newInterval(function(date) { - date.setUTCDate(1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCMonth(date.getUTCMonth() + step); -}, function(start, end) { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; -}, function(date) { - return date.getUTCMonth(); -}); -var utcMonths = utcMonth.range; - -var utcYear = newInterval(function(date) { - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step); -}, function(start, end) { - return end.getUTCFullYear() - start.getUTCFullYear(); -}, function(date) { - return date.getUTCFullYear(); -}); - -// An optimized implementation for this simple case. -utcYear.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step * k); - }); -}; -var utcYears = utcYear.range; - -exports.timeDay = day; -exports.timeDays = days; -exports.timeFriday = friday; -exports.timeFridays = fridays; -exports.timeHour = hour; -exports.timeHours = hours; -exports.timeInterval = newInterval; -exports.timeMillisecond = millisecond; -exports.timeMilliseconds = milliseconds; -exports.timeMinute = minute; -exports.timeMinutes = minutes; -exports.timeMonday = monday; -exports.timeMondays = mondays; -exports.timeMonth = month; -exports.timeMonths = months; -exports.timeSaturday = saturday; -exports.timeSaturdays = saturdays; -exports.timeSecond = second; -exports.timeSeconds = seconds; -exports.timeSunday = sunday; -exports.timeSundays = sundays; -exports.timeThursday = thursday; -exports.timeThursdays = thursdays; -exports.timeTuesday = tuesday; -exports.timeTuesdays = tuesdays; -exports.timeWednesday = wednesday; -exports.timeWednesdays = wednesdays; -exports.timeWeek = sunday; -exports.timeWeeks = sundays; -exports.timeYear = year; -exports.timeYears = years; -exports.utcDay = utcDay; -exports.utcDays = utcDays; -exports.utcFriday = utcFriday; -exports.utcFridays = utcFridays; -exports.utcHour = utcHour; -exports.utcHours = utcHours; -exports.utcMillisecond = millisecond; -exports.utcMilliseconds = milliseconds; -exports.utcMinute = utcMinute; -exports.utcMinutes = utcMinutes; -exports.utcMonday = utcMonday; -exports.utcMondays = utcMondays; -exports.utcMonth = utcMonth; -exports.utcMonths = utcMonths; -exports.utcSaturday = utcSaturday; -exports.utcSaturdays = utcSaturdays; -exports.utcSecond = second; -exports.utcSeconds = seconds; -exports.utcSunday = utcSunday; -exports.utcSundays = utcSundays; -exports.utcThursday = utcThursday; -exports.utcThursdays = utcThursdays; -exports.utcTuesday = utcTuesday; -exports.utcTuesdays = utcTuesdays; -exports.utcWednesday = utcWednesday; -exports.utcWednesdays = utcWednesdays; -exports.utcWeek = utcSunday; -exports.utcWeeks = utcSundays; -exports.utcYear = utcYear; -exports.utcYears = utcYears; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); - -},{}],21:[function(_dereq_,module,exports){ +},{"../src/traces/violin":536}],20:[function(_dereq_,module,exports){ !function() { var d3 = { - version: "3.5.17" + version: "3.6.0" }; var d3_arraySlice = [].slice, d3_array = function(list) { return d3_arraySlice.call(list); @@ -5796,9 +2228,14 @@ Object.defineProperty(exports, '__esModule', { value: true }); var o; return dsv.parseRows(text, function(row, i) { if (o) return o(row, i - 1); - var a = new Function("d", "return {" + row.map(function(name, i) { - return JSON.stringify(name) + ": d[" + i + "]"; - }).join(",") + "}"); + var a = function(d) { + var obj = {}; + var len = row.length; + for (var k = 0; k < len; ++k) { + obj[row[k]] = d[k]; + } + return obj; + }; o = f ? function(row, i) { return f(a(row), i); } : a; @@ -13310,1186 +9747,4639 @@ Object.defineProperty(exports, '__esModule', { value: true }); return request.responseXML; }); if (typeof define === "function" && define.amd) this.d3 = d3, define(d3); else if (typeof module === "object" && module.exports) module.exports = d3; else this.d3 = d3; -}(); -},{}],22:[function(_dereq_,module,exports){ -(function (process,global){(function (){ +}.apply(self); +},{}],21:[function(_dereq_,module,exports){ +(function (global){(function (){ +'use strict'; + +var objectAssign = _dereq_('object-assign'); + +// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js +// original notice: + /*! - * @overview es6-promise - a tiny implementation of Promises/A+. - * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) - * @license Licensed under MIT license - * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE - * @version v4.2.8+1e68dce6 + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT */ +function compare(a, b) { + if (a === b) { + return 0; + } -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.ES6Promise = factory()); -}(this, (function () { 'use strict'; + var x = a.length; + var y = b.length; -function objectOrFunction(x) { - var type = typeof x; - return x !== null && (type === 'object' || type === 'function'); + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); } -function isFunction(x) { - return typeof x === 'function'; +// based on node assert, original notice: +// NB: The URL to the CommonJS spec is kept just for tradition. +// node-assert has evolved a lot since then, both in API and behavior. + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS 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. + +var util = _dereq_('util/'); +var hasOwn = Object.prototype.hasOwnProperty; +var pSlice = Array.prototype.slice; +var functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; +}()); +function pToString (obj) { + return Object.prototype.toString.call(obj); } - - - -var _isArray = void 0; -if (Array.isArray) { - _isArray = Array.isArray; -} else { - _isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; } +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. -var isArray = _isArray; +var assert = module.exports = ok; -var len = 0; -var vertxNext = void 0; -var customSchedulerFn = void 0; +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) -var asap = function asap(callback, arg) { - queue[len] = callback; - queue[len + 1] = arg; - len += 2; - if (len === 2) { - // If len is 2, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - if (customSchedulerFn) { - customSchedulerFn(flush); - } else { - scheduleFlush(); +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; } } }; -function setScheduler(scheduleFn) { - customSchedulerFn = scheduleFn; +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect(self.expected), 128); } -function setAsap(asapFn) { - asap = asapFn; +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); } -var browserWindow = typeof window !== 'undefined' ? window : undefined; -var browserGlobal = browserWindow || {}; -var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; -var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; -// test for web worker but not in IE10 -var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. -// node -function useNextTick() { - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // see https://github.com/cujojs/when/issues/410 for details - return function () { - return process.nextTick(flush); +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); + } +}; + +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +assert.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } +} + + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } + + if (Error.isPrototypeOf(expected)) { + return false; + } + + return expected.call({}, actual) === true; +} + +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + actual = _tryBlock(block); + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +}; + +assert.ifError = function(err) { if (err) throw err; }; + +// Expose a strict only variant of assert +function strict(value, message) { + if (!value) fail(value, true, message, '==', strict); +} +assert.strict = objectAssign(strict, assert, { + equal: assert.strictEqual, + deepEqual: assert.deepStrictEqual, + notEqual: assert.notStrictEqual, + notDeepEqual: assert.notDeepStrictEqual +}); +assert.strict.strict = assert.strict; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"object-assign":71,"util/":24}],22:[function(_dereq_,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } } -// vertx -function useVertxTimer() { - if (typeof vertxNext !== 'undefined') { - return function () { - vertxNext(flush); +},{}],23:[function(_dereq_,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],24:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); }; } - return useSetTimeout(); -} - -function useMutationObserver() { - var iterations = 0; - var observer = new BrowserMutationObserver(flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function () { - node.data = iterations = ++iterations % 2; - }; -} - -// web worker -function useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - return function () { - return channel.port2.postMessage(0); - }; -} - -function useSetTimeout() { - // Store setTimeout reference so es6-promise will be unaffected by - // other code modifying setTimeout (like sinon.useFakeTimers()) - var globalSetTimeout = setTimeout; - return function () { - return globalSetTimeout(flush, 1); - }; -} - -var queue = new Array(1000); -function flush() { - for (var i = 0; i < len; i += 2) { - var callback = queue[i]; - var arg = queue[i + 1]; - - callback(arg); - - queue[i] = undefined; - queue[i + 1] = undefined; + if (process.noDeprecation === true) { + return fn; } - len = 0; -} - -function attemptVertx() { - try { - var vertx = Function('return this')().require('vertx'); - vertxNext = vertx.runOnLoop || vertx.runOnContext; - return useVertxTimer(); - } catch (e) { - return useSetTimeout(); - } -} - -var scheduleFlush = void 0; -// Decide what async method to use to triggering processing of queued callbacks: -if (isNode) { - scheduleFlush = useNextTick(); -} else if (BrowserMutationObserver) { - scheduleFlush = useMutationObserver(); -} else if (isWorker) { - scheduleFlush = useMessageChannel(); -} else if (browserWindow === undefined && typeof _dereq_ === 'function') { - scheduleFlush = attemptVertx(); -} else { - scheduleFlush = useSetTimeout(); -} - -function then(onFulfillment, onRejection) { - var parent = this; - - var child = new this.constructor(noop); - - if (child[PROMISE_ID] === undefined) { - makePromise(child); - } - - var _state = parent._state; - - - if (_state) { - var callback = arguments[_state - 1]; - asap(function () { - return invokeCallback(_state, child, callback, parent._result); - }); - } else { - subscribe(parent, child, onFulfillment, onRejection); - } - - return child; -} - -/** - `Promise.resolve` returns a promise that will become resolved with the - passed `value`. It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - resolve(1); - }); - - promise.then(function(value){ - // value === 1 - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.resolve(1); - - promise.then(function(value){ - // value === 1 - }); - ``` - - @method resolve - @static - @param {Any} value value that the returned promise will be resolved with - Useful for tooling. - @return {Promise} a promise that will become fulfilled with the given - `value` -*/ -function resolve$1(object) { - /*jshint validthis:true */ - var Constructor = this; - - if (object && typeof object === 'object' && object.constructor === Constructor) { - return object; - } - - var promise = new Constructor(noop); - resolve(promise, object); - return promise; -} - -var PROMISE_ID = Math.random().toString(36).substring(2); - -function noop() {} - -var PENDING = void 0; -var FULFILLED = 1; -var REJECTED = 2; - -function selfFulfillment() { - return new TypeError("You cannot resolve a promise with itself"); -} - -function cannotReturnOwn() { - return new TypeError('A promises callback cannot return that same promise.'); -} - -function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { - try { - then$$1.call(value, fulfillmentHandler, rejectionHandler); - } catch (e) { - return e; - } -} - -function handleForeignThenable(promise, thenable, then$$1) { - asap(function (promise) { - var sealed = false; - var error = tryThen(then$$1, thenable, function (value) { - if (sealed) { - return; - } - sealed = true; - if (thenable !== value) { - resolve(promise, value); + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); } else { - fulfill(promise, value); + console.error(msg); } - }, function (reason) { - if (sealed) { - return; - } - sealed = true; - - reject(promise, reason); - }, 'Settle: ' + (promise._label || ' unknown promise')); - - if (!sealed && error) { - sealed = true; - reject(promise, error); + warned = true; } - }, promise); -} - -function handleOwnThenable(promise, thenable) { - if (thenable._state === FULFILLED) { - fulfill(promise, thenable._result); - } else if (thenable._state === REJECTED) { - reject(promise, thenable._result); - } else { - subscribe(thenable, undefined, function (value) { - return resolve(promise, value); - }, function (reason) { - return reject(promise, reason); - }); - } -} - -function handleMaybeThenable(promise, maybeThenable, then$$1) { - if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { - handleOwnThenable(promise, maybeThenable); - } else { - if (then$$1 === undefined) { - fulfill(promise, maybeThenable); - } else if (isFunction(then$$1)) { - handleForeignThenable(promise, maybeThenable, then$$1); - } else { - fulfill(promise, maybeThenable); - } - } -} - -function resolve(promise, value) { - if (promise === value) { - reject(promise, selfFulfillment()); - } else if (objectOrFunction(value)) { - var then$$1 = void 0; - try { - then$$1 = value.then; - } catch (error) { - reject(promise, error); - return; - } - handleMaybeThenable(promise, value, then$$1); - } else { - fulfill(promise, value); - } -} - -function publishRejection(promise) { - if (promise._onerror) { - promise._onerror(promise._result); + return fn.apply(this, arguments); } - publish(promise); -} - -function fulfill(promise, value) { - if (promise._state !== PENDING) { - return; - } - - promise._result = value; - promise._state = FULFILLED; - - if (promise._subscribers.length !== 0) { - asap(publish, promise); - } -} - -function reject(promise, reason) { - if (promise._state !== PENDING) { - return; - } - promise._state = REJECTED; - promise._result = reason; - - asap(publishRejection, promise); -} - -function subscribe(parent, child, onFulfillment, onRejection) { - var _subscribers = parent._subscribers; - var length = _subscribers.length; - - - parent._onerror = null; - - _subscribers[length] = child; - _subscribers[length + FULFILLED] = onFulfillment; - _subscribers[length + REJECTED] = onRejection; - - if (length === 0 && parent._state) { - asap(publish, parent); - } -} - -function publish(promise) { - var subscribers = promise._subscribers; - var settled = promise._state; - - if (subscribers.length === 0) { - return; - } - - var child = void 0, - callback = void 0, - detail = promise._result; - - for (var i = 0; i < subscribers.length; i += 3) { - child = subscribers[i]; - callback = subscribers[i + settled]; - - if (child) { - invokeCallback(settled, child, callback, detail); - } else { - callback(detail); - } - } - - promise._subscribers.length = 0; -} - -function invokeCallback(settled, promise, callback, detail) { - var hasCallback = isFunction(callback), - value = void 0, - error = void 0, - succeeded = true; - - if (hasCallback) { - try { - value = callback(detail); - } catch (e) { - succeeded = false; - error = e; - } - - if (promise === value) { - reject(promise, cannotReturnOwn()); - return; - } - } else { - value = detail; - } - - if (promise._state !== PENDING) { - // noop - } else if (hasCallback && succeeded) { - resolve(promise, value); - } else if (succeeded === false) { - reject(promise, error); - } else if (settled === FULFILLED) { - fulfill(promise, value); - } else if (settled === REJECTED) { - reject(promise, value); - } -} - -function initializePromise(promise, resolver) { - try { - resolver(function resolvePromise(value) { - resolve(promise, value); - }, function rejectPromise(reason) { - reject(promise, reason); - }); - } catch (e) { - reject(promise, e); - } -} - -var id = 0; -function nextId() { - return id++; -} - -function makePromise(promise) { - promise[PROMISE_ID] = id++; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; -} - -function validationError() { - return new Error('Array Methods must be provided an Array'); -} - -var Enumerator = function () { - function Enumerator(Constructor, input) { - this._instanceConstructor = Constructor; - this.promise = new Constructor(noop); - - if (!this.promise[PROMISE_ID]) { - makePromise(this.promise); - } - - if (isArray(input)) { - this.length = input.length; - this._remaining = input.length; - - this._result = new Array(this.length); - - if (this.length === 0) { - fulfill(this.promise, this._result); - } else { - this.length = this.length || 0; - this._enumerate(input); - if (this._remaining === 0) { - fulfill(this.promise, this._result); - } - } - } else { - reject(this.promise, validationError()); - } - } - - Enumerator.prototype._enumerate = function _enumerate(input) { - for (var i = 0; this._state === PENDING && i < input.length; i++) { - this._eachEntry(input[i], i); - } - }; - - Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { - var c = this._instanceConstructor; - var resolve$$1 = c.resolve; - - - if (resolve$$1 === resolve$1) { - var _then = void 0; - var error = void 0; - var didError = false; - try { - _then = entry.then; - } catch (e) { - didError = true; - error = e; - } - - if (_then === then && entry._state !== PENDING) { - this._settledAt(entry._state, i, entry._result); - } else if (typeof _then !== 'function') { - this._remaining--; - this._result[i] = entry; - } else if (c === Promise$1) { - var promise = new c(noop); - if (didError) { - reject(promise, error); - } else { - handleMaybeThenable(promise, entry, _then); - } - this._willSettleAt(promise, i); - } else { - this._willSettleAt(new c(function (resolve$$1) { - return resolve$$1(entry); - }), i); - } - } else { - this._willSettleAt(resolve$$1(entry), i); - } - }; - - Enumerator.prototype._settledAt = function _settledAt(state, i, value) { - var promise = this.promise; - - - if (promise._state === PENDING) { - this._remaining--; - - if (state === REJECTED) { - reject(promise, value); - } else { - this._result[i] = value; - } - } - - if (this._remaining === 0) { - fulfill(promise, this._result); - } - }; - - Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { - var enumerator = this; - - subscribe(promise, undefined, function (value) { - return enumerator._settledAt(FULFILLED, i, value); - }, function (reason) { - return enumerator._settledAt(REJECTED, i, reason); - }); - }; - - return Enumerator; -}(); - -/** - `Promise.all` accepts an array of promises, and returns a new promise which - is fulfilled with an array of fulfillment values for the passed promises, or - rejected with the reason of the first passed promise to be rejected. It casts all - elements of the passed iterable to promises as it runs this algorithm. - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = resolve(2); - let promise3 = resolve(3); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // The array here would be [ 1, 2, 3 ]; - }); - ``` - - If any of the `promises` given to `all` are rejected, the first promise - that is rejected will be given as an argument to the returned promises's - rejection handler. For example: - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = reject(new Error("2")); - let promise3 = reject(new Error("3")); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // Code here never runs because there are rejected promises! - }, function(error) { - // error.message === "2" - }); - ``` - - @method all - @static - @param {Array} entries array of promises - @param {String} label optional string for labeling the promise. - Useful for tooling. - @return {Promise} promise that is fulfilled when all `promises` have been - fulfilled, or rejected if any of them become rejected. - @static -*/ -function all(entries) { - return new Enumerator(this, entries).promise; -} - -/** - `Promise.race` returns a new promise which is settled in the same way as the - first passed promise to settle. - - Example: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 2'); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // result === 'promise 2' because it was resolved before promise1 - // was resolved. - }); - ``` - - `Promise.race` is deterministic in that only the state of the first - settled promise matters. For example, even if other promises given to the - `promises` array argument are resolved, but the first settled promise has - become rejected before the other promises became fulfilled, the returned - promise will become rejected: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - reject(new Error('promise 2')); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // Code here never runs - }, function(reason){ - // reason.message === 'promise 2' because promise 2 became rejected before - // promise 1 became fulfilled - }); - ``` - - An example real-world use case is implementing timeouts: - - ```javascript - Promise.race([ajax('foo.json'), timeout(5000)]) - ``` - - @method race - @static - @param {Array} promises array of promises to observe - Useful for tooling. - @return {Promise} a promise which settles in the same way as the first passed - promise to settle. -*/ -function race(entries) { - /*jshint validthis:true */ - var Constructor = this; - - if (!isArray(entries)) { - return new Constructor(function (_, reject) { - return reject(new TypeError('You must pass an array to race.')); - }); - } else { - return new Constructor(function (resolve, reject) { - var length = entries.length; - for (var i = 0; i < length; i++) { - Constructor.resolve(entries[i]).then(resolve, reject); - } - }); - } -} - -/** - `Promise.reject` returns a promise rejected with the passed `reason`. - It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - reject(new Error('WHOOPS')); - }); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.reject(new Error('WHOOPS')); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - @method reject - @static - @param {Any} reason value that the returned promise will be rejected with. - Useful for tooling. - @return {Promise} a promise rejected with the given `reason`. -*/ -function reject$1(reason) { - /*jshint validthis:true */ - var Constructor = this; - var promise = new Constructor(noop); - reject(promise, reason); - return promise; -} - -function needsResolver() { - throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); -} - -function needsNew() { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); -} - -/** - Promise objects represent the eventual result of an asynchronous operation. The - primary way of interacting with a promise is through its `then` method, which - registers callbacks to receive either a promise's eventual value or the reason - why the promise cannot be fulfilled. - - Terminology - ----------- - - - `promise` is an object or function with a `then` method whose behavior conforms to this specification. - - `thenable` is an object or function that defines a `then` method. - - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). - - `exception` is a value that is thrown using the throw statement. - - `reason` is a value that indicates why a promise was rejected. - - `settled` the final resting state of a promise, fulfilled or rejected. - - A promise can be in one of three states: pending, fulfilled, or rejected. - - Promises that are fulfilled have a fulfillment value and are in the fulfilled - state. Promises that are rejected have a rejection reason and are in the - rejected state. A fulfillment value is never a thenable. - - Promises can also be said to *resolve* a value. If this value is also a - promise, then the original promise's settled state will match the value's - settled state. So a promise that *resolves* a promise that rejects will - itself reject, and a promise that *resolves* a promise that fulfills will - itself fulfill. - - - Basic Usage: - ------------ - - ```js - let promise = new Promise(function(resolve, reject) { - // on success - resolve(value); - - // on failure - reject(reason); - }); - - promise.then(function(value) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Advanced Usage: - --------------- - - Promises shine when abstracting away asynchronous interactions such as - `XMLHttpRequest`s. - - ```js - function getJSON(url) { - return new Promise(function(resolve, reject){ - let xhr = new XMLHttpRequest(); - - xhr.open('GET', url); - xhr.onreadystatechange = handler; - xhr.responseType = 'json'; - xhr.setRequestHeader('Accept', 'application/json'); - xhr.send(); - - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200) { - resolve(this.response); - } else { - reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); - } - } + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); }; - }); - } - - getJSON('/posts.json').then(function(json) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Unlike callbacks, promises are great composable primitives. - - ```js - Promise.all([ - getJSON('/posts'), - getJSON('/comments') - ]).then(function(values){ - values[0] // => postsJSON - values[1] // => commentsJSON - - return values; - }); - ``` - - @class Promise - @param {Function} resolver - Useful for tooling. - @constructor -*/ - -var Promise$1 = function () { - function Promise(resolver) { - this[PROMISE_ID] = nextId(); - this._result = this._state = undefined; - this._subscribers = []; - - if (noop !== resolver) { - typeof resolver !== 'function' && needsResolver(); - this instanceof Promise ? initializePromise(this, resolver) : needsNew(); - } - } - - /** - The primary way of interacting with a promise is through its `then` method, - which registers callbacks to receive either a promise's eventual value or the - reason why the promise cannot be fulfilled. - ```js - findUser().then(function(user){ - // user is available - }, function(reason){ - // user is unavailable, and you are given the reason why - }); - ``` - Chaining - -------- - The return value of `then` is itself a promise. This second, 'downstream' - promise is resolved with the return value of the first promise's fulfillment - or rejection handler, or rejected if the handler throws an exception. - ```js - findUser().then(function (user) { - return user.name; - }, function (reason) { - return 'default name'; - }).then(function (userName) { - // If `findUser` fulfilled, `userName` will be the user's name, otherwise it - // will be `'default name'` - }); - findUser().then(function (user) { - throw new Error('Found user, but still unhappy'); - }, function (reason) { - throw new Error('`findUser` rejected and we're unhappy'); - }).then(function (value) { - // never reached - }, function (reason) { - // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. - // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. - }); - ``` - If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. - ```js - findUser().then(function (user) { - throw new PedagogicalException('Upstream error'); - }).then(function (value) { - // never reached - }).then(function (value) { - // never reached - }, function (reason) { - // The `PedgagocialException` is propagated all the way down to here - }); - ``` - Assimilation - ------------ - Sometimes the value you want to propagate to a downstream promise can only be - retrieved asynchronously. This can be achieved by returning a promise in the - fulfillment or rejection handler. The downstream promise will then be pending - until the returned promise is settled. This is called *assimilation*. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // The user's comments are now available - }); - ``` - If the assimliated promise rejects, then the downstream promise will also reject. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // If `findCommentsByAuthor` fulfills, we'll have the value here - }, function (reason) { - // If `findCommentsByAuthor` rejects, we'll have the reason here - }); - ``` - Simple Example - -------------- - Synchronous Example - ```javascript - let result; - try { - result = findResult(); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - findResult(function(result, err){ - if (err) { - // failure } else { - // success + debugs[set] = function() {}; } - }); - ``` - Promise Example; - ```javascript - findResult().then(function(result){ - // success - }, function(reason){ - // failure - }); - ``` - Advanced Example - -------------- - Synchronous Example - ```javascript - let author, books; - try { - author = findAuthor(); - books = findBooksByAuthor(author); - // success - } catch(reason) { - // failure } - ``` - Errback Example - ```js - function foundBooks(books) { - } - function failure(reason) { - } - findAuthor(function(author, err){ - if (err) { - failure(err); - // failure - } else { - try { - findBoooksByAuthor(author, function(books, err) { - if (err) { - failure(err); - } else { - try { - foundBooks(books); - } catch(reason) { - failure(reason); - } - } - }); - } catch(error) { - failure(err); - } - // success - } - }); - ``` - Promise Example; - ```javascript - findAuthor(). - then(findBooksByAuthor). - then(function(books){ - // found books - }).catch(function(reason){ - // something went wrong - }); - ``` - @method then - @param {Function} onFulfilled - @param {Function} onRejected - Useful for tooling. - @return {Promise} - */ - - /** - `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same - as the catch block of a try/catch statement. - ```js - function findAuthor(){ - throw new Error('couldn't find that author'); - } - // synchronous - try { - findAuthor(); - } catch(reason) { - // something went wrong - } - // async with promises - findAuthor().catch(function(reason){ - // something went wrong - }); - ``` - @method catch - @param {Function} onRejection - Useful for tooling. - @return {Promise} - */ + return debugs[set]; +}; - Promise.prototype.catch = function _catch(onRejection) { - return this.then(null, onRejection); +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor }; - - /** - `finally` will be invoked regardless of the promise's fate just as native - try/catch/finally behaves - - Synchronous example: - - ```js - findAuthor() { - if (Math.random() > 0.5) { - throw new Error(); - } - return new Author(); - } - - try { - return findAuthor(); // succeed or fail - } catch(error) { - return findOtherAuther(); - } finally { - // always runs - // doesn't affect the return value - } - ``` - - Asynchronous example: - - ```js - findAuthor().catch(function(reason){ - return findOtherAuther(); - }).finally(function(){ - // author was either found, or not - }); - ``` - - @method finally - @param {Function} callback - @return {Promise} - */ + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; - Promise.prototype.finally = function _finally(callback) { - var promise = this; - var constructor = promise.constructor; +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; - if (isFunction(callback)) { - return promise.then(function (value) { - return constructor.resolve(callback()).then(function () { - return value; - }); - }, function (reason) { - return constructor.resolve(callback()).then(function () { - throw reason; - }); - }); - } +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; - return promise.then(callback, callback); - }; - return Promise; -}(); +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; -Promise$1.prototype.then = then; -Promise$1.all = all; -Promise$1.race = race; -Promise$1.resolve = resolve$1; -Promise$1.reject = reject$1; -Promise$1._setScheduler = setScheduler; -Promise$1._setAsap = setAsap; -Promise$1._asap = asap; - -/*global self*/ -function polyfill() { - var local = void 0; - - if (typeof global !== 'undefined') { - local = global; - } else if (typeof self !== 'undefined') { - local = self; + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; } else { - try { - local = Function('return this')(); - } catch (e) { - throw new Error('polyfill failed because global object is unavailable in this environment'); - } + return str; } - - var P = local.Promise; - - if (P) { - var promiseToString = null; - try { - promiseToString = Object.prototype.toString.call(P.resolve()); - } catch (e) { - // silently ignored - } - - if (promiseToString === '[object Promise]' && !P.cast) { - return; - } - } - - local.Promise = Promise$1; } -// Strange compat.. -Promise$1.polyfill = polyfill; -Promise$1.Promise = Promise$1; -return Promise$1; - -}))); +function stylizeNoColor(str, styleType) { + return str; +} +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = _dereq_('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = _dereq_('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} }).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":87}],23:[function(_dereq_,module,exports){ +},{"./support/isBuffer":23,"_process":96,"inherits":22}],25:[function(_dereq_,module,exports){ +'use strict' + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk( + uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) + )) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + +},{}],26:[function(_dereq_,module,exports){ + +},{}],27:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +'use strict'; + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function eventListener() { + if (errorListener !== undefined) { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + var errorListener; + + // Adding an error listener is not optional because + // if an error is thrown on an event emitter we cannot + // guarantee that the actual event we are waiting will + // be fired. The result could be a silent way to create + // memory or file descriptor leaks, which is something + // we should avoid. + if (name !== 'error') { + errorListener = function errorListener(err) { + emitter.removeListener(name, eventListener); + reject(err); + }; + + emitter.once('error', errorListener); + } + + emitter.once(name, eventListener); + }); +} + +},{}],28:[function(_dereq_,module,exports){ +(function (Buffer){(function (){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + +'use strict' + +var base64 = _dereq_('base64-js') +var ieee754 = _dereq_('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype +Buffer.__proto__ = Uint8Array + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this)}).call(this,_dereq_("buffer").Buffer) +},{"base64-js":25,"buffer":28,"ieee754":64}],29:[function(_dereq_,module,exports){ +// https://d3js.org/d3-time-format/ v2.2.3 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, _dereq_('d3-time')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) : +(global = global || self, factory(global.d3 = global.d3 || {}, global.d3)); +}(this, function (exports, d3Time) { 'use strict'; + +function localDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); + date.setFullYear(d.y); + return date; + } + return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); +} + +function utcDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); + date.setUTCFullYear(d.y); + return date; + } + return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); +} + +function newDate(y, m, d) { + return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; +} + +function formatLocale(locale) { + var locale_dateTime = locale.dateTime, + locale_date = locale.date, + locale_time = locale.time, + locale_periods = locale.periods, + locale_weekdays = locale.days, + locale_shortWeekdays = locale.shortDays, + locale_months = locale.months, + locale_shortMonths = locale.shortMonths; + + var periodRe = formatRe(locale_periods), + periodLookup = formatLookup(locale_periods), + weekdayRe = formatRe(locale_weekdays), + weekdayLookup = formatLookup(locale_weekdays), + shortWeekdayRe = formatRe(locale_shortWeekdays), + shortWeekdayLookup = formatLookup(locale_shortWeekdays), + monthRe = formatRe(locale_months), + monthLookup = formatLookup(locale_months), + shortMonthRe = formatRe(locale_shortMonths), + shortMonthLookup = formatLookup(locale_shortMonths); + + var formats = { + "a": formatShortWeekday, + "A": formatWeekday, + "b": formatShortMonth, + "B": formatMonth, + "c": null, + "d": formatDayOfMonth, + "e": formatDayOfMonth, + "f": formatMicroseconds, + "H": formatHour24, + "I": formatHour12, + "j": formatDayOfYear, + "L": formatMilliseconds, + "m": formatMonthNumber, + "M": formatMinutes, + "p": formatPeriod, + "q": formatQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatSeconds, + "u": formatWeekdayNumberMonday, + "U": formatWeekNumberSunday, + "V": formatWeekNumberISO, + "w": formatWeekdayNumberSunday, + "W": formatWeekNumberMonday, + "x": null, + "X": null, + "y": formatYear, + "Y": formatFullYear, + "Z": formatZone, + "%": formatLiteralPercent + }; + + var utcFormats = { + "a": formatUTCShortWeekday, + "A": formatUTCWeekday, + "b": formatUTCShortMonth, + "B": formatUTCMonth, + "c": null, + "d": formatUTCDayOfMonth, + "e": formatUTCDayOfMonth, + "f": formatUTCMicroseconds, + "H": formatUTCHour24, + "I": formatUTCHour12, + "j": formatUTCDayOfYear, + "L": formatUTCMilliseconds, + "m": formatUTCMonthNumber, + "M": formatUTCMinutes, + "p": formatUTCPeriod, + "q": formatUTCQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatUTCSeconds, + "u": formatUTCWeekdayNumberMonday, + "U": formatUTCWeekNumberSunday, + "V": formatUTCWeekNumberISO, + "w": formatUTCWeekdayNumberSunday, + "W": formatUTCWeekNumberMonday, + "x": null, + "X": null, + "y": formatUTCYear, + "Y": formatUTCFullYear, + "Z": formatUTCZone, + "%": formatLiteralPercent + }; + + var parses = { + "a": parseShortWeekday, + "A": parseWeekday, + "b": parseShortMonth, + "B": parseMonth, + "c": parseLocaleDateTime, + "d": parseDayOfMonth, + "e": parseDayOfMonth, + "f": parseMicroseconds, + "H": parseHour24, + "I": parseHour24, + "j": parseDayOfYear, + "L": parseMilliseconds, + "m": parseMonthNumber, + "M": parseMinutes, + "p": parsePeriod, + "q": parseQuarter, + "Q": parseUnixTimestamp, + "s": parseUnixTimestampSeconds, + "S": parseSeconds, + "u": parseWeekdayNumberMonday, + "U": parseWeekNumberSunday, + "V": parseWeekNumberISO, + "w": parseWeekdayNumberSunday, + "W": parseWeekNumberMonday, + "x": parseLocaleDate, + "X": parseLocaleTime, + "y": parseYear, + "Y": parseFullYear, + "Z": parseZone, + "%": parseLiteralPercent + }; + + // These recursive directive definitions must be deferred. + formats.x = newFormat(locale_date, formats); + formats.X = newFormat(locale_time, formats); + formats.c = newFormat(locale_dateTime, formats); + utcFormats.x = newFormat(locale_date, utcFormats); + utcFormats.X = newFormat(locale_time, utcFormats); + utcFormats.c = newFormat(locale_dateTime, utcFormats); + + function newFormat(specifier, formats) { + return function(date) { + var string = [], + i = -1, + j = 0, + n = specifier.length, + c, + pad, + format; + + if (!(date instanceof Date)) date = new Date(+date); + + while (++i < n) { + if (specifier.charCodeAt(i) === 37) { + string.push(specifier.slice(j, i)); + if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); + else pad = c === "e" ? " " : "0"; + if (format = formats[c]) c = format(date, pad); + string.push(c); + j = i + 1; + } + } + + string.push(specifier.slice(j, i)); + return string.join(""); + }; + } + + function newParse(specifier, Z) { + return function(string) { + var d = newDate(1900, undefined, 1), + i = parseSpecifier(d, specifier, string += "", 0), + week, day; + if (i != string.length) return null; + + // If a UNIX timestamp is specified, return it. + if ("Q" in d) return new Date(d.Q); + if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); + + // If this is utcParse, never use the local timezone. + if (Z && !("Z" in d)) d.Z = 0; + + // The am-pm flag is 0 for AM, and 1 for PM. + if ("p" in d) d.H = d.H % 12 + d.p * 12; + + // If the month was not specified, inherit from the quarter. + if (d.m === undefined) d.m = "q" in d ? d.q : 0; + + // Convert day-of-week and week-of-year to day-of-year. + if ("V" in d) { + if (d.V < 1 || d.V > 53) return null; + if (!("w" in d)) d.w = 1; + if ("Z" in d) { + week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); + week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week); + week = d3Time.utcDay.offset(week, (d.V - 1) * 7); + d.y = week.getUTCFullYear(); + d.m = week.getUTCMonth(); + d.d = week.getUTCDate() + (d.w + 6) % 7; + } else { + week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); + week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week); + week = d3Time.timeDay.offset(week, (d.V - 1) * 7); + d.y = week.getFullYear(); + d.m = week.getMonth(); + d.d = week.getDate() + (d.w + 6) % 7; + } + } else if ("W" in d || "U" in d) { + if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; + day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); + d.m = 0; + d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; + } + + // If a time zone is specified, all fields are interpreted as UTC and then + // offset according to the specified time zone. + if ("Z" in d) { + d.H += d.Z / 100 | 0; + d.M += d.Z % 100; + return utcDate(d); + } + + // Otherwise, all fields are in local time. + return localDate(d); + }; + } + + function parseSpecifier(d, specifier, string, j) { + var i = 0, + n = specifier.length, + m = string.length, + c, + parse; + + while (i < n) { + if (j >= m) return -1; + c = specifier.charCodeAt(i++); + if (c === 37) { + c = specifier.charAt(i++); + parse = parses[c in pads ? specifier.charAt(i++) : c]; + if (!parse || ((j = parse(d, string, j)) < 0)) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + + return j; + } + + function parsePeriod(d, string, i) { + var n = periodRe.exec(string.slice(i)); + return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortWeekday(d, string, i) { + var n = shortWeekdayRe.exec(string.slice(i)); + return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseWeekday(d, string, i) { + var n = weekdayRe.exec(string.slice(i)); + return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortMonth(d, string, i) { + var n = shortMonthRe.exec(string.slice(i)); + return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseMonth(d, string, i) { + var n = monthRe.exec(string.slice(i)); + return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseLocaleDateTime(d, string, i) { + return parseSpecifier(d, locale_dateTime, string, i); + } + + function parseLocaleDate(d, string, i) { + return parseSpecifier(d, locale_date, string, i); + } + + function parseLocaleTime(d, string, i) { + return parseSpecifier(d, locale_time, string, i); + } + + function formatShortWeekday(d) { + return locale_shortWeekdays[d.getDay()]; + } + + function formatWeekday(d) { + return locale_weekdays[d.getDay()]; + } + + function formatShortMonth(d) { + return locale_shortMonths[d.getMonth()]; + } + + function formatMonth(d) { + return locale_months[d.getMonth()]; + } + + function formatPeriod(d) { + return locale_periods[+(d.getHours() >= 12)]; + } + + function formatQuarter(d) { + return 1 + ~~(d.getMonth() / 3); + } + + function formatUTCShortWeekday(d) { + return locale_shortWeekdays[d.getUTCDay()]; + } + + function formatUTCWeekday(d) { + return locale_weekdays[d.getUTCDay()]; + } + + function formatUTCShortMonth(d) { + return locale_shortMonths[d.getUTCMonth()]; + } + + function formatUTCMonth(d) { + return locale_months[d.getUTCMonth()]; + } + + function formatUTCPeriod(d) { + return locale_periods[+(d.getUTCHours() >= 12)]; + } + + function formatUTCQuarter(d) { + return 1 + ~~(d.getUTCMonth() / 3); + } + + return { + format: function(specifier) { + var f = newFormat(specifier += "", formats); + f.toString = function() { return specifier; }; + return f; + }, + parse: function(specifier) { + var p = newParse(specifier += "", false); + p.toString = function() { return specifier; }; + return p; + }, + utcFormat: function(specifier) { + var f = newFormat(specifier += "", utcFormats); + f.toString = function() { return specifier; }; + return f; + }, + utcParse: function(specifier) { + var p = newParse(specifier += "", true); + p.toString = function() { return specifier; }; + return p; + } + }; +} + +var pads = {"-": "", "_": " ", "0": "0"}, + numberRe = /^\s*\d+/, // note: ignores next directive + percentRe = /^%/, + requoteRe = /[\\^$*+?|[\]().{}]/g; + +function pad(value, fill, width) { + var sign = value < 0 ? "-" : "", + string = (sign ? -value : value) + "", + length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); +} + +function requote(s) { + return s.replace(requoteRe, "\\$&"); +} + +function formatRe(names) { + return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); +} + +function formatLookup(names) { + var map = {}, i = -1, n = names.length; + while (++i < n) map[names[i].toLowerCase()] = i; + return map; +} + +function parseWeekdayNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.w = +n[0], i + n[0].length) : -1; +} + +function parseWeekdayNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.u = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.U = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberISO(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.V = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.W = +n[0], i + n[0].length) : -1; +} + +function parseFullYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 4)); + return n ? (d.y = +n[0], i + n[0].length) : -1; +} + +function parseYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; +} + +function parseZone(d, string, i) { + var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); + return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; +} + +function parseQuarter(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; +} + +function parseMonthNumber(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.m = n[0] - 1, i + n[0].length) : -1; +} + +function parseDayOfMonth(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.d = +n[0], i + n[0].length) : -1; +} + +function parseDayOfYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; +} + +function parseHour24(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.H = +n[0], i + n[0].length) : -1; +} + +function parseMinutes(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.M = +n[0], i + n[0].length) : -1; +} + +function parseSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.S = +n[0], i + n[0].length) : -1; +} + +function parseMilliseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.L = +n[0], i + n[0].length) : -1; +} + +function parseMicroseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 6)); + return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; +} + +function parseLiteralPercent(d, string, i) { + var n = percentRe.exec(string.slice(i, i + 1)); + return n ? i + n[0].length : -1; +} + +function parseUnixTimestamp(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = +n[0], i + n[0].length) : -1; +} + +function parseUnixTimestampSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.s = +n[0], i + n[0].length) : -1; +} + +function formatDayOfMonth(d, p) { + return pad(d.getDate(), p, 2); +} + +function formatHour24(d, p) { + return pad(d.getHours(), p, 2); +} + +function formatHour12(d, p) { + return pad(d.getHours() % 12 || 12, p, 2); +} + +function formatDayOfYear(d, p) { + return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3); +} + +function formatMilliseconds(d, p) { + return pad(d.getMilliseconds(), p, 3); +} + +function formatMicroseconds(d, p) { + return formatMilliseconds(d, p) + "000"; +} + +function formatMonthNumber(d, p) { + return pad(d.getMonth() + 1, p, 2); +} + +function formatMinutes(d, p) { + return pad(d.getMinutes(), p, 2); +} + +function formatSeconds(d, p) { + return pad(d.getSeconds(), p, 2); +} + +function formatWeekdayNumberMonday(d) { + var day = d.getDay(); + return day === 0 ? 7 : day; +} + +function formatWeekNumberSunday(d, p) { + return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2); +} + +function formatWeekNumberISO(d, p) { + var day = d.getDay(); + d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d); + return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2); +} + +function formatWeekdayNumberSunday(d) { + return d.getDay(); +} + +function formatWeekNumberMonday(d, p) { + return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2); +} + +function formatYear(d, p) { + return pad(d.getFullYear() % 100, p, 2); +} + +function formatFullYear(d, p) { + return pad(d.getFullYear() % 10000, p, 4); +} + +function formatZone(d) { + var z = d.getTimezoneOffset(); + return (z > 0 ? "-" : (z *= -1, "+")) + + pad(z / 60 | 0, "0", 2) + + pad(z % 60, "0", 2); +} + +function formatUTCDayOfMonth(d, p) { + return pad(d.getUTCDate(), p, 2); +} + +function formatUTCHour24(d, p) { + return pad(d.getUTCHours(), p, 2); +} + +function formatUTCHour12(d, p) { + return pad(d.getUTCHours() % 12 || 12, p, 2); +} + +function formatUTCDayOfYear(d, p) { + return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3); +} + +function formatUTCMilliseconds(d, p) { + return pad(d.getUTCMilliseconds(), p, 3); +} + +function formatUTCMicroseconds(d, p) { + return formatUTCMilliseconds(d, p) + "000"; +} + +function formatUTCMonthNumber(d, p) { + return pad(d.getUTCMonth() + 1, p, 2); +} + +function formatUTCMinutes(d, p) { + return pad(d.getUTCMinutes(), p, 2); +} + +function formatUTCSeconds(d, p) { + return pad(d.getUTCSeconds(), p, 2); +} + +function formatUTCWeekdayNumberMonday(d) { + var dow = d.getUTCDay(); + return dow === 0 ? 7 : dow; +} + +function formatUTCWeekNumberSunday(d, p) { + return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2); +} + +function formatUTCWeekNumberISO(d, p) { + var day = d.getUTCDay(); + d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d); + return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2); +} + +function formatUTCWeekdayNumberSunday(d) { + return d.getUTCDay(); +} + +function formatUTCWeekNumberMonday(d, p) { + return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2); +} + +function formatUTCYear(d, p) { + return pad(d.getUTCFullYear() % 100, p, 2); +} + +function formatUTCFullYear(d, p) { + return pad(d.getUTCFullYear() % 10000, p, 4); +} + +function formatUTCZone() { + return "+0000"; +} + +function formatLiteralPercent() { + return "%"; +} + +function formatUnixTimestamp(d) { + return +d; +} + +function formatUnixTimestampSeconds(d) { + return Math.floor(+d / 1000); +} + +var locale; + +defaultLocale({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] +}); + +function defaultLocale(definition) { + locale = formatLocale(definition); + exports.timeFormat = locale.format; + exports.timeParse = locale.parse; + exports.utcFormat = locale.utcFormat; + exports.utcParse = locale.utcParse; + return locale; +} + +var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; + +function formatIsoNative(date) { + return date.toISOString(); +} + +var formatIso = Date.prototype.toISOString + ? formatIsoNative + : exports.utcFormat(isoSpecifier); + +function parseIsoNative(string) { + var date = new Date(string); + return isNaN(date) ? null : date; +} + +var parseIso = +new Date("2000-01-01T00:00:00.000Z") + ? parseIsoNative + : exports.utcParse(isoSpecifier); + +exports.isoFormat = formatIso; +exports.isoParse = parseIso; +exports.timeFormatDefaultLocale = defaultLocale; +exports.timeFormatLocale = formatLocale; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); + +},{"d3-time":30}],30:[function(_dereq_,module,exports){ +// https://d3js.org/d3-time/ v1.1.0 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(global = global || self, factory(global.d3 = global.d3 || {})); +}(this, function (exports) { 'use strict'; + +var t0 = new Date, + t1 = new Date; + +function newInterval(floori, offseti, count, field) { + + function interval(date) { + return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; + } + + interval.floor = function(date) { + return floori(date = new Date(+date)), date; + }; + + interval.ceil = function(date) { + return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; + }; + + interval.round = function(date) { + var d0 = interval(date), + d1 = interval.ceil(date); + return date - d0 < d1 - date ? d0 : d1; + }; + + interval.offset = function(date, step) { + return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; + }; + + interval.range = function(start, stop, step) { + var range = [], previous; + start = interval.ceil(start); + step = step == null ? 1 : Math.floor(step); + if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date + do range.push(previous = new Date(+start)), offseti(start, step), floori(start); + while (previous < start && start < stop); + return range; + }; + + interval.filter = function(test) { + return newInterval(function(date) { + if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); + }, function(date, step) { + if (date >= date) { + if (step < 0) while (++step <= 0) { + while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty + } else while (--step >= 0) { + while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty + } + } + }); + }; + + if (count) { + interval.count = function(start, end) { + t0.setTime(+start), t1.setTime(+end); + floori(t0), floori(t1); + return Math.floor(count(t0, t1)); + }; + + interval.every = function(step) { + step = Math.floor(step); + return !isFinite(step) || !(step > 0) ? null + : !(step > 1) ? interval + : interval.filter(field + ? function(d) { return field(d) % step === 0; } + : function(d) { return interval.count(0, d) % step === 0; }); + }; + } + + return interval; +} + +var millisecond = newInterval(function() { + // noop +}, function(date, step) { + date.setTime(+date + step); +}, function(start, end) { + return end - start; +}); + +// An optimized implementation for this simple case. +millisecond.every = function(k) { + k = Math.floor(k); + if (!isFinite(k) || !(k > 0)) return null; + if (!(k > 1)) return millisecond; + return newInterval(function(date) { + date.setTime(Math.floor(date / k) * k); + }, function(date, step) { + date.setTime(+date + step * k); + }, function(start, end) { + return (end - start) / k; + }); +}; +var milliseconds = millisecond.range; + +var durationSecond = 1e3; +var durationMinute = 6e4; +var durationHour = 36e5; +var durationDay = 864e5; +var durationWeek = 6048e5; + +var second = newInterval(function(date) { + date.setTime(date - date.getMilliseconds()); +}, function(date, step) { + date.setTime(+date + step * durationSecond); +}, function(start, end) { + return (end - start) / durationSecond; +}, function(date) { + return date.getUTCSeconds(); +}); +var seconds = second.range; + +var minute = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); +}, function(date, step) { + date.setTime(+date + step * durationMinute); +}, function(start, end) { + return (end - start) / durationMinute; +}, function(date) { + return date.getMinutes(); +}); +var minutes = minute.range; + +var hour = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); +}, function(date, step) { + date.setTime(+date + step * durationHour); +}, function(start, end) { + return (end - start) / durationHour; +}, function(date) { + return date.getHours(); +}); +var hours = hour.range; + +var day = newInterval(function(date) { + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setDate(date.getDate() + step); +}, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; +}, function(date) { + return date.getDate() - 1; +}); +var days = day.range; + +function weekday(i) { + return newInterval(function(date) { + date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setDate(date.getDate() + step * 7); + }, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; + }); +} + +var sunday = weekday(0); +var monday = weekday(1); +var tuesday = weekday(2); +var wednesday = weekday(3); +var thursday = weekday(4); +var friday = weekday(5); +var saturday = weekday(6); + +var sundays = sunday.range; +var mondays = monday.range; +var tuesdays = tuesday.range; +var wednesdays = wednesday.range; +var thursdays = thursday.range; +var fridays = friday.range; +var saturdays = saturday.range; + +var month = newInterval(function(date) { + date.setDate(1); + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setMonth(date.getMonth() + step); +}, function(start, end) { + return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; +}, function(date) { + return date.getMonth(); +}); +var months = month.range; + +var year = newInterval(function(date) { + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setFullYear(date.getFullYear() + step); +}, function(start, end) { + return end.getFullYear() - start.getFullYear(); +}, function(date) { + return date.getFullYear(); +}); + +// An optimized implementation for this simple case. +year.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setFullYear(Math.floor(date.getFullYear() / k) * k); + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setFullYear(date.getFullYear() + step * k); + }); +}; +var years = year.range; + +var utcMinute = newInterval(function(date) { + date.setUTCSeconds(0, 0); +}, function(date, step) { + date.setTime(+date + step * durationMinute); +}, function(start, end) { + return (end - start) / durationMinute; +}, function(date) { + return date.getUTCMinutes(); +}); +var utcMinutes = utcMinute.range; + +var utcHour = newInterval(function(date) { + date.setUTCMinutes(0, 0, 0); +}, function(date, step) { + date.setTime(+date + step * durationHour); +}, function(start, end) { + return (end - start) / durationHour; +}, function(date) { + return date.getUTCHours(); +}); +var utcHours = utcHour.range; + +var utcDay = newInterval(function(date) { + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCDate(date.getUTCDate() + step); +}, function(start, end) { + return (end - start) / durationDay; +}, function(date) { + return date.getUTCDate() - 1; +}); +var utcDays = utcDay.range; + +function utcWeekday(i) { + return newInterval(function(date) { + date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCDate(date.getUTCDate() + step * 7); + }, function(start, end) { + return (end - start) / durationWeek; + }); +} + +var utcSunday = utcWeekday(0); +var utcMonday = utcWeekday(1); +var utcTuesday = utcWeekday(2); +var utcWednesday = utcWeekday(3); +var utcThursday = utcWeekday(4); +var utcFriday = utcWeekday(5); +var utcSaturday = utcWeekday(6); + +var utcSundays = utcSunday.range; +var utcMondays = utcMonday.range; +var utcTuesdays = utcTuesday.range; +var utcWednesdays = utcWednesday.range; +var utcThursdays = utcThursday.range; +var utcFridays = utcFriday.range; +var utcSaturdays = utcSaturday.range; + +var utcMonth = newInterval(function(date) { + date.setUTCDate(1); + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCMonth(date.getUTCMonth() + step); +}, function(start, end) { + return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; +}, function(date) { + return date.getUTCMonth(); +}); +var utcMonths = utcMonth.range; + +var utcYear = newInterval(function(date) { + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step); +}, function(start, end) { + return end.getUTCFullYear() - start.getUTCFullYear(); +}, function(date) { + return date.getUTCFullYear(); +}); + +// An optimized implementation for this simple case. +utcYear.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step * k); + }); +}; +var utcYears = utcYear.range; + +exports.timeDay = day; +exports.timeDays = days; +exports.timeFriday = friday; +exports.timeFridays = fridays; +exports.timeHour = hour; +exports.timeHours = hours; +exports.timeInterval = newInterval; +exports.timeMillisecond = millisecond; +exports.timeMilliseconds = milliseconds; +exports.timeMinute = minute; +exports.timeMinutes = minutes; +exports.timeMonday = monday; +exports.timeMondays = mondays; +exports.timeMonth = month; +exports.timeMonths = months; +exports.timeSaturday = saturday; +exports.timeSaturdays = saturdays; +exports.timeSecond = second; +exports.timeSeconds = seconds; +exports.timeSunday = sunday; +exports.timeSundays = sundays; +exports.timeThursday = thursday; +exports.timeThursdays = thursdays; +exports.timeTuesday = tuesday; +exports.timeTuesdays = tuesdays; +exports.timeWednesday = wednesday; +exports.timeWednesdays = wednesdays; +exports.timeWeek = sunday; +exports.timeWeeks = sundays; +exports.timeYear = year; +exports.timeYears = years; +exports.utcDay = utcDay; +exports.utcDays = utcDays; +exports.utcFriday = utcFriday; +exports.utcFridays = utcFridays; +exports.utcHour = utcHour; +exports.utcHours = utcHours; +exports.utcMillisecond = millisecond; +exports.utcMilliseconds = milliseconds; +exports.utcMinute = utcMinute; +exports.utcMinutes = utcMinutes; +exports.utcMonday = utcMonday; +exports.utcMondays = utcMondays; +exports.utcMonth = utcMonth; +exports.utcMonths = utcMonths; +exports.utcSaturday = utcSaturday; +exports.utcSaturdays = utcSaturdays; +exports.utcSecond = second; +exports.utcSeconds = seconds; +exports.utcSunday = utcSunday; +exports.utcSundays = utcSundays; +exports.utcThursday = utcThursday; +exports.utcThursdays = utcThursdays; +exports.utcTuesday = utcTuesday; +exports.utcTuesdays = utcTuesdays; +exports.utcWednesday = utcWednesday; +exports.utcWednesdays = utcWednesdays; +exports.utcWeek = utcSunday; +exports.utcWeeks = utcSundays; +exports.utcYear = utcYear; +exports.utcYears = utcYears; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); + +},{}],31:[function(_dereq_,module,exports){ /** * inspired by is-number * but significantly simplified and sped up by ignoring number and string constructors @@ -14515,7 +14405,7 @@ module.exports = function(n) { return n - n < 1; }; -},{"is-string-blank":75}],24:[function(_dereq_,module,exports){ +},{"is-string-blank":68}],32:[function(_dereq_,module,exports){ module.exports = adjoint; /** @@ -14549,7 +14439,7 @@ function adjoint(out, a) { out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11)); return out; }; -},{}],25:[function(_dereq_,module,exports){ +},{}],33:[function(_dereq_,module,exports){ module.exports = clone; /** @@ -14578,7 +14468,7 @@ function clone(a) { out[15] = a[15]; return out; }; -},{}],26:[function(_dereq_,module,exports){ +},{}],34:[function(_dereq_,module,exports){ module.exports = copy; /** @@ -14607,7 +14497,7 @@ function copy(out, a) { out[15] = a[15]; return out; }; -},{}],27:[function(_dereq_,module,exports){ +},{}],35:[function(_dereq_,module,exports){ module.exports = create; /** @@ -14635,7 +14525,7 @@ function create() { out[15] = 1; return out; }; -},{}],28:[function(_dereq_,module,exports){ +},{}],36:[function(_dereq_,module,exports){ module.exports = determinant; /** @@ -14666,7 +14556,7 @@ function determinant(a) { // Calculate the determinant return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; }; -},{}],29:[function(_dereq_,module,exports){ +},{}],37:[function(_dereq_,module,exports){ module.exports = fromQuat; /** @@ -14714,7 +14604,7 @@ function fromQuat(out, q) { return out; }; -},{}],30:[function(_dereq_,module,exports){ +},{}],38:[function(_dereq_,module,exports){ module.exports = fromRotation /** @@ -14769,7 +14659,7 @@ function fromRotation(out, rad, axis) { return out } -},{}],31:[function(_dereq_,module,exports){ +},{}],39:[function(_dereq_,module,exports){ module.exports = fromRotationTranslation; /** @@ -14823,7 +14713,7 @@ function fromRotationTranslation(out, q, v) { return out; }; -},{}],32:[function(_dereq_,module,exports){ +},{}],40:[function(_dereq_,module,exports){ module.exports = fromScaling /** @@ -14857,7 +14747,7 @@ function fromScaling(out, v) { return out } -},{}],33:[function(_dereq_,module,exports){ +},{}],41:[function(_dereq_,module,exports){ module.exports = fromTranslation /** @@ -14891,7 +14781,7 @@ function fromTranslation(out, v) { return out } -},{}],34:[function(_dereq_,module,exports){ +},{}],42:[function(_dereq_,module,exports){ module.exports = fromXRotation /** @@ -14928,7 +14818,7 @@ function fromXRotation(out, rad) { out[15] = 1 return out } -},{}],35:[function(_dereq_,module,exports){ +},{}],43:[function(_dereq_,module,exports){ module.exports = fromYRotation /** @@ -14965,7 +14855,7 @@ function fromYRotation(out, rad) { out[15] = 1 return out } -},{}],36:[function(_dereq_,module,exports){ +},{}],44:[function(_dereq_,module,exports){ module.exports = fromZRotation /** @@ -15002,7 +14892,7 @@ function fromZRotation(out, rad) { out[15] = 1 return out } -},{}],37:[function(_dereq_,module,exports){ +},{}],45:[function(_dereq_,module,exports){ module.exports = frustum; /** @@ -15039,7 +14929,7 @@ function frustum(out, left, right, bottom, top, near, far) { out[15] = 0; return out; }; -},{}],38:[function(_dereq_,module,exports){ +},{}],46:[function(_dereq_,module,exports){ module.exports = identity; /** @@ -15067,7 +14957,7 @@ function identity(out) { out[15] = 1; return out; }; -},{}],39:[function(_dereq_,module,exports){ +},{}],47:[function(_dereq_,module,exports){ module.exports = { create: _dereq_('./create') , clone: _dereq_('./clone') @@ -15100,7 +14990,7 @@ module.exports = { , str: _dereq_('./str') } -},{"./adjoint":24,"./clone":25,"./copy":26,"./create":27,"./determinant":28,"./fromQuat":29,"./fromRotation":30,"./fromRotationTranslation":31,"./fromScaling":32,"./fromTranslation":33,"./fromXRotation":34,"./fromYRotation":35,"./fromZRotation":36,"./frustum":37,"./identity":38,"./invert":40,"./lookAt":41,"./multiply":42,"./ortho":43,"./perspective":44,"./perspectiveFromFieldOfView":45,"./rotate":46,"./rotateX":47,"./rotateY":48,"./rotateZ":49,"./scale":50,"./str":51,"./translate":52,"./transpose":53}],40:[function(_dereq_,module,exports){ +},{"./adjoint":32,"./clone":33,"./copy":34,"./create":35,"./determinant":36,"./fromQuat":37,"./fromRotation":38,"./fromRotationTranslation":39,"./fromScaling":40,"./fromTranslation":41,"./fromXRotation":42,"./fromYRotation":43,"./fromZRotation":44,"./frustum":45,"./identity":46,"./invert":48,"./lookAt":49,"./multiply":50,"./ortho":51,"./perspective":52,"./perspectiveFromFieldOfView":53,"./rotate":54,"./rotateX":55,"./rotateY":56,"./rotateZ":57,"./scale":58,"./str":59,"./translate":60,"./transpose":61}],48:[function(_dereq_,module,exports){ module.exports = invert; /** @@ -15156,7 +15046,7 @@ function invert(out, a) { return out; }; -},{}],41:[function(_dereq_,module,exports){ +},{}],49:[function(_dereq_,module,exports){ var identity = _dereq_('./identity'); module.exports = lookAt; @@ -15247,7 +15137,7 @@ function lookAt(out, eye, center, up) { return out; }; -},{"./identity":38}],42:[function(_dereq_,module,exports){ +},{"./identity":46}],50:[function(_dereq_,module,exports){ module.exports = multiply; /** @@ -15290,7 +15180,7 @@ function multiply(out, a, b) { out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; return out; }; -},{}],43:[function(_dereq_,module,exports){ +},{}],51:[function(_dereq_,module,exports){ module.exports = ortho; /** @@ -15327,7 +15217,7 @@ function ortho(out, left, right, bottom, top, near, far) { out[15] = 1; return out; }; -},{}],44:[function(_dereq_,module,exports){ +},{}],52:[function(_dereq_,module,exports){ module.exports = perspective; /** @@ -15361,7 +15251,7 @@ function perspective(out, fovy, aspect, near, far) { out[15] = 0; return out; }; -},{}],45:[function(_dereq_,module,exports){ +},{}],53:[function(_dereq_,module,exports){ module.exports = perspectiveFromFieldOfView; /** @@ -15403,7 +15293,7 @@ function perspectiveFromFieldOfView(out, fov, near, far) { } -},{}],46:[function(_dereq_,module,exports){ +},{}],54:[function(_dereq_,module,exports){ module.exports = rotate; /** @@ -15468,7 +15358,7 @@ function rotate(out, a, rad, axis) { } return out; }; -},{}],47:[function(_dereq_,module,exports){ +},{}],55:[function(_dereq_,module,exports){ module.exports = rotateX; /** @@ -15513,7 +15403,7 @@ function rotateX(out, a, rad) { out[11] = a23 * c - a13 * s; return out; }; -},{}],48:[function(_dereq_,module,exports){ +},{}],56:[function(_dereq_,module,exports){ module.exports = rotateY; /** @@ -15558,7 +15448,7 @@ function rotateY(out, a, rad) { out[11] = a03 * s + a23 * c; return out; }; -},{}],49:[function(_dereq_,module,exports){ +},{}],57:[function(_dereq_,module,exports){ module.exports = rotateZ; /** @@ -15603,7 +15493,7 @@ function rotateZ(out, a, rad) { out[7] = a13 * c - a03 * s; return out; }; -},{}],50:[function(_dereq_,module,exports){ +},{}],58:[function(_dereq_,module,exports){ module.exports = scale; /** @@ -15635,7 +15525,7 @@ function scale(out, a, v) { out[15] = a[15]; return out; }; -},{}],51:[function(_dereq_,module,exports){ +},{}],59:[function(_dereq_,module,exports){ module.exports = str; /** @@ -15650,7 +15540,7 @@ function str(a) { a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')'; }; -},{}],52:[function(_dereq_,module,exports){ +},{}],60:[function(_dereq_,module,exports){ module.exports = translate; /** @@ -15689,7 +15579,7 @@ function translate(out, a, v) { return out; }; -},{}],53:[function(_dereq_,module,exports){ +},{}],61:[function(_dereq_,module,exports){ module.exports = transpose; /** @@ -15739,7 +15629,7 @@ function transpose(out, a) { return out; }; -},{}],54:[function(_dereq_,module,exports){ +},{}],62:[function(_dereq_,module,exports){ (function (global){(function (){ 'use strict' @@ -15756,7 +15646,7 @@ else { module.exports = hasHover }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"is-browser":73}],55:[function(_dereq_,module,exports){ +},{"is-browser":66}],63:[function(_dereq_,module,exports){ 'use strict' var isBrowser = _dereq_('is-browser') @@ -15782,7 +15672,7 @@ function detect() { module.exports = isBrowser && detect() -},{"is-browser":73}],56:[function(_dereq_,module,exports){ +},{"is-browser":66}],64:[function(_dereq_,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = (nBytes * 8) - mLen - 1 @@ -15868,987 +15758,38 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],57:[function(_dereq_,module,exports){ -'use strict'; - -var typeHandlers = _dereq_('./types'); - -module.exports = function (buffer, filepath) { - var type, result; - for (type in typeHandlers) { - result = typeHandlers[type].detect(buffer, filepath); - if (result) { - return type; - } - } -}; - -},{"./types":60}],58:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -'use strict'; - -var fs = _dereq_('fs'); -var path = _dereq_('path'); - -var typeHandlers = _dereq_('./types'); -var detector = _dereq_('./detector'); - -// Maximum buffer size, with a default of 512 kilobytes. -// TO-DO: make this adaptive based on the initial signature of the image -var MaxBufferSize = 512*1024; - -/** - * Return size information based on a buffer - * - * @param {Buffer} buffer - * @param {String} filepath - * @returns {Object} - */ -function lookup (buffer, filepath) { - // detect the file type.. don't rely on the extension - var type = detector(buffer, filepath); - - // find an appropriate handler for this file type - if (type in typeHandlers) { - var size = typeHandlers[type].calculate(buffer, filepath); - if (size !== false) { - size.type = type; - return size; - } - } - - // throw up, if we don't understand the file - throw new TypeError('unsupported file type: ' + type + ' (file: ' + filepath + ')'); -} - -/** - * Reads a file into a buffer. - * - * The callback will be called after the process has completed. The - * callback's first argument will be an error (or null). The second argument - * will be the Buffer, if the operation was successful. - * - * @param {String} filepath - * @param {Function} callback - */ -function asyncFileToBuffer (filepath, callback) { - // open the file in read only mode - fs.open(filepath, 'r', function (err, descriptor) { - if (err) { return callback(err); } - fs.fstat(descriptor, function (err, stats) { - if (err) { return callback(err); } - var size = stats.size; - if (size <= 0) { - return callback(new Error('File size is not greater than 0 —— ' + filepath)); - } - var bufferSize = Math.min(size, MaxBufferSize); - var buffer = Buffer.alloc(bufferSize); - // read first buffer block from the file, asynchronously - fs.read(descriptor, buffer, 0, bufferSize, 0, function (err) { - if (err) { return callback(err); } - // close the file, we are done - fs.close(descriptor, function (err) { - callback(err, buffer); - }); - }); - }); - }); -} - -/** - * Synchronously reads a file into a buffer, blocking the nodejs process. - * - * @param {String} filepath - * @returns {Buffer} - */ -function syncFileToBuffer (filepath) { - // read from the file, synchronously - var descriptor = fs.openSync(filepath, 'r'); - var size = fs.fstatSync(descriptor).size; - var bufferSize = Math.min(size, MaxBufferSize); - var buffer = Buffer.alloc(bufferSize); - fs.readSync(descriptor, buffer, 0, bufferSize, 0); - fs.closeSync(descriptor); - return buffer; -} - -/** - * @param {Buffer|string} input - buffer or relative/absolute path of the image file - * @param {Function=} callback - optional function for async detection - */ -module.exports = function (input, callback) { - - // Handle buffer input - if (Buffer.isBuffer(input)) { - return lookup(input); - } - - // input should be a string at this point - if (typeof input !== 'string') { - throw new TypeError('invalid invocation'); - } - - // resolve the file path - var filepath = path.resolve(input); - - if (typeof callback === 'function') { - asyncFileToBuffer(filepath, function (err, buffer) { - if (err) { return callback(err); } - - // return the dimensions - var dimensions; - try { - dimensions = lookup(buffer, filepath); - } catch (e) { - err = e; - } - callback(err, dimensions); - }); - } else { - var buffer = syncFileToBuffer(filepath); - return lookup(buffer, filepath); - } -}; - -module.exports.types = Object.keys(typeHandlers); - -}).call(this)}).call(this,_dereq_("buffer").Buffer) -},{"./detector":57,"./types":60,"buffer":18,"fs":16,"path":78}],59:[function(_dereq_,module,exports){ -'use strict'; - -// Abstract reading multi-byte unsigned integers -function readUInt (buffer, bits, offset, isBigEndian) { - offset = offset || 0; - var endian = isBigEndian ? 'BE' : 'LE'; - var method = buffer['readUInt' + bits + endian]; - return method.call(buffer, offset); -} - -module.exports = readUInt; - -},{}],60:[function(_dereq_,module,exports){ -'use strict'; - -// load all available handlers for browserify support -var typeHandlers = { - bmp: _dereq_('./types/bmp'), - cur: _dereq_('./types/cur'), - dds: _dereq_('./types/dds'), - gif: _dereq_('./types/gif'), - icns: _dereq_('./types/icns'), - ico: _dereq_('./types/ico'), - jpg: _dereq_('./types/jpg'), - png: _dereq_('./types/png'), - psd: _dereq_('./types/psd'), - svg: _dereq_('./types/svg'), - tiff: _dereq_('./types/tiff'), - webp: _dereq_('./types/webp'), -}; - -module.exports = typeHandlers; - -},{"./types/bmp":61,"./types/cur":62,"./types/dds":63,"./types/gif":64,"./types/icns":65,"./types/ico":66,"./types/jpg":67,"./types/png":68,"./types/psd":69,"./types/svg":70,"./types/tiff":71,"./types/webp":72}],61:[function(_dereq_,module,exports){ -'use strict'; - -function isBMP (buffer) { - return ('BM' === buffer.toString('ascii', 0, 2)); -} - -function calculate (buffer) { - return { - 'width': buffer.readUInt32LE(18), - 'height': Math.abs(buffer.readInt32LE(22)) - }; -} - -module.exports = { - 'detect': isBMP, - 'calculate': calculate -}; - -},{}],62:[function(_dereq_,module,exports){ -'use strict'; - -var TYPE_CURSOR = 2; - -function isCUR (buffer) { - var type; - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - type = buffer.readUInt16LE(2); - return type === TYPE_CURSOR; -} - -module.exports = { - 'detect': isCUR, - 'calculate': _dereq_('./ico').calculate -}; - -},{"./ico":66}],63:[function(_dereq_,module,exports){ -'use strict'; - -function isDDS(buffer){ - return buffer.readUInt32LE(0) === 0x20534444; -} - -function calculate(buffer){ - // read file resolution metadata - return { - 'height': buffer.readUInt32LE(12), - 'width': buffer.readUInt32LE(16) - }; -} - -module.exports = { - 'detect': isDDS, - 'calculate': calculate -}; - -},{}],64:[function(_dereq_,module,exports){ -'use strict'; - -var gifRegexp = /^GIF8[79]a/; -function isGIF (buffer) { - var signature = buffer.toString('ascii', 0, 6); - return (gifRegexp.test(signature)); -} - -function calculate(buffer) { - return { - 'width': buffer.readUInt16LE(6), - 'height': buffer.readUInt16LE(8) - }; -} - -module.exports = { - 'detect': isGIF, - 'calculate': calculate -}; - },{}],65:[function(_dereq_,module,exports){ -'use strict'; - -/** - * ICNS Header - * - * | Offset | Size | Purpose | - * | 0 | 4 | Magic literal, must be "icns" (0x69, 0x63, 0x6e, 0x73) | - * | 4 | 4 | Length of file, in bytes, msb first. | - * - **/ -var SIZE_HEADER = 4 + 4; // 8 -var FILE_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN - -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 4 | Icon type, see OSType below. | - * | 4 | 4 | Length of data, in bytes (including type and length), msb first. | - * | 8 | n | Icon data | - * - **/ -var ENTRY_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN - -function isICNS (buffer) { - return ('icns' === buffer.toString('ascii', 0, 4)); -} - -var ICON_TYPE_SIZE = { - ICON: 32, - 'ICN#': 32, - // m => 16 x 16 - 'icm#': 16, - icm4: 16, - icm8: 16, - // s => 16 x 16 - 'ics#': 16, - ics4: 16, - ics8: 16, - is32: 16, - s8mk: 16, - icp4: 16, - // l => 32 x 32 - icl4: 32, - icl8: 32, - il32: 32, - l8mk: 32, - icp5: 32, - ic11: 32, - // h => 48 x 48 - ich4: 48, - ich8: 48, - ih32: 48, - h8mk: 48, - // . => 64 x 64 - icp6: 64, - ic12: 32, - // t => 128 x 128 - it32: 128, - t8mk: 128, - ic07: 128, - // . => 256 x 256 - ic08: 256, - ic13: 256, - // . => 512 x 512 - ic09: 512, - ic14: 512, - // . => 1024 x 1024 - ic10: 1024, -}; - -function readImageHeader(buffer, imageOffset) { - var imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET; - // returns [type, length] - return [ - buffer.toString('ascii', imageOffset, imageLengthOffset), - buffer.readUInt32BE(imageLengthOffset) - ]; -} - -function getImageSize(type) { - var size = ICON_TYPE_SIZE[type]; - return { width: size, height: size, type: type }; -} - -function calculate (buffer) { - var - bufferLength = buffer.length, - imageOffset = SIZE_HEADER, - fileLength = buffer.readUInt32BE(FILE_LENGTH_OFFSET), - imageHeader, - imageSize, - result; - - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - - if (imageOffset === fileLength) { - return imageSize; - } - - result = { - width: imageSize.width, - height: imageSize.height, - images: [imageSize] +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } }; - - while (imageOffset < fileLength && imageOffset < bufferLength) { - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - result.images.push(imageSize); +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } } - - return result; } -module.exports = { - 'detect': isICNS, - 'calculate': calculate -}; - },{}],66:[function(_dereq_,module,exports){ -'use strict'; - -var TYPE_ICON = 1; - -/** - * ICON Header - * - * | Offset | Size | Purpose | - * | 0 | 2 | Reserved. Must always be 0. | - * | 2 | 2 | Image type: 1 for icon (.ICO) image, 2 for cursor (.CUR) image. Other values are invalid. | - * | 4 | 2 | Number of images in the file. | - * - **/ -var SIZE_HEADER = 2 + 2 + 2; // 6 - -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 1 | Image width in pixels. Can be any number between 0 and 255. Value 0 means width is 256 pixels. | - * | 1 | 1 | Image height in pixels. Can be any number between 0 and 255. Value 0 means height is 256 pixels. | - * | 2 | 1 | Number of colors in the color palette. Should be 0 if the image does not use a color palette. | - * | 3 | 1 | Reserved. Should be 0. | - * | 4 | 2 | ICO format: Color planes. Should be 0 or 1. | - * | | | CUR format: The horizontal coordinates of the hotspot in number of pixels from the left. | - * | 6 | 2 | ICO format: Bits per pixel. | - * | | | CUR format: The vertical coordinates of the hotspot in number of pixels from the top. | - * | 8 | 4 | The size of the image's data in bytes | - * | 12 | 4 | The offset of BMP or PNG data from the beginning of the ICO/CUR file | - * - **/ -var SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4; // 16 - -function isICO (buffer) { - var type; - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - type = buffer.readUInt16LE(2); - return type === TYPE_ICON; -} - -function getSizeFromOffset(buffer, offset) { - var value = buffer.readUInt8(offset); - return value === 0 ? 256 : value; -} - -function getImageSize(buffer, imageIndex) { - var offset = SIZE_HEADER + (imageIndex * SIZE_IMAGE_ENTRY); - return { - 'width': getSizeFromOffset(buffer, offset), - 'height': getSizeFromOffset(buffer, offset + 1) - }; -} - -function calculate (buffer) { - var - nbImages = buffer.readUInt16LE(4), - result = getImageSize(buffer, 0), - imageIndex; - - if (nbImages === 1) { - return result; - } - - result.images = [{ - width: result.width, - height: result.height - }]; - - for (imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { - result.images.push(getImageSize(buffer, imageIndex)); - } - - return result; -} - -module.exports = { - 'detect': isICO, - 'calculate': calculate -}; - -},{}],67:[function(_dereq_,module,exports){ -'use strict'; - -var readUInt = _dereq_('../readUInt'); - -// NOTE: we only support baseline and progressive JPGs here -// due to the structure of the loader class, we only get a buffer -// with a maximum size of 4096 bytes. so if the SOF marker is outside -// if this range we can't detect the file size correctly. - -function isJPG (buffer) { //, filepath - var SOIMarker = buffer.toString('hex', 0, 2); - return ('ffd8' === SOIMarker); -} - -function isEXIF (buffer) { //, filepath - var exifMarker = buffer.toString('hex', 2, 6); - return (exifMarker === '45786966'); // 'Exif' -} - -function extractSize (buffer, i) { - return { - 'height' : buffer.readUInt16BE(i), - 'width' : buffer.readUInt16BE(i + 2) - }; -} - -var APP1_DATA_SIZE_BYTES = 2; -var EXIF_HEADER_BYTES = 6; -var TIFF_BYTE_ALIGN_BYTES = 2; -var BIG_ENDIAN_BYTE_ALIGN = '4d4d'; -var LITTLE_ENDIAN_BYTE_ALIGN = '4949'; - -// Each entry is exactly 12 bytes -var IDF_ENTRY_BYTES = 12; -var NUM_DIRECTORY_ENTRIES_BYTES = 2; - -function validateExifBlock (buffer, i) { - // Skip APP1 Data Size - var exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, i); - - // Consider byte alignment - var byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); - - // Ignore Empty EXIF. Validate byte alignment - var isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; - var isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN; - - if (isBigEndian || isLittleEndian) { - return extractOrientation(exifBlock, isBigEndian); - } -} - -function extractOrientation (exifBlock, isBigEndian) { - // TODO: assert that this contains 0x002A - // var STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2; - // var TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4; - - // TODO: derive from TIFF_IMAGE_FILE_DIRECTORY_BYTES - var idfOffset = 8; - - // IDF osset works from right after the header bytes - // (so the offset includes the tiff byte align) - var offset = EXIF_HEADER_BYTES + idfOffset; - - var idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian); - - var start; - var end; - for (var directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) { - start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES); - end = start + IDF_ENTRY_BYTES; - - // Skip on corrupt EXIF blocks - if (start > exifBlock.length) { - return; - } - - var block = exifBlock.slice(start, end); - var tagNumber = readUInt(block, 16, 0, isBigEndian); - - // 0x0112 (decimal: 274) is the `orientation` tag ID - if (tagNumber === 274) { - var dataFormat = readUInt(block, 16, 2, isBigEndian); - if (dataFormat !== 3) { - return; - } - - // unsinged int has 2 bytes per component - // if there would more than 4 bytes in total it's a pointer - var numberOfComponents = readUInt(block, 32, 4, isBigEndian); - if (numberOfComponents !== 1) { - return; - } - - return readUInt(block, 16, 8, isBigEndian); - } - } -} - -function validateBuffer (buffer, i) { - // index should be within buffer limits - if (i > buffer.length) { - throw new TypeError('Corrupt JPG, exceeded buffer limits'); - } - // Every JPEG block must begin with a 0xFF - if (buffer[i] !== 0xFF) { - throw new TypeError('Invalid JPG, marker table corrupted'); - } -} - -function calculate (buffer) { - // Skip 4 chars, they are for signature - buffer = buffer.slice(4); - - var orientation; - - var i, next; - while (buffer.length) { - // read length of the next block - i = buffer.readUInt16BE(0); - - if (isEXIF(buffer)) { - orientation = validateExifBlock(buffer, i); - } - - // ensure correct format - validateBuffer(buffer, i); - - // 0xFFC0 is baseline standard(SOF) - // 0xFFC1 is baseline optimized(SOF) - // 0xFFC2 is progressive(SOF2) - next = buffer[i + 1]; - if (next === 0xC0 || next === 0xC1 || next === 0xC2) { - var size = extractSize(buffer, i + 5); - - if (!orientation) { - return size; - } - - return { - width: size.width, - height: size.height, - orientation: orientation - }; - } - - // move to the next block - buffer = buffer.slice(i + 2); - } - - throw new TypeError('Invalid JPG, no size found'); -} - -module.exports = { - 'detect': isJPG, - 'calculate': calculate -}; - -},{"../readUInt":59}],68:[function(_dereq_,module,exports){ -'use strict'; - -var pngSignature = 'PNG\r\n\x1a\n'; -var pngImageHeaderChunkName = 'IHDR'; - -// Used to detect "fried" png's: http://www.jongware.com/pngdefry.html -var pngFriedChunkName = 'CgBI'; - -function isPNG (buffer) { - if (pngSignature === buffer.toString('ascii', 1, 8)) { - var chunkName = buffer.toString('ascii', 12, 16); - if (chunkName === pngFriedChunkName) { - chunkName = buffer.toString('ascii', 28, 32); - } - if (chunkName !== pngImageHeaderChunkName) { - throw new TypeError('invalid png'); - } - return true; - } -} - -function calculate (buffer) { - if (buffer.toString('ascii', 12, 16) === pngFriedChunkName) { - return { - 'width': buffer.readUInt32BE(32), - 'height': buffer.readUInt32BE(36) - }; - } - return { - 'width': buffer.readUInt32BE(16), - 'height': buffer.readUInt32BE(20) - }; -} - -module.exports = { - 'detect': isPNG, - 'calculate': calculate -}; - -},{}],69:[function(_dereq_,module,exports){ -'use strict'; - -function isPSD (buffer) { - return ('8BPS' === buffer.toString('ascii', 0, 4)); -} - -function calculate (buffer) { - return { - 'width': buffer.readUInt32BE(18), - 'height': buffer.readUInt32BE(14) - }; -} - -module.exports = { - 'detect': isPSD, - 'calculate': calculate -}; - -},{}],70:[function(_dereq_,module,exports){ -'use strict'; - -var svgReg = /"']|"[^"]*"|'[^']*')*>/; -function isSVG (buffer) { - return svgReg.test(buffer); -} - -var extractorRegExps = { - 'root': svgReg, - 'width': /\swidth=(['"])([^%]+?)\1/, - 'height': /\sheight=(['"])([^%]+?)\1/, - 'viewbox': /\sviewBox=(['"])(.+?)\1/ -}; - -var units = { - 'cm': 96/2.54, - 'mm': 96/2.54/10, - 'm': 96/2.54*100, - 'pt': 96/72, - 'pc': 96/72/12, - 'em': 16, - 'ex': 8, -}; - -function parseLength (len) { - var m = /([0-9.]+)([a-z]*)/.exec(len); - if (!m) { - return undefined; - } - return Math.round(parseFloat(m[1]) * (units[m[2]] || 1)); -} - -function parseViewbox (viewbox) { - var bounds = viewbox.split(' '); - return { - 'width': parseLength(bounds[2]), - 'height': parseLength(bounds[3]) - }; -} - -function parseAttributes (root) { - var width = root.match(extractorRegExps.width); - var height = root.match(extractorRegExps.height); - var viewbox = root.match(extractorRegExps.viewbox); - return { - 'width': width && parseLength(width[2]), - 'height': height && parseLength(height[2]), - 'viewbox': viewbox && parseViewbox(viewbox[2]) - }; -} - -function calculateByDimensions (attrs) { - return { - 'width': attrs.width, - 'height': attrs.height - }; -} - -function calculateByViewbox (attrs) { - var ratio = attrs.viewbox.width / attrs.viewbox.height; - if (attrs.width) { - return { - 'width': attrs.width, - 'height': Math.floor(attrs.width / ratio) - }; - } - if (attrs.height) { - return { - 'width': Math.floor(attrs.height * ratio), - 'height': attrs.height - }; - } - return { - 'width': attrs.viewbox.width, - 'height': attrs.viewbox.height - }; -} - -function calculate (buffer) { - var root = buffer.toString('utf8').match(extractorRegExps.root); - if (root) { - var attrs = parseAttributes(root[0]); - if (attrs.width && attrs.height) { - return calculateByDimensions(attrs); - } - if (attrs.viewbox) { - return calculateByViewbox(attrs); - } - } - throw new TypeError('invalid svg'); -} - -module.exports = { - 'detect': isSVG, - 'calculate': calculate -}; - -},{}],71:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -'use strict'; - -// based on http://www.compix.com/fileformattif.htm -// TO-DO: support big-endian as well - -var fs = _dereq_('fs'); -var readUInt = _dereq_('../readUInt'); - -function isTIFF (buffer) { - var hex4 = buffer.toString('hex', 0, 4); - return ('49492a00' === hex4 || '4d4d002a' === hex4); -} - -// Read IFD (image-file-directory) into a buffer -function readIFD (buffer, filepath, isBigEndian) { - - var ifdOffset = readUInt(buffer, 32, 4, isBigEndian); - - // read only till the end of the file - var bufferSize = 1024; - var fileSize = fs.statSync(filepath).size; - if (ifdOffset + bufferSize > fileSize) { - bufferSize = fileSize - ifdOffset - 10; - } - - // populate the buffer - var endBuffer = Buffer.alloc(bufferSize); - var descriptor = fs.openSync(filepath, 'r'); - fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset); - - // var ifdLength = readUInt(endBuffer, 16, 0, isBigEndian); - var ifdBuffer = endBuffer.slice(2); //, 2 + 12 * ifdLength); - return ifdBuffer; -} - -// TIFF values seem to be messed up on Big-Endian, this helps -function readValue (buffer, isBigEndian) { - var low = readUInt(buffer, 16, 8, isBigEndian); - var high = readUInt(buffer, 16, 10, isBigEndian); - return (high << 16) + low; -} - -// move to the next tag -function nextTag (buffer) { - if (buffer.length > 24) { - return buffer.slice(12); - } -} - -// Extract IFD tags from TIFF metadata -/* eslint-disable complexity */ -function extractTags (buffer, isBigEndian) { - var tags = {}; - var code, type, length; - - while (buffer && buffer.length) { - code = readUInt(buffer, 16, 0, isBigEndian); - type = readUInt(buffer, 16, 2, isBigEndian); - length = readUInt(buffer, 32, 4, isBigEndian); - - // 0 means end of IFD - if (code === 0) { - break; - } else { - // 256 is width, 257 is height - // if (code === 256 || code === 257) { - if (length === 1 && (type === 3 || type === 4)) { - tags[code] = readValue(buffer, isBigEndian); - } - - // move to the next tag - buffer = nextTag(buffer); - } - } - return tags; -} -/* eslint-enable complexity */ - -// Test if the TIFF is Big Endian or Little Endian -function determineEndianness (buffer) { - var signature = buffer.toString('ascii', 0, 2); - if ('II' === signature) { - return 'LE'; - } else if ('MM' === signature) { - return 'BE'; - } -} - -function calculate (buffer, filepath) { - - if (!filepath) { - throw new TypeError('Tiff doesn\'t support buffer'); - } - - // Determine BE/LE - var isBigEndian = determineEndianness(buffer) === 'BE'; - - // read the IFD - var ifdBuffer = readIFD(buffer, filepath, isBigEndian); - - // extract the tags from the IFD - var tags = extractTags(ifdBuffer, isBigEndian); - - var width = tags[256]; - var height = tags[257]; - - if (!width || !height) { - throw new TypeError('Invalid Tiff, missing tags'); - } - - return { - 'width': width, - 'height': height - }; -} - -module.exports = { - 'detect': isTIFF, - 'calculate': calculate -}; - -}).call(this)}).call(this,_dereq_("buffer").Buffer) -},{"../readUInt":59,"buffer":18,"fs":16}],72:[function(_dereq_,module,exports){ -'use strict'; - -// based on https://developers.google.com/speed/webp/docs/riff_container - -function isWebP (buffer) { - var riffHeader = 'RIFF' === buffer.toString('ascii', 0, 4); - var webpHeader = 'WEBP' === buffer.toString('ascii', 8, 12); - var vp8Header = 'VP8' === buffer.toString('ascii', 12, 15); - return (riffHeader && webpHeader && vp8Header); -} - -/* eslint-disable complexity */ -function calculate (buffer) { - var chunkHeader = buffer.toString('ascii', 12, 16); - buffer = buffer.slice(20, 30); - - // Extended webp stream signature - if (chunkHeader === 'VP8X') { - var extendedHeader = buffer[0]; - var validStart = (extendedHeader & 0xc0) === 0; - var validEnd = (extendedHeader & 0x01) === 0; - if (validStart && validEnd) { - return calculateExtended(buffer); - } else { - return false; - } - } - - // Lossless webp stream signature - if (chunkHeader === 'VP8 ' && buffer[0] !== 0x2f) { - return calculateLossy(buffer); - } - - // Lossy webp stream signature - var signature = buffer.toString('hex', 3, 6); - if (chunkHeader === 'VP8L' && signature !== '9d012a') { - return calculateLossless(buffer); - } - - return false; -} -/* eslint-enable complexity */ - -function calculateExtended (buffer) { - return { - 'width': 1 + buffer.readUIntLE(4, 3), - 'height': 1 + buffer.readUIntLE(7, 3) - }; -} - -function calculateLossless (buffer) { - return { - 'width': 1 + (((buffer[2] & 0x3F) << 8) | buffer[1]), - 'height': 1 + (((buffer[4] & 0xF) << 10) | (buffer[3] << 2) | - ((buffer[2] & 0xC0) >> 6)) - }; -} - -function calculateLossy (buffer) { - // `& 0x3fff` returns the last 14 bits - // TO-DO: include webp scaling in the calculations - return { - 'width': buffer.readInt16LE(6) & 0x3fff, - 'height': buffer.readInt16LE(8) & 0x3fff - }; -} - -module.exports = { - 'detect': isWebP, - 'calculate': calculate -}; - -},{}],73:[function(_dereq_,module,exports){ module.exports = true; -},{}],74:[function(_dereq_,module,exports){ +},{}],67:[function(_dereq_,module,exports){ 'use strict' module.exports = isMobile @@ -16885,7 +15826,7 @@ function isMobile (opts) { return result } -},{}],75:[function(_dereq_,module,exports){ +},{}],68:[function(_dereq_,module,exports){ 'use strict'; /** @@ -16922,7 +15863,7 @@ module.exports = function(str){ return true; } -},{}],76:[function(_dereq_,module,exports){ +},{}],69:[function(_dereq_,module,exports){ var rootPosition = { left: 0, top: 0 } module.exports = mouseEventOffset @@ -16949,7 +15890,476 @@ function getBoundingClientOffset (element) { } } -},{}],77:[function(_dereq_,module,exports){ +},{}],70:[function(_dereq_,module,exports){ +(function (global,setImmediate){(function (){ +/*! Native Promise Only + v0.8.1 (c) Kyle Simpson + MIT License: http://getify.mit-license.org +*/ + +(function UMD(name,context,definition){ + // special form of UMD for polyfilling across evironments + context[name] = context[name] || definition(); + if (typeof module != "undefined" && module.exports) { module.exports = context[name]; } + else if (typeof define == "function" && define.amd) { define(function $AMD$(){ return context[name]; }); } +})("Promise",typeof global != "undefined" ? global : this,function DEF(){ + /*jshint validthis:true */ + "use strict"; + + var builtInProp, cycle, scheduling_queue, + ToString = Object.prototype.toString, + timer = (typeof setImmediate != "undefined") ? + function timer(fn) { return setImmediate(fn); } : + setTimeout + ; + + // dammit, IE8. + try { + Object.defineProperty({},"x",{}); + builtInProp = function builtInProp(obj,name,val,config) { + return Object.defineProperty(obj,name,{ + value: val, + writable: true, + configurable: config !== false + }); + }; + } + catch (err) { + builtInProp = function builtInProp(obj,name,val) { + obj[name] = val; + return obj; + }; + } + + // Note: using a queue instead of array for efficiency + scheduling_queue = (function Queue() { + var first, last, item; + + function Item(fn,self) { + this.fn = fn; + this.self = self; + this.next = void 0; + } + + return { + add: function add(fn,self) { + item = new Item(fn,self); + if (last) { + last.next = item; + } + else { + first = item; + } + last = item; + item = void 0; + }, + drain: function drain() { + var f = first; + first = last = cycle = void 0; + + while (f) { + f.fn.call(f.self); + f = f.next; + } + } + }; + })(); + + function schedule(fn,self) { + scheduling_queue.add(fn,self); + if (!cycle) { + cycle = timer(scheduling_queue.drain); + } + } + + // promise duck typing + function isThenable(o) { + var _then, o_type = typeof o; + + if (o != null && + ( + o_type == "object" || o_type == "function" + ) + ) { + _then = o.then; + } + return typeof _then == "function" ? _then : false; + } + + function notify() { + for (var i=0; i 0) { + schedule(notify,self); + } + } + } + catch (err) { + reject.call(new MakeDefWrapper(self),err); + } + } + + function reject(msg) { + var self = this; + + // already triggered? + if (self.triggered) { return; } + + self.triggered = true; + + // unwrap + if (self.def) { + self = self.def; + } + + self.msg = msg; + self.state = 2; + if (self.chain.length > 0) { + schedule(notify,self); + } + } + + function iteratePromises(Constructor,arr,resolver,rejecter) { + for (var idx=0; idx 2) { - var lastSlashIndex = res.lastIndexOf('/'); - if (lastSlashIndex !== res.length - 1) { - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); - } - lastSlash = i; - dots = 0; - continue; - } - } else if (res.length === 2 || res.length === 1) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - if (res.length > 0) - res += '/..'; - else - res = '..'; - lastSegmentLength = 2; - } - } else { - if (res.length > 0) - res += '/' + path.slice(lastSlash + 1, i); - else - res = path.slice(lastSlash + 1, i); - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } else if (code === 46 /*.*/ && dots !== -1) { - ++dots; - } else { - dots = -1; - } - } - return res; -} - -function _format(sep, pathObject) { - var dir = pathObject.dir || pathObject.root; - var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); - if (!dir) { - return base; - } - if (dir === pathObject.root) { - return dir + base; - } - return dir + sep + base; -} - -var posix = { - // path.resolve([from ...], to) - resolve: function resolve() { - var resolvedPath = ''; - var resolvedAbsolute = false; - var cwd; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path; - if (i >= 0) - path = arguments[i]; - else { - if (cwd === undefined) - cwd = process.cwd(); - path = cwd; - } - - assertPath(path); - - // Skip empty entries - if (path.length === 0) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); - - if (resolvedAbsolute) { - if (resolvedPath.length > 0) - return '/' + resolvedPath; - else - return '/'; - } else if (resolvedPath.length > 0) { - return resolvedPath; - } else { - return '.'; - } - }, - - normalize: function normalize(path) { - assertPath(path); - - if (path.length === 0) return '.'; - - var isAbsolute = path.charCodeAt(0) === 47 /*/*/; - var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; - - // Normalize the path - path = normalizeStringPosix(path, !isAbsolute); - - if (path.length === 0 && !isAbsolute) path = '.'; - if (path.length > 0 && trailingSeparator) path += '/'; - - if (isAbsolute) return '/' + path; - return path; - }, - - isAbsolute: function isAbsolute(path) { - assertPath(path); - return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; - }, - - join: function join() { - if (arguments.length === 0) - return '.'; - var joined; - for (var i = 0; i < arguments.length; ++i) { - var arg = arguments[i]; - assertPath(arg); - if (arg.length > 0) { - if (joined === undefined) - joined = arg; - else - joined += '/' + arg; - } - } - if (joined === undefined) - return '.'; - return posix.normalize(joined); - }, - - relative: function relative(from, to) { - assertPath(from); - assertPath(to); - - if (from === to) return ''; - - from = posix.resolve(from); - to = posix.resolve(to); - - if (from === to) return ''; - - // Trim any leading backslashes - var fromStart = 1; - for (; fromStart < from.length; ++fromStart) { - if (from.charCodeAt(fromStart) !== 47 /*/*/) - break; - } - var fromEnd = from.length; - var fromLen = fromEnd - fromStart; - - // Trim any leading backslashes - var toStart = 1; - for (; toStart < to.length; ++toStart) { - if (to.charCodeAt(toStart) !== 47 /*/*/) - break; - } - var toEnd = to.length; - var toLen = toEnd - toStart; - - // Compare paths to find the longest common path from root - var length = fromLen < toLen ? fromLen : toLen; - var lastCommonSep = -1; - var i = 0; - for (; i <= length; ++i) { - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === 47 /*/*/) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } else if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === 47 /*/*/) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo'; to='/' - lastCommonSep = 0; - } - } - break; - } - var fromCode = from.charCodeAt(fromStart + i); - var toCode = to.charCodeAt(toStart + i); - if (fromCode !== toCode) - break; - else if (fromCode === 47 /*/*/) - lastCommonSep = i; - } - - var out = ''; - // Generate the relative path based on the path difference between `to` - // and `from` - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { - if (out.length === 0) - out += '..'; - else - out += '/..'; - } - } - - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) - return out + to.slice(toStart + lastCommonSep); - else { - toStart += lastCommonSep; - if (to.charCodeAt(toStart) === 47 /*/*/) - ++toStart; - return to.slice(toStart); - } - }, - - _makeLong: function _makeLong(path) { - return path; - }, - - dirname: function dirname(path) { - assertPath(path); - if (path.length === 0) return '.'; - var code = path.charCodeAt(0); - var hasRoot = code === 47 /*/*/; - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } - - if (end === -1) return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) return '//'; - return path.slice(0, end); - }, - - basename: function basename(path, ext) { - if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); - assertPath(path); - - var start = 0; - var end = -1; - var matchedSlash = true; - var i; - - if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { - if (ext.length === path.length && ext === path) return ''; - var extIdx = ext.length - 1; - var firstNonSlashEnd = -1; - for (i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false; - firstNonSlashEnd = i + 1; - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === ext.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i; - } - } else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1; - end = firstNonSlashEnd; - } - } - } - } - - if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; - return path.slice(start, end); - } else { - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - - if (end === -1) return ''; - return path.slice(start, end); - } - }, - - extname: function extname(path) { - assertPath(path); - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) - startDot = i; - else if (preDotState !== 1) - preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - return ''; - } - return path.slice(startDot, end); - }, - - format: function format(pathObject) { - if (pathObject === null || typeof pathObject !== 'object') { - throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); - } - return _format('/', pathObject); - }, - - parse: function parse(path) { - assertPath(path); - - var ret = { root: '', dir: '', base: '', ext: '', name: '' }; - if (path.length === 0) return ret; - var code = path.charCodeAt(0); - var isAbsolute = code === 47 /*/*/; - var start; - if (isAbsolute) { - ret.root = '/'; - start = 1; - } else { - start = 0; - } - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - var i = path.length - 1; - - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - - // Get non-dir info - for (; i >= start; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - if (end !== -1) { - if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); - } - } else { - if (startPart === 0 && isAbsolute) { - ret.name = path.slice(1, startDot); - ret.base = path.slice(1, end); - } else { - ret.name = path.slice(startPart, startDot); - ret.base = path.slice(startPart, end); - } - ret.ext = path.slice(startDot, end); - } - - if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; - - return ret; - }, - - sep: '/', - delimiter: ':', - win32: null, - posix: null -}; - -posix.posix = posix; - -module.exports = posix; - -}).call(this)}).call(this,_dereq_('_process')) -},{"_process":87}],79:[function(_dereq_,module,exports){ +},{}],73:[function(_dereq_,module,exports){ /* * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc * @license MIT @@ -17669,7 +16546,7 @@ if (typeof window === 'object') module.exports = PolyBool; -},{"./lib/build-log":80,"./lib/epsilon":81,"./lib/geojson":82,"./lib/intersecter":83,"./lib/segment-chainer":85,"./lib/segment-selector":86}],80:[function(_dereq_,module,exports){ +},{"./lib/build-log":74,"./lib/epsilon":75,"./lib/geojson":76,"./lib/intersecter":77,"./lib/segment-chainer":79,"./lib/segment-selector":80}],74:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -17784,7 +16661,7 @@ function BuildLog(){ module.exports = BuildLog; -},{}],81:[function(_dereq_,module,exports){ +},{}],75:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -17956,7 +16833,7 @@ function Epsilon(eps){ module.exports = Epsilon; -},{}],82:[function(_dereq_,module,exports){ +},{}],76:[function(_dereq_,module,exports){ // (c) Copyright 2017, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18146,7 +17023,7 @@ var GeoJSON = { module.exports = GeoJSON; -},{}],83:[function(_dereq_,module,exports){ +},{}],77:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18653,7 +17530,7 @@ function Intersecter(selfIntersection, eps, buildLog){ module.exports = Intersecter; -},{"./linked-list":84}],84:[function(_dereq_,module,exports){ +},{"./linked-list":78}],78:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18736,7 +17613,7 @@ var LinkedList = { module.exports = LinkedList; -},{}],85:[function(_dereq_,module,exports){ +},{}],79:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18990,7 +17867,7 @@ function SegmentChainer(segments, eps, buildLog){ module.exports = SegmentChainer; -},{}],86:[function(_dereq_,module,exports){ +},{}],80:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -19158,7 +18035,1391 @@ var SegmentSelector = { module.exports = SegmentSelector; -},{}],87:[function(_dereq_,module,exports){ +},{}],81:[function(_dereq_,module,exports){ +'use strict'; + + +var Transform = _dereq_('stream').Transform; +var streamParser = _dereq_('stream-parser'); + + +function ParserStream() { + Transform.call(this, { readableObjectMode: true }); +} + +// Inherit from Transform +ParserStream.prototype = Object.create(Transform.prototype); +ParserStream.prototype.constructor = ParserStream; + +streamParser(ParserStream.prototype); + + +exports.ParserStream = ParserStream; + + +exports.sliceEq = function (src, start, dest) { + for (var i = start, j = 0; j < dest.length;) { + if (src[i++] !== dest[j++]) return false; + } + return true; +}; + +exports.str2arr = function (str, format) { + var arr = [], i = 0; + + if (format && format === 'hex') { + while (i < str.length) { + arr.push(parseInt(str.slice(i, i + 2), 16)); + i += 2; + } + } else { + for (; i < str.length; i++) { + /* eslint-disable no-bitwise */ + arr.push(str.charCodeAt(i) & 0xFF); + } + } + + return arr; +}; + +exports.readUInt16LE = function (data, offset) { + return data[offset] | (data[offset + 1] << 8); +}; + +exports.readUInt16BE = function (data, offset) { + return data[offset + 1] | (data[offset] << 8); +}; + +exports.readUInt32LE = function (data, offset) { + return data[offset] | + (data[offset + 1] << 8) | + (data[offset + 2] << 16) | + (data[offset + 3] * 0x1000000); +}; + +exports.readUInt32BE = function (data, offset) { + return data[offset + 3] | + (data[offset + 2] << 8) | + (data[offset + 1] << 16) | + (data[offset] * 0x1000000); +}; + + +function ProbeError(message, code, statusCode) { + Error.call(this); + Error.captureStackTrace(this, this.constructor); + + this.name = this.constructor.name; + + this.message = message; + if (code) this.code = code; + if (statusCode) this.statusCode = statusCode; +} + +// Inherit from Error +ProbeError.prototype = Object.create(Error.prototype); +ProbeError.prototype.constructor = ProbeError; + + +exports.ProbeError = ProbeError; + +},{"stream":98,"stream-parser":114}],82:[function(_dereq_,module,exports){ + +/* eslint-disable no-bitwise */ +/* eslint-disable consistent-return */ + +'use strict'; + +////////////////////////////////////////////////////////////////////////// +// Helpers +// +function error(message, code) { + var err = new Error(message); + err.code = code; + return err; +} + + +function utf8_decode(str) { + try { + return decodeURIComponent(escape(str)); + } catch (_) { + return str; + } +} + + +////////////////////////////////////////////////////////////////////////// +// Exif parser +// +// Input: +// - jpeg_bin: Uint8Array - jpeg file +// - exif_start: Number - start of TIFF header (after Exif\0\0) +// - exif_end: Number - end of Exif segment +// - on_entry: Number - callback +// +function ExifParser(jpeg_bin, exif_start, exif_end) { + // Uint8Array, exif without signature (which isn't included in offsets) + this.input = jpeg_bin.subarray(exif_start, exif_end); + + // offset correction for `on_entry` callback + this.start = exif_start; + + // Check TIFF header (includes byte alignment and first IFD offset) + var sig = String.fromCharCode.apply(null, this.input.subarray(0, 4)); + + if (sig !== 'II\x2A\0' && sig !== 'MM\0\x2A') { + throw error('invalid TIFF signature', 'EBADDATA'); + } + + // true if motorola (big endian) byte alignment, false if intel + this.big_endian = sig[0] === 'M'; +} + + +ExifParser.prototype.each = function (on_entry) { + // allow premature exit + this.aborted = false; + + var offset = this.read_uint32(4); + + this.ifds_to_read = [ { + id: 0, + offset: offset + } ]; + + while (this.ifds_to_read.length > 0 && !this.aborted) { + var i = this.ifds_to_read.shift(); + if (!i.offset) continue; + this.scan_ifd(i.id, i.offset, on_entry); + } +}; + + +ExifParser.prototype.read_uint16 = function (offset) { + var d = this.input; + if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA'); + + return this.big_endian ? + d[offset] * 0x100 + d[offset + 1] : + d[offset] + d[offset + 1] * 0x100; +}; + + +ExifParser.prototype.read_uint32 = function (offset) { + var d = this.input; + if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA'); + + return this.big_endian ? + d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3] : + d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000; +}; + + +ExifParser.prototype.is_subifd_link = function (ifd, tag) { + return (ifd === 0 && tag === 0x8769) || // SubIFD + (ifd === 0 && tag === 0x8825) || // GPS Info + (ifd === 0x8769 && tag === 0xA005); // Interop IFD +}; + + +// Returns byte length of a single component of a given format +// +ExifParser.prototype.exif_format_length = function (format) { + switch (format) { + case 1: // byte + case 2: // ascii + case 6: // sbyte + case 7: // undefined + return 1; + + case 3: // short + case 8: // sshort + return 2; + + case 4: // long + case 9: // slong + case 11: // float + return 4; + + case 5: // rational + case 10: // srational + case 12: // double + return 8; + + default: + // unknown type + return 0; + } +}; + + +// Reads Exif data +// +ExifParser.prototype.exif_format_read = function (format, offset) { + var v; + + switch (format) { + case 1: // byte + case 2: // ascii + v = this.input[offset]; + return v; + + case 6: // sbyte + v = this.input[offset]; + return v | (v & 0x80) * 0x1fffffe; + + case 3: // short + v = this.read_uint16(offset); + return v; + + case 8: // sshort + v = this.read_uint16(offset); + return v | (v & 0x8000) * 0x1fffe; + + case 4: // long + v = this.read_uint32(offset); + return v; + + case 9: // slong + v = this.read_uint32(offset); + return v | 0; + + case 5: // rational + case 10: // srational + case 11: // float + case 12: // double + return null; // not implemented + + case 7: // undefined + return null; // blob + + default: + // unknown type + return null; + } +}; + + +ExifParser.prototype.scan_ifd = function (ifd_no, offset, on_entry) { + var entry_count = this.read_uint16(offset); + + offset += 2; + + for (var i = 0; i < entry_count; i++) { + var tag = this.read_uint16(offset); + var format = this.read_uint16(offset + 2); + var count = this.read_uint32(offset + 4); + + var comp_length = this.exif_format_length(format); + var data_length = count * comp_length; + var data_offset = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8); + var is_subifd_link = false; + + if (data_offset + data_length > this.input.length) { + throw error('unexpected EOF', 'EBADDATA'); + } + + var value = []; + var comp_offset = data_offset; + + for (var j = 0; j < count; j++, comp_offset += comp_length) { + var item = this.exif_format_read(format, comp_offset); + if (item === null) { + value = null; + break; + } + value.push(item); + } + + if (Array.isArray(value) && format === 2) { + value = utf8_decode(String.fromCharCode.apply(null, value)); + if (value && value[value.length - 1] === '\0') value = value.slice(0, -1); + } + + if (this.is_subifd_link(ifd_no, tag)) { + if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) { + this.ifds_to_read.push({ + id: tag, + offset: value[0] + }); + is_subifd_link = true; + } + } + + var entry = { + is_big_endian: this.big_endian, + ifd: ifd_no, + tag: tag, + format: format, + count: count, + entry_offset: offset + this.start, + data_length: data_length, + data_offset: data_offset + this.start, + value: value, + is_subifd_link: is_subifd_link + }; + + if (on_entry(entry) === false) { + this.aborted = true; + return; + } + + offset += 12; + } + + if (ifd_no === 0) { + this.ifds_to_read.push({ + id: 1, + offset: this.read_uint32(offset) + }); + } +}; + + +module.exports.ExifParser = ExifParser; + +// returns orientation stored in Exif (1-8), 0 if none was found, -1 if error +module.exports.get_orientation = function (data) { + var orientation = 0; + try { + new ExifParser(data, 0, data.length).each(function (entry) { + if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) { + orientation = entry.value[0]; + return false; + } + }); + return orientation; + } catch (err) { + return -1; + } +}; + +},{}],83:[function(_dereq_,module,exports){ +// Utils used to parse miaf-based files (avif/heic/heif) +// +// ISO media file spec: +// https://web.archive.org/web/20180219054429/http://l.web.umkc.edu/lizhu/teaching/2016sp.video-communication/ref/mp4.pdf +// +// ISO image file format spec: +// https://standards.iso.org/ittf/PubliclyAvailableStandards/c066067_ISO_IEC_23008-12_2017.zip +// + +'use strict'; + +/* eslint-disable consistent-return */ +/* eslint-disable no-bitwise */ + +var readUInt16BE = _dereq_('./common').readUInt16BE; +var readUInt32BE = _dereq_('./common').readUInt32BE; + +/* + * interface Box { + * size: uint32; // if size == 0, box lasts until EOF + * boxtype: char[4]; + * largesize?: uint64; // only if size == 1 + * usertype?: char[16]; // only if boxtype == 'uuid' + * } + */ +function unbox(data, offset) { + if (data.length < 4 + offset) return null; + + var size = readUInt32BE(data, offset); + + // size includes first 4 bytes (length) + if (data.length < size + offset || size < 8) return null; + + // if size === 1, real size is following uint64 (only for big boxes, not needed) + // if size === 0, real size is until the end of the file (only for big boxes, not needed) + + return { + boxtype: String.fromCharCode.apply(null, data.slice(offset + 4, offset + 8)), + data: data.slice(offset + 8, offset + size), + end: offset + size + }; +} + + +module.exports.unbox = unbox; + + +// parses `meta` -> `iprp` -> `ipco` box, returns: +// { +// sizes: [ { width, height } ], +// transforms: [ { type, value } ] +// } +function scan_ipco(data, sandbox) { + var offset = 0; + + for (;;) { + var box = unbox(data, offset); + if (!box) break; + + switch (box.boxtype) { + case 'ispe': + sandbox.sizes.push({ + width: readUInt32BE(box.data, 4), + height: readUInt32BE(box.data, 8) + }); + break; + + case 'irot': + sandbox.transforms.push({ + type: 'irot', + value: box.data[0] & 3 + }); + break; + + case 'imir': + sandbox.transforms.push({ + type: 'imir', + value: box.data[0] & 1 + }); + break; + } + + offset = box.end; + } +} + + +function readUIntBE(data, offset, size) { + var result = 0; + + for (var i = 0; i < size; i++) { + result = result * 256 + (data[offset + i] || 0); + } + + return result; +} + + +// parses `meta` -> `iloc` box +function scan_iloc(data, sandbox) { + var offset_size = (data[4] >> 4) & 0xF; + var length_size = data[4] & 0xF; + var base_offset_size = (data[5] >> 4) & 0xF; + var item_count = readUInt16BE(data, 6); + var offset = 8; + + for (var i = 0; i < item_count; i++) { + var item_ID = readUInt16BE(data, offset); + offset += 2; + + var data_reference_index = readUInt16BE(data, offset); + offset += 2; + + var base_offset = readUIntBE(data, offset, base_offset_size); + offset += base_offset_size; + + var extent_count = readUInt16BE(data, offset); + offset += 2; + + if (data_reference_index === 0 && extent_count === 1) { + var first_extent_offset = readUIntBE(data, offset, offset_size); + var first_extent_length = readUIntBE(data, offset + offset_size, length_size); + sandbox.item_loc[item_ID] = { length: first_extent_length, offset: first_extent_offset + base_offset }; + } + + offset += extent_count * (offset_size + length_size); + } +} + + +// parses `meta` -> `iinf` box +function scan_iinf(data, sandbox) { + var item_count = readUInt16BE(data, 4); + var offset = 6; + + for (var i = 0; i < item_count; i++) { + var box = unbox(data, offset); + if (!box) break; + if (box.boxtype === 'infe') { + var item_id = readUInt16BE(box.data, 4); + var item_name = ''; + + for (var pos = 8; pos < box.data.length && box.data[pos]; pos++) { + item_name += String.fromCharCode(box.data[pos]); + } + + sandbox.item_inf[item_name] = item_id; + } + offset = box.end; + } +} + + +// parses `meta` -> `iprp` box +function scan_iprp(data, sandbox) { + var offset = 0; + + for (;;) { + var box = unbox(data, offset); + if (!box) break; + if (box.boxtype === 'ipco') scan_ipco(box.data, sandbox); + offset = box.end; + } +} + + +// parses `meta` box +function scan_meta(data, sandbox) { + var offset = 4; // version + flags + + for (;;) { + var box = unbox(data, offset); + if (!box) break; + if (box.boxtype === 'iprp') scan_iprp(box.data, sandbox); + if (box.boxtype === 'iloc') scan_iloc(box.data, sandbox); + if (box.boxtype === 'iinf') scan_iinf(box.data, sandbox); + offset = box.end; + } +} + + +// get image with largest single dimension as base +function getMaxSize(sizes) { + var maxWidthSize = sizes.reduce(function (a, b) { + return a.width > b.width || (a.width === b.width && a.height > b.height) ? a : b; + }); + + var maxHeightSize = sizes.reduce(function (a, b) { + return a.height > b.height || (a.height === b.height && a.width > b.width) ? a : b; + }); + + var maxSize; + + if (maxWidthSize.width > maxHeightSize.height || + (maxWidthSize.width === maxHeightSize.height && maxWidthSize.height > maxHeightSize.width)) { + maxSize = maxWidthSize; + } else { + maxSize = maxHeightSize; + } + + return maxSize; +} + + +module.exports.readSizeFromMeta = function (data) { + var sandbox = { + sizes: [], + transforms: [], + item_inf: {}, + item_loc: {} + }; + + scan_meta(data, sandbox); + + if (!sandbox.sizes.length) return; + + var maxSize = getMaxSize(sandbox.sizes); + + var orientation = 1; + + // convert imir/irot to exif orientation + sandbox.transforms.forEach(function (transform) { + var rotate_ccw = { 1: 6, 2: 5, 3: 8, 4: 7, 5: 4, 6: 3, 7: 2, 8: 1 }; + var mirror_vert = { 1: 4, 2: 3, 3: 2, 4: 1, 5: 6, 6: 5, 7: 8, 8: 7 }; + + if (transform.type === 'imir') { + if (transform.value === 0) { + // vertical flip + orientation = mirror_vert[orientation]; + } else { + // horizontal flip = vertical flip + 180 deg rotation + orientation = mirror_vert[orientation]; + orientation = rotate_ccw[orientation]; + orientation = rotate_ccw[orientation]; + } + } + + if (transform.type === 'irot') { + // counter-clockwise rotation 90 deg 0-3 times + for (var i = 0; i < transform.value; i++) { + orientation = rotate_ccw[orientation]; + } + } + }); + + var exif_location = null; + + if (sandbox.item_inf.Exif) { + exif_location = sandbox.item_loc[sandbox.item_inf.Exif]; + } + + return { + width: maxSize.width, + height: maxSize.height, + orientation: sandbox.transforms.length ? orientation : null, + variants: sandbox.sizes, + exif_location: exif_location + }; +}; + + +module.exports.getMimeType = function (data) { + var brand = String.fromCharCode.apply(null, data.slice(0, 4)); + var compat = {}; + + compat[brand] = true; + + for (var i = 8; i < data.length; i += 4) { + compat[String.fromCharCode.apply(null, data.slice(i, i + 4))] = true; + } + + // heic and avif are superset of miaf, so they should all list mif1 as compatible + if (!compat.mif1 && !compat.msf1 && !compat.miaf) return; + + if (brand === 'avif' || brand === 'avis' || brand === 'avio') { + // `.avifs` and `image/avif-sequence` are removed from spec, all files have single type + return { type: 'avif', mime: 'image/avif' }; + } + + // https://nokiatech.github.io/heif/technical.html + if (brand === 'heic' || brand === 'heix') { + return { type: 'heic', mime: 'image/heic' }; + } + + if (brand === 'hevc' || brand === 'hevx') { + return { type: 'heic', mime: 'image/heic-sequence' }; + } + + if (compat.avif || compat.avis) { + return { type: 'avif', mime: 'image/avif' }; + } + + if (compat.heic || compat.heix || compat.hevc || compat.hevx || compat.heis) { + if (compat.msf1) { + return { type: 'heif', mime: 'image/heif-sequence' }; + } + return { type: 'heif', mime: 'image/heif' }; + } + + return { type: 'avif', mime: 'image/avif' }; +}; + +},{"./common":81}],84:[function(_dereq_,module,exports){ +// Utils used to parse miaf-based files (avif/heic/heif) +// +// - image collections are not supported (only last size is reported) +// - images with metadata encoded after image data are not supported +// - images without any `ispe` box are not supported +// + +/* eslint-disable consistent-return */ + +'use strict'; + + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt32BE = _dereq_('../common').readUInt32BE; +var miaf = _dereq_('../miaf_utils'); +var exif = _dereq_('../exif_utils'); + +var SIG_FTYP = str2arr('ftyp'); + + +module.exports = function (data) { + // ISO media file (avif format) starts with ftyp box: + // 0000 0020 6674 7970 6176 6966 + // (length) f t y p a v i f + // + if (!sliceEq(data, 4, SIG_FTYP)) return; + + var firstBox = miaf.unbox(data, 0); + if (!firstBox) return; + + var fileType = miaf.getMimeType(firstBox.data); + if (!fileType) return; + + var meta, offset = firstBox.end; + + for (;;) { + var box = miaf.unbox(data, offset); + if (!box) break; + offset = box.end; + + // mdat block SHOULD be last (but not strictly required), + // so it's unlikely that metadata is after it + if (box.boxtype === 'mdat') return; + if (box.boxtype === 'meta') { + meta = box.data; + break; + } + } + + if (!meta) return; + + var imgSize = miaf.readSizeFromMeta(meta); + + if (!imgSize) return; + + var result = { + width: imgSize.width, + height: imgSize.height, + type: fileType.type, + mime: fileType.mime, + wUnits: 'px', + hUnits: 'px' + }; + + if (imgSize.variants.length > 1) { + result.variants = imgSize.variants; + } + + if (imgSize.orientation) { + result.orientation = imgSize.orientation; + } + + if (imgSize.exif_location && + imgSize.exif_location.offset + imgSize.exif_location.length <= data.length) { + + var sig_offset = readUInt32BE(data, imgSize.exif_location.offset); + var exif_data = data.slice( + imgSize.exif_location.offset + sig_offset + 4, + imgSize.exif_location.offset + imgSize.exif_location.length); + + var orientation = exif.get_orientation(exif_data); + + if (orientation > 0) result.orientation = orientation; + } + + return result; +}; + +},{"../common":81,"../exif_utils":82,"../miaf_utils":83}],85:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; + +var SIG_BM = str2arr('BM'); + + +module.exports = function (data) { + if (data.length < 26) return; + + if (!sliceEq(data, 0, SIG_BM)) return; + + return { + width: readUInt16LE(data, 18), + height: readUInt16LE(data, 22), + type: 'bmp', + mime: 'image/bmp', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],86:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; + + +var SIG_GIF87a = str2arr('GIF87a'); +var SIG_GIF89a = str2arr('GIF89a'); + + +module.exports = function (data) { + if (data.length < 10) return; + + if (!sliceEq(data, 0, SIG_GIF87a) && !sliceEq(data, 0, SIG_GIF89a)) return; + + return { + width: readUInt16LE(data, 6), + height: readUInt16LE(data, 8), + type: 'gif', + mime: 'image/gif', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],87:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var readUInt16LE = _dereq_('../common').readUInt16LE; + +var HEADER = 0; +var TYPE_ICO = 1; +var INDEX_SIZE = 16; + +// Format specification: +// https://en.wikipedia.org/wiki/ICO_(file_format)#Icon_resource_structure +module.exports = function (data) { + var header = readUInt16LE(data, 0); + var type = readUInt16LE(data, 2); + var numImages = readUInt16LE(data, 4); + + if (header !== HEADER || type !== TYPE_ICO || !numImages) { + return; + } + + var variants = []; + var maxSize = { width: 0, height: 0 }; + + for (var i = 0; i < numImages; i++) { + var width = data[6 + INDEX_SIZE * i] || 256; + var height = data[6 + INDEX_SIZE * i + 1] || 256; + var size = { width: width, height: height }; + variants.push(size); + + if (width > maxSize.width || height > maxSize.height) { + maxSize = size; + } + } + + return { + width: maxSize.width, + height: maxSize.height, + variants: variants, + type: 'ico', + mime: 'image/x-icon', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],88:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var readUInt16BE = _dereq_('../common').readUInt16BE; +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var exif = _dereq_('../exif_utils'); + + +var SIG_EXIF = str2arr('Exif\0\0'); + + +module.exports = function (data) { + if (data.length < 2) return; + + // first marker of the file MUST be 0xFFD8 + if (data[0] !== 0xFF || data[1] !== 0xD8) return; + + var offset = 2; + + for (;;) { + if (data.length - offset < 2) return; + // not a JPEG marker + if (data[offset++] !== 0xFF) return; + + var code = data[offset++]; + var length; + + // skip padding bytes + while (code === 0xFF) code = data[offset++]; + + // standalone markers, according to JPEG 1992, + // http://www.w3.org/Graphics/JPEG/itu-t81.pdf, see Table B.1 + if ((0xD0 <= code && code <= 0xD9) || code === 0x01) { + length = 0; + } else if (0xC0 <= code && code <= 0xFE) { + // the rest of the unreserved markers + if (data.length - offset < 2) return; + + length = readUInt16BE(data, offset) - 2; + offset += 2; + } else { + // unknown markers + return; + } + + if (code === 0xD9 /* EOI */ || code === 0xDA /* SOS */) { + // end of the datastream + return; + } + + var orientation; + + // try to get orientation from Exif segment + if (code === 0xE1 && length >= 10 && sliceEq(data, offset, SIG_EXIF)) { + orientation = exif.get_orientation(data.slice(offset + 6, offset + length)); + } + + if (length >= 5 && + (0xC0 <= code && code <= 0xCF) && + code !== 0xC4 && code !== 0xC8 && code !== 0xCC) { + + if (data.length - offset < length) return; + + var result = { + width: readUInt16BE(data, offset + 3), + height: readUInt16BE(data, offset + 1), + type: 'jpg', + mime: 'image/jpeg', + wUnits: 'px', + hUnits: 'px' + }; + + if (orientation > 0) { + result.orientation = orientation; + } + + return result; + } + + offset += length; + } +}; + +},{"../common":81,"../exif_utils":82}],89:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt32BE = _dereq_('../common').readUInt32BE; + + +var SIG_PNG = str2arr('\x89PNG\r\n\x1a\n'); +var SIG_IHDR = str2arr('IHDR'); + + +module.exports = function (data) { + if (data.length < 24) return; + + // check PNG signature + if (!sliceEq(data, 0, SIG_PNG)) return; + + // check that first chunk is IHDR + if (!sliceEq(data, 12, SIG_IHDR)) return; + + return { + width: readUInt32BE(data, 16), + height: readUInt32BE(data, 20), + type: 'png', + mime: 'image/png', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],90:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt32BE = _dereq_('../common').readUInt32BE; + + +var SIG_8BPS = str2arr('8BPS\x00\x01'); + + +module.exports = function (data) { + if (data.length < 6 + 16) return; + + // signature + version + if (!sliceEq(data, 0, SIG_8BPS)) return; + + return { + width: readUInt32BE(data, 6 + 12), + height: readUInt32BE(data, 6 + 8), + type: 'psd', + mime: 'image/vnd.adobe.photoshop', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],91:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +function isWhiteSpace(chr) { + return chr === 0x20 || chr === 0x09 || chr === 0x0D || chr === 0x0A; +} + +// Filter NaN, Infinity, < 0 +function isFinitePositive(val) { + return typeof val === 'number' && isFinite(val) && val > 0; +} + +function canBeSvg(buf) { + var i = 0, max = buf.length; + + while (i < max && isWhiteSpace(buf[i])) i++; + + if (i === max) return false; + return buf[i] === 0x3c; /* < */ +} + + +var SVG_HEADER_RE = /]+>/; +var SVG_WIDTH_RE = /[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/; +var SVG_HEIGHT_RE = /\bheight="([^%]+?)"|\bheight='([^%]+?)'/; +var SVG_VIEWBOX_RE = /\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/; +var SVG_UNITS_RE = /in$|mm$|cm$|pt$|pc$|px$|em$|ex$/; + +function svgAttrs(str) { + var width = str.match(SVG_WIDTH_RE); + var height = str.match(SVG_HEIGHT_RE); + var viewbox = str.match(SVG_VIEWBOX_RE); + + return { + width: width && (width[1] || width[2]), + height: height && (height[1] || height[2]), + viewbox: viewbox && (viewbox[1] || viewbox[2]) + }; +} + + +function units(str) { + if (!SVG_UNITS_RE.test(str)) return 'px'; + + return str.match(SVG_UNITS_RE)[0]; +} + + +module.exports = function (data) { + if (!canBeSvg(data)) return; + + var str = ''; + + for (var i = 0; i < data.length; i++) { + // 1. We can't rely on buffer features + // 2. Don't care about UTF16 because ascii is enougth for our goals + str += String.fromCharCode(data[i]); + } + + if (!SVG_HEADER_RE.test(str)) return; + + var attrs = svgAttrs(str.match(SVG_HEADER_RE)[0]); + var width = parseFloat(attrs.width); + var height = parseFloat(attrs.height); + + // Extract from direct values + + if (attrs.width && attrs.height) { + if (!isFinitePositive(width) || !isFinitePositive(height)) return; + + return { + width: width, + height: height, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(attrs.width), + hUnits: units(attrs.height) + }; + } + + // Extract from viewbox + + var parts = (attrs.viewbox || '').split(' '); + var viewbox = { + width: parts[2], + height: parts[3] + }; + var vbWidth = parseFloat(viewbox.width); + var vbHeight = parseFloat(viewbox.height); + + if (!isFinitePositive(vbWidth) || !isFinitePositive(vbHeight)) return; + if (units(viewbox.width) !== units(viewbox.height)) return; + + var ratio = vbWidth / vbHeight; + + if (attrs.width) { + if (!isFinitePositive(width)) return; + + return { + width: width, + height: width / ratio, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(attrs.width), + hUnits: units(attrs.width) + }; + } + + if (attrs.height) { + if (!isFinitePositive(height)) return; + + return { + width: height * ratio, + height: height, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(attrs.height), + hUnits: units(attrs.height) + }; + } + + return { + width: vbWidth, + height: vbHeight, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(viewbox.width), + hUnits: units(viewbox.height) + }; +}; + +},{}],92:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; +var readUInt16BE = _dereq_('../common').readUInt16BE; +var readUInt32LE = _dereq_('../common').readUInt32LE; +var readUInt32BE = _dereq_('../common').readUInt32BE; + + +var SIG_1 = str2arr('II\x2A\0'); +var SIG_2 = str2arr('MM\0\x2A'); + + +function readUInt16(buffer, offset, is_big_endian) { + return is_big_endian ? readUInt16BE(buffer, offset) : readUInt16LE(buffer, offset); +} + +function readUInt32(buffer, offset, is_big_endian) { + return is_big_endian ? readUInt32BE(buffer, offset) : readUInt32LE(buffer, offset); +} + +function readIFDValue(data, data_offset, is_big_endian) { + var type = readUInt16(data, data_offset + 2, is_big_endian); + var values = readUInt32(data, data_offset + 4, is_big_endian); + + if (values !== 1 || (type !== 3 && type !== 4)) return null; + + if (type === 3) { + return readUInt16(data, data_offset + 8, is_big_endian); + } + + return readUInt32(data, data_offset + 8, is_big_endian); +} + +module.exports = function (data) { + if (data.length < 8) return; + + // check TIFF signature + if (!sliceEq(data, 0, SIG_1) && !sliceEq(data, 0, SIG_2)) return; + + var is_big_endian = (data[0] === 77 /* 'MM' */); + var count = readUInt32(data, 4, is_big_endian) - 8; + + if (count < 0) return; + + // skip until IFD + var offset = count + 8; + + if (data.length - offset < 2) return; + + // read number of IFD entries + var ifd_size = readUInt16(data, offset + 0, is_big_endian) * 12; + + if (ifd_size <= 0) return; + + offset += 2; + + // read all IFD entries + if (data.length - offset < ifd_size) return; + + var i, width, height, tag; + + for (i = 0; i < ifd_size; i += 12) { + tag = readUInt16(data, offset + i, is_big_endian); + + if (tag === 256) { + width = readIFDValue(data, offset + i, is_big_endian); + } else if (tag === 257) { + height = readIFDValue(data, offset + i, is_big_endian); + } + } + + if (width && height) { + return { + width: width, + height: height, + type: 'tiff', + mime: 'image/tiff', + wUnits: 'px', + hUnits: 'px' + }; + } +}; + +},{"../common":81}],93:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable no-bitwise */ +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; +var readUInt32LE = _dereq_('../common').readUInt32LE; +var exif = _dereq_('../exif_utils'); + + +var SIG_RIFF = str2arr('RIFF'); +var SIG_WEBP = str2arr('WEBP'); + + +function parseVP8(data, offset) { + if (data[offset + 3] !== 0x9D || data[offset + 4] !== 0x01 || data[offset + 5] !== 0x2A) { + // bad code block signature + return; + } + + return { + width: readUInt16LE(data, offset + 6) & 0x3FFF, + height: readUInt16LE(data, offset + 8) & 0x3FFF, + type: 'webp', + mime: 'image/webp', + wUnits: 'px', + hUnits: 'px' + }; +} + + +function parseVP8L(data, offset) { + if (data[offset] !== 0x2F) return; + + var bits = readUInt32LE(data, offset + 1); + + return { + width: (bits & 0x3FFF) + 1, + height: ((bits >> 14) & 0x3FFF) + 1, + type: 'webp', + mime: 'image/webp', + wUnits: 'px', + hUnits: 'px' + }; +} + + +function parseVP8X(data, offset) { + return { + // TODO: replace with `data.readUIntLE(8, 3) + 1` + // when 0.10 support is dropped + width: ((data[offset + 6] << 16) | (data[offset + 5] << 8) | data[offset + 4]) + 1, + height: ((data[offset + 9] << offset) | (data[offset + 8] << 8) | data[offset + 7]) + 1, + type: 'webp', + mime: 'image/webp', + wUnits: 'px', + hUnits: 'px' + }; +} + + +module.exports = function (data) { + if (data.length < 16) return; + + // check /^RIFF....WEBPVP8([ LX])$/ signature + if (!sliceEq(data, 0, SIG_RIFF) && !sliceEq(data, 8, SIG_WEBP)) return; + + var offset = 12; + var result = null; + var exif_orientation = 0; + var fileLength = readUInt32LE(data, 4) + 8; + + if (fileLength > data.length) return; + + while (offset + 8 < fileLength) { + if (data[offset] === 0) { + // after each chunk of odd size there should be 0 byte of padding, skip those + offset++; + continue; + } + + var header = String.fromCharCode.apply(null, data.slice(offset, offset + 4)); + var length = readUInt32LE(data, offset + 4); + + if (header === 'VP8 ' && length >= 10) { + result = result || parseVP8(data, offset + 8); + } else if (header === 'VP8L' && length >= 9) { + result = result || parseVP8L(data, offset + 8); + } else if (header === 'VP8X' && length >= 10) { + result = result || parseVP8X(data, offset + 8); + } else if (header === 'EXIF') { + exif_orientation = exif.get_orientation(data.slice(offset + 8, offset + 8 + length)); + + // exif is the last chunk we care about, stop after it + offset = Infinity; + } + + offset += 8 + length; + } + + if (!result) return; + + if (exif_orientation > 0) { + result.orientation = exif_orientation; + } + + return result; +}; + +},{"../common":81,"../exif_utils":82}],94:[function(_dereq_,module,exports){ +'use strict'; + + +module.exports = { + avif: _dereq_('./parse_sync/avif'), + bmp: _dereq_('./parse_sync/bmp'), + gif: _dereq_('./parse_sync/gif'), + ico: _dereq_('./parse_sync/ico'), + jpeg: _dereq_('./parse_sync/jpeg'), + png: _dereq_('./parse_sync/png'), + psd: _dereq_('./parse_sync/psd'), + svg: _dereq_('./parse_sync/svg'), + tiff: _dereq_('./parse_sync/tiff'), + webp: _dereq_('./parse_sync/webp') +}; + +},{"./parse_sync/avif":84,"./parse_sync/bmp":85,"./parse_sync/gif":86,"./parse_sync/ico":87,"./parse_sync/jpeg":88,"./parse_sync/png":89,"./parse_sync/psd":90,"./parse_sync/svg":91,"./parse_sync/tiff":92,"./parse_sync/webp":93}],95:[function(_dereq_,module,exports){ +'use strict'; + + +var parsers = _dereq_('./lib/parsers_sync'); + + +function probeBuffer(buffer) { + var parser_names = Object.keys(parsers); + + for (var i = 0; i < parser_names.length; i++) { + var result = parsers[parser_names[i]](buffer); + + if (result) return result; + } + + return null; +} + + +/////////////////////////////////////////////////////////////////////// +// Exports +// + +module.exports = function get_image_size(src) { + return probeBuffer(src); +}; + +module.exports.parsers = parsers; + +},{"./lib/parsers_sync":94}],96:[function(_dereq_,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -19344,7 +19605,4538 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],88:[function(_dereq_,module,exports){ +},{}],97:[function(_dereq_,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = _dereq_('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":28}],98:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +module.exports = Stream; + +var EE = _dereq_('events').EventEmitter; +var inherits = _dereq_('inherits'); + +inherits(Stream, EE); +Stream.Readable = _dereq_('readable-stream/lib/_stream_readable.js'); +Stream.Writable = _dereq_('readable-stream/lib/_stream_writable.js'); +Stream.Duplex = _dereq_('readable-stream/lib/_stream_duplex.js'); +Stream.Transform = _dereq_('readable-stream/lib/_stream_transform.js'); +Stream.PassThrough = _dereq_('readable-stream/lib/_stream_passthrough.js'); +Stream.finished = _dereq_('readable-stream/lib/internal/streams/end-of-stream.js') +Stream.pipeline = _dereq_('readable-stream/lib/internal/streams/pipeline.js') + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":27,"inherits":65,"readable-stream/lib/_stream_duplex.js":100,"readable-stream/lib/_stream_passthrough.js":101,"readable-stream/lib/_stream_readable.js":102,"readable-stream/lib/_stream_transform.js":103,"readable-stream/lib/_stream_writable.js":104,"readable-stream/lib/internal/streams/end-of-stream.js":108,"readable-stream/lib/internal/streams/pipeline.js":110}],99:[function(_dereq_,module,exports){ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + +},{}],100:[function(_dereq_,module,exports){ +(function (process){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. +'use strict'; +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +module.exports = Duplex; + +var Readable = _dereq_('./_stream_readable'); + +var Writable = _dereq_('./_stream_writable'); + +_dereq_('inherits')(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +}).call(this)}).call(this,_dereq_('_process')) +},{"./_stream_readable":102,"./_stream_writable":104,"_process":96,"inherits":65}],101:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. +'use strict'; + +module.exports = PassThrough; + +var Transform = _dereq_('./_stream_transform'); + +_dereq_('inherits')(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":103,"inherits":65}],102:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +'use strict'; + +module.exports = Readable; +/**/ + +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +var EE = _dereq_('events').EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = _dereq_('./internal/streams/stream'); +/**/ + + +var Buffer = _dereq_('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = _dereq_('util'); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = _dereq_('./internal/streams/buffer_list'); + +var destroyImpl = _dereq_('./internal/streams/destroy'); + +var _require = _dereq_('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = _dereq_('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +_dereq_('inherits')(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || _dereq_('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || _dereq_('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = _dereq_('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = _dereq_('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} +}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":99,"./_stream_duplex":100,"./internal/streams/async_iterator":105,"./internal/streams/buffer_list":106,"./internal/streams/destroy":107,"./internal/streams/from":109,"./internal/streams/state":111,"./internal/streams/stream":112,"_process":96,"buffer":28,"events":27,"inherits":65,"string_decoder/":113,"util":26}],103:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. +'use strict'; + +module.exports = Transform; + +var _require$codes = _dereq_('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = _dereq_('./_stream_duplex'); + +_dereq_('inherits')(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} +},{"../errors":99,"./_stream_duplex":100,"inherits":65}],104:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. +'use strict'; + +module.exports = Writable; +/* */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex; +/**/ + +Writable.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: _dereq_('util-deprecate') +}; +/**/ + +/**/ + +var Stream = _dereq_('./internal/streams/stream'); +/**/ + + +var Buffer = _dereq_('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = _dereq_('./internal/streams/destroy'); + +var _require = _dereq_('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = _dereq_('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +_dereq_('inherits')(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || _dereq_('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || _dereq_('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":99,"./_stream_duplex":100,"./internal/streams/destroy":107,"./internal/streams/state":111,"./internal/streams/stream":112,"_process":96,"buffer":28,"inherits":65,"util-deprecate":120}],105:[function(_dereq_,module,exports){ +(function (process){(function (){ +'use strict'; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = _dereq_('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; +}).call(this)}).call(this,_dereq_('_process')) +},{"./end-of-stream":108,"_process":96}],106:[function(_dereq_,module,exports){ +'use strict'; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = _dereq_('buffer'), + Buffer = _require.Buffer; + +var _require2 = _dereq_('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); +},{"buffer":28,"util":26}],107:[function(_dereq_,module,exports){ +(function (process){(function (){ +'use strict'; // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; +}).call(this)}).call(this,_dereq_('_process')) +},{"_process":96}],108:[function(_dereq_,module,exports){ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = _dereq_('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; +},{"../../../errors":99}],109:[function(_dereq_,module,exports){ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; + +},{}],110:[function(_dereq_,module,exports){ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = _dereq_('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = _dereq_('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; +},{"../../../errors":99,"./end-of-stream":108}],111:[function(_dereq_,module,exports){ +'use strict'; + +var ERR_INVALID_OPT_VALUE = _dereq_('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; +},{"../../../errors":99}],112:[function(_dereq_,module,exports){ +module.exports = _dereq_('events').EventEmitter; + +},{"events":27}],113:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +'use strict'; + +/**/ + +var Buffer = _dereq_('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":97}],114:[function(_dereq_,module,exports){ +(function (process,Buffer){(function (){ + +/** + * Module dependencies. + */ + +var assert = _dereq_('assert'); +var debug = _dereq_('debug')('stream-parser'); + +/** + * Module exports. + */ + +module.exports = Parser; + +/** + * Parser states. + */ + +var INIT = -1; +var BUFFERING = 0; +var SKIPPING = 1; +var PASSTHROUGH = 2; + +/** + * The `Parser` stream mixin works with either `Writable` or `Transform` stream + * instances/subclasses. Provides a convenient generic "parsing" API: + * + * _bytes(n, cb) - buffers "n" bytes and then calls "cb" with the "chunk" + * _skipBytes(n, cb) - skips "n" bytes and then calls "cb" when done + * + * If you extend a `Transform` stream, then the `_passthrough()` function is also + * added: + * + * _passthrough(n, cb) - passes through "n" bytes untouched and then calls "cb" + * + * @param {Stream} stream Transform or Writable stream instance to extend + * @api public + */ + +function Parser (stream) { + var isTransform = stream && 'function' == typeof stream._transform; + var isWritable = stream && 'function' == typeof stream._write; + + if (!isTransform && !isWritable) throw new Error('must pass a Writable or Transform stream in'); + debug('extending Parser into stream'); + + // Transform streams and Writable streams get `_bytes()` and `_skipBytes()` + stream._bytes = _bytes; + stream._skipBytes = _skipBytes; + + // only Transform streams get the `_passthrough()` function + if (isTransform) stream._passthrough = _passthrough; + + // take control of the streams2 callback functions for this stream + if (isTransform) { + stream._transform = transform; + } else { + stream._write = write; + } +} + +function init (stream) { + debug('initializing parser stream'); + + // number of bytes left to parser for the next "chunk" + stream._parserBytesLeft = 0; + + // array of Buffer instances that make up the next "chunk" + stream._parserBuffers = []; + + // number of bytes parsed so far for the next "chunk" + stream._parserBuffered = 0; + + // flag that keeps track of if what the parser should do with bytes received + stream._parserState = INIT; + + // the callback for the next "chunk" + stream._parserCallback = null; + + // XXX: backwards compat with the old Transform API... remove at some point.. + if ('function' == typeof stream.push) { + stream._parserOutput = stream.push.bind(stream); + } + + stream._parserInit = true; +} + +/** + * Buffers `n` bytes and then invokes `fn` once that amount has been collected. + * + * @param {Number} n the number of bytes to buffer + * @param {Function} fn callback function to invoke when `n` bytes are buffered + * @api public + */ + +function _bytes (n, fn) { + assert(!this._parserCallback, 'there is already a "callback" set!'); + assert(isFinite(n) && n > 0, 'can only buffer a finite number of bytes > 0, got "' + n + '"'); + if (!this._parserInit) init(this); + debug('buffering %o bytes', n); + this._parserBytesLeft = n; + this._parserCallback = fn; + this._parserState = BUFFERING; +} + +/** + * Skips over the next `n` bytes, then invokes `fn` once that amount has + * been discarded. + * + * @param {Number} n the number of bytes to discard + * @param {Function} fn callback function to invoke when `n` bytes have been skipped + * @api public + */ + +function _skipBytes (n, fn) { + assert(!this._parserCallback, 'there is already a "callback" set!'); + assert(n > 0, 'can only skip > 0 bytes, got "' + n + '"'); + if (!this._parserInit) init(this); + debug('skipping %o bytes', n); + this._parserBytesLeft = n; + this._parserCallback = fn; + this._parserState = SKIPPING; +} + +/** + * Passes through `n` bytes to the readable side of this stream untouched, + * then invokes `fn` once that amount has been passed through. + * + * @param {Number} n the number of bytes to pass through + * @param {Function} fn callback function to invoke when `n` bytes have passed through + * @api public + */ + +function _passthrough (n, fn) { + assert(!this._parserCallback, 'There is already a "callback" set!'); + assert(n > 0, 'can only pass through > 0 bytes, got "' + n + '"'); + if (!this._parserInit) init(this); + debug('passing through %o bytes', n); + this._parserBytesLeft = n; + this._parserCallback = fn; + this._parserState = PASSTHROUGH; +} + +/** + * The `_write()` callback function implementation. + * + * @api private + */ + +function write (chunk, encoding, fn) { + if (!this._parserInit) init(this); + debug('write(%o bytes)', chunk.length); + + // XXX: old Writable stream API compat... remove at some point... + if ('function' == typeof encoding) fn = encoding; + + data(this, chunk, null, fn); +} + +/** + * The `_transform()` callback function implementation. + * + * @api private + */ + + +function transform (chunk, output, fn) { + if (!this._parserInit) init(this); + debug('transform(%o bytes)', chunk.length); + + // XXX: old Transform stream API compat... remove at some point... + if ('function' != typeof output) { + output = this._parserOutput; + } + + data(this, chunk, output, fn); +} + +/** + * The internal buffering/passthrough logic... + * + * This `_data` function get's "trampolined" to prevent stack overflows for tight + * loops. This technique requires us to return a "thunk" function for any + * synchronous action. Async stuff breaks the trampoline, but that's ok since it's + * working with a new stack at that point anyway. + * + * @api private + */ + +function _data (stream, chunk, output, fn) { + if (stream._parserBytesLeft <= 0) { + return fn(new Error('got data but not currently parsing anything')); + } + + if (chunk.length <= stream._parserBytesLeft) { + // small buffer fits within the "_parserBytesLeft" window + return function () { + return process(stream, chunk, output, fn); + }; + } else { + // large buffer needs to be sliced on "_parserBytesLeft" and processed + return function () { + var b = chunk.slice(0, stream._parserBytesLeft); + return process(stream, b, output, function (err) { + if (err) return fn(err); + if (chunk.length > b.length) { + return function () { + return _data(stream, chunk.slice(b.length), output, fn); + }; + } + }); + }; + } +} + +/** + * The internal `process` function gets called by the `data` function when + * something "interesting" happens. This function takes care of buffering the + * bytes when buffering, passing through the bytes when doing that, and invoking + * the user callback when the number of bytes has been reached. + * + * @api private + */ + +function process (stream, chunk, output, fn) { + stream._parserBytesLeft -= chunk.length; + debug('%o bytes left for stream piece', stream._parserBytesLeft); + + if (stream._parserState === BUFFERING) { + // buffer + stream._parserBuffers.push(chunk); + stream._parserBuffered += chunk.length; + } else if (stream._parserState === PASSTHROUGH) { + // passthrough + output(chunk); + } + // don't need to do anything for the SKIPPING case + + if (0 === stream._parserBytesLeft) { + // done with stream "piece", invoke the callback + var cb = stream._parserCallback; + if (cb && stream._parserState === BUFFERING && stream._parserBuffers.length > 1) { + chunk = Buffer.concat(stream._parserBuffers, stream._parserBuffered); + } + if (stream._parserState !== BUFFERING) { + chunk = null; + } + stream._parserCallback = null; + stream._parserBuffered = 0; + stream._parserState = INIT; + stream._parserBuffers.splice(0); // empty + + if (cb) { + var args = []; + if (chunk) { + // buffered + args.push(chunk); + } else { + // passthrough + } + if (output) { + // on a Transform stream, has "output" function + args.push(output); + } + var async = cb.length > args.length; + if (async) { + args.push(trampoline(fn)); + } + // invoke cb + var rtn = cb.apply(stream, args); + if (!async || fn === rtn) return fn; + } + } else { + // need more bytes + return fn; + } +} + +var data = trampoline(_data); + +/** + * Generic thunk-based "trampoline" helper function. + * + * @param {Function} input function + * @return {Function} "trampolined" function + * @api private + */ + +function trampoline (fn) { + return function () { + var result = fn.apply(this, arguments); + + while ('function' == typeof result) { + result = result(); + } + + return result; + }; +} + +}).call(this)}).call(this,_dereq_('_process'),_dereq_("buffer").Buffer) +},{"_process":96,"assert":21,"buffer":28,"debug":115}],115:[function(_dereq_,module,exports){ +(function (process){(function (){ +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = _dereq_('./debug'); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + +}).call(this)}).call(this,_dereq_('_process')) +},{"./debug":116,"_process":96}],116:[function(_dereq_,module,exports){ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = _dereq_('ms'); + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Previous log timestamp. + */ + +var prevTime; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} + +},{"ms":117}],117:[function(_dereq_,module,exports){ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} + +},{}],118:[function(_dereq_,module,exports){ +(function (setImmediate,clearImmediate){(function (){ +var nextTick = _dereq_('process/browser.js').nextTick; +var apply = Function.prototype.apply; +var slice = Array.prototype.slice; +var immediateIds = {}; +var nextImmediateId = 0; + +// DOM APIs, for completeness + +exports.setTimeout = function() { + return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); +}; +exports.setInterval = function() { + return new Timeout(apply.call(setInterval, window, arguments), clearInterval); +}; +exports.clearTimeout = +exports.clearInterval = function(timeout) { timeout.close(); }; + +function Timeout(id, clearFn) { + this._id = id; + this._clearFn = clearFn; +} +Timeout.prototype.unref = Timeout.prototype.ref = function() {}; +Timeout.prototype.close = function() { + this._clearFn.call(window, this._id); +}; + +// Does not start the time, just sets up the members needed. +exports.enroll = function(item, msecs) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = msecs; +}; + +exports.unenroll = function(item) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = -1; +}; + +exports._unrefActive = exports.active = function(item) { + clearTimeout(item._idleTimeoutId); + + var msecs = item._idleTimeout; + if (msecs >= 0) { + item._idleTimeoutId = setTimeout(function onTimeout() { + if (item._onTimeout) + item._onTimeout(); + }, msecs); + } +}; + +// That's not how node.js implements it but the exposed api is the same. +exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { + var id = nextImmediateId++; + var args = arguments.length < 2 ? false : slice.call(arguments, 1); + + immediateIds[id] = true; + + nextTick(function onNextTick() { + if (immediateIds[id]) { + // fn.call() is faster so we optimize for the common use-case + // @see http://jsperf.com/call-apply-segu + if (args) { + fn.apply(null, args); + } else { + fn.call(null); + } + // Prevent ids from leaking + exports.clearImmediate(id); + } + }); + + return id; +}; + +exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { + delete immediateIds[id]; +}; +}).call(this)}).call(this,_dereq_("timers").setImmediate,_dereq_("timers").clearImmediate) +},{"process/browser.js":96,"timers":118}],119:[function(_dereq_,module,exports){ // TinyColor v1.4.2 // https://github.com/bgrins/TinyColor // Brian Grinstead, MIT License @@ -20541,15 +25333,5277 @@ else { })(Math); -},{}],89:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{}],120:[function(_dereq_,module,exports){ +(function (global){(function (){ +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],121:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Traditional Chinese calendar for jQuery v2.0.2. + Written by Nicolas Riesco (enquiries@nicolasriesco.net) December 2016. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +var gregorianCalendar = main.instance(); + +/** Implementation of the traditional Chinese calendar. + Source of calendar tables https://github.com/isee15/Lunar-Solar-Calendar-Converter . + @class ChineseCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function ChineseCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +ChineseCalendar.prototype = new main.baseCalendar; + +assign(ChineseCalendar.prototype, { + /** The calendar name. + @memberof ChineseCalendar */ + name: 'Chinese', + /** Julian date of start of Gregorian epoch: 1 January 0001 CE. + @memberof GregorianCalendar */ + jdEpoch: 1721425.5, + /** true if has a year zero, false if not. + @memberof ChineseCalendar */ + hasYearZero: false, + /** The minimum month number. + This calendar uses month indices to account for intercalary months. + @memberof ChineseCalendar */ + minMonth: 0, + /** The first month in the year. + This calendar uses month indices to account for intercalary months. + @memberof ChineseCalendar */ + firstMonth: 0, + /** The minimum day number. + @memberof ChineseCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof ChineseCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Chinese', + epochs: ['BEC', 'EC'], + monthNumbers: function(date, padded) { + if (typeof date === 'string') { + var match = date.match(MONTH_NUMBER_REGEXP); + return (match) ? match[0] : ''; + } + + var year = this._validateYear(date); + var monthIndex = date.month(); + + var month = '' + this.toChineseMonth(year, monthIndex); + + if (padded && month.length < 2) { + month = "0" + month; + } + + if (this.isIntercalaryMonth(year, monthIndex)) { + month += 'i'; + } + + return month; + }, + monthNames: function(date) { + if (typeof date === 'string') { + var match = date.match(MONTH_NAME_REGEXP); + return (match) ? match[0] : ''; + } + + var year = this._validateYear(date); + var monthIndex = date.month(); + + var month = this.toChineseMonth(year, monthIndex); + + var monthName = ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'][month - 1]; + + if (this.isIntercalaryMonth(year, monthIndex)) { + monthName = '闰' + monthName; + } + + return monthName; + }, + monthNamesShort: function(date) { + if (typeof date === 'string') { + var match = date.match(MONTH_SHORT_NAME_REGEXP); + return (match) ? match[0] : ''; + } + + var year = this._validateYear(date); + var monthIndex = date.month(); + + var month = this.toChineseMonth(year, monthIndex); + + var monthName = ['一','二','三','四','五','六', + '七','八','九','十','十一','十二'][month - 1]; + + if (this.isIntercalaryMonth(year, monthIndex)) { + monthName = '闰' + monthName; + } + + return monthName; + }, + parseMonth: function(year, monthString) { + year = this._validateYear(year); + var month = parseInt(monthString); + var isIntercalary; + + if (!isNaN(month)) { + var i = monthString[monthString.length - 1]; + isIntercalary = (i === 'i' || i === 'I'); + } else { + if (monthString[0] === '闰') { + isIntercalary = true; + monthString = monthString.substring(1); + } + if (monthString[monthString.length - 1] === '月') { + monthString = monthString.substring(0, monthString.length - 1); + } + month = 1 + + ['一','二','三','四','五','六', + '七','八','九','十','十一','十二'].indexOf(monthString); + } + + var monthIndex = this.toMonthIndex(year, month, isIntercalary); + return monthIndex; + }, + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 1, + isRTL: false + } + }, + + /** Check that a candidate date is from the same calendar and is valid. + @memberof BaseCalendar + @private + @param year {CDate|number} The date or the year to validate. + @param error {string} Error message if invalid. + @return {number} The year. + @throws Error if year out of range. */ + _validateYear: function(year, error) { + if (year.year) { + year = year.year(); + } + + if (typeof year !== 'number' || year < 1888 || year > 2111) { + throw error.replace(/\{0\}/, this.local.name); + } + + return year; + }, + + /** Retrieve the month index (i.e. accounting for intercalary months). + @memberof ChineseCalendar + @param year {number} The year. + @param month {number} The month (1 for first month). + @param [isIntercalary=false] {boolean} If month is intercalary. + @return {number} The month index (0 for first month). + @throws Error if an invalid month/year or a different calendar used. */ + toMonthIndex: function(year, month, isIntercalary) { + // compute intercalary month in the year (0 if none) + var intercalaryMonth = this.intercalaryMonth(year); + + // validate month + var invalidIntercalaryMonth = + (isIntercalary && month !== intercalaryMonth); + if (invalidIntercalaryMonth || month < 1 || month > 12) { + throw main.local.invalidMonth + .replace(/\{0\}/, this.local.name); + } + + // compute month index + var monthIndex; + + if (!intercalaryMonth) { + monthIndex = month - 1; + } else if(!isIntercalary && month <= intercalaryMonth) { + monthIndex = month - 1; + } else { + monthIndex = month; + } + + return monthIndex; + }, + + /** Retrieve the month (i.e. accounting for intercalary months). + @memberof ChineseCalendar + @param year {CDate|number} The date or the year to examine. + @param monthIndex {number} The month index (0 for first month). + @return {number} The month (1 for first month). + @throws Error if an invalid month/year or a different calendar used. */ + toChineseMonth: function(year, monthIndex) { + if (year.year) { + year = year.year(); + monthIndex = year.month(); + } + + // compute intercalary month in the year (0 if none) + var intercalaryMonth = this.intercalaryMonth(year); + + // validate month + var maxMonthIndex = (intercalaryMonth) ? 12 : 11; + if (monthIndex < 0 || monthIndex > maxMonthIndex) { + throw main.local.invalidMonth + .replace(/\{0\}/, this.local.name); + } + + // compute Chinese month + var month; + + if (!intercalaryMonth) { + month = monthIndex + 1; + } else if(monthIndex < intercalaryMonth) { + month = monthIndex + 1; + } else { + month = monthIndex; + } + + return month; + }, + + /** Determine the intercalary month of a year (if any). + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The intercalary month number, or 0 if none. + @throws Error if an invalid year or a different calendar used. */ + intercalaryMonth: function(year) { + year = this._validateYear(year); + + var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]]; + var intercalaryMonth = monthDaysTable >> 13; + + return intercalaryMonth; + }, + + /** Determine whether this date is an intercalary month. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [monthIndex] {number} The month index to examine. + @return {boolean} true if this is an intercalary month, false if not. + @throws Error if an invalid year or a different calendar used. */ + isIntercalaryMonth: function(year, monthIndex) { + if (year.year) { + year = year.year(); + monthIndex = year.month(); + } + + var intercalaryMonth = this.intercalaryMonth(year); + + return !!intercalaryMonth && intercalaryMonth === monthIndex; + }, + + /** Determine whether this date is in a leap year. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + return (this.intercalaryMonth(year) !== 0); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [monthIndex] {number} The month index to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, monthIndex, day) { + // compute Chinese new year + var validatedYear = + this._validateYear(year, main.local.invalidyear); + var packedDate = + CHINESE_NEW_YEAR[validatedYear - CHINESE_NEW_YEAR[0]]; + + var y = (packedDate >> 9) & 0xFFF; + var m = (packedDate >> 5) & 0x0F; + var d = packedDate & 0x1F; + + // find first Thrusday of the year + var firstThursday; + firstThursday = gregorianCalendar.newDate(y, m, d); + firstThursday.add(4 - (firstThursday.dayOfWeek() || 7), 'd'); + + // compute days from first Thursday + var offset = + this.toJD(year, monthIndex, day) - firstThursday.toJD(); + return 1 + Math.floor(offset / 7); + }, + + /** Retrieve the number of months in a year. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + return (this.leapYear(year)) ? 13 : 12; + }, + + /** Retrieve the number of days in a month. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [monthIndex] {number} The month index. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, monthIndex) { + if (year.year) { + monthIndex = year.month(); + year = year.year(); + } + + year = this._validateYear(year); + + var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]]; + + var intercalaryMonth = monthDaysTable >> 13; + var maxMonthIndex = (intercalaryMonth) ? 12 : 11; + if (monthIndex > maxMonthIndex) { + throw main.local.invalidMonth + .replace(/\{0\}/, this.local.name); + } + + var daysInMonth = (monthDaysTable & (1 << (12 - monthIndex))) ? + 30 : 29; + + return daysInMonth; + }, + + /** Determine whether this date is a week day. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [monthIndex] {number} The month index to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, monthIndex, day) { + return (this.dayOfWeek(year, monthIndex, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof ChineseCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [monthIndex] {number} The month index to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, monthIndex, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = this._validateYear(date.year()); + monthIndex = date.month(); + day = date.day(); + + var isIntercalary = this.isIntercalaryMonth(year, monthIndex); + var month = this.toChineseMonth(year, monthIndex); + + var solar = toSolar(year, month, day, isIntercalary); + + return gregorianCalendar.toJD(solar.year, solar.month, solar.day); + }, + + /** Create a new date from a Julian date. + @memberof ChineseCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var date = gregorianCalendar.fromJD(jd); + var lunar = toLunar(date.year(), date.month(), date.day()); + var monthIndex = this.toMonthIndex( + lunar.year, lunar.month, lunar.isIntercalary); + return this.newDate(lunar.year, monthIndex, lunar.day); + }, + + /** Create a new date from a string. + @memberof ChineseCalendar + @param dateString {string} String representing a Chinese date + @return {CDate} The new date. + @throws Error if an invalid date. */ + fromString: function(dateString) { + var match = dateString.match(DATE_REGEXP); + + var year = this._validateYear(+match[1]); + + var month = +match[2]; + var isIntercalary = !!match[3]; + var monthIndex = this.toMonthIndex(year, month, isIntercalary); + + var day = +match[4]; + + return this.newDate(year, monthIndex, day); + }, + + /** Add period(s) to a date. + Cater for no year zero. + @memberof ChineseCalendar + @param date {CDate} The starting date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. + @throws Error if a different calendar used. */ + add: function(date, offset, period) { + var year = date.year(); + var monthIndex = date.month(); + var isIntercalary = this.isIntercalaryMonth(year, monthIndex); + var month = this.toChineseMonth(year, monthIndex); + + var cdate = Object.getPrototypeOf(ChineseCalendar.prototype) + .add.call(this, date, offset, period); + + if (period === 'y') { + // Resync month + var resultYear = cdate.year(); + var resultMonthIndex = cdate.month(); + + // Using the fact the month index of an intercalary month + // equals its month number: + var resultCanBeIntercalaryMonth = + this.isIntercalaryMonth(resultYear, month); + + var correctedMonthIndex = + (isIntercalary && resultCanBeIntercalaryMonth) ? + this.toMonthIndex(resultYear, month, true) : + this.toMonthIndex(resultYear, month, false); + + if (correctedMonthIndex !== resultMonthIndex) { + cdate.month(correctedMonthIndex); + } + } + + return cdate; + }, +}); + +// Used by ChineseCalendar.prototype.fromString +var DATE_REGEXP = /^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m; +var MONTH_NUMBER_REGEXP = /^\d?\d[iI]?/m; +var MONTH_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?月/m; +var MONTH_SHORT_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?/m; + +// Chinese calendar implementation +main.calendars.chinese = ChineseCalendar; + +// Chinese calendar tables from year 1888 to 2111 +// +// Source: +// https://github.com/isee15/Lunar-Solar-Calendar-Converter.git + +// Table of intercalary months and days per month from year 1888 to 2111 +// +// bit (12 - i): days in the i^th month +// (= 0 if i^th lunar month has 29 days) +// (= 1 if i^th lunar month has 30 days) +// (first month in lunar year is i = 0) +// bits (13,14,15,16): intercalary month +// (= 0 if lunar year has no intercalary month) +var LUNAR_MONTH_DAYS = [1887, 0x1694, 0x16aa, 0x4ad5, + 0xab6, 0xc4b7, 0x4ae, 0xa56, 0xb52a, 0x1d2a, 0xd54, 0x75aa, 0x156a, + 0x1096d, 0x95c, 0x14ae, 0xaa4d, 0x1a4c, 0x1b2a, 0x8d55, 0xad4, + 0x135a, 0x495d, 0x95c, 0xd49b, 0x149a, 0x1a4a, 0xbaa5, 0x16a8, + 0x1ad4, 0x52da, 0x12b6, 0xe937, 0x92e, 0x1496, 0xb64b, 0xd4a, + 0xda8, 0x95b5, 0x56c, 0x12ae, 0x492f, 0x92e, 0xcc96, 0x1a94, + 0x1d4a, 0xada9, 0xb5a, 0x56c, 0x726e, 0x125c, 0xf92d, 0x192a, + 0x1a94, 0xdb4a, 0x16aa, 0xad4, 0x955b, 0x4ba, 0x125a, 0x592b, + 0x152a, 0xf695, 0xd94, 0x16aa, 0xaab5, 0x9b4, 0x14b6, 0x6a57, + 0xa56, 0x1152a, 0x1d2a, 0xd54, 0xd5aa, 0x156a, 0x96c, 0x94ae, + 0x14ae, 0xa4c, 0x7d26, 0x1b2a, 0xeb55, 0xad4, 0x12da, 0xa95d, + 0x95a, 0x149a, 0x9a4d, 0x1a4a, 0x11aa5, 0x16a8, 0x16d4, 0xd2da, + 0x12b6, 0x936, 0x9497, 0x1496, 0x1564b, 0xd4a, 0xda8, 0xd5b4, + 0x156c, 0x12ae, 0xa92f, 0x92e, 0xc96, 0x6d4a, 0x1d4a, 0x10d65, + 0xb58, 0x156c, 0xb26d, 0x125c, 0x192c, 0x9a95, 0x1a94, 0x1b4a, + 0x4b55, 0xad4, 0xf55b, 0x4ba, 0x125a, 0xb92b, 0x152a, 0x1694, + 0x96aa, 0x15aa, 0x12ab5, 0x974, 0x14b6, 0xca57, 0xa56, 0x1526, + 0x8e95, 0xd54, 0x15aa, 0x49b5, 0x96c, 0xd4ae, 0x149c, 0x1a4c, + 0xbd26, 0x1aa6, 0xb54, 0x6d6a, 0x12da, 0x1695d, 0x95a, 0x149a, + 0xda4b, 0x1a4a, 0x1aa4, 0xbb54, 0x16b4, 0xada, 0x495b, 0x936, + 0xf497, 0x1496, 0x154a, 0xb6a5, 0xda4, 0x15b4, 0x6ab6, 0x126e, + 0x1092f, 0x92e, 0xc96, 0xcd4a, 0x1d4a, 0xd64, 0x956c, 0x155c, + 0x125c, 0x792e, 0x192c, 0xfa95, 0x1a94, 0x1b4a, 0xab55, 0xad4, + 0x14da, 0x8a5d, 0xa5a, 0x1152b, 0x152a, 0x1694, 0xd6aa, 0x15aa, + 0xab4, 0x94ba, 0x14b6, 0xa56, 0x7527, 0xd26, 0xee53, 0xd54, 0x15aa, + 0xa9b5, 0x96c, 0x14ae, 0x8a4e, 0x1a4c, 0x11d26, 0x1aa4, 0x1b54, + 0xcd6a, 0xada, 0x95c, 0x949d, 0x149a, 0x1a2a, 0x5b25, 0x1aa4, + 0xfb52, 0x16b4, 0xaba, 0xa95b, 0x936, 0x1496, 0x9a4b, 0x154a, + 0x136a5, 0xda4, 0x15ac]; + +// Table of Chinese New Years from year 1888 to 2111 +// +// bits (0 to 4): solar day +// bits (5 to 8): solar month +// bits (9 to 20): solar year +var CHINESE_NEW_YEAR = [1887, 0xec04c, 0xec23f, 0xec435, 0xec649, + 0xec83e, 0xeca51, 0xecc46, 0xece3a, 0xed04d, 0xed242, 0xed436, + 0xed64a, 0xed83f, 0xeda53, 0xedc48, 0xede3d, 0xee050, 0xee244, + 0xee439, 0xee64d, 0xee842, 0xeea36, 0xeec4a, 0xeee3e, 0xef052, + 0xef246, 0xef43a, 0xef64e, 0xef843, 0xefa37, 0xefc4b, 0xefe41, + 0xf0054, 0xf0248, 0xf043c, 0xf0650, 0xf0845, 0xf0a38, 0xf0c4d, + 0xf0e42, 0xf1037, 0xf124a, 0xf143e, 0xf1651, 0xf1846, 0xf1a3a, + 0xf1c4e, 0xf1e44, 0xf2038, 0xf224b, 0xf243f, 0xf2653, 0xf2848, + 0xf2a3b, 0xf2c4f, 0xf2e45, 0xf3039, 0xf324d, 0xf3442, 0xf3636, + 0xf384a, 0xf3a3d, 0xf3c51, 0xf3e46, 0xf403b, 0xf424e, 0xf4443, + 0xf4638, 0xf484c, 0xf4a3f, 0xf4c52, 0xf4e48, 0xf503c, 0xf524f, + 0xf5445, 0xf5639, 0xf584d, 0xf5a42, 0xf5c35, 0xf5e49, 0xf603e, + 0xf6251, 0xf6446, 0xf663b, 0xf684f, 0xf6a43, 0xf6c37, 0xf6e4b, + 0xf703f, 0xf7252, 0xf7447, 0xf763c, 0xf7850, 0xf7a45, 0xf7c39, + 0xf7e4d, 0xf8042, 0xf8254, 0xf8449, 0xf863d, 0xf8851, 0xf8a46, + 0xf8c3b, 0xf8e4f, 0xf9044, 0xf9237, 0xf944a, 0xf963f, 0xf9853, + 0xf9a47, 0xf9c3c, 0xf9e50, 0xfa045, 0xfa238, 0xfa44c, 0xfa641, + 0xfa836, 0xfaa49, 0xfac3d, 0xfae52, 0xfb047, 0xfb23a, 0xfb44e, + 0xfb643, 0xfb837, 0xfba4a, 0xfbc3f, 0xfbe53, 0xfc048, 0xfc23c, + 0xfc450, 0xfc645, 0xfc839, 0xfca4c, 0xfcc41, 0xfce36, 0xfd04a, + 0xfd23d, 0xfd451, 0xfd646, 0xfd83a, 0xfda4d, 0xfdc43, 0xfde37, + 0xfe04b, 0xfe23f, 0xfe453, 0xfe648, 0xfe83c, 0xfea4f, 0xfec44, + 0xfee38, 0xff04c, 0xff241, 0xff436, 0xff64a, 0xff83e, 0xffa51, + 0xffc46, 0xffe3a, 0x10004e, 0x100242, 0x100437, 0x10064b, 0x100841, + 0x100a53, 0x100c48, 0x100e3c, 0x10104f, 0x101244, 0x101438, + 0x10164c, 0x101842, 0x101a35, 0x101c49, 0x101e3d, 0x102051, + 0x102245, 0x10243a, 0x10264e, 0x102843, 0x102a37, 0x102c4b, + 0x102e3f, 0x103053, 0x103247, 0x10343b, 0x10364f, 0x103845, + 0x103a38, 0x103c4c, 0x103e42, 0x104036, 0x104249, 0x10443d, + 0x104651, 0x104846, 0x104a3a, 0x104c4e, 0x104e43, 0x105038, + 0x10524a, 0x10543e, 0x105652, 0x105847, 0x105a3b, 0x105c4f, + 0x105e45, 0x106039, 0x10624c, 0x106441, 0x106635, 0x106849, + 0x106a3d, 0x106c51, 0x106e47, 0x10703c, 0x10724f, 0x107444, + 0x107638, 0x10784c, 0x107a3f, 0x107c53, 0x107e48]; + +function toLunar(yearOrDate, monthOrResult, day, result) { + var solarDate; + var lunarDate; + + if(typeof yearOrDate === 'object') { + solarDate = yearOrDate; + lunarDate = monthOrResult || {}; + + } else { + var isValidYear = (typeof yearOrDate === 'number') && + (yearOrDate >= 1888) && (yearOrDate <= 2111); + if(!isValidYear) + throw new Error("Solar year outside range 1888-2111"); + + var isValidMonth = (typeof monthOrResult === 'number') && + (monthOrResult >= 1) && (monthOrResult <= 12); + if(!isValidMonth) + throw new Error("Solar month outside range 1 - 12"); + + var isValidDay = (typeof day === 'number') && (day >= 1) && (day <= 31); + if(!isValidDay) + throw new Error("Solar day outside range 1 - 31"); + + solarDate = { + year: yearOrDate, + month: monthOrResult, + day: day, + }; + lunarDate = result || {}; + } + + // Compute Chinese new year and lunar year + var chineseNewYearPackedDate = + CHINESE_NEW_YEAR[solarDate.year - CHINESE_NEW_YEAR[0]]; + + var packedDate = (solarDate.year << 9) | (solarDate.month << 5) + | solarDate.day; + + lunarDate.year = (packedDate >= chineseNewYearPackedDate) ? + solarDate.year : + solarDate.year - 1; + + chineseNewYearPackedDate = + CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]]; + + var y = (chineseNewYearPackedDate >> 9) & 0xFFF; + var m = (chineseNewYearPackedDate >> 5) & 0x0F; + var d = chineseNewYearPackedDate & 0x1F; + + // Compute days from new year + var daysFromNewYear; + + var chineseNewYearJSDate = new Date(y, m -1, d); + var jsDate = new Date(solarDate.year, solarDate.month - 1, solarDate.day); + + daysFromNewYear = Math.round( + (jsDate - chineseNewYearJSDate) / (24 * 3600 * 1000)); + + // Compute lunar month and day + var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]]; + + var i; + for(i = 0; i < 13; i++) { + var daysInMonth = (monthDaysTable & (1 << (12 - i))) ? 30 : 29; + + if (daysFromNewYear < daysInMonth) { + break; + } + + daysFromNewYear -= daysInMonth; + } + + var intercalaryMonth = monthDaysTable >> 13; + if (!intercalaryMonth || i < intercalaryMonth) { + lunarDate.isIntercalary = false; + lunarDate.month = 1 + i; + } else if (i === intercalaryMonth) { + lunarDate.isIntercalary = true; + lunarDate.month = i; + } else { + lunarDate.isIntercalary = false; + lunarDate.month = i; + } + + lunarDate.day = 1 + daysFromNewYear; + + return lunarDate; +} + +function toSolar(yearOrDate, monthOrResult, day, isIntercalaryOrResult, result) { + var solarDate; + var lunarDate; + + if(typeof yearOrDate === 'object') { + lunarDate = yearOrDate; + solarDate = monthOrResult || {}; + + } else { + var isValidYear = (typeof yearOrDate === 'number') && + (yearOrDate >= 1888) && (yearOrDate <= 2111); + if(!isValidYear) + throw new Error("Lunar year outside range 1888-2111"); + + var isValidMonth = (typeof monthOrResult === 'number') && + (monthOrResult >= 1) && (monthOrResult <= 12); + if(!isValidMonth) + throw new Error("Lunar month outside range 1 - 12"); + + var isValidDay = (typeof day === 'number') && (day >= 1) && (day <= 30); + if(!isValidDay) + throw new Error("Lunar day outside range 1 - 30"); + + var isIntercalary; + if(typeof isIntercalaryOrResult === 'object') { + isIntercalary = false; + solarDate = isIntercalaryOrResult; + } else { + isIntercalary = !!isIntercalaryOrResult; + solarDate = result || {}; + } + + lunarDate = { + year: yearOrDate, + month: monthOrResult, + day: day, + isIntercalary: isIntercalary, + }; + } + + // Compute days from new year + var daysFromNewYear; + + daysFromNewYear = lunarDate.day - 1; + + var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]]; + var intercalaryMonth = monthDaysTable >> 13; + + var monthsFromNewYear; + if (!intercalaryMonth) { + monthsFromNewYear = lunarDate.month - 1; + } else if (lunarDate.month > intercalaryMonth) { + monthsFromNewYear = lunarDate.month; + } else if (lunarDate.isIntercalary) { + monthsFromNewYear = lunarDate.month; + } else { + monthsFromNewYear = lunarDate.month - 1; + } + + for(var i = 0; i < monthsFromNewYear; i++) { + var daysInMonth = (monthDaysTable & (1 << (12 - i))) ? 30 : 29; + daysFromNewYear += daysInMonth; + } + + // Compute Chinese new year + var packedDate = CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]]; + + var y = (packedDate >> 9) & 0xFFF; + var m = (packedDate >> 5) & 0x0F; + var d = packedDate & 0x1F; + + // Compute solar date + var jsDate = new Date(y, m - 1, d + daysFromNewYear); + + solarDate.year = jsDate.getFullYear(); + solarDate.month = 1 + jsDate.getMonth(); + solarDate.day = jsDate.getDate(); + + return solarDate; +} + + +},{"../main":135,"object-assign":71}],122:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Coptic calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Coptic calendar. + See http://en.wikipedia.org/wiki/Coptic_calendar. + See also Calendrical Calculations: The Millennium Edition + (http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml). + @class CopticCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function CopticCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +CopticCalendar.prototype = new main.baseCalendar; + +assign(CopticCalendar.prototype, { + /** The calendar name. + @memberof CopticCalendar */ + name: 'Coptic', + /** Julian date of start of Coptic epoch: 29 August 284 CE (Gregorian). + @memberof CopticCalendar */ + jdEpoch: 1825029.5, + /** Days per month in a common year. + @memberof CopticCalendar */ + daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5], + /** true if has a year zero, false if not. + @memberof CopticCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof CopticCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof CopticCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof CopticCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof CopticCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Coptic', + epochs: ['BAM', 'AM'], + monthNames: ['Thout', 'Paopi', 'Hathor', 'Koiak', 'Tobi', 'Meshir', + 'Paremhat', 'Paremoude', 'Pashons', 'Paoni', 'Epip', 'Mesori', 'Pi Kogi Enavot'], + monthNamesShort: ['Tho', 'Pao', 'Hath', 'Koi', 'Tob', 'Mesh', + 'Pat', 'Pad', 'Pash', 'Pao', 'Epi', 'Meso', 'PiK'], + dayNames: ['Tkyriaka', 'Pesnau', 'Pshoment', 'Peftoou', 'Ptiou', 'Psoou', 'Psabbaton'], + dayNamesShort: ['Tky', 'Pes', 'Psh', 'Pef', 'Pti', 'Pso', 'Psa'], + dayNamesMin: ['Tk', 'Pes', 'Psh', 'Pef', 'Pt', 'Pso', 'Psa'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero + return year % 4 === 3 || year % 4 === -1; + }, + + /** Retrieve the number of months in a year. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, + main.local.invalidYear || main.regionalOptions[''].invalidYear); + return 13; + }, + + /** Determine the week of the year for a date. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number) the month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param month {number} The month to examine. + @param day {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof CopticCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number) the month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + if (year < 0) { year++; } // No year zero + return date.day() + (date.month() - 1) * 30 + + (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof CopticCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var c = Math.floor(jd) + 0.5 - this.jdEpoch; + var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1; + if (year <= 0) { year--; } // No year zero + c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD(); + var month = Math.floor(c / 30) + 1; + var day = c - (month - 1) * 30 + 1; + return this.newDate(year, month, day); + } +}); + +// Coptic calendar implementation +main.calendars.coptic = CopticCalendar; + + +},{"../main":135,"object-assign":71}],123:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Discworld calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) January 2016. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Discworld calendar - Unseen University version. + See also http://wiki.lspace.org/mediawiki/Discworld_calendar + and http://discworld.wikia.com/wiki/Discworld_calendar. + @class DiscworldCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function DiscworldCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +DiscworldCalendar.prototype = new main.baseCalendar; + +assign(DiscworldCalendar.prototype, { + /** The calendar name. + @memberof DiscworldCalendar */ + name: 'Discworld', + /** Julian date of start of Discworld epoch: 1 January 0001 CE. + @memberof DiscworldCalendar */ + jdEpoch: 1721425.5, + /** Days per month in a common year. + @memberof DiscworldCalendar */ + daysPerMonth: [16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], + /** true if has a year zero, false if not. + @memberof DiscworldCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof DiscworldCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof DiscworldCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof DiscworldCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof DiscworldCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Discworld', + epochs: ['BUC', 'UC'], + monthNames: ['Ick', 'Offle', 'February', 'March', 'April', 'May', 'June', + 'Grune', 'August', 'Spune', 'Sektober', 'Ember', 'December'], + monthNamesShort: ['Ick', 'Off', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Gru', 'Aug', 'Spu', 'Sek', 'Emb', 'Dec'], + dayNames: ['Sunday', 'Octeday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Oct', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Oc', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 2, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return false; + }, + + /** Retrieve the number of months in a year. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 13; + }, + + /** Retrieve the number of days in a year. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 400; + }, + + /** Determine the week of the year for a date. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 8) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1]; + }, + + /** Retrieve the number of days in a week. + @memberof DiscworldCalendar + @return {number} The number of days. */ + daysInWeek: function() { + return 8; + }, + + /** Retrieve the day of the week for a date. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The day of the week: 0 to number of days - 1. + @throws Error if an invalid date or a different calendar used. */ + dayOfWeek: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return (date.day() + 1) % 8; + }, + + /** Determine whether this date is a week day. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + var dow = this.dayOfWeek(year, month, day); + return (dow >= 2 && dow <= 6); + }, + + /** Retrieve additional information about a date. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return {century: centuries[Math.floor((date.year() - 1) / 100) + 1] || ''}; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof DiscworldCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year() + (date.year() < 0 ? 1 : 0); + month = date.month(); + day = date.day(); + return day + (month > 1 ? 16 : 0) + (month > 2 ? (month - 2) * 32 : 0) + + (year - 1) * 400 + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof DiscworldCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd + 0.5) - Math.floor(this.jdEpoch) - 1; + var year = Math.floor(jd / 400) + 1; + jd -= (year - 1) * 400; + jd += (jd > 15 ? 16 : 0); + var month = Math.floor(jd / 32) + 1; + var day = jd - (month - 1) * 32 + 1; + return this.newDate(year <= 0 ? year - 1 : year, month, day); + } +}); + +// Names of the centuries +var centuries = { + 20: 'Fruitbat', + 21: 'Anchovy' +}; + +// Discworld calendar implementation +main.calendars.discworld = DiscworldCalendar; + + +},{"../main":135,"object-assign":71}],124:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Ethiopian calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Ethiopian calendar. + See http://en.wikipedia.org/wiki/Ethiopian_calendar. + See also Calendrical Calculations: The Millennium Edition + (http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml). + @class EthiopianCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function EthiopianCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +EthiopianCalendar.prototype = new main.baseCalendar; + +assign(EthiopianCalendar.prototype, { + /** The calendar name. + @memberof EthiopianCalendar */ + name: 'Ethiopian', + /** Julian date of start of Ethiopian epoch: 27 August 8 CE (Gregorian). + @memberof EthiopianCalendar */ + jdEpoch: 1724220.5, + /** Days per month in a common year. + @memberof EthiopianCalendar */ + daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5], + /** true if has a year zero, false if not. + @memberof EthiopianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof EthiopianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof EthiopianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof EthiopianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof EthiopianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Ethiopian', + epochs: ['BEE', 'EE'], + monthNames: ['Meskerem', 'Tikemet', 'Hidar', 'Tahesas', 'Tir', 'Yekatit', + 'Megabit', 'Miazia', 'Genbot', 'Sene', 'Hamle', 'Nehase', 'Pagume'], + monthNamesShort: ['Mes', 'Tik', 'Hid', 'Tah', 'Tir', 'Yek', + 'Meg', 'Mia', 'Gen', 'Sen', 'Ham', 'Neh', 'Pag'], + dayNames: ['Ehud', 'Segno', 'Maksegno', 'Irob', 'Hamus', 'Arb', 'Kidame'], + dayNamesShort: ['Ehu', 'Seg', 'Mak', 'Iro', 'Ham', 'Arb', 'Kid'], + dayNamesMin: ['Eh', 'Se', 'Ma', 'Ir', 'Ha', 'Ar', 'Ki'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero + return year % 4 === 3 || year % 4 === -1; + }, + + /** Retrieve the number of months in a year. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, + main.local.invalidYear || main.regionalOptions[''].invalidYear); + return 13; + }, + + /** Determine the week of the year for a date. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof EthiopianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + if (year < 0) { year++; } // No year zero + return date.day() + (date.month() - 1) * 30 + + (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof EthiopianCalendar + @param jd {number} the Julian date to convert. + @return {CDate} the equivalent date. */ + fromJD: function(jd) { + var c = Math.floor(jd) + 0.5 - this.jdEpoch; + var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1; + if (year <= 0) { year--; } // No year zero + c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD(); + var month = Math.floor(c / 30) + 1; + var day = c - (month - 1) * 30 + 1; + return this.newDate(year, month, day); + } +}); + +// Ethiopian calendar implementation +main.calendars.ethiopian = EthiopianCalendar; + + +},{"../main":135,"object-assign":71}],125:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Hebrew calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Hebrew civil calendar. + Based on code from http://www.fourmilab.ch/documents/calendar/. + See also http://en.wikipedia.org/wiki/Hebrew_calendar. + @class HebrewCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function HebrewCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +HebrewCalendar.prototype = new main.baseCalendar; + +assign(HebrewCalendar.prototype, { + /** The calendar name. + @memberof HebrewCalendar */ + name: 'Hebrew', + /** Julian date of start of Hebrew epoch: 7 October 3761 BCE. + @memberof HebrewCalendar */ + jdEpoch: 347995.5, + /** Days per month in a common year. + @memberof HebrewCalendar */ + daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29], + /** true if has a year zero, false if not. + @memberof HebrewCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof HebrewCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof HebrewCalendar */ + firstMonth: 7, + /** The minimum day number. + @memberof HebrewCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof HebrewCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Hebrew', + epochs: ['BAM', 'AM'], + monthNames: ['Nisan', 'Iyar', 'Sivan', 'Tammuz', 'Av', 'Elul', + 'Tishrei', 'Cheshvan', 'Kislev', 'Tevet', 'Shevat', 'Adar', 'Adar II'], + monthNamesShort: ['Nis', 'Iya', 'Siv', 'Tam', 'Av', 'Elu', 'Tis', 'Che', 'Kis', 'Tev', 'She', 'Ada', 'Ad2'], + dayNames: ['Yom Rishon', 'Yom Sheni', 'Yom Shlishi', 'Yom Revi\'i', 'Yom Chamishi', 'Yom Shishi', 'Yom Shabbat'], + dayNamesShort: ['Ris', 'She', 'Shl', 'Rev', 'Cha', 'Shi', 'Sha'], + dayNamesMin: ['Ri','She','Shl','Re','Ch','Shi','Sha'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return this._leapYear(date.year()); + }, + + /** Determine whether this date is in a leap year. + @memberof HebrewCalendar + @private + @param year {number} The year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + _leapYear: function(year) { + year = (year < 0 ? year + 1 : year); + return mod(year * 7 + 1, 19) < 7; + }, + + /** Retrieve the number of months in a year. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return this._leapYear(year.year ? year.year() : year) ? 13 : 12; + }, + + /** Determine the week of the year for a date. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + year = date.year(); + return this.toJD((year === -1 ? +1 : year + 1), 7, 1) - this.toJD(year, 7, 1); + }, + + /** Retrieve the number of days in a month. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + if (year.year) { + month = year.month(); + year = year.year(); + } + this._validate(year, month, this.minDay, main.local.invalidMonth); + return (month === 12 && this.leapYear(year) ? 30 : // Adar I + (month === 8 && mod(this.daysInYear(year), 10) === 5 ? 30 : // Cheshvan in shlemah year + (month === 9 && mod(this.daysInYear(year), 10) === 3 ? 29 : // Kislev in chaserah year + this.daysPerMonth[month - 1]))); + }, + + /** Determine whether this date is a week day. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 6; + }, + + /** Retrieve additional information about a date - year type. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return {yearType: (this.leapYear(date) ? 'embolismic' : 'common') + ' ' + + ['deficient', 'regular', 'complete'][this.daysInYear(date) % 10 - 3]}; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof HebrewCalendar + @param year {CDate)|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + var adjYear = (year <= 0 ? year + 1 : year); + var jd = this.jdEpoch + this._delay1(adjYear) + + this._delay2(adjYear) + day + 1; + if (month < 7) { + for (var m = 7; m <= this.monthsInYear(year); m++) { + jd += this.daysInMonth(year, m); + } + for (var m = 1; m < month; m++) { + jd += this.daysInMonth(year, m); + } + } + else { + for (var m = 7; m < month; m++) { + jd += this.daysInMonth(year, m); + } + } + return jd; + }, + + /** Test for delay of start of new year and to avoid + Sunday, Wednesday, or Friday as start of the new year. + @memberof HebrewCalendar + @private + @param year {number} The year to examine. + @return {number} The days to offset by. */ + _delay1: function(year) { + var months = Math.floor((235 * year - 234) / 19); + var parts = 12084 + 13753 * months; + var day = months * 29 + Math.floor(parts / 25920); + if (mod(3 * (day + 1), 7) < 3) { + day++; + } + return day; + }, + + /** Check for delay in start of new year due to length of adjacent years. + @memberof HebrewCalendar + @private + @param year {number} The year to examine. + @return {number} The days to offset by. */ + _delay2: function(year) { + var last = this._delay1(year - 1); + var present = this._delay1(year); + var next = this._delay1(year + 1); + return ((next - present) === 356 ? 2 : ((present - last) === 382 ? 1 : 0)); + }, + + /** Create a new date from a Julian date. + @memberof HebrewCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5; + var year = Math.floor(((jd - this.jdEpoch) * 98496.0) / 35975351.0) - 1; + while (jd >= this.toJD((year === -1 ? +1 : year + 1), 7, 1)) { + year++; + } + var month = (jd < this.toJD(year, 1, 1)) ? 7 : 1; + while (jd > this.toJD(year, month, this.daysInMonth(year, month))) { + month++; + } + var day = jd - this.toJD(year, month, 1) + 1; + return this.newDate(year, month, day); + } +}); + +// Modulus function which works for non-integers. +function mod(a, b) { + return a - (b * Math.floor(a / b)); +} + +// Hebrew calendar implementation +main.calendars.hebrew = HebrewCalendar; + + +},{"../main":135,"object-assign":71}],126:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Islamic calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Islamic or '16 civil' calendar. + Based on code from http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php. + See also http://en.wikipedia.org/wiki/Islamic_calendar. + @class IslamicCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function IslamicCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +IslamicCalendar.prototype = new main.baseCalendar; + +assign(IslamicCalendar.prototype, { + /** The calendar name. + @memberof IslamicCalendar */ + name: 'Islamic', + /** Julian date of start of Islamic epoch: 16 July 622 CE. + @memberof IslamicCalendar */ + jdEpoch: 1948439.5, + /** Days per month in a common year. + @memberof IslamicCalendar */ + daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29], + /** true if has a year zero, false if not. + @memberof IslamicCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof IslamicCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof IslamicCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof IslamicCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof IslamicCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Islamic', + epochs: ['BH', 'AH'], + monthNames: ['Muharram', 'Safar', 'Rabi\' al-awwal', 'Rabi\' al-thani', 'Jumada al-awwal', 'Jumada al-thani', + 'Rajab', 'Sha\'aban', 'Ramadan', 'Shawwal', 'Dhu al-Qi\'dah', 'Dhu al-Hijjah'], + monthNamesShort: ['Muh', 'Saf', 'Rab1', 'Rab2', 'Jum1', 'Jum2', 'Raj', 'Sha\'', 'Ram', 'Shaw', 'DhuQ', 'DhuH'], + dayNames: ['Yawm al-ahad', 'Yawm al-ithnayn', 'Yawm ath-thulaathaa\'', + 'Yawm al-arbi\'aa\'', 'Yawm al-khamīs', 'Yawm al-jum\'a', 'Yawm as-sabt'], + dayNamesShort: ['Aha', 'Ith', 'Thu', 'Arb', 'Kha', 'Jum', 'Sab'], + dayNamesMin: ['Ah','It','Th','Ar','Kh','Ju','Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 6, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return (date.year() * 11 + 14) % 30 < 11; + }, + + /** Determine the week of the year for a date. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + return (this.leapYear(year) ? 355 : 354); + }, + + /** Retrieve the number of days in a month. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 5; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof IslamicCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + year = (year <= 0 ? year + 1 : year); + return day + Math.ceil(29.5 * (month - 1)) + (year - 1) * 354 + + Math.floor((3 + (11 * year)) / 30) + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof IslamicCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5; + var year = Math.floor((30 * (jd - this.jdEpoch) + 10646) / 10631); + year = (year <= 0 ? year - 1 : year); + var month = Math.min(12, Math.ceil((jd - 29 - this.toJD(year, 1, 1)) / 29.5) + 1); + var day = jd - this.toJD(year, month, 1) + 1; + return this.newDate(year, month, day); + } +}); + +// Islamic (16 civil) calendar implementation +main.calendars.islamic = IslamicCalendar; + + +},{"../main":135,"object-assign":71}],127:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Julian calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Julian calendar. + Based on code from http://www.fourmilab.ch/documents/calendar/. + See also http://en.wikipedia.org/wiki/Julian_calendar. + @class JulianCalendar + @augments BaseCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function JulianCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +JulianCalendar.prototype = new main.baseCalendar; + +assign(JulianCalendar.prototype, { + /** The calendar name. + @memberof JulianCalendar */ + name: 'Julian', + /** Julian date of start of Julian epoch: 1 January 0001 AD = 30 December 0001 BCE. + @memberof JulianCalendar */ + jdEpoch: 1721423.5, + /** Days per month in a common year. + @memberof JulianCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof JulianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof JulianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof JulianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof JulianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof JulianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Julian', + epochs: ['BC', 'AD'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'mm/dd/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = (date.year() < 0 ? date.year() + 1 : date.year()); // No year zero + return (year % 4) === 0; + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Thursday of this week starting on Monday + var checkDate = this.newDate(year, month, day); + checkDate.add(4 - (checkDate.dayOfWeek() || 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} True if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof JulianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + if (year < 0) { year++; } // No year zero + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + if (month <= 2) { + year--; + month += 12; + } + return Math.floor(365.25 * (year + 4716)) + + Math.floor(30.6001 * (month + 1)) + day - 1524.5; + }, + + /** Create a new date from a Julian date. + @memberof JulianCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + var a = Math.floor(jd + 0.5); + var b = a + 1524; + var c = Math.floor((b - 122.1) / 365.25); + var d = Math.floor(365.25 * c); + var e = Math.floor((b - d) / 30.6001); + var month = e - Math.floor(e < 14 ? 1 : 13); + var year = c - Math.floor(month > 2 ? 4716 : 4715); + var day = b - d - Math.floor(30.6001 * e); + if (year <= 0) { year--; } // No year zero + return this.newDate(year, month, day); + } +}); + +// Julian calendar implementation +main.calendars.julian = JulianCalendar; + + +},{"../main":135,"object-assign":71}],128:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Mayan calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Mayan Long Count calendar. + See also http://en.wikipedia.org/wiki/Mayan_calendar. + @class MayanCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function MayanCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +MayanCalendar.prototype = new main.baseCalendar; + +assign(MayanCalendar.prototype, { + /** The calendar name. + @memberof MayanCalendar */ + name: 'Mayan', + /** Julian date of start of Mayan epoch: 11 August 3114 BCE. + @memberof MayanCalendar */ + jdEpoch: 584282.5, + /** true if has a year zero, false if not. + @memberof MayanCalendar */ + hasYearZero: true, + /** The minimum month number. + @memberof MayanCalendar */ + minMonth: 0, + /** The first month in the year. + @memberof MayanCalendar */ + firstMonth: 0, + /** The minimum day number. + @memberof MayanCalendar */ + minDay: 0, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof MayanCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. + @property haabMonths {string[]} The names of the Haab months. + @property tzolkinMonths {string[]} The names of the Tzolkin months. */ + regionalOptions: { // Localisations + '': { + name: 'Mayan', + epochs: ['', ''], + monthNames: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17'], + monthNamesShort: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17'], + dayNames: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'], + dayNamesShort: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'], + dayNamesMin: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'], + digits: null, + dateFormat: 'YYYY.m.d', + firstDay: 0, + isRTL: false, + haabMonths: ['Pop', 'Uo', 'Zip', 'Zotz', 'Tzec', 'Xul', 'Yaxkin', 'Mol', 'Chen', 'Yax', + 'Zac', 'Ceh', 'Mac', 'Kankin', 'Muan', 'Pax', 'Kayab', 'Cumku', 'Uayeb'], + tzolkinMonths: ['Imix', 'Ik', 'Akbal', 'Kan', 'Chicchan', 'Cimi', 'Manik', 'Lamat', 'Muluc', 'Oc', + 'Chuen', 'Eb', 'Ben', 'Ix', 'Men', 'Cib', 'Caban', 'Etznab', 'Cauac', 'Ahau'] + } + }, + + /** Determine whether this date is in a leap year. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return false; + }, + + /** Format the year, if not a simple sequential number. + @memberof MayanCalendar + @param year {CDate|number} The date to format or the year to format. + @return {string} The formatted year. + @throws Error if an invalid year or a different calendar used. */ + formatYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + year = date.year(); + var baktun = Math.floor(year / 400); + year = year % 400; + year += (year < 0 ? 400 : 0); + var katun = Math.floor(year / 20); + return baktun + '.' + katun + '.' + (year % 20); + }, + + /** Convert from the formatted year back to a single number. + @memberof MayanCalendar + @param years {string} The year as n.n.n. + @return {number} The sequential year. + @throws Error if an invalid value is supplied. */ + forYear: function(years) { + years = years.split('.'); + if (years.length < 3) { + throw 'Invalid Mayan year'; + } + var year = 0; + for (var i = 0; i < years.length; i++) { + var y = parseInt(years[i], 10); + if (Math.abs(y) > 19 || (i > 0 && y < 0)) { + throw 'Invalid Mayan year'; + } + year = year * 20 + y; + } + return year; + }, + + /** Retrieve the number of months in a year. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 18; + }, + + /** Determine the week of the year for a date. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + this._validate(year, month, day, main.local.invalidDate); + return 0; + }, + + /** Retrieve the number of days in a year. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 360; + }, + + /** Retrieve the number of days in a month. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + this._validate(year, month, this.minDay, main.local.invalidMonth); + return 20; + }, + + /** Retrieve the number of days in a week. + @memberof MayanCalendar + @return {number} The number of days. */ + daysInWeek: function() { + return 5; // Just for formatting + }, + + /** Retrieve the day of the week for a date. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The day of the week: 0 to number of days - 1. + @throws Error if an invalid date or a different calendar used. */ + dayOfWeek: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return date.day(); + }, + + /** Determine whether this date is a week day. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + this._validate(year, month, day, main.local.invalidDate); + return true; + }, + + /** Retrieve additional information about a date - Haab and Tzolkin equivalents. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var jd = date.toJD(); + var haab = this._toHaab(jd); + var tzolkin = this._toTzolkin(jd); + return {haabMonthName: this.local.haabMonths[haab[0] - 1], + haabMonth: haab[0], haabDay: haab[1], + tzolkinDayName: this.local.tzolkinMonths[tzolkin[0] - 1], + tzolkinDay: tzolkin[0], tzolkinTrecena: tzolkin[1]}; + }, + + /** Retrieve Haab date from a Julian date. + @memberof MayanCalendar + @private + @param jd {number} The Julian date. + @return {number[]} Corresponding Haab month and day. */ + _toHaab: function(jd) { + jd -= this.jdEpoch; + var day = mod(jd + 8 + ((18 - 1) * 20), 365); + return [Math.floor(day / 20) + 1, mod(day, 20)]; + }, + + /** Retrieve Tzolkin date from a Julian date. + @memberof MayanCalendar + @private + @param jd {number} The Julian date. + @return {number[]} Corresponding Tzolkin day and trecena. */ + _toTzolkin: function(jd) { + jd -= this.jdEpoch; + return [amod(jd + 20, 20), amod(jd + 4, 13)]; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof MayanCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return date.day() + (date.month() * 20) + (date.year() * 360) + this.jdEpoch; + }, + + /** Create a new date from a Julian date. + @memberof MayanCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5 - this.jdEpoch; + var year = Math.floor(jd / 360); + jd = jd % 360; + jd += (jd < 0 ? 360 : 0); + var month = Math.floor(jd / 20); + var day = jd % 20; + return this.newDate(year, month, day); + } +}); + +// Modulus function which works for non-integers. +function mod(a, b) { + return a - (b * Math.floor(a / b)); +} + +// Modulus function which returns numerator if modulus is zero. +function amod(a, b) { + return mod(a - 1, b) + 1; +} + +// Mayan calendar implementation +main.calendars.mayan = MayanCalendar; + + +},{"../main":135,"object-assign":71}],129:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Nanakshahi calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) January 2016. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Nanakshahi calendar. + See also https://en.wikipedia.org/wiki/Nanakshahi_calendar. + @class NanakshahiCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function NanakshahiCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +NanakshahiCalendar.prototype = new main.baseCalendar; + +var gregorian = main.instance('gregorian'); + +assign(NanakshahiCalendar.prototype, { + /** The calendar name. + @memberof NanakshahiCalendar */ + name: 'Nanakshahi', + /** Julian date of start of Nanakshahi epoch: 14 March 1469 CE. + @memberof NanakshahiCalendar */ + jdEpoch: 2257673.5, + /** Days per month in a common year. + @memberof NanakshahiCalendar */ + daysPerMonth: [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30], + /** true if has a year zero, false if not. + @memberof NanakshahiCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof NanakshahiCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof NanakshahiCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof NanakshahiCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof NanakshahiCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Nanakshahi', + epochs: ['BN', 'AN'], + monthNames: ['Chet', 'Vaisakh', 'Jeth', 'Harh', 'Sawan', 'Bhadon', + 'Assu', 'Katak', 'Maghar', 'Poh', 'Magh', 'Phagun'], + monthNamesShort: ['Che', 'Vai', 'Jet', 'Har', 'Saw', 'Bha', 'Ass', 'Kat', 'Mgr', 'Poh', 'Mgh', 'Pha'], + dayNames: ['Somvaar', 'Mangalvar', 'Budhvaar', 'Veervaar', 'Shukarvaar', 'Sanicharvaar', 'Etvaar'], + dayNamesShort: ['Som', 'Mangal', 'Budh', 'Veer', 'Shukar', 'Sanichar', 'Et'], + dayNamesMin: ['So', 'Ma', 'Bu', 'Ve', 'Sh', 'Sa', 'Et'], + digits: null, + dateFormat: 'dd-mm-yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + main.local.invalidYear || main.regionalOptions[''].invalidYear); + return gregorian.leapYear(date.year() + (date.year() < 1 ? 1 : 0) + 1469); + }, + + /** Determine the week of the year for a date. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Monday of this week starting on Monday + var checkDate = this.newDate(year, month, day); + checkDate.add(1 - (checkDate.dayOfWeek() || 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidMonth); + var year = date.year(); + if (year < 0) { year++; } // No year zero + var doy = date.day(); + for (var m = 1; m < date.month(); m++) { + doy += this.daysPerMonth[m - 1]; + } + return doy + gregorian.toJD(year + 1468, 3, 13); + }, + + /** Create a new date from a Julian date. + @memberof NanakshahiCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd + 0.5); + var year = Math.floor((jd - (this.jdEpoch - 1)) / 366); + while (jd >= this.toJD(year + 1, 1, 1)) { + year++; + } + var day = jd - Math.floor(this.toJD(year, 1, 1) + 0.5) + 1; + var month = 1; + while (day > this.daysInMonth(year, month)) { + day -= this.daysInMonth(year, month); + month++; + } + return this.newDate(year, month, day); + } +}); + +// Nanakshahi calendar implementation +main.calendars.nanakshahi = NanakshahiCalendar; + + +},{"../main":135,"object-assign":71}],130:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Nepali calendar for jQuery v2.0.2. + Written by Artur Neumann (ict.projects{at}nepal.inf.org) April 2013. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Nepali civil calendar. + Based on the ideas from + http://codeissue.com/articles/a04e050dea7468f/algorithm-to-convert-english-date-to-nepali-date-using-c-net + and http://birenj2ee.blogspot.com/2011/04/nepali-calendar-in-java.html + See also http://en.wikipedia.org/wiki/Nepali_calendar + and https://en.wikipedia.org/wiki/Bikram_Samwat. + @class NepaliCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function NepaliCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +NepaliCalendar.prototype = new main.baseCalendar; + +assign(NepaliCalendar.prototype, { + /** The calendar name. + @memberof NepaliCalendar */ + name: 'Nepali', + /** Julian date of start of Nepali epoch: 14 April 57 BCE. + @memberof NepaliCalendar */ + jdEpoch: 1700709.5, + /** Days per month in a common year. + @memberof NepaliCalendar */ + daysPerMonth: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + /** true if has a year zero, false if not. + @memberof NepaliCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof NepaliCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof NepaliCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof NepaliCalendar */ + minDay: 1, + /** The number of days in the year. + @memberof NepaliCalendar */ + daysPerYear: 365, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof NepaliCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Nepali', + epochs: ['BBS', 'ABS'], + monthNames: ['Baisakh', 'Jestha', 'Ashadh', 'Shrawan', 'Bhadra', 'Ashwin', + 'Kartik', 'Mangsir', 'Paush', 'Mangh', 'Falgun', 'Chaitra'], + monthNamesShort: ['Bai', 'Je', 'As', 'Shra', 'Bha', 'Ash', 'Kar', 'Mang', 'Pau', 'Ma', 'Fal', 'Chai'], + dayNames: ['Aaitabaar', 'Sombaar', 'Manglbaar', 'Budhabaar', 'Bihibaar', 'Shukrabaar', 'Shanibaar'], + dayNamesShort: ['Aaita', 'Som', 'Mangl', 'Budha', 'Bihi', 'Shukra', 'Shani'], + dayNamesMin: ['Aai', 'So', 'Man', 'Bu', 'Bi', 'Shu', 'Sha'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 1, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + return this.daysInYear(year) !== this.daysPerYear; + }, + + /** Determine the week of the year for a date. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + year = date.year(); + if (typeof this.NEPALI_CALENDAR_DATA[year] === 'undefined') { + return this.daysPerYear; + } + var daysPerYear = 0; + for (var month_number = this.minMonth; month_number <= 12; month_number++) { + daysPerYear += this.NEPALI_CALENDAR_DATA[year][month_number]; + } + return daysPerYear; + }, + + /** Retrieve the number of days in a month. + @memberof NepaliCalendar + @param year {CDate|number| The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + if (year.year) { + month = year.month(); + year = year.year(); + } + this._validate(year, month, this.minDay, main.local.invalidMonth); + return (typeof this.NEPALI_CALENDAR_DATA[year] === 'undefined' ? + this.daysPerMonth[month - 1] : this.NEPALI_CALENDAR_DATA[year][month]); + }, + + /** Determine whether this date is a week day. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof NepaliCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(nepaliYear, nepaliMonth, nepaliDay) { + var date = this._validate(nepaliYear, nepaliMonth, nepaliDay, main.local.invalidDate); + nepaliYear = date.year(); + nepaliMonth = date.month(); + nepaliDay = date.day(); + var gregorianCalendar = main.instance(); + var gregorianDayOfYear = 0; // We will add all the days that went by since + // the 1st. January and then we can get the Gregorian Date + var nepaliMonthToCheck = nepaliMonth; + var nepaliYearToCheck = nepaliYear; + this._createMissingCalendarData(nepaliYear); + // Get the correct year + var gregorianYear = nepaliYear - (nepaliMonthToCheck > 9 || (nepaliMonthToCheck === 9 && + nepaliDay >= this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0]) ? 56 : 57); + // First we add the amount of days in the actual Nepali month as the day of year in the + // Gregorian one because at least this days are gone since the 1st. Jan. + if (nepaliMonth !== 9) { + gregorianDayOfYear = nepaliDay; + nepaliMonthToCheck--; + } + // Now we loop throw all Nepali month and add the amount of days to gregorianDayOfYear + // we do this till we reach Paush (9th month). 1st. January always falls in this month + while (nepaliMonthToCheck !== 9) { + if (nepaliMonthToCheck <= 0) { + nepaliMonthToCheck = 12; + nepaliYearToCheck--; + } + gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][nepaliMonthToCheck]; + nepaliMonthToCheck--; + } + // If the date that has to be converted is in Paush (month no. 9) we have to do some other calculation + if (nepaliMonth === 9) { + // Add the days that are passed since the first day of Paush and substract the + // amount of days that lie between 1st. Jan and 1st Paush + gregorianDayOfYear += nepaliDay - this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0]; + // For the first days of Paush we are now in negative values, + // because in the end of the gregorian year we substract + // 365 / 366 days (P.S. remember math in school + - gives -) + if (gregorianDayOfYear < 0) { + gregorianDayOfYear += gregorianCalendar.daysInYear(gregorianYear); + } + } + else { + gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][9] - + this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0]; + } + return gregorianCalendar.newDate(gregorianYear, 1 ,1).add(gregorianDayOfYear, 'd').toJD(); + }, + + /** Create a new date from a Julian date. + @memberof NepaliCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var gregorianCalendar = main.instance(); + var gregorianDate = gregorianCalendar.fromJD(jd); + var gregorianYear = gregorianDate.year(); + var gregorianDayOfYear = gregorianDate.dayOfYear(); + var nepaliYear = gregorianYear + 56; //this is not final, it could be also +57 but +56 is always true for 1st Jan. + this._createMissingCalendarData(nepaliYear); + var nepaliMonth = 9; // Jan 1 always fall in Nepali month Paush which is the 9th month of Nepali calendar. + // Get the Nepali day in Paush (month 9) of 1st January + var dayOfFirstJanInPaush = this.NEPALI_CALENDAR_DATA[nepaliYear][0]; + // Check how many days are left of Paush . + // Days calculated from 1st Jan till the end of the actual Nepali month, + // we use this value to check if the gregorian Date is in the actual Nepali month. + var daysSinceJanFirstToEndOfNepaliMonth = + this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] - dayOfFirstJanInPaush + 1; + // If the gregorian day-of-year is smaller o equal than the sum of days between the 1st January and + // the end of the actual nepali month we found the correct nepali month. + // Example: + // The 4th February 2011 is the gregorianDayOfYear 35 (31 days of January + 4) + // 1st January 2011 is in the nepali year 2067, where 1st. January is in the 17th day of Paush (9th month) + // In 2067 Paush has 30days, This means (30-17+1=14) there are 14days between 1st January and end of Paush + // (including 17th January) + // The gregorianDayOfYear (35) is bigger than 14, so we check the next month + // The next nepali month (Mangh) has 29 days + // 29+14=43, this is bigger than gregorianDayOfYear(35) so, we found the correct nepali month + while (gregorianDayOfYear > daysSinceJanFirstToEndOfNepaliMonth) { + nepaliMonth++; + if (nepaliMonth > 12) { + nepaliMonth = 1; + nepaliYear++; + } + daysSinceJanFirstToEndOfNepaliMonth += this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth]; + } + // The last step is to calculate the nepali day-of-month + // to continue our example from before: + // we calculated there are 43 days from 1st. January (17 Paush) till end of Mangh (29 days) + // when we subtract from this 43 days the day-of-year of the the Gregorian date (35), + // we know how far the searched day is away from the end of the Nepali month. + // So we simply subtract this number from the amount of days in this month (30) + var nepaliDayOfMonth = this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] - + (daysSinceJanFirstToEndOfNepaliMonth - gregorianDayOfYear); + return this.newDate(nepaliYear, nepaliMonth, nepaliDayOfMonth); + }, + + /** Creates missing data in the NEPALI_CALENDAR_DATA table. + This data will not be correct but just give an estimated result. Mostly -/+ 1 day + @private + @param nepaliYear {number} The missing year number. */ + _createMissingCalendarData: function(nepaliYear) { + var tmp_calendar_data = this.daysPerMonth.slice(0); + tmp_calendar_data.unshift(17); + for (var nepaliYearToCreate = (nepaliYear - 1); nepaliYearToCreate < (nepaliYear + 2); nepaliYearToCreate++) { + if (typeof this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] === 'undefined') { + this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] = tmp_calendar_data; + } + } + }, + + NEPALI_CALENDAR_DATA: { + // These data are from http://www.ashesh.com.np + 1970: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1971: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], + 1972: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 1973: [19, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 1974: [19, 31, 31, 32, 30, 31, 31, 30, 29, 30, 29, 30, 30], + 1975: [18, 31, 31, 32, 32, 30, 31, 30, 29, 30, 29, 30, 30], + 1976: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1977: [18, 31, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], + 1978: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1979: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 1980: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1981: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 1982: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1983: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 1984: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1985: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 1986: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1987: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 1988: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1989: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 1990: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1991: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + // These data are from http://nepalicalendar.rat32.com/index.php + 1992: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 1993: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 1994: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1995: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 1996: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 1997: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1998: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1999: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2000: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2001: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2002: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2003: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2004: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2005: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2006: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2007: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2008: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], + 2009: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2010: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2011: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2012: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2013: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2014: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2015: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2016: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2017: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2018: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2019: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2020: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2021: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2022: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2023: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2024: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2025: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2026: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2027: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2028: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2029: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], + 2030: [17, 31, 32, 31, 32, 31, 30, 30, 30, 30, 30, 30, 31], + 2031: [17, 31, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31], + 2032: [17, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], + 2033: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2034: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2035: [17, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], + 2036: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2037: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2038: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2039: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2040: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2041: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2042: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2043: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2044: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2045: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2046: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2047: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2048: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2049: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2050: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2051: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2052: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2053: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2054: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2055: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 29, 30], + 2056: [17, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], + 2057: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2058: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2059: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2060: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2061: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2062: [17, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], + 2063: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2064: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2065: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2066: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], + 2067: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2068: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2069: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2070: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2071: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2072: [17, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2073: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2074: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2075: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2076: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2077: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2078: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2079: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2080: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + // These data are from http://www.ashesh.com.np/nepali-calendar/ + 2081: [17, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2082: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2083: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], + 2084: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], + 2085: [17, 31, 32, 31, 32, 31, 31, 30, 30, 29, 30, 30, 30], + 2086: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2087: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30], + 2088: [16, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30], + 2089: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2090: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2091: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30], + 2092: [16, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2093: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2094: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], + 2095: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30], + 2096: [17, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2097: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2098: [17, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 30, 31], + 2099: [17, 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30], + 2100: [17, 31, 32, 31, 32, 30, 31, 30, 29, 30, 29, 30, 30] + } +}); + +// Nepali calendar implementation +main.calendars.nepali = NepaliCalendar; + + +},{"../main":135,"object-assign":71}],131:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Persian calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Persian or Jalali calendar. + Based on code from http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php. + See also http://en.wikipedia.org/wiki/Iranian_calendar. + @class PersianCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function PersianCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +PersianCalendar.prototype = new main.baseCalendar; + +assign(PersianCalendar.prototype, { + /** The calendar name. + @memberof PersianCalendar */ + name: 'Persian', + /** Julian date of start of Persian epoch: 19 March 622 CE. + @memberof PersianCalendar */ + jdEpoch: 1948320.5, + /** Days per month in a common year. + @memberof PersianCalendar */ + daysPerMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29], + /** true if has a year zero, false if not. + @memberof PersianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof PersianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof PersianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof PersianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof PersianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Persian', + epochs: ['BP', 'AP'], + monthNames: ['Farvardin', 'Ordibehesht', 'Khordad', 'Tir', 'Mordad', 'Shahrivar', + 'Mehr', 'Aban', 'Azar', 'Day', 'Bahman', 'Esfand'], + monthNamesShort: ['Far', 'Ord', 'Kho', 'Tir', 'Mor', 'Sha', 'Meh', 'Aba', 'Aza', 'Day', 'Bah', 'Esf'], + dayNames: ['Yekshambe', 'Doshambe', 'Seshambe', 'Chæharshambe', 'Panjshambe', 'Jom\'e', 'Shambe'], + dayNamesShort: ['Yek', 'Do', 'Se', 'Chæ', 'Panj', 'Jom', 'Sha'], + dayNamesMin: ['Ye','Do','Se','Ch','Pa','Jo','Sh'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 6, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return (((((date.year() - (date.year() > 0 ? 474 : 473)) % 2820) + + 474 + 38) * 682) % 2816) < 682; + }, + + /** Determine the week of the year for a date. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Saturday of this week starting on Saturday + var checkDate = this.newDate(year, month, day); + checkDate.add(-((checkDate.dayOfWeek() + 1) % 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 5; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof PersianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + var epBase = year - (year >= 0 ? 474 : 473); + var epYear = 474 + mod(epBase, 2820); + return day + (month <= 7 ? (month - 1) * 31 : (month - 1) * 30 + 6) + + Math.floor((epYear * 682 - 110) / 2816) + (epYear - 1) * 365 + + Math.floor(epBase / 2820) * 1029983 + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof PersianCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5; + var depoch = jd - this.toJD(475, 1, 1); + var cycle = Math.floor(depoch / 1029983); + var cyear = mod(depoch, 1029983); + var ycycle = 2820; + if (cyear !== 1029982) { + var aux1 = Math.floor(cyear / 366); + var aux2 = mod(cyear, 366); + ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) + aux1 + 1; + } + var year = ycycle + (2820 * cycle) + 474; + year = (year <= 0 ? year - 1 : year); + var yday = jd - this.toJD(year, 1, 1) + 1; + var month = (yday <= 186 ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30)); + var day = jd - this.toJD(year, month, 1) + 1; + return this.newDate(year, month, day); + } +}); + +// Modulus function which works for non-integers. +function mod(a, b) { + return a - (b * Math.floor(a / b)); +} + +// Persian (Jalali) calendar implementation +main.calendars.persian = PersianCalendar; +main.calendars.jalali = PersianCalendar; + + +},{"../main":135,"object-assign":71}],132:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Taiwanese (Minguo) calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +var gregorianCalendar = main.instance(); + +/** Implementation of the Taiwanese calendar. + See http://en.wikipedia.org/wiki/Minguo_calendar. + @class TaiwanCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function TaiwanCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +TaiwanCalendar.prototype = new main.baseCalendar; + +assign(TaiwanCalendar.prototype, { + /** The calendar name. + @memberof TaiwanCalendar */ + name: 'Taiwan', + /** Julian date of start of Taiwan epoch: 1 January 1912 CE (Gregorian). + @memberof TaiwanCalendar */ + jdEpoch: 2419402.5, + /** Difference in years between Taiwan and Gregorian calendars. + @memberof TaiwanCalendar */ + yearsOffset: 1911, + /** Days per month in a common year. + @memberof TaiwanCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof TaiwanCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof TaiwanCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof TaiwanCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof TaiwanCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof TaiwanCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Taiwan', + epochs: ['BROC', 'ROC'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 1, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.leapYear(year); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.weekOfYear(year, date.month(), date.day()); + }, + + /** Retrieve the number of days in a month. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof TaiwanCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var year = this._t2gYear(date.year()); + return gregorianCalendar.toJD(year, date.month(), date.day()); + }, + + /** Create a new date from a Julian date. + @memberof TaiwanCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var date = gregorianCalendar.fromJD(jd); + var year = this._g2tYear(date.year()); + return this.newDate(year, date.month(), date.day()); + }, + + /** Convert Taiwanese to Gregorian year. + @memberof TaiwanCalendar + @private + @param year {number} The Taiwanese year. + @return {number} The corresponding Gregorian year. */ + _t2gYear: function(year) { + return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0); + }, + + /** Convert Gregorian to Taiwanese year. + @memberof TaiwanCalendar + @private + @param year {number} The Gregorian year. + @return {number} The corresponding Taiwanese year. */ + _g2tYear: function(year) { + return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0); + } +}); + +// Taiwan calendar implementation +main.calendars.taiwan = TaiwanCalendar; + + +},{"../main":135,"object-assign":71}],133:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Thai calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +var gregorianCalendar = main.instance(); + +/** Implementation of the Thai calendar. + See http://en.wikipedia.org/wiki/Thai_calendar. + @class ThaiCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function ThaiCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +ThaiCalendar.prototype = new main.baseCalendar; + +assign(ThaiCalendar.prototype, { + /** The calendar name. + @memberof ThaiCalendar */ + name: 'Thai', + /** Julian date of start of Thai epoch: 1 January 543 BCE (Gregorian). + @memberof ThaiCalendar */ + jdEpoch: 1523098.5, + /** Difference in years between Thai and Gregorian calendars. + @memberof ThaiCalendar */ + yearsOffset: 543, + /** Days per month in a common year. + @memberof ThaiCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof ThaiCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof ThaiCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof ThaiCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof ThaiCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof ThaiCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Thai', + epochs: ['BBE', 'BE'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.leapYear(year); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.weekOfYear(year, date.month(), date.day()); + }, + + /** Retrieve the number of days in a month. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof ThaiCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var year = this._t2gYear(date.year()); + return gregorianCalendar.toJD(year, date.month(), date.day()); + }, + + /** Create a new date from a Julian date. + @memberof ThaiCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var date = gregorianCalendar.fromJD(jd); + var year = this._g2tYear(date.year()); + return this.newDate(year, date.month(), date.day()); + }, + + /** Convert Thai to Gregorian year. + @memberof ThaiCalendar + @private + @param year {number} The Thai year. + @return {number} The corresponding Gregorian year. */ + _t2gYear: function(year) { + return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0); + }, + + /** Convert Gregorian to Thai year. + @memberof ThaiCalendar + @private + @param year {number} The Gregorian year. + @return {number} The corresponding Thai year. */ + _g2tYear: function(year) { + return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0); + } +}); + +// Thai calendar implementation +main.calendars.thai = ThaiCalendar; + + +},{"../main":135,"object-assign":71}],134:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + UmmAlQura calendar for jQuery v2.0.2. + Written by Amro Osama March 2013. + Modified by Binnooh.com & www.elm.sa - 2014 - Added dates back to 1276 Hijri year. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the UmmAlQura or 'saudi' calendar. + See also http://en.wikipedia.org/wiki/Islamic_calendar#Saudi_Arabia.27s_Umm_al-Qura_calendar. + http://www.ummulqura.org.sa/About.aspx + http://www.staff.science.uu.nl/~gent0113/islam/ummalqura.htm + @class UmmAlQuraCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function UmmAlQuraCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +UmmAlQuraCalendar.prototype = new main.baseCalendar; + +assign(UmmAlQuraCalendar.prototype, { + /** The calendar name. + @memberof UmmAlQuraCalendar */ + name: 'UmmAlQura', + //jdEpoch: 1948440, // Julian date of start of UmmAlQura epoch: 14 March 1937 CE + //daysPerMonth: // Days per month in a common year, replaced by a method. + /** true if has a year zero, false if not. + @memberof UmmAlQuraCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof UmmAlQuraCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof UmmAlQuraCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof UmmAlQuraCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof UmmAlQuraCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Umm al-Qura', + epochs: ['BH', 'AH'], + monthNames: ['Al-Muharram', 'Safar', 'Rabi\' al-awwal', 'Rabi\' Al-Thani', 'Jumada Al-Awwal', 'Jumada Al-Thani', + 'Rajab', 'Sha\'aban', 'Ramadan', 'Shawwal', 'Dhu al-Qi\'dah', 'Dhu al-Hijjah'], + monthNamesShort: ['Muh', 'Saf', 'Rab1', 'Rab2', 'Jum1', 'Jum2', 'Raj', 'Sha\'', 'Ram', 'Shaw', 'DhuQ', 'DhuH'], + dayNames: ['Yawm al-Ahad', 'Yawm al-Ithnain', 'Yawm al-Thalāthā’', 'Yawm al-Arba‘ā’', 'Yawm al-Khamīs', 'Yawm al-Jum‘a', 'Yawm al-Sabt'], + dayNamesMin: ['Ah', 'Ith', 'Th', 'Ar', 'Kh', 'Ju', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 6, + isRTL: true + } + }, + + /** Determine whether this date is in a leap year. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function (year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return (this.daysInYear(date.year()) === 355); + }, + + /** Determine the week of the year for a date. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function (year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function (year) { + var daysCount = 0; + for (var i = 1; i <= 12; i++) { + daysCount += this.daysInMonth(year, i); + } + return daysCount; + }, + + /** Retrieve the number of days in a month. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function (year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + var mcjdn = date.toJD() - 2400000 + 0.5; // Modified Chronological Julian Day Number (MCJDN) + // the MCJDN's of the start of the lunations in the Umm al-Qura calendar are stored in the 'ummalqura_dat' array + var index = 0; + for (var i = 0; i < ummalqura_dat.length; i++) { + if (ummalqura_dat[i] > mcjdn) { + return (ummalqura_dat[index] - ummalqura_dat[index - 1]); + } + index++; + } + return 30; // Unknown outside + }, + + /** Determine whether this date is a week day. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function (year, month, day) { + return this.dayOfWeek(year, month, day) !== 5; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function (year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var index = (12 * (date.year() - 1)) + date.month() - 15292; + var mcjdn = date.day() + ummalqura_dat[index - 1] - 1; + return mcjdn + 2400000 - 0.5; // Modified Chronological Julian Day Number (MCJDN) + }, + + /** Create a new date from a Julian date. + @memberof UmmAlQuraCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function (jd) { + var mcjdn = jd - 2400000 + 0.5; // Modified Chronological Julian Day Number (MCJDN) + // the MCJDN's of the start of the lunations in the Umm al-Qura calendar + // are stored in the 'ummalqura_dat' array + var index = 0; + for (var i = 0; i < ummalqura_dat.length; i++) { + if (ummalqura_dat[i] > mcjdn) break; + index++; + } + var lunation = index + 15292; //UmmAlQura Lunation Number + var ii = Math.floor((lunation - 1) / 12); + var year = ii + 1; + var month = lunation - 12 * ii; + var day = mcjdn - ummalqura_dat[index - 1] + 1; + return this.newDate(year, month, day); + }, + + /** Determine whether a date is valid for this calendar. + @memberof UmmAlQuraCalendar + @param year {number} The year to examine. + @param month {number} The month to examine. + @param day {number} The day to examine. + @return {boolean} true if a valid date, false if not. */ + isValid: function(year, month, day) { + var valid = main.baseCalendar.prototype.isValid.apply(this, arguments); + if (valid) { + year = (year.year != null ? year.year : year); + valid = (year >= 1276 && year <= 1500); + } + return valid; + }, + + /** Check that a candidate date is from the same calendar and is valid. + @memberof UmmAlQuraCalendar + @private + @param year {CDate|number} The date to validate or the year to validate. + @param month {number} The month to validate. + @param day {number} The day to validate. + @param error {string} Error message if invalid. + @throws Error if different calendars used or invalid date. */ + _validate: function(year, month, day, error) { + var date = main.baseCalendar.prototype._validate.apply(this, arguments); + if (date.year < 1276 || date.year > 1500) { + throw error.replace(/\{0\}/, this.local.name); + } + return date; + } +}); + +// UmmAlQura calendar implementation +main.calendars.ummalqura = UmmAlQuraCalendar; + +var ummalqura_dat = [ + 20, 50, 79, 109, 138, 168, 197, 227, 256, 286, 315, 345, 374, 404, 433, 463, 492, 522, 551, 581, + 611, 641, 670, 700, 729, 759, 788, 818, 847, 877, 906, 936, 965, 995, 1024, 1054, 1083, 1113, 1142, 1172, + 1201, 1231, 1260, 1290, 1320, 1350, 1379, 1409, 1438, 1468, 1497, 1527, 1556, 1586, 1615, 1645, 1674, 1704, 1733, 1763, + 1792, 1822, 1851, 1881, 1910, 1940, 1969, 1999, 2028, 2058, 2087, 2117, 2146, 2176, 2205, 2235, 2264, 2294, 2323, 2353, + 2383, 2413, 2442, 2472, 2501, 2531, 2560, 2590, 2619, 2649, 2678, 2708, 2737, 2767, 2796, 2826, 2855, 2885, 2914, 2944, + 2973, 3003, 3032, 3062, 3091, 3121, 3150, 3180, 3209, 3239, 3268, 3298, 3327, 3357, 3386, 3416, 3446, 3476, 3505, 3535, + 3564, 3594, 3623, 3653, 3682, 3712, 3741, 3771, 3800, 3830, 3859, 3889, 3918, 3948, 3977, 4007, 4036, 4066, 4095, 4125, + 4155, 4185, 4214, 4244, 4273, 4303, 4332, 4362, 4391, 4421, 4450, 4480, 4509, 4539, 4568, 4598, 4627, 4657, 4686, 4716, + 4745, 4775, 4804, 4834, 4863, 4893, 4922, 4952, 4981, 5011, 5040, 5070, 5099, 5129, 5158, 5188, 5218, 5248, 5277, 5307, + 5336, 5366, 5395, 5425, 5454, 5484, 5513, 5543, 5572, 5602, 5631, 5661, 5690, 5720, 5749, 5779, 5808, 5838, 5867, 5897, + 5926, 5956, 5985, 6015, 6044, 6074, 6103, 6133, 6162, 6192, 6221, 6251, 6281, 6311, 6340, 6370, 6399, 6429, 6458, 6488, + 6517, 6547, 6576, 6606, 6635, 6665, 6694, 6724, 6753, 6783, 6812, 6842, 6871, 6901, 6930, 6960, 6989, 7019, 7048, 7078, + 7107, 7137, 7166, 7196, 7225, 7255, 7284, 7314, 7344, 7374, 7403, 7433, 7462, 7492, 7521, 7551, 7580, 7610, 7639, 7669, + 7698, 7728, 7757, 7787, 7816, 7846, 7875, 7905, 7934, 7964, 7993, 8023, 8053, 8083, 8112, 8142, 8171, 8201, 8230, 8260, + 8289, 8319, 8348, 8378, 8407, 8437, 8466, 8496, 8525, 8555, 8584, 8614, 8643, 8673, 8702, 8732, 8761, 8791, 8821, 8850, + 8880, 8909, 8938, 8968, 8997, 9027, 9056, 9086, 9115, 9145, 9175, 9205, 9234, 9264, 9293, 9322, 9352, 9381, 9410, 9440, + 9470, 9499, 9529, 9559, 9589, 9618, 9648, 9677, 9706, 9736, 9765, 9794, 9824, 9853, 9883, 9913, 9943, 9972, 10002, 10032, + 10061, 10090, 10120, 10149, 10178, 10208, 10237, 10267, 10297, 10326, 10356, 10386, 10415, 10445, 10474, 10504, 10533, 10562, 10592, 10621, + 10651, 10680, 10710, 10740, 10770, 10799, 10829, 10858, 10888, 10917, 10947, 10976, 11005, 11035, 11064, 11094, 11124, 11153, 11183, 11213, + 11242, 11272, 11301, 11331, 11360, 11389, 11419, 11448, 11478, 11507, 11537, 11567, 11596, 11626, 11655, 11685, 11715, 11744, 11774, 11803, + 11832, 11862, 11891, 11921, 11950, 11980, 12010, 12039, 12069, 12099, 12128, 12158, 12187, 12216, 12246, 12275, 12304, 12334, 12364, 12393, + 12423, 12453, 12483, 12512, 12542, 12571, 12600, 12630, 12659, 12688, 12718, 12747, 12777, 12807, 12837, 12866, 12896, 12926, 12955, 12984, + 13014, 13043, 13072, 13102, 13131, 13161, 13191, 13220, 13250, 13280, 13310, 13339, 13368, 13398, 13427, 13456, 13486, 13515, 13545, 13574, + 13604, 13634, 13664, 13693, 13723, 13752, 13782, 13811, 13840, 13870, 13899, 13929, 13958, 13988, 14018, 14047, 14077, 14107, 14136, 14166, + 14195, 14224, 14254, 14283, 14313, 14342, 14372, 14401, 14431, 14461, 14490, 14520, 14550, 14579, 14609, 14638, 14667, 14697, 14726, 14756, + 14785, 14815, 14844, 14874, 14904, 14933, 14963, 14993, 15021, 15051, 15081, 15110, 15140, 15169, 15199, 15228, 15258, 15287, 15317, 15347, + 15377, 15406, 15436, 15465, 15494, 15524, 15553, 15582, 15612, 15641, 15671, 15701, 15731, 15760, 15790, 15820, 15849, 15878, 15908, 15937, + 15966, 15996, 16025, 16055, 16085, 16114, 16144, 16174, 16204, 16233, 16262, 16292, 16321, 16350, 16380, 16409, 16439, 16468, 16498, 16528, + 16558, 16587, 16617, 16646, 16676, 16705, 16734, 16764, 16793, 16823, 16852, 16882, 16912, 16941, 16971, 17001, 17030, 17060, 17089, 17118, + 17148, 17177, 17207, 17236, 17266, 17295, 17325, 17355, 17384, 17414, 17444, 17473, 17502, 17532, 17561, 17591, 17620, 17650, 17679, 17709, + 17738, 17768, 17798, 17827, 17857, 17886, 17916, 17945, 17975, 18004, 18034, 18063, 18093, 18122, 18152, 18181, 18211, 18241, 18270, 18300, + 18330, 18359, 18388, 18418, 18447, 18476, 18506, 18535, 18565, 18595, 18625, 18654, 18684, 18714, 18743, 18772, 18802, 18831, 18860, 18890, + 18919, 18949, 18979, 19008, 19038, 19068, 19098, 19127, 19156, 19186, 19215, 19244, 19274, 19303, 19333, 19362, 19392, 19422, 19452, 19481, + 19511, 19540, 19570, 19599, 19628, 19658, 19687, 19717, 19746, 19776, 19806, 19836, 19865, 19895, 19924, 19954, 19983, 20012, 20042, 20071, + 20101, 20130, 20160, 20190, 20219, 20249, 20279, 20308, 20338, 20367, 20396, 20426, 20455, 20485, 20514, 20544, 20573, 20603, 20633, 20662, + 20692, 20721, 20751, 20780, 20810, 20839, 20869, 20898, 20928, 20957, 20987, 21016, 21046, 21076, 21105, 21135, 21164, 21194, 21223, 21253, + 21282, 21312, 21341, 21371, 21400, 21430, 21459, 21489, 21519, 21548, 21578, 21607, 21637, 21666, 21696, 21725, 21754, 21784, 21813, 21843, + 21873, 21902, 21932, 21962, 21991, 22021, 22050, 22080, 22109, 22138, 22168, 22197, 22227, 22256, 22286, 22316, 22346, 22375, 22405, 22434, + 22464, 22493, 22522, 22552, 22581, 22611, 22640, 22670, 22700, 22730, 22759, 22789, 22818, 22848, 22877, 22906, 22936, 22965, 22994, 23024, + 23054, 23083, 23113, 23143, 23173, 23202, 23232, 23261, 23290, 23320, 23349, 23379, 23408, 23438, 23467, 23497, 23527, 23556, 23586, 23616, + 23645, 23674, 23704, 23733, 23763, 23792, 23822, 23851, 23881, 23910, 23940, 23970, 23999, 24029, 24058, 24088, 24117, 24147, 24176, 24206, + 24235, 24265, 24294, 24324, 24353, 24383, 24413, 24442, 24472, 24501, 24531, 24560, 24590, 24619, 24648, 24678, 24707, 24737, 24767, 24796, + 24826, 24856, 24885, 24915, 24944, 24974, 25003, 25032, 25062, 25091, 25121, 25150, 25180, 25210, 25240, 25269, 25299, 25328, 25358, 25387, + 25416, 25446, 25475, 25505, 25534, 25564, 25594, 25624, 25653, 25683, 25712, 25742, 25771, 25800, 25830, 25859, 25888, 25918, 25948, 25977, + 26007, 26037, 26067, 26096, 26126, 26155, 26184, 26214, 26243, 26272, 26302, 26332, 26361, 26391, 26421, 26451, 26480, 26510, 26539, 26568, + 26598, 26627, 26656, 26686, 26715, 26745, 26775, 26805, 26834, 26864, 26893, 26923, 26952, 26982, 27011, 27041, 27070, 27099, 27129, 27159, + 27188, 27218, 27248, 27277, 27307, 27336, 27366, 27395, 27425, 27454, 27484, 27513, 27542, 27572, 27602, 27631, 27661, 27691, 27720, 27750, + 27779, 27809, 27838, 27868, 27897, 27926, 27956, 27985, 28015, 28045, 28074, 28104, 28134, 28163, 28193, 28222, 28252, 28281, 28310, 28340, + 28369, 28399, 28428, 28458, 28488, 28517, 28547, 28577, + // From 1356 + 28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167, + 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, + 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, + 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, + 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, + 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, + 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711, + 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302, + 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893, + 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483, + 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, + 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, + 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, + 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, + 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, + 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027, + 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617, + 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208, + 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798, + 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, + 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, + 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, + 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, + 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, + 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342, + 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932, + 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523, + 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114, + 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, + 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, + 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, + 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, + 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, + 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657, + 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248, + 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838, + 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429, + 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, + 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, + 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, + 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, + 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, + 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973, + 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564, + 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154, + 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745, + 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, + 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, + 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, + 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, + 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, + 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288, + 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879, + 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469, + 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061, + 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, + 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, + 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, + 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, + 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, + 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603, + 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195, + 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785, + 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376, + 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, + 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, + 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, + 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, + 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, + 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919, + 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510, + 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101, + 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691, + 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, + 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, + 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, + 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, + 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, + 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235, + 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826, + 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416, + 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007, + 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, + 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, + 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, + 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, + 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, + 79990]; + + +},{"../main":135,"object-assign":71}],135:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Calendars for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var assign = _dereq_('object-assign'); + + +function Calendars() { + this.regionalOptions = []; + this.regionalOptions[''] = { + invalidCalendar: 'Calendar {0} not found', + invalidDate: 'Invalid {0} date', + invalidMonth: 'Invalid {0} month', + invalidYear: 'Invalid {0} year', + differentCalendars: 'Cannot mix {0} and {1} dates' + }; + this.local = this.regionalOptions['']; + this.calendars = {}; + this._localCals = {}; +} + +/** Create the calendars plugin. +

Provides support for various world calendars in a consistent manner.

+ @class Calendars + @example _exports.instance('julian').newDate(2014, 12, 25) */ +assign(Calendars.prototype, { + + /** Obtain a calendar implementation and localisation. + @memberof Calendars + @param [name='gregorian'] {string} The name of the calendar, e.g. 'gregorian', 'persian', 'islamic'. + @param [language=''] {string} The language code to use for localisation (default is English). + @return {Calendar} The calendar and localisation. + @throws Error if calendar not found. */ + instance: function(name, language) { + name = (name || 'gregorian').toLowerCase(); + language = language || ''; + var cal = this._localCals[name + '-' + language]; + if (!cal && this.calendars[name]) { + cal = new this.calendars[name](language); + this._localCals[name + '-' + language] = cal; + } + if (!cal) { + throw (this.local.invalidCalendar || this.regionalOptions[''].invalidCalendar). + replace(/\{0\}/, name); + } + return cal; + }, + + /** Create a new date - for today if no other parameters given. + @memberof Calendars + @param year {CDate|number} The date to copy or the year for the date. + @param [month] {number} The month for the date. + @param [day] {number} The day for the date. + @param [calendar='gregorian'] {BaseCalendar|string} The underlying calendar or the name of the calendar. + @param [language=''] {string} The language to use for localisation (default English). + @return {CDate} The new date. + @throws Error if an invalid date. */ + newDate: function(year, month, day, calendar, language) { + calendar = (year != null && year.year ? year.calendar() : (typeof calendar === 'string' ? + this.instance(calendar, language) : calendar)) || this.instance(); + return calendar.newDate(year, month, day); + }, + + /** A simple digit substitution function for localising numbers via the Calendar digits option. + @member Calendars + @param digits {string[]} The substitute digits, for 0 through 9. + @return {function} The substitution function. */ + substituteDigits: function(digits) { + return function(value) { + return (value + '').replace(/[0-9]/g, function(digit) { + return digits[digit]; + }); + } + }, + + /** Digit substitution function for localising Chinese style numbers via the Calendar digits option. + @member Calendars + @param digits {string[]} The substitute digits, for 0 through 9. + @param powers {string[]} The characters denoting powers of 10, i.e. 1, 10, 100, 1000. + @return {function} The substitution function. */ + substituteChineseDigits: function(digits, powers) { + return function(value) { + var localNumber = ''; + var power = 0; + while (value > 0) { + var units = value % 10; + localNumber = (units === 0 ? '' : digits[units] + powers[power]) + localNumber; + power++; + value = Math.floor(value / 10); + } + if (localNumber.indexOf(digits[1] + powers[1]) === 0) { + localNumber = localNumber.substr(1); + } + return localNumber || digits[0]; + } + } +}); + +/** Generic date, based on a particular calendar. + @class CDate + @param calendar {BaseCalendar} The underlying calendar implementation. + @param year {number} The year for this date. + @param month {number} The month for this date. + @param day {number} The day for this date. + @return {CDate} The date object. + @throws Error if an invalid date. */ +function CDate(calendar, year, month, day) { + this._calendar = calendar; + this._year = year; + this._month = month; + this._day = day; + if (this._calendar._validateLevel === 0 && + !this._calendar.isValid(this._year, this._month, this._day)) { + throw (_exports.local.invalidDate || _exports.regionalOptions[''].invalidDate). + replace(/\{0\}/, this._calendar.local.name); + } +} + +/** Pad a numeric value with leading zeroes. + @private + @param value {number} The number to format. + @param length {number} The minimum length. + @return {string} The formatted number. */ +function pad(value, length) { + value = '' + value; + return '000000'.substring(0, length - value.length) + value; +} + +assign(CDate.prototype, { + + /** Create a new date. + @memberof CDate + @param [year] {CDate|number} The date to copy or the year for the date (default this date). + @param [month] {number} The month for the date. + @param [day] {number} The day for the date. + @return {CDate} The new date. + @throws Error if an invalid date. */ + newDate: function(year, month, day) { + return this._calendar.newDate((year == null ? this : year), month, day); + }, + + /** Set or retrieve the year for this date. + @memberof CDate + @param [year] {number} The year for the date. + @return {number|CDate} The date's year (if no parameter) or the updated date. + @throws Error if an invalid date. */ + year: function(year) { + return (arguments.length === 0 ? this._year : this.set(year, 'y')); + }, + + /** Set or retrieve the month for this date. + @memberof CDate + @param [month] {number} The month for the date. + @return {number|CDate} The date's month (if no parameter) or the updated date. + @throws Error if an invalid date. */ + month: function(month) { + return (arguments.length === 0 ? this._month : this.set(month, 'm')); + }, + + /** Set or retrieve the day for this date. + @memberof CDate + @param [day] {number} The day for the date. + @return {number|CData} The date's day (if no parameter) or the updated date. + @throws Error if an invalid date. */ + day: function(day) { + return (arguments.length === 0 ? this._day : this.set(day, 'd')); + }, + + /** Set new values for this date. + @memberof CDate + @param year {number} The year for the date. + @param month {number} The month for the date. + @param day {number} The day for the date. + @return {CDate} The updated date. + @throws Error if an invalid date. */ + date: function(year, month, day) { + if (!this._calendar.isValid(year, month, day)) { + throw (_exports.local.invalidDate || _exports.regionalOptions[''].invalidDate). + replace(/\{0\}/, this._calendar.local.name); + } + this._year = year; + this._month = month; + this._day = day; + return this; + }, + + /** Determine whether this date is in a leap year. + @memberof CDate + @return {boolean} true if this is a leap year, false if not. */ + leapYear: function() { + return this._calendar.leapYear(this); + }, + + /** Retrieve the epoch designator for this date, e.g. BCE or CE. + @memberof CDate + @return {string} The current epoch. */ + epoch: function() { + return this._calendar.epoch(this); + }, + + /** Format the year, if not a simple sequential number. + @memberof CDate + @return {string} The formatted year. */ + formatYear: function() { + return this._calendar.formatYear(this); + }, + + /** Retrieve the month of the year for this date, + i.e. the month's position within a numbered year. + @memberof CDate + @return {number} The month of the year: minMonth to months per year. */ + monthOfYear: function() { + return this._calendar.monthOfYear(this); + }, + + /** Retrieve the week of the year for this date. + @memberof CDate + @return {number} The week of the year: 1 to weeks per year. */ + weekOfYear: function() { + return this._calendar.weekOfYear(this); + }, + + /** Retrieve the number of days in the year for this date. + @memberof CDate + @return {number} The number of days in this year. */ + daysInYear: function() { + return this._calendar.daysInYear(this); + }, + + /** Retrieve the day of the year for this date. + @memberof CDate + @return {number} The day of the year: 1 to days per year. */ + dayOfYear: function() { + return this._calendar.dayOfYear(this); + }, + + /** Retrieve the number of days in the month for this date. + @memberof CDate + @return {number} The number of days. */ + daysInMonth: function() { + return this._calendar.daysInMonth(this); + }, + + /** Retrieve the day of the week for this date. + @memberof CDate + @return {number} The day of the week: 0 to number of days - 1. */ + dayOfWeek: function() { + return this._calendar.dayOfWeek(this); + }, + + /** Determine whether this date is a week day. + @memberof CDate + @return {boolean} true if a week day, false if not. */ + weekDay: function() { + return this._calendar.weekDay(this); + }, + + /** Retrieve additional information about this date. + @memberof CDate + @return {object} Additional information - contents depends on calendar. */ + extraInfo: function() { + return this._calendar.extraInfo(this); + }, + + /** Add period(s) to a date. + @memberof CDate + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. */ + add: function(offset, period) { + return this._calendar.add(this, offset, period); + }, + + /** Set a portion of the date. + @memberof CDate + @param value {number} The new value for the period. + @param period {string} One of 'y' for year, 'm' for month, 'd' for day. + @return {CDate} The updated date. + @throws Error if not a valid date. */ + set: function(value, period) { + return this._calendar.set(this, value, period); + }, + + /** Compare this date to another date. + @memberof CDate + @param date {CDate} The other date. + @return {number} -1 if this date is before the other date, + 0 if they are equal, or +1 if this date is after the other date. */ + compareTo: function(date) { + if (this._calendar.name !== date._calendar.name) { + throw (_exports.local.differentCalendars || _exports.regionalOptions[''].differentCalendars). + replace(/\{0\}/, this._calendar.local.name).replace(/\{1\}/, date._calendar.local.name); + } + var c = (this._year !== date._year ? this._year - date._year : + this._month !== date._month ? this.monthOfYear() - date.monthOfYear() : + this._day - date._day); + return (c === 0 ? 0 : (c < 0 ? -1 : +1)); + }, + + /** Retrieve the calendar backing this date. + @memberof CDate + @return {BaseCalendar} The calendar implementation. */ + calendar: function() { + return this._calendar; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof CDate + @return {number} The equivalent Julian date. */ + toJD: function() { + return this._calendar.toJD(this); + }, + + /** Create a new date from a Julian date. + @memberof CDate + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + return this._calendar.fromJD(jd); + }, + + /** Convert this date to a standard (Gregorian) JavaScript Date. + @memberof CDate + @return {Date} The equivalent JavaScript date. */ + toJSDate: function() { + return this._calendar.toJSDate(this); + }, + + /** Create a new date from a standard (Gregorian) JavaScript Date. + @memberof CDate + @param jsd {Date} The JavaScript date to convert. + @return {CDate} The equivalent date. */ + fromJSDate: function(jsd) { + return this._calendar.fromJSDate(jsd); + }, + + /** Convert to a string for display. + @memberof CDate + @return {string} This date as a string. */ + toString: function() { + return (this.year() < 0 ? '-' : '') + pad(Math.abs(this.year()), 4) + + '-' + pad(this.month(), 2) + '-' + pad(this.day(), 2); + } +}); + +/** Basic functionality for all calendars. + Other calendars should extend this: +
OtherCalendar.prototype = new BaseCalendar;
+ @class BaseCalendar */ +function BaseCalendar() { + this.shortYearCutoff = '+10'; +} + +assign(BaseCalendar.prototype, { + _validateLevel: 0, // "Stack" to turn validation on/off + + /** Create a new date within this calendar - today if no parameters given. + @memberof BaseCalendar + @param year {CDate|number} The date to duplicate or the year for the date. + @param [month] {number} The month for the date. + @param [day] {number} The day for the date. + @return {CDate} The new date. + @throws Error if not a valid date or a different calendar used. */ + newDate: function(year, month, day) { + if (year == null) { + return this.today(); + } + if (year.year) { + this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + day = year.day(); + month = year.month(); + year = year.year(); + } + return new CDate(this, year, month, day); + }, + + /** Create a new date for today. + @memberof BaseCalendar + @return {CDate} Today's date. */ + today: function() { + return this.fromJSDate(new Date()); + }, + + /** Retrieve the epoch designator for this date. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {string} The current epoch. + @throws Error if an invalid year or a different calendar used. */ + epoch: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return (date.year() < 0 ? this.local.epochs[0] : this.local.epochs[1]); + }, + + /** Format the year, if not a simple sequential number + @memberof BaseCalendar + @param year {CDate|number} The date to format or the year to format. + @return {string} The formatted year. + @throws Error if an invalid year or a different calendar used. */ + formatYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return (date.year() < 0 ? '-' : '') + pad(Math.abs(date.year()), 4) + }, + + /** Retrieve the number of months in a year. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return 12; + }, + + /** Calculate the month's ordinal position within the year - + for those calendars that don't start at month 1! + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param month {number} The month to examine. + @return {number} The ordinal position, starting from minMonth. + @throws Error if an invalid year/month or a different calendar used. */ + monthOfYear: function(year, month) { + var date = this._validate(year, month, this.minDay, + _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth); + return (date.month() + this.monthsInYear(date) - this.firstMonth) % + this.monthsInYear(date) + this.minMonth; + }, + + /** Calculate actual month from ordinal position, starting from minMonth. + @memberof BaseCalendar + @param year {number} The year to examine. + @param ord {number} The month's ordinal position. + @return {number} The month's number. + @throws Error if an invalid year/month. */ + fromMonthOfYear: function(year, ord) { + var m = (ord + this.firstMonth - 2 * this.minMonth) % + this.monthsInYear(year) + this.minMonth; + this._validate(year, m, this.minDay, + _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth); + return m; + }, + + /** Retrieve the number of days in a year. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return (this.leapYear(date) ? 366 : 365); + }, + + /** Retrieve the day of the year for a date. + @memberof BaseCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The day of the year. + @throws Error if an invalid date or a different calendar used. */ + dayOfYear: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return date.toJD() - this.newDate(date.year(), + this.fromMonthOfYear(date.year(), this.minMonth), this.minDay).toJD() + 1; + }, + + /** Retrieve the number of days in a week. + @memberof BaseCalendar + @return {number} The number of days. */ + daysInWeek: function() { + return 7; + }, + + /** Retrieve the day of the week for a date. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The day of the week: 0 to number of days - 1. + @throws Error if an invalid date or a different calendar used. */ + dayOfWeek: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return (Math.floor(this.toJD(date)) + 2) % this.daysInWeek(); + }, + + /** Retrieve additional information about a date. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return {}; + }, + + /** Add period(s) to a date. + Cater for no year zero. + @memberof BaseCalendar + @param date {CDate} The starting date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. + @throws Error if a different calendar used. */ + add: function(date, offset, period) { + this._validate(date, this.minMonth, this.minDay, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return this._correctAdd(date, this._add(date, offset, period), offset, period); + }, + + /** Add period(s) to a date. + @memberof BaseCalendar + @private + @param date {CDate} The starting date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. */ + _add: function(date, offset, period) { + this._validateLevel++; + if (period === 'd' || period === 'w') { + var jd = date.toJD() + offset * (period === 'w' ? this.daysInWeek() : 1); + var d = date.calendar().fromJD(jd); + this._validateLevel--; + return [d.year(), d.month(), d.day()]; + } + try { + var y = date.year() + (period === 'y' ? offset : 0); + var m = date.monthOfYear() + (period === 'm' ? offset : 0); + var d = date.day();// + (period === 'd' ? offset : 0) + + //(period === 'w' ? offset * this.daysInWeek() : 0); + var resyncYearMonth = function(calendar) { + while (m < calendar.minMonth) { + y--; + m += calendar.monthsInYear(y); + } + var yearMonths = calendar.monthsInYear(y); + while (m > yearMonths - 1 + calendar.minMonth) { + y++; + m -= yearMonths; + yearMonths = calendar.monthsInYear(y); + } + }; + if (period === 'y') { + if (date.month() !== this.fromMonthOfYear(y, m)) { // Hebrew + m = this.newDate(y, date.month(), this.minDay).monthOfYear(); + } + m = Math.min(m, this.monthsInYear(y)); + d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m))); + } + else if (period === 'm') { + resyncYearMonth(this); + d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m))); + } + var ymd = [y, this.fromMonthOfYear(y, m), d]; + this._validateLevel--; + return ymd; + } + catch (e) { + this._validateLevel--; + throw e; + } + }, + + /** Correct a candidate date after adding period(s) to a date. + Handle no year zero if necessary. + @memberof BaseCalendar + @private + @param date {CDate} The starting date. + @param ymd {number[]} The added date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. */ + _correctAdd: function(date, ymd, offset, period) { + if (!this.hasYearZero && (period === 'y' || period === 'm')) { + if (ymd[0] === 0 || // In year zero + (date.year() > 0) !== (ymd[0] > 0)) { // Crossed year zero + var adj = {y: [1, 1, 'y'], m: [1, this.monthsInYear(-1), 'm'], + w: [this.daysInWeek(), this.daysInYear(-1), 'd'], + d: [1, this.daysInYear(-1), 'd']}[period]; + var dir = (offset < 0 ? -1 : +1); + ymd = this._add(date, offset * adj[0] + dir * adj[1], adj[2]); + } + } + return date.date(ymd[0], ymd[1], ymd[2]); + }, + + /** Set a portion of the date. + @memberof BaseCalendar + @param date {CDate} The starting date. + @param value {number} The new value for the period. + @param period {string} One of 'y' for year, 'm' for month, 'd' for day. + @return {CDate} The updated date. + @throws Error if an invalid date or a different calendar used. */ + set: function(date, value, period) { + this._validate(date, this.minMonth, this.minDay, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + var y = (period === 'y' ? value : date.year()); + var m = (period === 'm' ? value : date.month()); + var d = (period === 'd' ? value : date.day()); + if (period === 'y' || period === 'm') { + d = Math.min(d, this.daysInMonth(y, m)); + } + return date.date(y, m, d); + }, + + /** Determine whether a date is valid for this calendar. + @memberof BaseCalendar + @param year {number} The year to examine. + @param month {number} The month to examine. + @param day {number} The day to examine. + @return {boolean} true if a valid date, false if not. */ + isValid: function(year, month, day) { + this._validateLevel++; + var valid = (this.hasYearZero || year !== 0); + if (valid) { + var date = this.newDate(year, month, this.minDay); + valid = (month >= this.minMonth && month - this.minMonth < this.monthsInYear(date)) && + (day >= this.minDay && day - this.minDay < this.daysInMonth(date)); + } + this._validateLevel--; + return valid; + }, + + /** Convert the date to a standard (Gregorian) JavaScript Date. + @memberof BaseCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {Date} The equivalent JavaScript date. + @throws Error if an invalid date or a different calendar used. */ + toJSDate: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return _exports.instance().fromJD(this.toJD(date)).toJSDate(); + }, + + /** Convert the date from a standard (Gregorian) JavaScript Date. + @memberof BaseCalendar + @param jsd {Date} The JavaScript date. + @return {CDate} The equivalent calendar date. */ + fromJSDate: function(jsd) { + return this.fromJD(_exports.instance().fromJSDate(jsd).toJD()); + }, + + /** Check that a candidate date is from the same calendar and is valid. + @memberof BaseCalendar + @private + @param year {CDate|number} The date to validate or the year to validate. + @param [month] {number} The month to validate. + @param [day] {number} The day to validate. + @param error {string} Rrror message if invalid. + @throws Error if different calendars used or invalid date. */ + _validate: function(year, month, day, error) { + if (year.year) { + if (this._validateLevel === 0 && this.name !== year.calendar().name) { + throw (_exports.local.differentCalendars || _exports.regionalOptions[''].differentCalendars). + replace(/\{0\}/, this.local.name).replace(/\{1\}/, year.calendar().local.name); + } + return year; + } + try { + this._validateLevel++; + if (this._validateLevel === 1 && !this.isValid(year, month, day)) { + throw error.replace(/\{0\}/, this.local.name); + } + var date = this.newDate(year, month, day); + this._validateLevel--; + return date; + } + catch (e) { + this._validateLevel--; + throw e; + } + } +}); + +/** Implementation of the Proleptic Gregorian Calendar. + See http://en.wikipedia.org/wiki/Gregorian_calendar + and http://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar. + @class GregorianCalendar + @augments BaseCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function GregorianCalendar(language) { + this.local = this.regionalOptions[language] || this.regionalOptions['']; +} + +GregorianCalendar.prototype = new BaseCalendar; + +assign(GregorianCalendar.prototype, { + /** The calendar name. + @memberof GregorianCalendar */ + name: 'Gregorian', + /** Julian date of start of Gregorian epoch: 1 January 0001 CE. + @memberof GregorianCalendar */ + jdEpoch: 1721425.5, + /** Days per month in a common year. + @memberof GregorianCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof GregorianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof GregorianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof GregorianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof GregorianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof GregorianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Gregorian', + epochs: ['BCE', 'CE'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'mm/dd/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year, starting from 1. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Thursday of this week starting on Monday + var checkDate = this.newDate(year, month, day); + checkDate.add(4 - (checkDate.dayOfWeek() || 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, + _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof GregorianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + if (year < 0) { year++; } // No year zero + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + if (month < 3) { + month += 12; + year--; + } + var a = Math.floor(year / 100); + var b = 2 - a + Math.floor(a / 4); + return Math.floor(365.25 * (year + 4716)) + + Math.floor(30.6001 * (month + 1)) + day + b - 1524.5; + }, + + /** Create a new date from a Julian date. + @memberof GregorianCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + var z = Math.floor(jd + 0.5); + var a = Math.floor((z - 1867216.25) / 36524.25); + a = z + 1 + a - Math.floor(a / 4); + var b = a + 1524; + var c = Math.floor((b - 122.1) / 365.25); + var d = Math.floor(365.25 * c); + var e = Math.floor((b - d) / 30.6001); + var day = b - d - Math.floor(e * 30.6001); + var month = e - (e > 13.5 ? 13 : 1); + var year = c - (month > 2.5 ? 4716 : 4715); + if (year <= 0) { year--; } // No year zero + return this.newDate(year, month, day); + }, + + /** Convert this date to a standard (Gregorian) JavaScript Date. + @memberof GregorianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {Date} The equivalent JavaScript date. + @throws Error if an invalid date or a different calendar used. */ + toJSDate: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + var jsd = new Date(date.year(), date.month() - 1, date.day()); + jsd.setHours(0); + jsd.setMinutes(0); + jsd.setSeconds(0); + jsd.setMilliseconds(0); + // Hours may be non-zero on daylight saving cut-over: + // > 12 when midnight changeover, but then cannot generate + // midnight datetime, so jump to 1AM, otherwise reset. + jsd.setHours(jsd.getHours() > 12 ? jsd.getHours() + 2 : 0); + return jsd; + }, + + /** Create a new date from a standard (Gregorian) JavaScript Date. + @memberof GregorianCalendar + @param jsd {Date} The JavaScript date to convert. + @return {CDate} The equivalent date. */ + fromJSDate: function(jsd) { + return this.newDate(jsd.getFullYear(), jsd.getMonth() + 1, jsd.getDate()); + } +}); + +// Singleton manager +var _exports = module.exports = new Calendars(); + +// Date template +_exports.cdate = CDate; + +// Base calendar template +_exports.baseCalendar = BaseCalendar; + +// Gregorian calendar implementation +_exports.calendars.gregorian = GregorianCalendar; + + +},{"object-assign":71}],136:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Calendars extras for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var assign = _dereq_('object-assign'); +var main = _dereq_('./main'); + + +assign(main.regionalOptions[''], { + invalidArguments: 'Invalid arguments', + invalidFormat: 'Cannot format a date from another calendar', + missingNumberAt: 'Missing number at position {0}', + unknownNameAt: 'Unknown name at position {0}', + unexpectedLiteralAt: 'Unexpected literal at position {0}', + unexpectedText: 'Additional text found at end' +}); +main.local = main.regionalOptions['']; + +assign(main.cdate.prototype, { + + /** Format this date. + Found in the jquery.calendars.plus.js module. + @memberof CDate + @param [format] {string} The date format to use (see formatDate). + @param [settings] {object} Options for the formatDate function. + @return {string} The formatted date. */ + formatDate: function(format, settings) { + if (typeof format !== 'string') { + settings = format; + format = ''; + } + return this._calendar.formatDate(format || '', this, settings); + } +}); + +assign(main.baseCalendar.prototype, { + + UNIX_EPOCH: main.instance().newDate(1970, 1, 1).toJD(), + SECS_PER_DAY: 24 * 60 * 60, + TICKS_EPOCH: main.instance().jdEpoch, // 1 January 0001 CE + TICKS_PER_DAY: 24 * 60 * 60 * 10000000, + + /** Date form for ATOM (RFC 3339/ISO 8601). + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + ATOM: 'yyyy-mm-dd', + /** Date form for cookies. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + COOKIE: 'D, dd M yyyy', + /** Date form for full date. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + FULL: 'DD, MM d, yyyy', + /** Date form for ISO 8601. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + ISO_8601: 'yyyy-mm-dd', + /** Date form for Julian date. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + JULIAN: 'J', + /** Date form for RFC 822. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_822: 'D, d M yy', + /** Date form for RFC 850. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_850: 'DD, dd-M-yy', + /** Date form for RFC 1036. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_1036: 'D, d M yy', + /** Date form for RFC 1123. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_1123: 'D, d M yyyy', + /** Date form for RFC 2822. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_2822: 'D, d M yyyy', + /** Date form for RSS (RFC 822). + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RSS: 'D, d M yy', + /** Date form for Windows ticks. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + TICKS: '!', + /** Date form for Unix timestamp. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + TIMESTAMP: '@', + /** Date form for W3c (ISO 8601). + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + W3C: 'yyyy-mm-dd', + + /** Format a date object into a string value. + The format can be combinations of the following: +
    +
  • d - day of month (no leading zero)
  • +
  • dd - day of month (two digit)
  • +
  • o - day of year (no leading zeros)
  • +
  • oo - day of year (three digit)
  • +
  • D - day name short
  • +
  • DD - day name long
  • +
  • w - week of year (no leading zero)
  • +
  • ww - week of year (two digit)
  • +
  • m - month of year (no leading zero)
  • +
  • mm - month of year (two digit)
  • +
  • M - month name short
  • +
  • MM - month name long
  • +
  • yy - year (two digit)
  • +
  • yyyy - year (four digit)
  • +
  • YYYY - formatted year
  • +
  • J - Julian date (days since January 1, 4713 BCE Greenwich noon)
  • +
  • @ - Unix timestamp (s since 01/01/1970)
  • +
  • ! - Windows ticks (100ns since 01/01/0001)
  • +
  • '...' - literal text
  • +
  • '' - single quote
  • +
+ Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar + @param [format] {string} The desired format of the date (defaults to calendar format). + @param date {CDate} The date value to format. + @param [settings] {object} Addition options, whose attributes include: + @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday. + @property [dayNames] {string[]} Names of the days from Sunday. + @property [monthNamesShort] {string[]} Abbreviated names of the months. + @property [monthNames] {string[]} Names of the months. + @property [calculateWeek] {CalendarsPickerCalculateWeek} Function that determines week of the year. + @property [localNumbers=false] {boolean} true to localise numbers (if available), + false to use normal Arabic numerals. + @return {string} The date in the above format. + @throws Errors if the date is from a different calendar. */ + formatDate: function(format, date, settings) { + if (typeof format !== 'string') { + settings = date; + date = format; + format = ''; + } + if (!date) { + return ''; + } + if (date.calendar() !== this) { + throw main.local.invalidFormat || main.regionalOptions[''].invalidFormat; + } + format = format || this.local.dateFormat; + settings = settings || {}; + var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort; + var dayNames = settings.dayNames || this.local.dayNames; + var monthNumbers = settings.monthNumbers || this.local.monthNumbers; + var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort; + var monthNames = settings.monthNames || this.local.monthNames; + var calculateWeek = settings.calculateWeek || this.local.calculateWeek; + // Check whether a format character is doubled + var doubled = function(match, step) { + var matches = 1; + while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) { + matches++; + } + iFormat += matches - 1; + return Math.floor(matches / (step || 1)) > 1; + }; + // Format a number, with leading zeroes if necessary + var formatNumber = function(match, value, len, step) { + var num = '' + value; + if (doubled(match, step)) { + while (num.length < len) { + num = '0' + num; + } + } + return num; + }; + // Format a name, short or long as requested + var formatName = function(match, value, shortNames, longNames) { + return (doubled(match) ? longNames[value] : shortNames[value]); + }; + // Format month number + // (e.g. Chinese calendar needs to account for intercalary months) + var calendar = this; + var formatMonth = function(date) { + return (typeof monthNumbers === 'function') ? + monthNumbers.call(calendar, date, doubled('m')) : + localiseNumbers(formatNumber('m', date.month(), 2)); + }; + // Format a month name, short or long as requested + var formatMonthName = function(date, useLongName) { + if (useLongName) { + return (typeof monthNames === 'function') ? + monthNames.call(calendar, date) : + monthNames[date.month() - calendar.minMonth]; + } else { + return (typeof monthNamesShort === 'function') ? + monthNamesShort.call(calendar, date) : + monthNamesShort[date.month() - calendar.minMonth]; + } + }; + // Localise numbers if requested and available + var digits = this.local.digits; + var localiseNumbers = function(value) { + return (settings.localNumbers && digits ? digits(value) : value); + }; + var output = ''; + var literal = false; + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !doubled("'")) { + literal = false; + } + else { + output += format.charAt(iFormat); + } + } + else { + switch (format.charAt(iFormat)) { + case 'd': output += localiseNumbers(formatNumber('d', date.day(), 2)); break; + case 'D': output += formatName('D', date.dayOfWeek(), + dayNamesShort, dayNames); break; + case 'o': output += formatNumber('o', date.dayOfYear(), 3); break; + case 'w': output += formatNumber('w', date.weekOfYear(), 2); break; + case 'm': output += formatMonth(date); break; + case 'M': output += formatMonthName(date, doubled('M')); break; + case 'y': + output += (doubled('y', 2) ? date.year() : + (date.year() % 100 < 10 ? '0' : '') + date.year() % 100); + break; + case 'Y': + doubled('Y', 2); + output += date.formatYear(); + break; + case 'J': output += date.toJD(); break; + case '@': output += (date.toJD() - this.UNIX_EPOCH) * this.SECS_PER_DAY; break; + case '!': output += (date.toJD() - this.TICKS_EPOCH) * this.TICKS_PER_DAY; break; + case "'": + if (doubled("'")) { + output += "'"; + } + else { + literal = true; + } + break; + default: + output += format.charAt(iFormat); + } + } + } + return output; + }, + + /** Parse a string value into a date object. + See formatDate for the possible formats, plus: +
    +
  • * - ignore rest of string
  • +
+ Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar + @param format {string} The expected format of the date ('' for default calendar format). + @param value {string} The date in the above format. + @param [settings] {object} Additional options whose attributes include: + @property [shortYearCutoff] {number} The cutoff year for determining the century. + @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday. + @property [dayNames] {string[]} Names of the days from Sunday. + @property [monthNamesShort] {string[]} Abbreviated names of the months. + @property [monthNames] {string[]} Names of the months. + @return {CDate} The extracted date value or null if value is blank. + @throws Errors if the format and/or value are missing, + if the value doesn't match the format, or if the date is invalid. */ + parseDate: function(format, value, settings) { + if (value == null) { + throw main.local.invalidArguments || main.regionalOptions[''].invalidArguments; + } + value = (typeof value === 'object' ? value.toString() : value + ''); + if (value === '') { + return null; + } + format = format || this.local.dateFormat; + settings = settings || {}; + var shortYearCutoff = settings.shortYearCutoff || this.shortYearCutoff; + shortYearCutoff = (typeof shortYearCutoff !== 'string' ? shortYearCutoff : + this.today().year() % 100 + parseInt(shortYearCutoff, 10)); + var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort; + var dayNames = settings.dayNames || this.local.dayNames; + var parseMonth = settings.parseMonth || this.local.parseMonth; + var monthNumbers = settings.monthNumbers || this.local.monthNumbers; + var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort; + var monthNames = settings.monthNames || this.local.monthNames; + var jd = -1; + var year = -1; + var month = -1; + var day = -1; + var doy = -1; + var shortYear = false; + var literal = false; + // Check whether a format character is doubled + var doubled = function(match, step) { + var matches = 1; + while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) { + matches++; + } + iFormat += matches - 1; + return Math.floor(matches / (step || 1)) > 1; + }; + // Extract a number from the string value + var getNumber = function(match, step) { + var isDoubled = doubled(match, step); + var size = [2, 3, isDoubled ? 4 : 2, isDoubled ? 4 : 2, 10, 11, 20]['oyYJ@!'.indexOf(match) + 1]; + var digits = new RegExp('^-?\\d{1,' + size + '}'); + var num = value.substring(iValue).match(digits); + if (!num) { + throw (main.local.missingNumberAt || main.regionalOptions[''].missingNumberAt). + replace(/\{0\}/, iValue); + } + iValue += num[0].length; + return parseInt(num[0], 10); + }; + // Extract a month number from the string value + var calendar = this; + var getMonthNumber = function() { + if (typeof monthNumbers === 'function') { + doubled('m'); // update iFormat + var month = monthNumbers.call(calendar, value.substring(iValue)); + iValue += month.length; + return month; + } + + return getNumber('m'); + }; + // Extract a name from the string value and convert to an index + var getName = function(match, shortNames, longNames, step) { + var names = (doubled(match, step) ? longNames : shortNames); + for (var i = 0; i < names.length; i++) { + if (value.substr(iValue, names[i].length).toLowerCase() === names[i].toLowerCase()) { + iValue += names[i].length; + return i + calendar.minMonth; + } + } + throw (main.local.unknownNameAt || main.regionalOptions[''].unknownNameAt). + replace(/\{0\}/, iValue); + }; + // Extract a month number from the string value + var getMonthName = function() { + if (typeof monthNames === 'function') { + var month = doubled('M') ? + monthNames.call(calendar, value.substring(iValue)) : + monthNamesShort.call(calendar, value.substring(iValue)); + iValue += month.length; + return month; + } + + return getName('M', monthNamesShort, monthNames); + }; + // Confirm that a literal character matches the string value + var checkLiteral = function() { + if (value.charAt(iValue) !== format.charAt(iFormat)) { + throw (main.local.unexpectedLiteralAt || + main.regionalOptions[''].unexpectedLiteralAt).replace(/\{0\}/, iValue); + } + iValue++; + }; + var iValue = 0; + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !doubled("'")) { + literal = false; + } + else { + checkLiteral(); + } + } + else { + switch (format.charAt(iFormat)) { + case 'd': day = getNumber('d'); break; + case 'D': getName('D', dayNamesShort, dayNames); break; + case 'o': doy = getNumber('o'); break; + case 'w': getNumber('w'); break; + case 'm': month = getMonthNumber(); break; + case 'M': month = getMonthName(); break; + case 'y': + var iSave = iFormat; + shortYear = !doubled('y', 2); + iFormat = iSave; + year = getNumber('y', 2); + break; + case 'Y': year = getNumber('Y', 2); break; + case 'J': + jd = getNumber('J') + 0.5; + if (value.charAt(iValue) === '.') { + iValue++; + getNumber('J'); + } + break; + case '@': jd = getNumber('@') / this.SECS_PER_DAY + this.UNIX_EPOCH; break; + case '!': jd = getNumber('!') / this.TICKS_PER_DAY + this.TICKS_EPOCH; break; + case '*': iValue = value.length; break; + case "'": + if (doubled("'")) { + checkLiteral(); + } + else { + literal = true; + } + break; + default: checkLiteral(); + } + } + } + if (iValue < value.length) { + throw main.local.unexpectedText || main.regionalOptions[''].unexpectedText; + } + if (year === -1) { + year = this.today().year(); + } + else if (year < 100 && shortYear) { + year += (shortYearCutoff === -1 ? 1900 : this.today().year() - + this.today().year() % 100 - (year <= shortYearCutoff ? 0 : 100)); + } + if (typeof month === 'string') { + month = parseMonth.call(this, year, month); + } + if (doy > -1) { + month = 1; + day = doy; + for (var dim = this.daysInMonth(year, month); day > dim; dim = this.daysInMonth(year, month)) { + month++; + day -= dim; + } + } + return (jd > -1 ? this.fromJD(jd) : this.newDate(year, month, day)); + }, + + /** A date may be specified as an exact value or a relative one. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar + @param dateSpec {CDate|number|string} The date as an object or string in the given format or + an offset - numeric days from today, or string amounts and periods, e.g. '+1m +2w'. + @param defaultDate {CDate} The date to use if no other supplied, may be null. + @param currentDate {CDate} The current date as a possible basis for relative dates, + if null today is used (optional) + @param [dateFormat] {string} The expected date format - see formatDate. + @param [settings] {object} Additional options whose attributes include: + @property [shortYearCutoff] {number} The cutoff year for determining the century. + @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday. + @property [dayNames] {string[]} Names of the days from Sunday. + @property [monthNamesShort] {string[]} Abbreviated names of the months. + @property [monthNames] {string[]} Names of the months. + @return {CDate} The decoded date. */ + determineDate: function(dateSpec, defaultDate, currentDate, dateFormat, settings) { + if (currentDate && typeof currentDate !== 'object') { + settings = dateFormat; + dateFormat = currentDate; + currentDate = null; + } + if (typeof dateFormat !== 'string') { + settings = dateFormat; + dateFormat = ''; + } + var calendar = this; + var offsetString = function(offset) { + try { + return calendar.parseDate(dateFormat, offset, settings); + } + catch (e) { + // Ignore + } + offset = offset.toLowerCase(); + var date = (offset.match(/^c/) && currentDate ? + currentDate.newDate() : null) || calendar.today(); + var pattern = /([+-]?[0-9]+)\s*(d|w|m|y)?/g; + var matches = pattern.exec(offset); + while (matches) { + date.add(parseInt(matches[1], 10), matches[2] || 'd'); + matches = pattern.exec(offset); + } + return date; + }; + defaultDate = (defaultDate ? defaultDate.newDate() : null); + dateSpec = (dateSpec == null ? defaultDate : + (typeof dateSpec === 'string' ? offsetString(dateSpec) : (typeof dateSpec === 'number' ? + (isNaN(dateSpec) || dateSpec === Infinity || dateSpec === -Infinity ? defaultDate : + calendar.today().add(dateSpec, 'd')) : calendar.newDate(dateSpec)))); + return dateSpec; + } +}); + + +},{"./main":135,"object-assign":71}],137:[function(_dereq_,module,exports){ 'use strict'; /** @@ -20612,15 +30666,7 @@ module.exports = [ } ]; -},{}],90:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],138:[function(_dereq_,module,exports){ 'use strict'; var ARROWPATHS = _dereq_('./arrow_paths'); @@ -20659,192 +30705,143 @@ function arrowCoordinateDescription(axis, lower, upper) { module.exports = templatedArray('annotation', { visible: { valType: 'boolean', - dflt: true, editType: 'calc+arraydraw', - }, text: { valType: 'string', - editType: 'calc+arraydraw', - }, textangle: { valType: 'angle', dflt: 0, - editType: 'calc+arraydraw', - }, font: fontAttrs({ editType: 'calc+arraydraw', colorEditType: 'arraydraw', - }), width: { valType: 'number', min: 1, dflt: null, - editType: 'calc+arraydraw', - }, height: { valType: 'number', min: 1, dflt: null, - editType: 'calc+arraydraw', - }, opacity: { valType: 'number', min: 0, max: 1, dflt: 1, - editType: 'arraydraw', - }, align: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'center', - editType: 'arraydraw', - }, valign: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], dflt: 'middle', - editType: 'arraydraw', - }, bgcolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'arraydraw', - }, bordercolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'arraydraw', - }, borderpad: { valType: 'number', min: 0, dflt: 1, - editType: 'calc+arraydraw', - }, borderwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'calc+arraydraw', - }, // arrow showarrow: { valType: 'boolean', dflt: true, - editType: 'calc+arraydraw', - }, arrowcolor: { valType: 'color', - editType: 'arraydraw', - }, arrowhead: { valType: 'integer', min: 0, max: ARROWPATHS.length, dflt: 1, - editType: 'arraydraw', - }, startarrowhead: { valType: 'integer', min: 0, max: ARROWPATHS.length, dflt: 1, - editType: 'arraydraw', - }, arrowside: { valType: 'flaglist', flags: ['end', 'start'], extras: ['none'], dflt: 'end', - editType: 'arraydraw', - }, arrowsize: { valType: 'number', min: 0.3, dflt: 1, - editType: 'calc+arraydraw', - }, startarrowsize: { valType: 'number', min: 0.3, dflt: 1, - editType: 'calc+arraydraw', - }, arrowwidth: { valType: 'number', min: 0.1, - editType: 'calc+arraydraw', - }, standoff: { valType: 'number', min: 0, dflt: 0, - editType: 'calc+arraydraw', - }, startstandoff: { valType: 'number', min: 0, dflt: 0, - editType: 'calc+arraydraw', - }, ax: { valType: 'any', - editType: 'calc+arraydraw', - }, ay: { valType: 'any', - editType: 'calc+arraydraw', - }, axref: { valType: 'enumerated', @@ -20853,9 +30850,7 @@ module.exports = templatedArray('annotation', { 'pixel', cartesianConstants.idRegex.x.toString() ], - editType: 'calc', - }, ayref: { valType: 'enumerated', @@ -20864,9 +30859,7 @@ module.exports = templatedArray('annotation', { 'pixel', cartesianConstants.idRegex.y.toString() ], - editType: 'calc', - }, // positioning xref: { @@ -20875,30 +30868,22 @@ module.exports = templatedArray('annotation', { 'paper', cartesianConstants.idRegex.x.toString() ], - editType: 'calc', - }, x: { valType: 'any', - editType: 'calc+arraydraw', - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'auto', - editType: 'calc+arraydraw', - }, xshift: { valType: 'number', dflt: 0, - editType: 'calc+arraydraw', - }, yref: { valType: 'enumerated', @@ -20906,104 +30891,70 @@ module.exports = templatedArray('annotation', { 'paper', cartesianConstants.idRegex.y.toString() ], - editType: 'calc', - }, y: { valType: 'any', - editType: 'calc+arraydraw', - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'auto', - editType: 'calc+arraydraw', - }, yshift: { valType: 'number', dflt: 0, - editType: 'calc+arraydraw', - }, clicktoshow: { valType: 'enumerated', values: [false, 'onoff', 'onout'], dflt: false, - editType: 'arraydraw', - }, xclick: { valType: 'any', - editType: 'arraydraw', - }, yclick: { valType: 'any', - editType: 'arraydraw', - }, hovertext: { valType: 'string', - editType: 'arraydraw', - }, hoverlabel: { bgcolor: { valType: 'color', - editType: 'arraydraw', - }, bordercolor: { valType: 'color', - editType: 'arraydraw', - }, font: fontAttrs({ editType: 'arraydraw', - }), editType: 'arraydraw' }, captureevents: { valType: 'boolean', - editType: 'arraydraw', - }, editType: 'calc', _deprecated: { ref: { valType: 'string', - editType: 'calc', - } } }); -},{"../../constants/axis_placeable_objects":208,"../../plot_api/plot_template":268,"../../plots/cartesian/constants":285,"../../plots/font_attributes":307,"./arrow_paths":89}],91:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/axis_placeable_objects":261,"../../plot_api/plot_template":320,"../../plots/cartesian/constants":337,"../../plots/font_attributes":359,"./arrow_paths":137}],139:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21085,15 +31036,7 @@ function calcAxisExpansion(ann, ax) { ann._extremes[axId] = extremes; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"./draw":96}],92:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"./draw":144}],140:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21218,20 +31161,12 @@ function getToggleSets(gd, hoverData) { return {on: onSet, off: offSet, explicitOff: explicitOffSet}; } -// to handle log axes until v2 +// to handle log axes until v3 function clickData2r(d, ax) { return ax.type === 'log' ? ax.l2r(d) : ax.d2r(d); } -},{"../../lib":233,"../../plot_api/plot_template":268,"../../registry":326}],93:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../registry":373}],141:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21302,16 +31237,7 @@ module.exports = function handleAnnotationCommonDefaults(annIn, annOut, fullLayo coerce('captureevents', !!hoverText); }; -},{"../../lib":233,"../color":105}],94:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../color":155}],142:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -21321,7 +31247,7 @@ var toLogRange = _dereq_('../../lib/to_log_range'); * convertCoords: when converting an axis between log and linear * you need to alter any annotations on that axis to keep them * pointing at the same data point. - * In v2.0 this will become obsolete + * In v3.0 this will become obsolete * * gd: the plot div * ax: the axis being changed @@ -21365,16 +31291,7 @@ module.exports = function convertCoords(gd, ax, newType, doExtra) { } }; -},{"../../lib/to_log_range":257,"fast-isnumeric":23}],95:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/to_log_range":309,"fast-isnumeric":31}],143:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21473,18 +31390,10 @@ function handleAnnotationDefaults(annIn, annOut, fullLayout) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"./attributes":90,"./common_defaults":93}],96:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"./attributes":138,"./common_defaults":141}],144:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Plots = _dereq_('../../plots/plots'); @@ -22234,19 +32143,10 @@ function drawRaw(gd, options, index, subplotId, xa, ya) { } else annText.call(textLayout); } -},{"../../lib":233,"../../lib/setcursor":253,"../../lib/svg_text_utils":255,"../../plot_api/plot_template":268,"../../plots/cartesian/axes":279,"../../plots/plots":313,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"../fx":145,"./draw_arrow_head":97,"d3":21}],97:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../lib/setcursor":305,"../../lib/svg_text_utils":307,"../../plot_api/plot_template":320,"../../plots/cartesian/axes":331,"../../plots/plots":366,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"../fx":195,"./draw_arrow_head":145,"@plotly/d3":20}],145:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../color'); @@ -22390,16 +32290,7 @@ module.exports = function drawArrowHead(el3, ends, options) { if(doEnd) drawhead(headStyle, end, endRot, scale); }; -},{"../../lib":233,"../color":105,"./arrow_paths":89,"d3":21}],98:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../color":155,"./arrow_paths":137,"@plotly/d3":20}],146:[function(_dereq_,module,exports){ 'use strict'; var drawModule = _dereq_('./draw'); @@ -22424,16 +32315,7 @@ module.exports = { convertCoords: _dereq_('./convert_coords') }; -},{"../../plots/cartesian/include_components":291,"./attributes":90,"./calc_autorange":91,"./click":92,"./convert_coords":94,"./defaults":95,"./draw":96}],99:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian/include_components":343,"./attributes":138,"./calc_autorange":139,"./click":140,"./convert_coords":142,"./defaults":143,"./draw":144}],147:[function(_dereq_,module,exports){ 'use strict'; var annAttrs = _dereq_('../annotations/attributes'); @@ -22444,28 +32326,18 @@ module.exports = overrideAll(templatedArray('annotation', { visible: annAttrs.visible, x: { valType: 'any', - - }, y: { valType: 'any', - - }, z: { valType: 'any', - - }, ax: { valType: 'number', - - }, ay: { valType: 'number', - - }, xanchor: annAttrs.xanchor, @@ -22512,15 +32384,7 @@ module.exports = overrideAll(templatedArray('annotation', { // zref: 'z' }), 'calc', 'from-root'); -},{"../../plot_api/edit_types":261,"../../plot_api/plot_template":268,"../annotations/attributes":90}],100:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plot_api/edit_types":313,"../../plot_api/plot_template":320,"../annotations/attributes":138}],148:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -22577,15 +32441,7 @@ function mockAnnAxes(ann, scene) { }; } -},{"../../lib":233,"../../plots/cartesian/axes":279}],101:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331}],149:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -22653,15 +32509,7 @@ function handleAnnotationDefaults(annIn, annOut, sceneLayout, opts) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"../annotations/common_defaults":93,"./attributes":99}],102:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"../annotations/common_defaults":141,"./attributes":147}],150:[function(_dereq_,module,exports){ 'use strict'; var drawRaw = _dereq_('../annotations/draw').drawRaw; @@ -22705,15 +32553,7 @@ module.exports = function draw(scene) { } }; -},{"../../plots/gl3d/project":310,"../annotations/draw":96}],103:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/gl3d/project":362,"../annotations/draw":144}],151:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -22753,15 +32593,298 @@ function includeGL3D(layoutIn, layoutOut) { } } -},{"../../lib":233,"../../registry":326,"./attributes":99,"./convert":100,"./defaults":101,"./draw":102}],104:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../../lib":285,"../../registry":373,"./attributes":147,"./convert":148,"./defaults":149,"./draw":150}],152:[function(_dereq_,module,exports){ +'use strict'; +// a trimmed down version of: +// https://github.com/alexcjohnson/world-calendars/blob/master/dist/index.js + +module.exports = _dereq_('world-calendars/dist/main'); + +_dereq_('world-calendars/dist/plus'); + +_dereq_('world-calendars/dist/calendars/chinese'); +_dereq_('world-calendars/dist/calendars/coptic'); +_dereq_('world-calendars/dist/calendars/discworld'); +_dereq_('world-calendars/dist/calendars/ethiopian'); +_dereq_('world-calendars/dist/calendars/hebrew'); +_dereq_('world-calendars/dist/calendars/islamic'); +_dereq_('world-calendars/dist/calendars/julian'); +_dereq_('world-calendars/dist/calendars/mayan'); +_dereq_('world-calendars/dist/calendars/nanakshahi'); +_dereq_('world-calendars/dist/calendars/nepali'); +_dereq_('world-calendars/dist/calendars/persian'); +_dereq_('world-calendars/dist/calendars/taiwan'); +_dereq_('world-calendars/dist/calendars/thai'); +_dereq_('world-calendars/dist/calendars/ummalqura'); + +},{"world-calendars/dist/calendars/chinese":121,"world-calendars/dist/calendars/coptic":122,"world-calendars/dist/calendars/discworld":123,"world-calendars/dist/calendars/ethiopian":124,"world-calendars/dist/calendars/hebrew":125,"world-calendars/dist/calendars/islamic":126,"world-calendars/dist/calendars/julian":127,"world-calendars/dist/calendars/mayan":128,"world-calendars/dist/calendars/nanakshahi":129,"world-calendars/dist/calendars/nepali":130,"world-calendars/dist/calendars/persian":131,"world-calendars/dist/calendars/taiwan":132,"world-calendars/dist/calendars/thai":133,"world-calendars/dist/calendars/ummalqura":134,"world-calendars/dist/main":135,"world-calendars/dist/plus":136}],153:[function(_dereq_,module,exports){ +'use strict'; + +var calendars = _dereq_('./calendars'); + +var Lib = _dereq_('../../lib'); +var constants = _dereq_('../../constants/numerical'); + +var EPOCHJD = constants.EPOCHJD; +var ONEDAY = constants.ONEDAY; + +var attributes = { + valType: 'enumerated', + values: Object.keys(calendars.calendars), + editType: 'calc', + dflt: 'gregorian' +}; + +var handleDefaults = function(contIn, contOut, attr, dflt) { + var attrs = {}; + attrs[attr] = attributes; + + return Lib.coerce(contIn, contOut, attrs, attr, dflt); +}; + +var handleTraceDefaults = function(traceIn, traceOut, coords, layout) { + for(var i = 0; i < coords.length; i++) { + handleDefaults(traceIn, traceOut, coords[i] + 'calendar', layout.calendar); + } +}; + +// each calendar needs its own default canonical tick. I would love to use +// 2000-01-01 (or even 0000-01-01) for them all but they don't necessarily +// all support either of those dates. Instead I'll use the most significant +// number they *do* support, biased toward the present day. +var CANONICAL_TICK = { + chinese: '2000-01-01', + coptic: '2000-01-01', + discworld: '2000-01-01', + ethiopian: '2000-01-01', + hebrew: '5000-01-01', + islamic: '1000-01-01', + julian: '2000-01-01', + mayan: '5000-01-01', + nanakshahi: '1000-01-01', + nepali: '2000-01-01', + persian: '1000-01-01', + jalali: '1000-01-01', + taiwan: '1000-01-01', + thai: '2000-01-01', + ummalqura: '1400-01-01' +}; + +// Start on a Sunday - for week ticks +// Discworld and Mayan calendars don't have 7-day weeks but we're going to give them +// 7-day week ticks so start on our Sundays. +// If anyone really cares we can customize the auto tick spacings for these calendars. +var CANONICAL_SUNDAY = { + chinese: '2000-01-02', + coptic: '2000-01-03', + discworld: '2000-01-03', + ethiopian: '2000-01-05', + hebrew: '5000-01-01', + islamic: '1000-01-02', + julian: '2000-01-03', + mayan: '5000-01-01', + nanakshahi: '1000-01-05', + nepali: '2000-01-05', + persian: '1000-01-01', + jalali: '1000-01-01', + taiwan: '1000-01-04', + thai: '2000-01-04', + ummalqura: '1400-01-06' +}; + +var DFLTRANGE = { + chinese: ['2000-01-01', '2001-01-01'], + coptic: ['1700-01-01', '1701-01-01'], + discworld: ['1800-01-01', '1801-01-01'], + ethiopian: ['2000-01-01', '2001-01-01'], + hebrew: ['5700-01-01', '5701-01-01'], + islamic: ['1400-01-01', '1401-01-01'], + julian: ['2000-01-01', '2001-01-01'], + mayan: ['5200-01-01', '5201-01-01'], + nanakshahi: ['0500-01-01', '0501-01-01'], + nepali: ['2000-01-01', '2001-01-01'], + persian: ['1400-01-01', '1401-01-01'], + jalali: ['1400-01-01', '1401-01-01'], + taiwan: ['0100-01-01', '0101-01-01'], + thai: ['2500-01-01', '2501-01-01'], + ummalqura: ['1400-01-01', '1401-01-01'] +}; + +/* + * convert d3 templates to world-calendars templates, so our users only need + * to know d3's specifiers. Map space padding to no padding, and unknown fields + * to an ugly placeholder + */ +var UNKNOWN = '##'; +var d3ToWorldCalendars = { + 'd': {'0': 'dd', '-': 'd'}, // 2-digit or unpadded day of month + 'e': {'0': 'd', '-': 'd'}, // alternate, always unpadded day of month + 'a': {'0': 'D', '-': 'D'}, // short weekday name + 'A': {'0': 'DD', '-': 'DD'}, // full weekday name + 'j': {'0': 'oo', '-': 'o'}, // 3-digit or unpadded day of the year + 'W': {'0': 'ww', '-': 'w'}, // 2-digit or unpadded week of the year (Monday first) + 'm': {'0': 'mm', '-': 'm'}, // 2-digit or unpadded month number + 'b': {'0': 'M', '-': 'M'}, // short month name + 'B': {'0': 'MM', '-': 'MM'}, // full month name + 'y': {'0': 'yy', '-': 'yy'}, // 2-digit year (map unpadded to zero-padded) + 'Y': {'0': 'yyyy', '-': 'yyyy'}, // 4-digit year (map unpadded to zero-padded) + 'U': UNKNOWN, // Sunday-first week of the year + 'w': UNKNOWN, // day of the week [0(sunday),6] + // combined format, we replace the date part with the world-calendar version + // and the %X stays there for d3 to handle with time parts + 'c': {'0': 'D M d %X yyyy', '-': 'D M d %X yyyy'}, + 'x': {'0': 'mm/dd/yyyy', '-': 'mm/dd/yyyy'} +}; + +function worldCalFmt(fmt, x, calendar) { + var dateJD = Math.floor((x + 0.05) / ONEDAY) + EPOCHJD; + var cDate = getCal(calendar).fromJD(dateJD); + var i = 0; + var modifier, directive, directiveLen, directiveObj, replacementPart; + + while((i = fmt.indexOf('%', i)) !== -1) { + modifier = fmt.charAt(i + 1); + if(modifier === '0' || modifier === '-' || modifier === '_') { + directiveLen = 3; + directive = fmt.charAt(i + 2); + if(modifier === '_') modifier = '-'; + } else { + directive = modifier; + modifier = '0'; + directiveLen = 2; + } + directiveObj = d3ToWorldCalendars[directive]; + if(!directiveObj) { + i += directiveLen; + } else { + // code is recognized as a date part but world-calendars doesn't support it + if(directiveObj === UNKNOWN) replacementPart = UNKNOWN; + + // format the cDate according to the translated directive + else replacementPart = cDate.formatDate(directiveObj[modifier]); + + fmt = fmt.substr(0, i) + replacementPart + fmt.substr(i + directiveLen); + i += replacementPart.length; + } + } + return fmt; +} + +// cache world calendars, so we don't have to reinstantiate +// during each date-time conversion +var allCals = {}; +function getCal(calendar) { + var calendarObj = allCals[calendar]; + if(calendarObj) return calendarObj; + + calendarObj = allCals[calendar] = calendars.instance(calendar); + return calendarObj; +} + +function makeAttrs(description) { + return Lib.extendFlat({}, attributes, { description: description }); +} + +function makeTraceAttrsDescription(coord) { + return 'Sets the calendar system to use with `' + coord + '` date data.'; +} + +var xAttrs = { + xcalendar: makeAttrs(makeTraceAttrsDescription('x')) +}; + +var xyAttrs = Lib.extendFlat({}, xAttrs, { + ycalendar: makeAttrs(makeTraceAttrsDescription('y')) +}); + +var xyzAttrs = Lib.extendFlat({}, xyAttrs, { + zcalendar: makeAttrs(makeTraceAttrsDescription('z')) +}); + +var axisAttrs = makeAttrs([ + 'Sets the calendar system to use for `range` and `tick0`', + 'if this is a date axis. This does not set the calendar for', + 'interpreting data on this axis, that\'s specified in the trace', + 'or via the global `layout.calendar`' +].join(' ')); + +module.exports = { + moduleType: 'component', + name: 'calendars', + + schema: { + traces: { + scatter: xyAttrs, + bar: xyAttrs, + box: xyAttrs, + heatmap: xyAttrs, + contour: xyAttrs, + histogram: xyAttrs, + histogram2d: xyAttrs, + histogram2dcontour: xyAttrs, + scatter3d: xyzAttrs, + surface: xyzAttrs, + mesh3d: xyzAttrs, + scattergl: xyAttrs, + ohlc: xAttrs, + candlestick: xAttrs + }, + layout: { + calendar: makeAttrs([ + 'Sets the default calendar system to use for interpreting and', + 'displaying dates throughout the plot.' + ].join(' ')) + }, + subplots: { + xaxis: {calendar: axisAttrs}, + yaxis: {calendar: axisAttrs}, + scene: { + xaxis: {calendar: axisAttrs}, + // TODO: it's actually redundant to include yaxis and zaxis here + // because in the scene attributes these are the same object so merging + // into one merges into them all. However, I left them in for parity with + // cartesian, where yaxis is unused until we Plotschema.get() when we + // use its presence or absence to determine whether to delete attributes + // from yaxis if they only apply to x (rangeselector/rangeslider) + yaxis: {calendar: axisAttrs}, + zaxis: {calendar: axisAttrs} + }, + polar: { + radialaxis: {calendar: axisAttrs} + } + }, + transforms: { + filter: { + valuecalendar: makeAttrs([ + 'WARNING: All transforms are deprecated and may be removed from the API in next major version.', + 'Sets the calendar system to use for `value`, if it is a date.' + ].join(' ')), + targetcalendar: makeAttrs([ + 'WARNING: All transforms are deprecated and may be removed from the API in next major version.', + 'Sets the calendar system to use for `target`, if it is an', + 'array of dates. If `target` is a string (eg *x*) we use the', + 'corresponding trace attribute (eg `xcalendar`) if it exists,', + 'even if `targetcalendar` is provided.' + ].join(' ')) + } + } + }, + + layoutAttributes: attributes, + + handleDefaults: handleDefaults, + handleTraceDefaults: handleTraceDefaults, + + CANONICAL_SUNDAY: CANONICAL_SUNDAY, + CANONICAL_TICK: CANONICAL_TICK, + DFLTRANGE: DFLTRANGE, + + getCal: getCal, + worldCalFmt: worldCalFmt +}; + +},{"../../constants/numerical":265,"../../lib":285,"./calendars":152}],154:[function(_dereq_,module,exports){ 'use strict'; @@ -22793,20 +32916,12 @@ exports.borderLine = '#BEC8D9'; // gives back exactly lightLine if the other colors are defaults. exports.lightFraction = 100 * (0xe - 0x4) / (0xf - 0x4); -},{}],105:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],155:[function(_dereq_,module,exports){ 'use strict'; var tinycolor = _dereq_('tinycolor2'); var isNumeric = _dereq_('fast-isnumeric'); +var isTypedArray = _dereq_('../../lib/array').isTypedArray; var color = module.exports = {}; @@ -22921,7 +33036,7 @@ color.clean = function(container) { if(!Array.isArray(el0) && el0 && typeof el0 === 'object') { for(j = 0; j < val.length; j++) color.clean(val[j]); } - } else if(val && typeof val === 'object') color.clean(val); + } else if(val && typeof val === 'object' && !isTypedArray(val)) color.clean(val); } }; @@ -22967,15 +33082,7 @@ function cleanOne(val) { return 'rgb(' + rgbStr + ')'; } -},{"./attributes":104,"fast-isnumeric":23,"tinycolor2":88}],106:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/array":271,"./attributes":154,"fast-isnumeric":31,"tinycolor2":119}],156:[function(_dereq_,module,exports){ 'use strict'; var axesAttrs = _dereq_('../../plots/cartesian/layout_attributes'); @@ -22988,82 +33095,61 @@ module.exports = overrideAll({ // TODO: only right is supported currently // orient: { // valType: 'enumerated', -// // values: ['left', 'right', 'top', 'bottom'], // dflt: 'right', -// +// // }, thicknessmode: { valType: 'enumerated', values: ['fraction', 'pixels'], - dflt: 'pixels', - }, thickness: { valType: 'number', - min: 0, dflt: 30, - }, lenmode: { valType: 'enumerated', values: ['fraction', 'pixels'], - dflt: 'fraction', - }, len: { valType: 'number', min: 0, dflt: 1, - - }, x: { valType: 'number', dflt: 1.02, min: -2, max: 3, - - }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'left', - - }, xpad: { valType: 'number', - min: 0, dflt: 10, - }, y: { valType: 'number', - dflt: 0.5, min: -2, max: 3, - }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], - dflt: 'middle', - }, ypad: { valType: 'number', - min: 0, dflt: 10, - }, // a possible line around the bar itself outlinecolor: axesAttrs.linecolor, @@ -23073,16 +33159,12 @@ module.exports = overrideAll({ bordercolor: axesAttrs.linecolor, borderwidth: { valType: 'number', - min: 0, dflt: 0, - }, bgcolor: { valType: 'color', - dflt: 'rgba(0,0,0,0)', - }, // tick and title properties named and function exactly as in axes tickmode: axesAttrs.tickmode, @@ -23092,6 +33174,8 @@ module.exports = overrideAll({ tickvals: axesAttrs.tickvals, ticktext: axesAttrs.ticktext, ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}), + ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { + }), ticklabelposition: { valType: 'enumerated', values: [ @@ -23100,15 +33184,12 @@ module.exports = overrideAll({ 'outside bottom', 'inside bottom' ], dflt: 'outside', - - }, ticklen: axesAttrs.ticklen, tickwidth: axesAttrs.tickwidth, tickcolor: axesAttrs.tickcolor, showticklabels: axesAttrs.showticklabels, tickfont: fontAttrs({ - }), tickangle: axesAttrs.tickangle, tickformat: axesAttrs.tickformat, @@ -23124,49 +33205,31 @@ module.exports = overrideAll({ title: { text: { valType: 'string', - - }, font: fontAttrs({ - }), side: { valType: 'enumerated', values: ['right', 'top', 'bottom'], - dflt: 'top', - } }, _deprecated: { title: { valType: 'string', - - }, titlefont: fontAttrs({ - }), titleside: { valType: 'enumerated', values: ['right', 'top', 'bottom'], - dflt: 'top', - } } }, 'colorbars', 'from-root'); -},{"../../lib/extend":227,"../../plot_api/edit_types":261,"../../plots/cartesian/layout_attributes":293,"../../plots/font_attributes":307}],107:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plot_api/edit_types":313,"../../plots/cartesian/layout_attributes":345,"../../plots/font_attributes":359}],157:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -23186,16 +33249,7 @@ module.exports = { } }; -},{}],108:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],158:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -23240,11 +33294,14 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { coerce('bordercolor'); coerce('borderwidth'); coerce('bgcolor'); + var ticklabelposition = coerce('ticklabelposition'); + coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div'); handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear'); - var opts = {outerTicks: false, font: layout.font}; + var font = layout.font; + var opts = {outerTicks: false, font: font}; if(ticklabelposition.indexOf('inside') !== -1) { opts.bgColor = 'black'; // could we instead use the average of colors in the scale? } @@ -23252,22 +33309,20 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { handleTickMarkDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts); coerce('title.text', layout._dfltTitle.colorbar); - Lib.coerceFont(coerce, 'title.font', layout.font); + + var tickFont = colorbarOut.tickfont; + var dfltTitleFont = Lib.extendFlat({}, tickFont, { + color: font.color, + size: Lib.bigFont(tickFont.size) + }); + Lib.coerceFont(coerce, 'title.font', dfltTitleFont); coerce('title.side'); }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/cartesian/tick_label_defaults":300,"../../plots/cartesian/tick_mark_defaults":301,"../../plots/cartesian/tick_value_defaults":302,"./attributes":106}],109:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/cartesian/tick_label_defaults":352,"../../plots/cartesian/tick_mark_defaults":353,"../../plots/cartesian/tick_value_defaults":354,"./attributes":156}],159:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Plots = _dereq_('../../plots/plots'); @@ -23944,6 +33999,7 @@ function mockColorBarAxis(gd, opts, zrange) { tickcolor: opts.tickcolor, showticklabels: opts.showticklabels, ticklabelposition: opts.ticklabelposition, + ticklabeloverflow: opts.ticklabeloverflow, tickfont: opts.tickfont, tickangle: opts.tickangle, tickformat: opts.tickformat, @@ -23990,16 +34046,7 @@ module.exports = { draw: draw }; -},{"../../constants/alignment":207,"../../lib":233,"../../lib/extend":227,"../../lib/setcursor":253,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../plots/cartesian/axis_defaults":281,"../../plots/cartesian/layout_attributes":293,"../../plots/cartesian/position_defaults":296,"../../plots/plots":313,"../../registry":326,"../color":105,"../colorscale/helpers":116,"../dragelement":124,"../drawing":127,"../titles":200,"./constants":107,"d3":21,"tinycolor2":88}],110:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/extend":279,"../../lib/setcursor":305,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../plots/cartesian/axis_defaults":333,"../../plots/cartesian/layout_attributes":345,"../../plots/cartesian/position_defaults":348,"../../plots/plots":366,"../../registry":373,"../color":155,"../colorscale/helpers":166,"../dragelement":174,"../drawing":177,"../titles":253,"./constants":157,"@plotly/d3":20,"tinycolor2":119}],160:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -24009,15 +34056,7 @@ module.exports = function hasColorbar(container) { return Lib.isPlainObject(container.colorbar); }; -},{"../../lib":233}],111:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],161:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -24031,15 +34070,7 @@ module.exports = { hasColorbar: _dereq_('./has_colorbar') }; -},{"./attributes":106,"./defaults":108,"./draw":109,"./has_colorbar":110}],112:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":156,"./defaults":158,"./draw":159,"./has_colorbar":160}],162:[function(_dereq_,module,exports){ 'use strict'; var colorbarAttrs = _dereq_('../colorbar/attributes'); @@ -24140,9 +34171,7 @@ module.exports = function colorScaleAttrs(context, opts) { attrs.color = { valType: 'color', arrayOk: true, - editType: editTypeOverride || 'style', - }; if(opts.anim) { @@ -24152,74 +34181,58 @@ module.exports = function colorScaleAttrs(context, opts) { attrs[auto] = { valType: 'boolean', - dflt: true, editType: 'calc', impliedEdits: autoImpliedEdits, - }; attrs[min] = { valType: 'number', - dflt: null, editType: editTypeOverride || 'plot', impliedEdits: minmaxImpliedEdits, - }; attrs[max] = { valType: 'number', - dflt: null, editType: editTypeOverride || 'plot', impliedEdits: minmaxImpliedEdits, - }; attrs[mid] = { valType: 'number', - dflt: null, editType: 'calc', impliedEdits: autoImpliedEdits, - }; attrs.colorscale = { valType: 'colorscale', - editType: 'calc', dflt: colorscaleDflt, impliedEdits: {autocolorscale: false}, - }; attrs.autocolorscale = { valType: 'boolean', - // gets overrode in 'heatmap' & 'surface' for backwards comp. dflt: opts.autoColorDflt === false ? false : true, editType: 'calc', impliedEdits: {colorscale: undefined}, - }; attrs.reversescale = { valType: 'boolean', - dflt: false, editType: 'plot', - }; if(!noScale) { attrs.showscale = { valType: 'boolean', - dflt: showScaleDflt, editType: 'calc', - }; attrs.colorbar = colorbarAttrs; @@ -24228,26 +34241,16 @@ module.exports = function colorScaleAttrs(context, opts) { if(!opts.noColorAxis) { attrs.coloraxis = { valType: 'subplotid', - regex: counterRegex('coloraxis'), dflt: null, editType: 'calc', - }; } return attrs; }; -},{"../../lib/regex":249,"../colorbar/attributes":106,"./scales.js":120}],113:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/regex":301,"../colorbar/attributes":156,"./scales.js":170}],163:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -24318,15 +34321,7 @@ module.exports = function calc(gd, trace, opts) { } }; -},{"../../lib":233,"./helpers":116,"fast-isnumeric":23}],114:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./helpers":166,"fast-isnumeric":31}],164:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -24395,15 +34390,7 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) { } }; -},{"../../lib":233,"./helpers":116}],115:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./helpers":166}],165:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -24520,18 +34507,10 @@ module.exports = function colorScaleDefaults(parentContIn, parentContOut, layout } }; -},{"../../lib":233,"../../registry":326,"../colorbar/defaults":108,"../colorbar/has_colorbar":110,"./scales":120,"fast-isnumeric":23}],116:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"../colorbar/defaults":158,"../colorbar/has_colorbar":160,"./scales":170,"fast-isnumeric":31}],166:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var isNumeric = _dereq_('fast-isnumeric'); @@ -24573,7 +34552,7 @@ var letterAttrs = ['min', 'max', 'mid', 'auto']; /** * Extract 'c' / 'z', trace / color axis colorscale options * - * Note that it would be nice to replace all z* with c* equivalents in v2 + * Note that it would be nice to replace all z* with c* equivalents in v3 * * @param {object} cont : attribute container * @return {object}: @@ -24760,15 +34739,7 @@ module.exports = { makeColorScaleFuncFromTrace: makeColorScaleFuncFromTrace }; -},{"../../lib":233,"../color":105,"./scales":120,"d3":21,"fast-isnumeric":23,"tinycolor2":88}],117:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../color":155,"./scales":170,"@plotly/d3":20,"fast-isnumeric":31,"tinycolor2":119}],167:[function(_dereq_,module,exports){ 'use strict'; var scales = _dereq_('./scales'); @@ -24802,15 +34773,7 @@ module.exports = { makeColorScaleFuncFromTrace: helpers.makeColorScaleFuncFromTrace }; -},{"./attributes":112,"./calc":113,"./cross_trace_defaults":114,"./defaults":115,"./helpers":116,"./layout_attributes":118,"./layout_defaults":119,"./scales":120}],118:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":162,"./calc":163,"./cross_trace_defaults":164,"./defaults":165,"./helpers":166,"./layout_attributes":168,"./layout_defaults":169,"./scales":170}],168:[function(_dereq_,module,exports){ 'use strict'; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -24829,23 +34792,17 @@ module.exports = { sequential: { valType: 'colorscale', dflt: scales.Reds, - editType: 'calc', - }, sequentialminus: { valType: 'colorscale', dflt: scales.Blues, - editType: 'calc', - }, diverging: { valType: 'colorscale', dflt: scales.RdBu, - editType: 'calc', - } }, @@ -24855,7 +34812,6 @@ module.exports = { // support yaxis, yaxis2, yaxis3, ... counters _isSubplotObj: true, editType: 'calc', - }, colorScaleAttrs('', { colorAttr: 'corresponding trace color array(s)', noColorAxis: true, @@ -24863,15 +34819,7 @@ module.exports = { })) }; -},{"../../lib/extend":227,"./attributes":112,"./scales":120}],119:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"./attributes":162,"./scales":170}],169:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -24914,15 +34862,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { } }; -},{"../../lib":233,"../../plot_api/plot_template":268,"./defaults":115,"./layout_attributes":118}],120:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"./defaults":165,"./layout_attributes":168}],170:[function(_dereq_,module,exports){ 'use strict'; var tinycolor = _dereq_('tinycolor2'); @@ -25118,16 +35058,7 @@ module.exports = { isValid: isValidScale }; -},{"tinycolor2":88}],121:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"tinycolor2":119}],171:[function(_dereq_,module,exports){ 'use strict'; @@ -25151,16 +35082,7 @@ module.exports = function align(v, dv, v0, v1, anchor) { return vc; }; -},{}],122:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],172:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -25189,15 +35111,7 @@ module.exports = function getCursor(x, y, xanchor, yanchor) { return cursorset[y][x]; }; -},{"../../lib":233}],123:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],173:[function(_dereq_,module,exports){ 'use strict'; exports.selectMode = function(dragmode) { @@ -25248,15 +35162,7 @@ exports.selectingOrDrawing = function(dragmode) { ); }; -},{}],124:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],174:[function(_dereq_,module,exports){ 'use strict'; var mouseOffset = _dereq_('mouse-event-offset'); @@ -25431,7 +35337,7 @@ dragElement.init = function init(options) { if(dx || dy) { gd._dragged = true; - dragElement.unhover(gd); + dragElement.unhover(gd, e); } if(gd._dragged && options.moveFn && !rightClick) { @@ -25540,15 +35446,7 @@ function pointerOffset(e) { ); } -},{"../../lib":233,"../../plots/cartesian/constants":285,"./align":121,"./cursor":122,"./unhover":125,"has-hover":54,"has-passive-events":55,"mouse-event-offset":76}],125:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/constants":337,"./align":171,"./cursor":172,"./unhover":175,"has-hover":62,"has-passive-events":63,"mouse-event-offset":69}],175:[function(_dereq_,module,exports){ 'use strict'; var Events = _dereq_('../../lib/events'); @@ -25577,7 +35475,7 @@ unhover.raw = function raw(gd, evt) { var oldhoverdata = gd._hoverdata; if(!evt) evt = {}; - if(evt.target && + if(evt.target && !gd._dragged && Events.triggerHandler(gd, 'plotly_beforehover', evt) === false) { return; } @@ -25595,16 +35493,7 @@ unhover.raw = function raw(gd, evt) { } }; -},{"../../lib/dom":225,"../../lib/events":226,"../../lib/throttle":256,"../fx/constants":139}],126:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/dom":277,"../../lib/events":278,"../../lib/throttle":308,"../fx/constants":189}],176:[function(_dereq_,module,exports){ 'use strict'; exports.dash = { @@ -25615,24 +35504,44 @@ exports.dash = { // dash lengths in px, and it will be honored values: ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'], dflt: 'solid', - editType: 'style', - }; -},{}],127:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +exports.pattern = { + shape: { + valType: 'enumerated', + values: ['', '/', '\\', 'x', '-', '|', '+', '.'], + dflt: '', + arrayOk: true, + editType: 'style', + }, + bgcolor: { + valType: 'color', + arrayOk: true, + editType: 'style', + }, + size: { + valType: 'number', + min: 0, + dflt: 8, + arrayOk: true, + editType: 'style', + }, + solidity: { + valType: 'number', + min: 0, + max: 1, + dflt: 0.3, + arrayOk: true, + editType: 'style', + }, + editType: 'style' +}; +},{}],177:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var tinycolor = _dereq_('tinycolor2'); @@ -25986,6 +35895,185 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) { fullLayout._gradientUrlQueryParts[k] = 1; }; +/** + * pattern: create and apply a pattern fill + * + * @param {object} sel: d3 selection to apply this pattern to + * You can use `selection.call(Drawing.pattern, ...)` + * @param {DOM element} gd: the graph div `sel` is part of + * @param {string} patternID: a unique (within this plot) identifier + * for this pattern, so that we don't create unnecessary definitions + * @param {string} bgcolor: background color for this pattern + * @param {string} fgcolor: foreground color for this pattern + * @param {number} size: size of unit squares for repetition of this pattern + * @param {number} solidity: how solid lines of this pattern are + * @param {string} prop: the property to apply to, 'fill' or 'stroke' + */ +drawing.pattern = function(sel, gd, patternID, shape, bgcolor, fgcolor, size, solidity, prop) { + var fullLayout = gd._fullLayout; + var fullID = 'p' + fullLayout._uid + '-' + patternID; + var width, height; + + // linear interpolation + var linearFn = function(x, x0, x1, y0, y1) { + return y0 + (y1 - y0) * (x - x0) / (x1 - x0); + }; + + var path, linewidth, radius; + var patternTag; + var patternAttrs = {}; + switch(shape) { + case '/': + width = size * Math.sqrt(2); + height = size * Math.sqrt(2); + path = 'M-' + (width / 4) + ',' + (height / 4) + 'l' + (width / 2) + ',-' + (height / 2) + + 'M0,' + height + 'L' + width + ',0' + + 'M' + (width / 4 * 3) + ',' + (height / 4 * 5) + 'l' + (width / 2) + ',-' + (height / 2); + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '\\': + width = size * Math.sqrt(2); + height = size * Math.sqrt(2); + path = 'M' + (width / 4 * 3) + ',-' + (height / 4) + 'l' + (width / 2) + ',' + (height / 2) + + 'M0,0L' + width + ',' + height + + 'M-' + (width / 4) + ',' + (height / 4 * 3) + 'l' + (width / 2) + ',' + (height / 2); + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case 'x': + width = size * Math.sqrt(2); + height = size * Math.sqrt(2); + path = 'M-' + (width / 4) + ',' + (height / 4) + 'l' + (width / 2) + ',-' + (height / 2) + + 'M0,' + height + 'L' + width + ',0' + + 'M' + (width / 4 * 3) + ',' + (height / 4 * 5) + 'l' + (width / 2) + ',-' + (height / 2) + + 'M' + (width / 4 * 3) + ',-' + (height / 4) + 'l' + (width / 2) + ',' + (height / 2) + + 'M0,0L' + width + ',' + height + + 'M-' + (width / 4) + ',' + (height / 4 * 3) + 'l' + (width / 2) + ',' + (height / 2); + linewidth = size - size * Math.sqrt(1.0 - solidity); + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '|': + width = size; + height = size; + patternTag = 'path'; + path = 'M' + (width / 2) + ',0L' + (width / 2) + ',' + height; + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '-': + width = size; + height = size; + patternTag = 'path'; + path = 'M0,' + (height / 2) + 'L' + width + ',' + (height / 2); + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '+': + width = size; + height = size; + patternTag = 'path'; + path = 'M' + (width / 2) + ',0L' + (width / 2) + ',' + height + + 'M0,' + (height / 2) + 'L' + width + ',' + (height / 2); + linewidth = size - size * Math.sqrt(1.0 - solidity); + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '.': + width = size; + height = size; + if(solidity < Math.PI / 4) { + radius = Math.sqrt(solidity * size * size / Math.PI); + } else { + radius = linearFn(solidity, Math.PI / 4, 1.0, size / 2, size / Math.sqrt(2)); + } + patternTag = 'circle'; + patternAttrs = { + 'cx': width / 2, + 'cy': height / 2, + 'r': radius, + 'fill': fgcolor + }; + break; + } + + var pattern = fullLayout._defs.select('.patterns') + .selectAll('#' + fullID) + .data([shape + ';' + bgcolor + ';' + fgcolor + ';' + size + ';' + solidity], Lib.identity); + + pattern.exit().remove(); + + pattern.enter() + .append('pattern') + .each(function() { + var el = d3.select(this); + + el.attr({ + 'id': fullID, + 'width': width + 'px', + 'height': height + 'px', + 'patternUnits': 'userSpaceOnUse' + }); + + if(bgcolor) { + var rects = el.selectAll('rect').data([0]); + rects.exit().remove(); + rects.enter() + .append('rect') + .attr({ + 'width': width + 'px', + 'height': height + 'px', + 'fill': bgcolor + }); + } + + var patterns = el.selectAll(patternTag).data([0]); + patterns.exit().remove(); + patterns.enter() + .append(patternTag) + .attr(patternAttrs); + }); + + sel.style(prop, getFullUrl(fullID, gd)) + .style(prop + '-opacity', null); + + sel.classed('pattern_filled', true); + var className2query = function(s) { + return '.' + s.attr('class').replace(/\s/g, '.'); + }; + var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled'; + fullLayout._patternUrlQueryParts[k] = 1; +}; + /* * Make the gradients container and clear out any previous gradients. * We never collect all the gradients we need in one place, @@ -26004,6 +36092,23 @@ drawing.initGradients = function(gd) { fullLayout._gradientUrlQueryParts = {}; }; +drawing.initPatterns = function(gd) { + var fullLayout = gd._fullLayout; + + var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns'); + patternsGroup.selectAll('pattern').remove(); + + // initialize stash of query parts filled in Drawing.pattern, + // used to fix URL strings during image exports + fullLayout._patternUrlQueryParts = {}; +}; + +drawing.getPatternAttr = function(mp, i, dflt) { + if(mp && Lib.isArrayOrTypedArray(mp)) { + return i < mp.length ? mp[i] : dflt; + } + return mp; +}; drawing.pointStyle = function(s, trace, gd) { if(!s.size()) return; @@ -26109,11 +36214,14 @@ drawing.singlePointStyle = function(d, sel, trace, fns, gd) { // for legend - arrays will propagate through here, but we don't need // to treat it as per-point. - if(Array.isArray(gradientType)) { + if(Lib.isArrayOrTypedArray(gradientType)) { gradientType = gradientType[0]; if(!gradientInfo[gradientType]) gradientType = 0; } + var markerPattern = marker.pattern; + var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, d.i, ''); + if(gradientType && gradientType !== 'none') { var gradientColor = d.mgc; if(gradientColor) perPointGradient = true; @@ -26124,6 +36232,20 @@ drawing.singlePointStyle = function(d, sel, trace, fns, gd) { drawing.gradient(sel, gd, gradientID, gradientType, [[0, gradientColor], [1, fillColor]], 'fill'); + } else if(patternShape) { + var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, d.i, null); + var patternSize = drawing.getPatternAttr(markerPattern.size, d.i, 8); + var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, d.i, 0.3); + var perPointPattern = Lib.isArrayOrTypedArray(markerPattern.shape) || + Lib.isArrayOrTypedArray(markerPattern.bgcolor) || + Lib.isArrayOrTypedArray(markerPattern.size) || + Lib.isArrayOrTypedArray(markerPattern.solidity); + + var patternID = trace.uid; + if(perPointPattern) patternID += '-' + d.i; + + drawing.pattern(sel, gd, patternID, patternShape, patternBGColor, fillColor, + patternSize, patternSolidity, 'fill'); } else { Color.fill(sel, fillColor); } @@ -26362,7 +36484,8 @@ drawing.textPointStyle = function(s, trace, gd) { } if(texttemplate) { - var labels = trace._module.formatLabels ? trace._module.formatLabels(d, trace, fullLayout) : {}; + var fn = trace._module.formatLabels; + var labels = fn ? fn(d, trace, fullLayout) : {}; var pointValues = {}; appendArrayPointValue(pointValues, trace, d.i); var meta = trace._meta || {}; @@ -26688,7 +36811,9 @@ function getFullUrl(localId, gd) { var context = gd._context; var baseUrl = context._exportedPlot ? '' : (context._baseUrl || ''); - return 'url(\'' + baseUrl + '#' + localId + '\')'; + return baseUrl ? + 'url(\'' + baseUrl + '#' + localId + '\')' : + 'url(#' + localId + ')'; } drawing.getTranslate = function(element) { @@ -26817,19 +36942,10 @@ drawing.setTextPointsScale = function(selection, xScale, yScale) { }); }; -},{"../../components/fx/helpers":141,"../../constants/alignment":207,"../../constants/interactions":211,"../../constants/xmlns_namespaces":213,"../../lib":233,"../../lib/svg_text_utils":255,"../../registry":326,"../../traces/scatter/make_bubble_size_func":464,"../../traces/scatter/subtypes":472,"../color":105,"../colorscale":117,"./symbol_defs":128,"d3":21,"fast-isnumeric":23,"tinycolor2":88}],128:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/fx/helpers":191,"../../constants/alignment":260,"../../constants/interactions":264,"../../constants/xmlns_namespaces":266,"../../lib":285,"../../lib/svg_text_utils":307,"../../registry":373,"../../traces/scatter/make_bubble_size_func":511,"../../traces/scatter/subtypes":519,"../color":155,"../colorscale":167,"./symbol_defs":178,"@plotly/d3":20,"fast-isnumeric":31,"tinycolor2":119}],178:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); /** Marker symbol definitions * users can specify markers either by number or name @@ -27381,130 +37497,90 @@ module.exports = { } }; -},{"d3":21}],129:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"@plotly/d3":20}],179:[function(_dereq_,module,exports){ 'use strict'; module.exports = { visible: { valType: 'boolean', - editType: 'calc', - }, type: { valType: 'enumerated', values: ['percent', 'constant', 'sqrt', 'data'], - editType: 'calc', - }, symmetric: { valType: 'boolean', - editType: 'calc', - }, array: { valType: 'data_array', editType: 'calc', - }, arrayminus: { valType: 'data_array', editType: 'calc', - }, value: { valType: 'number', min: 0, dflt: 10, - editType: 'calc', - }, valueminus: { valType: 'number', min: 0, dflt: 10, - editType: 'calc', - }, traceref: { valType: 'integer', min: 0, dflt: 0, - editType: 'style' }, tracerefminus: { valType: 'integer', min: 0, dflt: 0, - editType: 'style' }, copy_ystyle: { valType: 'boolean', - editType: 'plot' }, copy_zstyle: { valType: 'boolean', - editType: 'style' }, color: { valType: 'color', - editType: 'style', - }, thickness: { valType: 'number', min: 0, dflt: 2, - editType: 'style', - }, width: { valType: 'number', min: 0, - editType: 'plot', - }, editType: 'calc', _deprecated: { opacity: { valType: 'number', - editType: 'style', - } } }; -},{}],130:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],180:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -27582,16 +37658,7 @@ function calcOneAxis(calcTrace, trace, axis, coord) { baseExtremes.max = baseExtremes.max.concat(extremes.max); } -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"./compute_error":131,"fast-isnumeric":23}],131:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"./compute_error":181,"fast-isnumeric":31}],181:[function(_dereq_,module,exports){ 'use strict'; @@ -27683,15 +37750,7 @@ function makeComputeErrorValue(type, value) { } } -},{}],132:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],182:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -27758,15 +37817,7 @@ module.exports = function(traceIn, traceOut, defaultColor, opts) { } }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../registry":326,"./attributes":129,"fast-isnumeric":23}],133:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../registry":373,"./attributes":179,"fast-isnumeric":31}],183:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -27827,19 +37878,10 @@ function hoverInfo(calcPoint, trace, hoverPoint) { } } -},{"../../lib":233,"../../plot_api/edit_types":261,"./attributes":129,"./calc":130,"./compute_error":131,"./defaults":132,"./plot":134,"./style":135}],134:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plot_api/edit_types":313,"./attributes":179,"./calc":180,"./compute_error":181,"./defaults":182,"./plot":184,"./style":185}],184:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Drawing = _dereq_('../drawing'); @@ -27999,19 +38041,10 @@ function errorCoords(d, xa, ya) { return out; } -},{"../../traces/scatter/subtypes":472,"../drawing":127,"d3":21,"fast-isnumeric":23}],135:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../traces/scatter/subtypes":519,"../drawing":177,"@plotly/d3":20,"fast-isnumeric":31}],185:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../color'); @@ -28036,15 +38069,7 @@ module.exports = function style(traces) { }); }; -},{"../color":105,"d3":21}],136:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../color":155,"@plotly/d3":20}],186:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -28055,16 +38080,13 @@ module.exports = { hoverlabel: { bgcolor: extendFlat({}, hoverLabelAttrs.bgcolor, { arrayOk: true, - }), bordercolor: extendFlat({}, hoverLabelAttrs.bordercolor, { arrayOk: true, - }), font: fontAttrs({ arrayOk: true, editType: 'none', - }), align: extendFlat({}, hoverLabelAttrs.align, {arrayOk: true}), namelength: extendFlat({}, hoverLabelAttrs.namelength, {arrayOk: true}), @@ -28072,15 +38094,7 @@ module.exports = { } }; -},{"../../lib/extend":227,"../../plots/font_attributes":307,"./layout_attributes":146}],137:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plots/font_attributes":359,"./layout_attributes":196}],187:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -28131,15 +38145,7 @@ function paste(traceAttr, cd, cdAttr, fn) { } } -},{"../../lib":233,"../../registry":326}],138:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373}],188:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -28168,15 +38174,7 @@ module.exports = function click(gd, evt, subplot) { } }; -},{"../../registry":326,"./hover":142}],139:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./hover":192}],189:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -28200,15 +38198,7 @@ module.exports = { HOVERID: '-hover' }; -},{}],140:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],190:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -28226,15 +38216,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleHoverLabelDefaults(traceIn, traceOut, coerce, opts); }; -},{"../../lib":233,"./attributes":136,"./hoverlabel_defaults":143}],141:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./attributes":186,"./hoverlabel_defaults":193}],191:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -28488,18 +38470,10 @@ exports.isXYhover = function(hovermode) { return !!xyHoverMode[hovermode]; }; -},{"../../lib":233}],142:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],192:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var tinycolor = _dereq_('tinycolor2'); @@ -28538,6 +38512,13 @@ var YSHIFTY = Math.sin(YA_RADIANS); var HOVERARROWSIZE = constants.HOVERARROWSIZE; var HOVERTEXTPAD = constants.HOVERTEXTPAD; +var multipleHoverPoints = { + box: true, + ohlc: true, + violin: true, + candlestick: true +}; + // fx.hover: highlight data on hover // evt can be a mousemove event, or an object with data about what points // to hover on @@ -28747,8 +38728,11 @@ function _hover(gd, evt, subplot, noHoverEvent) { return dragElement.unhoverRaw(gd, evt); } - var hoverdistance = fullLayout.hoverdistance === -1 ? Infinity : fullLayout.hoverdistance; - var spikedistance = fullLayout.spikedistance === -1 ? Infinity : fullLayout.spikedistance; + var hoverdistance = fullLayout.hoverdistance; + if(hoverdistance === -1) hoverdistance = Infinity; + + var spikedistance = fullLayout.spikedistance; + if(spikedistance === -1) spikedistance = Infinity; // hoverData: the set of candidate points we've found to highlight var hoverData = []; @@ -28763,7 +38747,7 @@ function _hover(gd, evt, subplot, noHoverEvent) { // mapped onto each of the currently selected overlaid subplots var xvalArray, yvalArray; - var itemnum, curvenum, cd, trace, subplotId, subploti, mode, + var itemnum, curvenum, cd, trace, subplotId, subploti, _mode, xval, yval, pointData, closedataPreviousLength; // spikePoints: the set of candidate points we've found to draw spikes to @@ -28826,7 +38810,13 @@ function _hover(gd, evt, subplot, noHoverEvent) { return; } - var dbb = evt.target.getBoundingClientRect(); + // Discover event target, traversing open shadow roots. + var target = evt.composedPath && evt.composedPath()[0]; + if(!target) { + // Fallback for browsers not supporting composedPath + target = evt.target; + } + var dbb = target.getBoundingClientRect(); xpx = evt.clientX - dbb.left; ypx = evt.clientY - dbb.top; @@ -28892,9 +38882,9 @@ function _hover(gd, evt, subplot, noHoverEvent) { } // within one trace mode can sometimes be overridden - mode = hovermode; - if(helpers.isUnifiedHover(mode)) { - mode = mode.charAt(0); + _mode = hovermode; + if(helpers.isUnifiedHover(_mode)) { + _mode = _mode.charAt(0); } // container for new point, also used to pass info into module.hoverPoints @@ -28952,20 +38942,20 @@ function _hover(gd, evt, subplot, noHoverEvent) { // for a highlighting array, figure out what // we're searching for with this element - if(mode === 'array') { + if(_mode === 'array') { var selection = evt[curvenum]; if('pointNumber' in selection) { pointData.index = selection.pointNumber; - mode = 'closest'; + _mode = 'closest'; } else { - mode = ''; + _mode = ''; if('xval' in selection) { xval = selection.xval; - mode = 'x'; + _mode = 'x'; } if('yval' in selection) { yval = selection.yval; - mode = mode ? 'closest' : 'y'; + _mode = _mode ? 'closest' : 'y'; } } } else if(customXVal !== undefined && customYVal !== undefined) { @@ -28979,7 +38969,11 @@ function _hover(gd, evt, subplot, noHoverEvent) { // Now if there is range to look in, find the points to hover. if(hoverdistance !== 0) { if(trace._module && trace._module.hoverPoints) { - var newPoints = trace._module.hoverPoints(pointData, xval, yval, mode, fullLayout._hoverlayer); + var newPoints = trace._module.hoverPoints(pointData, xval, yval, _mode, { + finiteRange: true, + hoverLayer: fullLayout._hoverlayer + }); + if(newPoints) { var newPoint; for(var newPointNum = 0; newPointNum < newPoints.length; newPointNum++) { @@ -29008,7 +39002,9 @@ function _hover(gd, evt, subplot, noHoverEvent) { if(hoverData.length === 0) { pointData.distance = spikedistance; pointData.index = false; - var closestPoints = trace._module.hoverPoints(pointData, xval, yval, 'closest', fullLayout._hoverlayer); + var closestPoints = trace._module.hoverPoints(pointData, xval, yval, 'closest', { + hoverLayer: fullLayout._hoverlayer + }); if(closestPoints) { closestPoints = closestPoints.filter(function(point) { // some hover points, like scatter fills, do not allow spikes, @@ -29127,46 +39123,70 @@ function _hover(gd, evt, subplot, noHoverEvent) { } } - hoverData.sort(function(d1, d2) { return d1.distance - d2.distance; }); + var sortHoverData = function() { + hoverData.sort(function(d1, d2) { return d1.distance - d2.distance; }); + + // move period positioned points and box/bar-like traces to the end of the list + hoverData = orderRangePoints(hoverData, hovermode); + }; + sortHoverData(); - // If in compare mode, select every point at position if( - helpers.isXYhover(mode) && + helpers.isXYhover(_mode) && hoverData[0].length !== 0 && hoverData[0].trace.type !== 'splom' // TODO: add support for splom ) { - var hd = hoverData[0]; - var cd0 = hd.cd[hd.index]; - var isGrouped = (fullLayout.boxmode === 'group' || fullLayout.violinmode === 'group'); - - var xVal = hd.xVal; - var ax = hd.xa; - if(ax.type === 'category') xVal = ax._categoriesMap[xVal]; - if(ax.type === 'date') xVal = ax.d2c(xVal); - if(cd0 && cd0.t && cd0.t.posLetter === ax._id && isGrouped) { - xVal += cd0.t.dPos; + // pick winning point + var winningPoint = hoverData[0]; + // discard other points + if(multipleHoverPoints[winningPoint.trace.type]) { + hoverData = hoverData.filter(function(d) { + return d.trace.index === winningPoint.trace.index; + }); + } else { + hoverData = [winningPoint]; } + var initLen = hoverData.length; - var yVal = hd.yVal; - ax = hd.ya; - if(ax.type === 'category') yVal = ax._categoriesMap[yVal]; - if(ax.type === 'date') yVal = ax.d2c(yVal); - if(cd0 && cd0.t && cd0.t.posLetter === ax._id && isGrouped) { - yVal += cd0.t.dPos; - } + var winX = getCoord('x', winningPoint, fullLayout); + var winY = getCoord('y', winningPoint, fullLayout); - findHoverPoints(xVal, yVal); + // in compare mode, select every point at position + findHoverPoints(winX, winY); - // Remove duplicated hoverData points - // note that d3 also filters identical points in the rendering steps - var repeated = {}; - hoverData = hoverData.filter(function(hd) { - var key = hoverDataKey(hd); - if(!repeated[key]) { - repeated[key] = true; - return repeated[key]; + var finalPoints = []; + var seen = {}; + var id = 0; + var insert = function(newHd) { + var key = multipleHoverPoints[newHd.trace.type] ? hoverDataKey(newHd) : newHd.trace.index; + if(!seen[key]) { + id++; + seen[key] = id; + finalPoints.push(newHd); + } else { + var oldId = seen[key] - 1; + var oldHd = finalPoints[oldId]; + if(oldId > 0 && + Math.abs(newHd.distance) < + Math.abs(oldHd.distance) + ) { + // replace with closest + finalPoints[oldId] = newHd; + } } - }); + }; + + var k; + // insert the winnig point(s) first + for(k = 0; k < initLen; k++) { + insert(hoverData[k]); + } + // override from the end + for(k = hoverData.length - 1; k > initLen - 1; k--) { + insert(hoverData[k]); + } + hoverData = finalPoints; + sortHoverData(); } // lastly, emit custom hover/unhover events @@ -29269,9 +39289,8 @@ function createHoverText(hoverData, opts, gd) { var c0 = hoverData[0]; var xa = c0.xa; var ya = c0.ya; - var commonAttr = hovermode.charAt(0) === 'y' ? 'yLabel' : 'xLabel'; - var t0 = c0[commonAttr]; - var t00 = (String(t0) || '').split(' ')[0]; + var axLetter = hovermode.charAt(0); + var t0 = c0[axLetter + 'Label']; var outerContainerBB = outerContainer.node().getBoundingClientRect(); var outerTop = outerContainerBB.top; var outerWidth = outerContainerBB.width; @@ -29460,27 +39479,13 @@ function createHoverText(hoverData, opts, gd) { } label.attr('transform', strTranslate(lx, ly)); - - // remove the "close but not quite" points - // because of error bars, only take up to a space - hoverData = filterClosePoints(hoverData); }); - function filterClosePoints(hoverData) { - return hoverData.filter(function(d) { - return (d.zLabelVal !== undefined) || - (d[commonAttr] || '').split(' ')[0] === t00; - }); - } - // Show a single hover label if(helpers.isUnifiedHover(hovermode)) { // Delete leftover hover labels from other hovermodes container.selectAll('g.hovertext').remove(); - // similarly to compare mode, we remove the "close but not quite together" points - if((t0 !== undefined) && (c0.distance <= opts.hoverdistance)) hoverData = filterClosePoints(hoverData); - // Return early if nothing is hovered on if(hoverData.length === 0) return; @@ -29500,10 +39505,10 @@ function createHoverText(hoverData, opts, gd) { }; var mockLayoutOut = {}; legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData); - var legendOpts = mockLayoutOut.legend; + var mockLegend = mockLayoutOut.legend; // prepare items for the legend - legendOpts.entries = []; + mockLegend.entries = []; for(var j = 0; j < hoverData.length; j++) { var texts = getHoverLabelText(hoverData[j], true, hovermode, fullLayout, t0); var text = texts[0]; @@ -29529,17 +39534,19 @@ function createHoverText(hoverData, opts, gd) { } pt._distinct = true; - legendOpts.entries.push([pt]); + mockLegend.entries.push([pt]); } - legendOpts.entries.sort(function(a, b) { return a[0].trace.index - b[0].trace.index;}); - legendOpts.layer = container; + mockLegend.entries.sort(function(a, b) { return a[0].trace.index - b[0].trace.index;}); + mockLegend.layer = container; // Draw unified hover label - legendDraw(gd, legendOpts); + mockLegend._inHover = true; + legendDraw(gd, mockLegend); // Position the hover - var ly = Lib.mean(hoverData.map(function(c) {return (c.y0 + c.y1) / 2;})); - var lx = Lib.mean(hoverData.map(function(c) {return (c.x0 + c.x1) / 2;})); + var winningPoint = hoverData[0]; + var ly = (winningPoint.y0 + winningPoint.y1) / 2; + var lx = (winningPoint.x0 + winningPoint.x1) / 2; var legendContainer = container.select('g.legend'); var tbb = legendContainer.node().getBoundingClientRect(); lx += xa._offset; @@ -29736,14 +39743,17 @@ function getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g) { name = plainText(d.name, d.nameLength); } + var h0 = hovermode.charAt(0); + var h1 = h0 === 'x' ? 'y' : 'x'; + if(d.zLabel !== undefined) { if(d.xLabel !== undefined) text += 'x: ' + d.xLabel + '
'; if(d.yLabel !== undefined) text += 'y: ' + d.yLabel + '
'; if(d.trace.type !== 'choropleth' && d.trace.type !== 'choroplethmapbox') { text += (text ? 'z: ' : '') + d.zLabel; } - } else if(showCommonLabel && d[hovermode.charAt(0) + 'Label'] === t0) { - text = d[(hovermode.charAt(0) === 'x' ? 'y' : 'x') + 'Label'] || ''; + } else if(showCommonLabel && d[h0 + 'Label'] === t0) { + text = d[h1 + 'Label'] || ''; } else if(d.xLabel === undefined) { if(d.yLabel !== undefined && d.trace.type !== 'scattercarpet') { text = d.yLabel; @@ -29772,16 +39782,20 @@ function getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g) { } // hovertemplate - var d3locale = fullLayout._d3locale; var hovertemplate = d.hovertemplate || false; - var hovertemplateLabels = d.hovertemplateLabels || d; - var eventData = d.eventData[0] || {}; if(hovertemplate) { + var labels = d.hovertemplateLabels || d; + + if(d[h0 + 'Label'] !== t0) { + labels[h0 + 'other'] = labels[h0 + 'Val']; + labels[h0 + 'otherLabel'] = labels[h0 + 'Label']; + } + text = Lib.hovertemplateString( hovertemplate, - hovertemplateLabels, - d3locale, - eventData, + labels, + fullLayout._d3locale, + d.eventData[0] || {}, d.trace._meta ); @@ -30098,11 +40112,11 @@ function cleanPoint(d, hovermode) { // and convert the x and y label values into formatted text if(d.xLabelVal !== undefined) { - d.xLabel = ('xLabel' in d) ? d.xLabel : Axes.hoverLabelText(d.xa, d.xLabelVal); + d.xLabel = ('xLabel' in d) ? d.xLabel : Axes.hoverLabelText(d.xa, d.xLabelVal, trace.xhoverformat); d.xVal = d.xa.c2d(d.xLabelVal); } if(d.yLabelVal !== undefined) { - d.yLabel = ('yLabel' in d) ? d.yLabel : Axes.hoverLabelText(d.ya, d.yLabelVal); + d.yLabel = ('yLabel' in d) ? d.yLabel : Axes.hoverLabelText(d.ya, d.yLabelVal, trace.yhoverformat); d.yVal = d.ya.c2d(d.yLabelVal); } @@ -30360,15 +40374,52 @@ function plainText(s, len) { }); } -},{"../../lib":233,"../../lib/events":226,"../../lib/override_cursor":244,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"../legend/defaults":157,"../legend/draw":158,"./constants":139,"./helpers":141,"d3":21,"fast-isnumeric":23,"tinycolor2":88}],143:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +function orderRangePoints(hoverData, hovermode) { + var axLetter = hovermode.charAt(0); + var first = []; + var second = []; + var last = []; + + for(var i = 0; i < hoverData.length; i++) { + var d = hoverData[i]; + + if( + Registry.traceIs(d.trace, 'bar-like') || + Registry.traceIs(d.trace, 'box-violin') + ) { + last.push(d); + } else if(d.trace[axLetter + 'period']) { + second.push(d); + } else { + first.push(d); + } + } + + return first.concat(second).concat(last); +} + +function getCoord(axLetter, winningPoint, fullLayout) { + var ax = winningPoint[axLetter + 'a']; + var val = winningPoint[axLetter + 'Val']; + + if(ax.type === 'category') val = ax._categoriesMap[val]; + else if(ax.type === 'date') val = ax.d2c(val); + + var cd0 = winningPoint.cd[winningPoint.index]; + if(cd0 && cd0.t && cd0.t.posLetter === ax._id) { + if( + fullLayout.boxmode === 'group' || + fullLayout.violinmode === 'group' + ) { + val += cd0.t.dPos; + } + } + + return val; +} + +},{"../../lib":285,"../../lib/events":278,"../../lib/override_cursor":296,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"../legend/defaults":207,"../legend/draw":208,"./constants":189,"./helpers":191,"@plotly/d3":20,"fast-isnumeric":31,"tinycolor2":119}],193:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -30406,21 +40457,13 @@ module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts coerce('hoverlabel.align', opts.align); }; -},{"../../lib":233,"../color":105,"./helpers":141}],144:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../color":155,"./helpers":191}],194:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); var layoutAttributes = _dereq_('./layout_attributes'); -module.exports = function handleHoverModeDefaults(layoutIn, layoutOut, fullData) { +module.exports = function handleHoverModeDefaults(layoutIn, layoutOut) { function coerce(attr, dflt) { // don't coerce if it is already coerced in other place e.g. in cartesian defaults if(layoutOut[attr] !== undefined) return layoutOut[attr]; @@ -30428,52 +40471,14 @@ module.exports = function handleHoverModeDefaults(layoutIn, layoutOut, fullData) return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt); } - var clickmode = coerce('clickmode'); - - var hovermodeDflt; - if(layoutOut._has('cartesian')) { - if(clickmode.indexOf('select') > -1) { - hovermodeDflt = 'closest'; - } else { - // flag for 'horizontal' plots: - // determines the state of the mode bar 'compare' hovermode button - layoutOut._isHoriz = isHoriz(fullData, layoutOut); - hovermodeDflt = layoutOut._isHoriz ? 'y' : 'x'; - } - } else hovermodeDflt = 'closest'; - - return coerce('hovermode', hovermodeDflt); + coerce('clickmode'); + return coerce('hovermode'); }; -function isHoriz(fullData, fullLayout) { - var stackOpts = fullLayout._scatterStackOpts || {}; - - for(var i = 0; i < fullData.length; i++) { - var trace = fullData[i]; - var subplot = trace.xaxis + trace.yaxis; - var subplotStackOpts = stackOpts[subplot] || {}; - var groupOpts = subplotStackOpts[trace.stackgroup] || {}; - - if(trace.orientation !== 'h' && groupOpts.orientation !== 'h') { - return false; - } - } - - return true; -} - -},{"../../lib":233,"./layout_attributes":146}],145:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./layout_attributes":196}],195:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var dragElement = _dereq_('../dragelement'); var helpers = _dereq_('./helpers'); @@ -30541,22 +40546,13 @@ function castHoverinfo(trace, fullLayout, ptNumber) { return Lib.castOption(trace, ptNumber, 'hoverinfo', _coerce); } -},{"../../lib":233,"../dragelement":124,"./attributes":136,"./calc":137,"./click":138,"./constants":139,"./defaults":140,"./helpers":141,"./hover":142,"./layout_attributes":146,"./layout_defaults":147,"./layout_global_defaults":148,"d3":21}],146:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../dragelement":174,"./attributes":186,"./calc":187,"./click":188,"./constants":189,"./defaults":190,"./helpers":191,"./hover":192,"./layout_attributes":196,"./layout_defaults":197,"./layout_global_defaults":198,"@plotly/d3":20}],196:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); var fontAttrs = _dereq_('../../plots/font_attributes')({ editType: 'none', - }); fontAttrs.family.dflt = constants.HOVERFONT; fontAttrs.size.dflt = constants.HOVERFONTSIZE; @@ -30564,16 +40560,13 @@ fontAttrs.size.dflt = constants.HOVERFONTSIZE; module.exports = { clickmode: { valType: 'flaglist', - flags: ['event', 'select'], dflt: 'event', editType: 'plot', extras: ['none'], - }, dragmode: { valType: 'enumerated', - values: [ 'zoom', 'pan', @@ -30590,99 +40583,74 @@ module.exports = { ], dflt: 'zoom', editType: 'modebar', - }, hovermode: { valType: 'enumerated', - values: ['x', 'y', 'closest', false, 'x unified', 'y unified'], + dflt: 'closest', editType: 'modebar', - }, hoverdistance: { valType: 'integer', min: -1, dflt: 20, - editType: 'none', - }, spikedistance: { valType: 'integer', min: -1, - dflt: 20, - + dflt: -1, editType: 'none', - }, hoverlabel: { bgcolor: { valType: 'color', - editType: 'none', - }, bordercolor: { valType: 'color', - editType: 'none', - }, font: fontAttrs, align: { valType: 'enumerated', values: ['left', 'right', 'auto'], dflt: 'auto', - editType: 'none', - }, namelength: { valType: 'integer', min: -1, dflt: 15, - editType: 'none', - }, editType: 'none' }, selectdirection: { valType: 'enumerated', - values: ['h', 'v', 'd', 'any'], dflt: 'any', - editType: 'none' } }; -},{"../../plots/font_attributes":307,"./constants":139}],147:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/font_attributes":359,"./constants":189}],197:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); -var isUnifiedHover = _dereq_('./helpers').isUnifiedHover; var layoutAttributes = _dereq_('./layout_attributes'); var handleHoverModeDefaults = _dereq_('./hovermode_defaults'); var handleHoverLabelDefaults = _dereq_('./hoverlabel_defaults'); -module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { +module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { function coerce(attr, dflt) { return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt); } - var hoverMode = handleHoverModeDefaults(layoutIn, layoutOut, fullData); + var hoverMode = handleHoverModeDefaults(layoutIn, layoutOut); if(hoverMode) { coerce('hoverdistance'); - coerce('spikedistance', isUnifiedHover(hoverMode) ? -1 : undefined); + coerce('spikedistance'); } var dragMode = coerce('dragmode'); @@ -30705,15 +40673,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { handleHoverLabelDefaults(layoutIn, layoutOut, coerce); }; -},{"../../lib":233,"./helpers":141,"./hoverlabel_defaults":143,"./hovermode_defaults":144,"./layout_attributes":146}],148:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./hoverlabel_defaults":193,"./hovermode_defaults":194,"./layout_attributes":196}],198:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -30728,15 +40688,7 @@ module.exports = function supplyLayoutGlobalDefaults(layoutIn, layoutOut) { handleHoverLabelDefaults(layoutIn, layoutOut, coerce); }; -},{"../../lib":233,"./hoverlabel_defaults":143,"./layout_attributes":146}],149:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./hoverlabel_defaults":193,"./layout_attributes":196}],199:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -30749,92 +40701,69 @@ var gridAttrs = { rows: { valType: 'integer', min: 1, - editType: 'plot', - }, roworder: { valType: 'enumerated', values: ['top to bottom', 'bottom to top'], dflt: 'top to bottom', - editType: 'plot', - }, columns: { valType: 'integer', min: 1, - editType: 'plot', - }, subplots: { valType: 'info_array', freeLength: true, dimensions: 2, items: {valType: 'enumerated', values: [counterRegex('xy').toString(), ''], editType: 'plot'}, - editType: 'plot', - }, xaxes: { valType: 'info_array', freeLength: true, items: {valType: 'enumerated', values: [cartesianIdRegex.x.toString(), ''], editType: 'plot'}, - editType: 'plot', - }, yaxes: { valType: 'info_array', freeLength: true, items: {valType: 'enumerated', values: [cartesianIdRegex.y.toString(), ''], editType: 'plot'}, - editType: 'plot', - }, pattern: { valType: 'enumerated', values: ['independent', 'coupled'], dflt: 'coupled', - editType: 'plot', - }, xgap: { valType: 'number', min: 0, max: 1, - editType: 'plot', - }, ygap: { valType: 'number', min: 0, max: 1, - editType: 'plot', - }, domain: domainAttrs({name: 'grid', editType: 'plot', noGridCell: true}, { - }), xside: { valType: 'enumerated', values: ['bottom', 'bottom plot', 'top plot', 'top'], dflt: 'bottom plot', - editType: 'plot', - }, yside: { valType: 'enumerated', values: ['left', 'left plot', 'right plot', 'right'], dflt: 'left plot', - editType: 'plot', - }, editType: 'plot' }; @@ -31102,15 +41031,7 @@ module.exports = { contentDefaults: contentDefaults }; -},{"../../lib":233,"../../lib/regex":249,"../../plot_api/plot_template":268,"../../plots/cartesian/constants":285,"../../plots/domain":306}],150:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../lib/regex":301,"../../plot_api/plot_template":320,"../../plots/cartesian/constants":337,"../../plots/domain":358}],200:[function(_dereq_,module,exports){ 'use strict'; var cartesianConstants = _dereq_('../../plots/cartesian/constants'); @@ -31121,95 +41042,73 @@ var axisPlaceableObjs = _dereq_('../../constants/axis_placeable_objects'); module.exports = templatedArray('image', { visible: { valType: 'boolean', - dflt: true, editType: 'arraydraw', - }, source: { valType: 'string', - editType: 'arraydraw', - }, layer: { valType: 'enumerated', values: ['below', 'above'], dflt: 'above', - editType: 'arraydraw', - }, sizex: { valType: 'number', - dflt: 0, editType: 'arraydraw', - }, sizey: { valType: 'number', - dflt: 0, editType: 'arraydraw', - }, sizing: { valType: 'enumerated', values: ['fill', 'contain', 'stretch'], dflt: 'contain', - editType: 'arraydraw', - }, opacity: { valType: 'number', - min: 0, max: 1, dflt: 1, editType: 'arraydraw', - }, x: { valType: 'any', - dflt: 0, editType: 'arraydraw', - }, y: { valType: 'any', - dflt: 0, editType: 'arraydraw', - }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'left', - editType: 'arraydraw', - }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], dflt: 'top', - editType: 'arraydraw', - }, xref: { @@ -31219,9 +41118,7 @@ module.exports = templatedArray('image', { cartesianConstants.idRegex.x.toString() ], dflt: 'paper', - editType: 'arraydraw', - }, yref: { @@ -31231,23 +41128,12 @@ module.exports = templatedArray('image', { cartesianConstants.idRegex.y.toString() ], dflt: 'paper', - editType: 'arraydraw', - }, editType: 'arraydraw' }); -},{"../../constants/axis_placeable_objects":208,"../../plot_api/plot_template":268,"../../plots/cartesian/constants":285}],151:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/axis_placeable_objects":261,"../../plot_api/plot_template":320,"../../plots/cartesian/constants":337}],201:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -31257,7 +41143,7 @@ var toLogRange = _dereq_('../../lib/to_log_range'); * convertCoords: when converting an axis between log and linear * you need to alter any images on that axis to keep them * pointing at the same data point. - * In v2.0 this will become obsolete (or perhaps size will still need conversion?) + * In v3.0 this will become obsolete (or perhaps size will still need conversion?) * we convert size by declaring that the maximum extent *in data units* should be * the same, assuming the image is anchored by its center (could remove that restriction * if we think it's important) even though the actual left and right values will not be @@ -31319,15 +41205,7 @@ module.exports = function convertCoords(gd, ax, newType, doExtra) { } }; -},{"../../lib/to_log_range":257,"fast-isnumeric":23}],152:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/to_log_range":309,"fast-isnumeric":31}],202:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -31384,18 +41262,10 @@ function imageDefaults(imageIn, imageOut, fullLayout) { return imageOut; } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"./attributes":150}],153:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"./attributes":200}],203:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Drawing = _dereq_('../drawing'); var Axes = _dereq_('../../plots/cartesian/axes'); var axisIds = _dereq_('../../plots/cartesian/axis_ids'); @@ -31623,7 +41493,7 @@ module.exports = function draw(gd) { subplot = allSubplots[i]; var subplotObj = fullLayout._plots[subplot]; - // filter out overlaid plots (which havd their images on the main plot) + // filter out overlaid plots (which have their images on the main plot) // and gl2d plots (which don't support below images, at least not yet) if(!subplotObj.imagelayer) continue; @@ -31642,15 +41512,7 @@ module.exports = function draw(gd) { } }; -},{"../../constants/xmlns_namespaces":213,"../../plots/cartesian/axes":279,"../../plots/cartesian/axis_ids":282,"../drawing":127,"d3":21}],154:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/xmlns_namespaces":266,"../../plots/cartesian/axes":331,"../../plots/cartesian/axis_ids":334,"../drawing":177,"@plotly/d3":20}],204:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -31666,15 +41528,7 @@ module.exports = { convertCoords: _dereq_('./convert_coords') }; -},{"../../plots/cartesian/include_components":291,"./attributes":150,"./convert_coords":151,"./defaults":152,"./draw":153}],155:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/include_components":343,"./attributes":200,"./convert_coords":201,"./defaults":202,"./draw":203}],205:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -31684,150 +41538,112 @@ var colorAttrs = _dereq_('../color/attributes'); module.exports = { bgcolor: { valType: 'color', - editType: 'legend', - }, bordercolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'legend', - }, borderwidth: { valType: 'number', min: 0, dflt: 0, - editType: 'legend', - }, font: fontAttrs({ editType: 'legend', - }), orientation: { valType: 'enumerated', values: ['v', 'h'], dflt: 'v', - editType: 'legend', - }, traceorder: { valType: 'flaglist', flags: ['reversed', 'grouped'], extras: ['normal'], - editType: 'legend', - }, tracegroupgap: { valType: 'number', min: 0, dflt: 10, - editType: 'legend', - }, itemsizing: { valType: 'enumerated', values: ['trace', 'constant'], dflt: 'trace', - editType: 'legend', - }, itemwidth: { valType: 'number', min: 30, dflt: 30, - editType: 'legend', - }, itemclick: { valType: 'enumerated', values: ['toggle', 'toggleothers', false], dflt: 'toggle', - editType: 'legend', - }, itemdoubleclick: { valType: 'enumerated', values: ['toggle', 'toggleothers', false], dflt: 'toggleothers', - editType: 'legend', - }, x: { valType: 'number', min: -2, max: 3, - editType: 'legend', - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'left', - editType: 'legend', - }, y: { valType: 'number', min: -2, max: 3, - editType: 'legend', - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], - editType: 'legend', - }, uirevision: { valType: 'any', - editType: 'none', - }, valign: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], dflt: 'middle', - editType: 'legend', - }, title: { text: { valType: 'string', dflt: '', - editType: 'legend', - }, font: fontAttrs({ editType: 'legend', - }), side: { valType: 'enumerated', values: ['top', 'left', 'top left'], - editType: 'legend', - }, editType: 'legend', }, @@ -31835,15 +41651,7 @@ module.exports = { editType: 'legend' }; -},{"../../plots/font_attributes":307,"../color/attributes":104}],156:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/font_attributes":359,"../color/attributes":154}],206:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -31859,15 +41667,7 @@ module.exports = { itemGap: 5 }; -},{}],157:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],207:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -31947,12 +41747,13 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { coerce('bgcolor', layoutOut.paper_bgcolor); coerce('bordercolor'); coerce('borderwidth'); - Lib.coerceFont(coerce, 'font', layoutOut.font); + var itemFont = Lib.coerceFont(coerce, 'font', layoutOut.font); var orientation = coerce('orientation'); + var isHorizontal = orientation === 'h'; var defaultX, defaultY, defaultYAnchor; - if(orientation === 'h') { + if(isHorizontal) { defaultX = 0; if(Registry.getComponentMethod('rangeslider', 'isVisible')(layoutIn.xaxis)) { @@ -31961,7 +41762,7 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { } else { // maybe use y=1.1 / yanchor=bottom as above // to avoid https://github.com/plotly/plotly.js/issues/1199 - // in v2 + // in v3 defaultY = -0.1; defaultYAnchor = 'top'; } @@ -31989,23 +41790,19 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { var titleText = coerce('title.text'); if(titleText) { - coerce('title.side', orientation === 'h' ? 'left' : 'top'); - Lib.coerceFont(coerce, 'title.font', layoutOut.font); + coerce('title.side', isHorizontal ? 'left' : 'top'); + var dfltTitleFont = Lib.extendFlat({}, itemFont, { + size: Lib.bigFont(itemFont.size) + }); + + Lib.coerceFont(coerce, 'title.font', dfltTitleFont); } }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/layout_attributes":311,"../../registry":326,"./attributes":155,"./helpers":161}],158:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/layout_attributes":364,"../../registry":373,"./attributes":205,"./helpers":211}],208:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Plots = _dereq_('../../plots/plots'); @@ -32027,19 +41824,24 @@ var getLegendData = _dereq_('./get_legend_data'); var style = _dereq_('./style'); var helpers = _dereq_('./helpers'); +var MAIN_TITLE = 1; + module.exports = function draw(gd, opts) { + if(!opts) opts = gd._fullLayout.legend || {}; + return _draw(gd, opts); +}; + +function _draw(gd, legendObj) { var fullLayout = gd._fullLayout; var clipId = 'legend' + fullLayout._uid; var layer; - // Check whether this is the main legend (ie. called without any opts) - if(!opts) { - opts = fullLayout.legend || {}; - opts._main = true; - layer = fullLayout._infolayer; - } else { - layer = opts.layer; + var inHover = legendObj._inHover; + if(inHover) { + layer = legendObj.layer; clipId += '-hover'; + } else { + layer = fullLayout._infolayer; } if(!layer) return; @@ -32047,24 +41849,24 @@ module.exports = function draw(gd, opts) { if(!gd._legendMouseDownTime) gd._legendMouseDownTime = 0; var legendData; - if(opts._main) { + if(!inHover) { if(!gd.calcdata) return; - legendData = fullLayout.showlegend && getLegendData(gd.calcdata, opts); + legendData = fullLayout.showlegend && getLegendData(gd.calcdata, legendObj); } else { - if(!opts.entries) return; - legendData = getLegendData(opts.entries, opts); + if(!legendObj.entries) return; + legendData = getLegendData(legendObj.entries, legendObj); } var hiddenSlices = fullLayout.hiddenlabels || []; - if(opts._main && (!fullLayout.showlegend || !legendData.length)) { + if(!inHover && (!fullLayout.showlegend || !legendData.length)) { layer.selectAll('.legend').remove(); fullLayout._topdefs.select('#' + clipId).remove(); return Plots.autoMargin(gd, 'legend'); } var legend = Lib.ensureSingle(layer, 'g', 'legend', function(s) { - if(opts._main) s.attr('pointer-events', 'all'); + if(!inHover) s.attr('pointer-events', 'all'); }); var clipPath = Lib.ensureSingleById(fullLayout._topdefs, 'clipPath', clipId, function(s) { @@ -32074,22 +41876,22 @@ module.exports = function draw(gd, opts) { var bg = Lib.ensureSingle(legend, 'rect', 'bg', function(s) { s.attr('shape-rendering', 'crispEdges'); }); - bg.call(Color.stroke, opts.bordercolor) - .call(Color.fill, opts.bgcolor) - .style('stroke-width', opts.borderwidth + 'px'); + bg.call(Color.stroke, legendObj.bordercolor) + .call(Color.fill, legendObj.bgcolor) + .style('stroke-width', legendObj.borderwidth + 'px'); var scrollBox = Lib.ensureSingle(legend, 'g', 'scrollbox'); - var title = opts.title; - opts._titleWidth = 0; - opts._titleHeight = 0; + var title = legendObj.title; + legendObj._titleWidth = 0; + legendObj._titleHeight = 0; if(title.text) { var titleEl = Lib.ensureSingle(scrollBox, 'text', 'legendtitletext'); titleEl.attr('text-anchor', 'start') .call(Drawing.font, title.font) .text(title.text); - textLayout(titleEl, scrollBox, gd, opts); // handle mathjax or multi-line text and compute title height + textLayout(titleEl, scrollBox, gd, legendObj, MAIN_TITLE); // handle mathjax or multi-line text and compute title height } else { scrollBox.selectAll('.legendtitletext').remove(); } @@ -32115,31 +41917,31 @@ module.exports = function draw(gd, opts) { return trace.visible === 'legendonly' ? 0.5 : 1; } }) - .each(function() { d3.select(this).call(drawTexts, gd, opts); }) - .call(style, gd, opts) - .each(function() { if(opts._main) d3.select(this).call(setupTraceToggle, gd); }); + .each(function() { d3.select(this).call(drawTexts, gd, legendObj); }) + .call(style, gd, legendObj) + .each(function() { if(!inHover) d3.select(this).call(setupTraceToggle, gd); }); Lib.syncOrAsync([ Plots.previousPromises, - function() { return computeLegendDimensions(gd, groups, traces, opts); }, + function() { return computeLegendDimensions(gd, groups, traces, legendObj); }, function() { // IF expandMargin return a Promise (which is truthy), // we're under a doAutoMargin redraw, so we don't have to // draw the remaining pieces below - if(opts._main && expandMargin(gd)) return; + if(!inHover && expandMargin(gd)) return; var gs = fullLayout._size; - var bw = opts.borderwidth; + var bw = legendObj.borderwidth; - var lx = gs.l + gs.w * opts.x - FROM_TL[getXanchor(opts)] * opts._width; - var ly = gs.t + gs.h * (1 - opts.y) - FROM_TL[getYanchor(opts)] * opts._effHeight; + var lx = gs.l + gs.w * legendObj.x - FROM_TL[getXanchor(legendObj)] * legendObj._width; + var ly = gs.t + gs.h * (1 - legendObj.y) - FROM_TL[getYanchor(legendObj)] * legendObj._effHeight; - if(opts._main && fullLayout.margin.autoexpand) { + if(!inHover && fullLayout.margin.autoexpand) { var lx0 = lx; var ly0 = ly; - lx = Lib.constrain(lx, 0, fullLayout.width - opts._width); - ly = Lib.constrain(ly, 0, fullLayout.height - opts._effHeight); + lx = Lib.constrain(lx, 0, fullLayout.width - legendObj._width); + ly = Lib.constrain(ly, 0, fullLayout.height - legendObj._effHeight); if(lx !== lx0) { Lib.log('Constrain legend.x to make legend fit inside graph'); @@ -32151,21 +41953,21 @@ module.exports = function draw(gd, opts) { // Set size and position of all the elements that make up a legend: // legend, background and border, scroll box and scroll bar as well as title - if(opts._main) Drawing.setTranslate(legend, lx, ly); + if(!inHover) Drawing.setTranslate(legend, lx, ly); // to be safe, remove previous listeners scrollBar.on('.drag', null); legend.on('wheel', null); - if(!opts._main || opts._height <= opts._maxHeight || gd._context.staticPlot) { + if(inHover || legendObj._height <= legendObj._maxHeight || gd._context.staticPlot) { // if scrollbar should not be shown. - var height = opts._effHeight; + var height = legendObj._effHeight; - // if not the main legend, let it be its full size - if(!opts._main) height = opts._height; + // if unified hover, let it be its full size + if(inHover) height = legendObj._height; bg.attr({ - width: opts._width - bw, + width: legendObj._width - bw, height: height - bw, x: bw / 2, y: bw / 2 @@ -32174,7 +41976,7 @@ module.exports = function draw(gd, opts) { Drawing.setTranslate(scrollBox, 0, 0); clipPath.select('rect').attr({ - width: opts._width - 2 * bw, + width: legendObj._width - 2 * bw, height: height - 2 * bw, x: bw, y: bw @@ -32183,36 +41985,36 @@ module.exports = function draw(gd, opts) { Drawing.setClipUrl(scrollBox, clipId, gd); Drawing.setRect(scrollBar, 0, 0, 0, 0); - delete opts._scrollY; + delete legendObj._scrollY; } else { var scrollBarHeight = Math.max(constants.scrollBarMinHeight, - opts._effHeight * opts._effHeight / opts._height); - var scrollBarYMax = opts._effHeight - + legendObj._effHeight * legendObj._effHeight / legendObj._height); + var scrollBarYMax = legendObj._effHeight - scrollBarHeight - 2 * constants.scrollBarMargin; - var scrollBoxYMax = opts._height - opts._effHeight; + var scrollBoxYMax = legendObj._height - legendObj._effHeight; var scrollRatio = scrollBarYMax / scrollBoxYMax; - var scrollBoxY = Math.min(opts._scrollY || 0, scrollBoxYMax); + var scrollBoxY = Math.min(legendObj._scrollY || 0, scrollBoxYMax); // increase the background and clip-path width // by the scrollbar width and margin bg.attr({ - width: opts._width - + width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin, - height: opts._effHeight - bw, + height: legendObj._effHeight - bw, x: bw / 2, y: bw / 2 }); clipPath.select('rect').attr({ - width: opts._width - + width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin, - height: opts._effHeight - 2 * bw, + height: legendObj._effHeight - 2 * bw, x: bw, y: bw + scrollBoxY }); @@ -32224,7 +42026,7 @@ module.exports = function draw(gd, opts) { // scroll legend by mousewheel or touchpad swipe up/down legend.on('wheel', function() { scrollBoxY = Lib.constrain( - opts._scrollY + + legendObj._scrollY + ((d3.event.deltaY / scrollBarYMax) * scrollBoxYMax), 0, scrollBoxYMax); scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio); @@ -32290,12 +42092,12 @@ module.exports = function draw(gd, opts) { } function scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio) { - opts._scrollY = gd._fullLayout.legend._scrollY = scrollBoxY; + legendObj._scrollY = gd._fullLayout.legend._scrollY = scrollBoxY; Drawing.setTranslate(scrollBox, 0, -scrollBoxY); Drawing.setRect( scrollBar, - opts._width, + legendObj._width, constants.scrollBarMargin + scrollBoxY * scrollRatio, constants.scrollBarWidth, scrollBarHeight @@ -32322,8 +42124,8 @@ module.exports = function draw(gd, opts) { Drawing.setTranslate(legend, newX, newY); - xf = dragElement.align(newX, 0, gs.l, gs.l + gs.w, opts.xanchor); - yf = dragElement.align(newY, 0, gs.t + gs.h, gs.t, opts.yanchor); + xf = dragElement.align(newX, 0, gs.l, gs.l + gs.w, legendObj.xanchor); + yf = dragElement.align(newY, 0, gs.t + gs.h, gs.t, legendObj.yanchor); }, doneFn: function() { if(xf !== undefined && yf !== undefined) { @@ -32345,7 +42147,7 @@ module.exports = function draw(gd, opts) { }); } }], gd); -}; +} function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { var trace = legendItem.data()[0][0].trace; @@ -32374,6 +42176,7 @@ function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { if(numClicks === 1) { legend._clickTimeout = setTimeout(function() { + if(!gd._fullLayout) return; handleClick(legendItem, gd, numClicks); }, gd._context.doubleClickDelay); } else if(numClicks === 2) { @@ -32385,16 +42188,15 @@ function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { } } -function drawTexts(g, gd, opts) { +function drawTexts(g, gd, legendObj) { var legendItem = g.data()[0][0]; var trace = legendItem.trace; var isPieLike = Registry.traceIs(trace, 'pie-like'); - var traceIndex = trace.index; - var isEditable = opts._main && gd._context.edits.legendText && !isPieLike; - var maxNameLength = opts._maxNameLength; + var isEditable = !legendObj._inHover && gd._context.edits.legendText && !isPieLike; + var maxNameLength = legendObj._maxNameLength; var name; - if(!opts.entries) { + if(!legendObj.entries) { name = isPieLike ? legendItem.label : trace.name; if(trace._meta) { name = Lib.templateString(name, trace._meta); @@ -32406,18 +42208,18 @@ function drawTexts(g, gd, opts) { var textEl = Lib.ensureSingle(g, 'text', 'legendtext'); textEl.attr('text-anchor', 'start') - .call(Drawing.font, opts.font) + .call(Drawing.font, legendObj.font) .text(isEditable ? ensureLength(name, maxNameLength) : name); - var textGap = opts.itemwidth + constants.itemGap * 2; + var textGap = legendObj.itemwidth + constants.itemGap * 2; svgTextUtils.positionText(textEl, textGap, 0); if(isEditable) { textEl.call(svgTextUtils.makeEditable, {gd: gd, text: name}) - .call(textLayout, g, gd, opts) + .call(textLayout, g, gd, legendObj) .on('edit', function(newName) { this.text(ensureLength(newName, maxNameLength)) - .call(textLayout, g, gd, opts); + .call(textLayout, g, gd, legendObj); var fullInput = legendItem.trace._fullInput || {}; var update = {}; @@ -32435,10 +42237,10 @@ function drawTexts(g, gd, opts) { update.name = newName; } - return Registry.call('_guiRestyle', gd, update, traceIndex); + return Registry.call('_guiRestyle', gd, update, trace.index); }); } else { - textLayout(textEl, g, gd, opts); + textLayout(textEl, g, gd, legendObj); } } @@ -32494,25 +42296,25 @@ function setupTraceToggle(g, gd) { }); } -function textLayout(s, g, gd, opts) { - if(!opts._main) s.attr('data-notex', true); // do not process MathJax if not main +function textLayout(s, g, gd, legendObj, aTitle) { + if(legendObj._inHover) s.attr('data-notex', true); // do not process MathJax for unified hover svgTextUtils.convertToTspans(s, gd, function() { - computeTextDimensions(g, gd, opts); + computeTextDimensions(g, gd, legendObj, aTitle); }); } -function computeTextDimensions(g, gd, opts) { +function computeTextDimensions(g, gd, legendObj, aTitle) { var legendItem = g.data()[0][0]; - if(opts._main && legendItem && !legendItem.trace.showlegend) { + if(!legendObj._inHover && legendItem && !legendItem.trace.showlegend) { g.remove(); return; } var mathjaxGroup = g.select('g[class*=math-group]'); var mathjaxNode = mathjaxGroup.node(); - if(!opts) opts = gd._fullLayout.legend; - var bw = opts.borderwidth; - var lineHeight = (legendItem ? opts : opts.title).font.size * LINE_SPACING; + if(!legendObj) legendObj = gd._fullLayout.legend; + var bw = legendObj.borderwidth; + var lineHeight = (aTitle === MAIN_TITLE ? legendObj.title : legendObj).font.size * LINE_SPACING; var height, width; if(mathjaxNode) { @@ -32521,14 +42323,14 @@ function computeTextDimensions(g, gd, opts) { height = mathjaxBB.height; width = mathjaxBB.width; - if(legendItem) { + if(aTitle === MAIN_TITLE) { + Drawing.setTranslate(mathjaxGroup, bw, bw + height * 0.75); + } else { // legend item Drawing.setTranslate(mathjaxGroup, 0, height * 0.25); - } else { // case of title - Drawing.setTranslate(mathjaxGroup, bw, height * 0.75 + bw); } } else { - var textEl = g.select(legendItem ? - '.legendtext' : '.legendtitletext' + var textEl = g.select(aTitle === MAIN_TITLE ? + '.legendtitletext' : '.legendtext' ); var textLines = svgTextUtils.lineCount(textEl); var textNode = textEl.node(); @@ -32538,36 +42340,45 @@ function computeTextDimensions(g, gd, opts) { // approximation to height offset to center the font // to avoid getBoundingClientRect - var textY = lineHeight * ((textLines - 1) / 2 - 0.3); - if(legendItem) { - var textGap = opts.itemwidth + constants.itemGap * 2; - svgTextUtils.positionText(textEl, textGap, -textY); - } else { // case of title - svgTextUtils.positionText(textEl, constants.titlePad + bw, lineHeight + bw); + if(aTitle === MAIN_TITLE) { + if(legendObj.title.side === 'left') { + // add extra space between legend title and itmes + width += constants.itemGap * 2; + } + + svgTextUtils.positionText(textEl, + bw + constants.titlePad, + bw + lineHeight + ); + } else { // legend item + svgTextUtils.positionText(textEl, + legendObj.itemwidth + constants.itemGap * 2, + -lineHeight * ((textLines - 1) / 2 - 0.3) + ); } } - if(legendItem) { + if(aTitle === MAIN_TITLE) { + legendObj._titleWidth = width; + legendObj._titleHeight = height; + } else { // legend item legendItem.lineHeight = lineHeight; legendItem.height = Math.max(height, 16) + 3; legendItem.width = width; - } else { // case of title - opts._titleWidth = width; - opts._titleHeight = height; } } -function getTitleSize(opts) { +function getTitleSize(legendObj) { var w = 0; var h = 0; - var side = opts.title.side; + var side = legendObj.title.side; if(side) { if(side.indexOf('left') !== -1) { - w = opts._titleWidth; + w = legendObj._titleWidth; } if(side.indexOf('top') !== -1) { - h = opts._titleHeight; + h = legendObj._titleHeight; } } @@ -32584,68 +42395,70 @@ function getTitleSize(opts) { * - _width: legend width * - _maxWidth (for orientation:h only): maximum width before starting new row */ -function computeLegendDimensions(gd, groups, traces, opts) { +function computeLegendDimensions(gd, groups, traces, legendObj) { var fullLayout = gd._fullLayout; - if(!opts) opts = fullLayout.legend; + if(!legendObj) legendObj = fullLayout.legend; var gs = fullLayout._size; - var isVertical = helpers.isVertical(opts); - var isGrouped = helpers.isGrouped(opts); + var isVertical = helpers.isVertical(legendObj); + var isGrouped = helpers.isGrouped(legendObj); - var bw = opts.borderwidth; + var bw = legendObj.borderwidth; var bw2 = 2 * bw; var itemGap = constants.itemGap; - var textGap = opts.itemwidth + itemGap * 2; + var textGap = legendObj.itemwidth + itemGap * 2; var endPad = 2 * (bw + itemGap); - var yanchor = getYanchor(opts); - var isBelowPlotArea = opts.y < 0 || (opts.y === 0 && yanchor === 'top'); - var isAbovePlotArea = opts.y > 1 || (opts.y === 1 && yanchor === 'bottom'); + var yanchor = getYanchor(legendObj); + var isBelowPlotArea = legendObj.y < 0 || (legendObj.y === 0 && yanchor === 'top'); + var isAbovePlotArea = legendObj.y > 1 || (legendObj.y === 1 && yanchor === 'bottom'); + + var traceGroupGap = legendObj.tracegroupgap; // - if below/above plot area, give it the maximum potential margin-push value // - otherwise, extend the height of the plot area - opts._maxHeight = Math.max( + legendObj._maxHeight = Math.max( (isBelowPlotArea || isAbovePlotArea) ? fullLayout.height / 2 : gs.h, 30 ); var toggleRectWidth = 0; - opts._width = 0; - opts._height = 0; - var titleSize = getTitleSize(opts); + legendObj._width = 0; + legendObj._height = 0; + var titleSize = getTitleSize(legendObj); if(isVertical) { traces.each(function(d) { var h = d[0].height; Drawing.setTranslate(this, bw + titleSize[0], - bw + titleSize[1] + opts._height + h / 2 + itemGap + bw + titleSize[1] + legendObj._height + h / 2 + itemGap ); - opts._height += h; - opts._width = Math.max(opts._width, d[0].width); + legendObj._height += h; + legendObj._width = Math.max(legendObj._width, d[0].width); }); - toggleRectWidth = textGap + opts._width; - opts._width += itemGap + textGap + bw2; - opts._height += endPad; + toggleRectWidth = textGap + legendObj._width; + legendObj._width += itemGap + textGap + bw2; + legendObj._height += endPad; if(isGrouped) { groups.each(function(d, i) { - Drawing.setTranslate(this, 0, i * opts.tracegroupgap); + Drawing.setTranslate(this, 0, i * legendObj.tracegroupgap); }); - opts._height += (opts._lgroupsLength - 1) * opts.tracegroupgap; + legendObj._height += (legendObj._lgroupsLength - 1) * legendObj.tracegroupgap; } } else { - var xanchor = getXanchor(opts); - var isLeftOfPlotArea = opts.x < 0 || (opts.x === 0 && xanchor === 'right'); - var isRightOfPlotArea = opts.x > 1 || (opts.x === 1 && xanchor === 'left'); + var xanchor = getXanchor(legendObj); + var isLeftOfPlotArea = legendObj.x < 0 || (legendObj.x === 0 && xanchor === 'right'); + var isRightOfPlotArea = legendObj.x > 1 || (legendObj.x === 1 && xanchor === 'left'); var isBeyondPlotAreaY = isAbovePlotArea || isBelowPlotArea; var hw = fullLayout.width / 2; // - if placed within x-margins, extend the width of the plot area // - else if below/above plot area and anchored in the margin, extend to opposite margin, // - otherwise give it the maximum potential margin-push value - opts._maxWidth = Math.max( + legendObj._maxWidth = Math.max( isLeftOfPlotArea ? ((isBeyondPlotAreaY && xanchor === 'left') ? gs.l + gs.w : hw) : isRightOfPlotArea ? ((isBeyondPlotAreaY && xanchor === 'right') ? gs.r + gs.w : hw) : gs.w, @@ -32681,10 +42494,10 @@ function computeLegendDimensions(gd, groups, traces, opts) { var next = maxWidthInGroup + itemGap; - if((next + bw + groupOffsetX) > opts._maxWidth) { + if((next + bw + groupOffsetX) > legendObj._maxWidth) { maxRowWidth = Math.max(maxRowWidth, groupOffsetX); groupOffsetX = 0; - groupOffsetY += maxGroupHeightInRow + opts.tracegroupgap; + groupOffsetY += maxGroupHeightInRow + traceGroupGap; maxGroupHeightInRow = offsetY; } @@ -32693,11 +42506,11 @@ function computeLegendDimensions(gd, groups, traces, opts) { groupOffsetX += next; }); - opts._width = Math.max(maxRowWidth, groupOffsetX) + bw; - opts._height = groupOffsetY + maxGroupHeightInRow + endPad; + legendObj._width = Math.max(maxRowWidth, groupOffsetX) + bw; + legendObj._height = groupOffsetY + maxGroupHeightInRow + endPad; } else { var nTraces = traces.size(); - var oneRowLegend = (combinedItemWidth + bw2 + (nTraces - 1) * itemGap) < opts._maxWidth; + var oneRowLegend = (combinedItemWidth + bw2 + (nTraces - 1) * itemGap) < legendObj._maxWidth; var maxItemHeightInRow = 0; var offsetX = 0; @@ -32708,11 +42521,11 @@ function computeLegendDimensions(gd, groups, traces, opts) { var w = textGap + d[0].width; var next = (oneRowLegend ? w : maxItemWidth) + itemGap; - if((next + bw + offsetX - itemGap) >= opts._maxWidth) { + if((next + bw + offsetX - itemGap) >= legendObj._maxWidth) { maxRowWidth = Math.max(maxRowWidth, rowWidth); offsetX = 0; offsetY += maxItemHeightInRow; - opts._height += maxItemHeightInRow; + legendObj._height += maxItemHeightInRow; maxItemHeightInRow = 0; } @@ -32727,30 +42540,30 @@ function computeLegendDimensions(gd, groups, traces, opts) { }); if(oneRowLegend) { - opts._width = offsetX + bw2; - opts._height = maxItemHeightInRow + endPad; + legendObj._width = offsetX + bw2; + legendObj._height = maxItemHeightInRow + endPad; } else { - opts._width = Math.max(maxRowWidth, rowWidth) + bw2; - opts._height += maxItemHeightInRow + endPad; + legendObj._width = Math.max(maxRowWidth, rowWidth) + bw2; + legendObj._height += maxItemHeightInRow + endPad; } } } - opts._width = Math.ceil( + legendObj._width = Math.ceil( Math.max( - opts._width + titleSize[0], - opts._titleWidth + 2 * (bw + constants.titlePad) + legendObj._width + titleSize[0], + legendObj._titleWidth + 2 * (bw + constants.titlePad) ) ); - opts._height = Math.ceil( + legendObj._height = Math.ceil( Math.max( - opts._height + titleSize[1], - opts._titleHeight + 2 * (bw + constants.itemGap) + legendObj._height + titleSize[1], + legendObj._titleHeight + 2 * (bw + constants.itemGap) ) ); - opts._effHeight = Math.min(opts._height, opts._maxHeight); + legendObj._effHeight = Math.min(legendObj._height, legendObj._maxHeight); var edits = gd._context.edits; var isEditable = edits.legendText || edits.legendPosition; @@ -32765,41 +42578,33 @@ function computeLegendDimensions(gd, groups, traces, opts) { function expandMargin(gd) { var fullLayout = gd._fullLayout; - var opts = fullLayout.legend; - var xanchor = getXanchor(opts); - var yanchor = getYanchor(opts); + var legendObj = fullLayout.legend; + var xanchor = getXanchor(legendObj); + var yanchor = getYanchor(legendObj); return Plots.autoMargin(gd, 'legend', { - x: opts.x, - y: opts.y, - l: opts._width * (FROM_TL[xanchor]), - r: opts._width * (FROM_BR[xanchor]), - b: opts._effHeight * (FROM_BR[yanchor]), - t: opts._effHeight * (FROM_TL[yanchor]) + x: legendObj.x, + y: legendObj.y, + l: legendObj._width * (FROM_TL[xanchor]), + r: legendObj._width * (FROM_BR[xanchor]), + b: legendObj._effHeight * (FROM_BR[yanchor]), + t: legendObj._effHeight * (FROM_TL[yanchor]) }); } -function getXanchor(opts) { - return Lib.isRightAnchor(opts) ? 'right' : - Lib.isCenterAnchor(opts) ? 'center' : +function getXanchor(legendObj) { + return Lib.isRightAnchor(legendObj) ? 'right' : + Lib.isCenterAnchor(legendObj) ? 'center' : 'left'; } -function getYanchor(opts) { - return Lib.isBottomAnchor(opts) ? 'bottom' : - Lib.isMiddleAnchor(opts) ? 'middle' : +function getYanchor(legendObj) { + return Lib.isBottomAnchor(legendObj) ? 'bottom' : + Lib.isMiddleAnchor(legendObj) ? 'middle' : 'top'; } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/events":226,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"./constants":156,"./get_legend_data":159,"./handle_click":160,"./helpers":161,"./style":163,"d3":21}],159:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/events":278,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"./constants":206,"./get_legend_data":209,"./handle_click":210,"./helpers":211,"./style":213,"@plotly/d3":20}],209:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -32813,7 +42618,6 @@ module.exports = function getLegendData(calcdata, opts) { var lgroupi = 0; var maxNameLength = 0; var i, j; - var main = opts._main; function addOneItem(legendGroup, legendItem) { // each '' legend group is treated as a separate group @@ -32839,7 +42643,7 @@ module.exports = function getLegendData(calcdata, opts) { var trace = cd0.trace; var lgroup = trace.legendgroup; - if(main && (!trace.visible || !trace.showlegend)) continue; + if(!opts._inHover && (!trace.visible || !trace.showlegend)) continue; if(Registry.traceIs(trace, 'pie-like')) { if(!slicesShown[lgroup]) slicesShown[lgroup] = {}; @@ -32900,15 +42704,7 @@ module.exports = function getLegendData(calcdata, opts) { return legendData; }; -},{"../../registry":326,"./helpers":161}],160:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./helpers":211}],210:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -33139,16 +42935,7 @@ module.exports = function handleClick(g, gd, numClicks) { } }; -},{"../../lib":233,"../../registry":326}],161:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373}],211:[function(_dereq_,module,exports){ 'use strict'; exports.isGrouped = function isGrouped(legendLayout) { @@ -33163,16 +42950,7 @@ exports.isReversed = function isReversed(legendLayout) { return (legendLayout.traceorder || '').indexOf('reversed') !== -1; }; -},{}],162:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],212:[function(_dereq_,module,exports){ 'use strict'; @@ -33187,18 +42965,10 @@ module.exports = { style: _dereq_('./style') }; -},{"./attributes":155,"./defaults":157,"./draw":158,"./style":163}],163:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":205,"./defaults":207,"./draw":208,"./style":213}],213:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -33293,13 +43063,16 @@ module.exports = function style(s, gd, legend) { .each(styleOHLC); function styleLines(d) { + var styleGuide = getStyleGuide(d); + var showFill = styleGuide.showFill; + var showLine = styleGuide.showLine; + var showGradientLine = styleGuide.showGradientLine; + var showGradientFill = styleGuide.showGradientFill; + var anyFill = styleGuide.anyFill; + var anyLine = styleGuide.anyLine; + var d0 = d[0]; var trace = d0.trace; - var showFill = trace.visible && trace.fill && trace.fill !== 'none'; - var showLine = subTypes.hasLines(trace); - var contours = trace.contours; - var showGradientLine = false; - var showGradientFill = false; var dMod, tMod; var cOpts = extractOpts(trace); @@ -33325,28 +43098,10 @@ module.exports = function style(s, gd, legend) { } }; - if(contours) { - var coloring = contours.coloring; - - if(coloring === 'lines') { - showGradientLine = true; - } else { - showLine = coloring === 'none' || coloring === 'heatmap' || contours.showlines; - } - - if(contours.type === 'constraint') { - showFill = contours._operation !== '='; - } else if(coloring === 'fill' || coloring === 'heatmap') { - showGradientFill = true; - } - } - // with fill and no markers or text, move the line and fill up a bit // so it's more centered - var markersOrText = subTypes.hasMarkers(trace) || subTypes.hasText(trace); - var anyFill = showFill || showGradientFill; - var anyLine = showLine || showGradientLine; - var pathStart = (markersOrText || !anyFill) ? 'M5,0' : + + var pathStart = (subTypes.hasMarkers(trace) || !anyFill) ? 'M5,0' : // with a line leave it slightly below center, to leave room for the // line thickness and because the line is usually more prominent anyLine ? 'M5,-2' : 'M5,-3'; @@ -33382,11 +43137,15 @@ module.exports = function style(s, gd, legend) { } function stylePoints(d) { + var styleGuide = getStyleGuide(d); + var anyFill = styleGuide.anyFill; + var anyLine = styleGuide.anyLine; + var showLine = styleGuide.showLine; + var showMarker = styleGuide.showMarker; + var d0 = d[0]; var trace = d0.trace; - var showMarkers = subTypes.hasMarkers(trace); - var showText = subTypes.hasText(trace); - var showLines = subTypes.hasLines(trace); + var showText = !showMarker && !anyLine && !anyFill && subTypes.hasText(trace); var dMod, tMod; // 'scatter3d' don't use gd.calcdata, @@ -33415,11 +43174,11 @@ module.exports = function style(s, gd, legend) { } // constrain text, markers, etc so they'll fit on the legend - if(showMarkers || showText || showLines) { + if(showMarker || showText || showLine) { var dEdit = {}; var tEdit = {}; - if(showMarkers) { + if(showMarker) { dEdit.mc = boundVal('marker.color', pickFirst); dEdit.mx = boundVal('marker.symbol', pickFirst); dEdit.mo = boundVal('marker.opacity', Lib.mean, [0.2, 1]); @@ -33436,7 +43195,7 @@ module.exports = function style(s, gd, legend) { tEdit.marker.size = ms; } - if(showLines) { + if(showLine) { tEdit.line = { width: boundVal('line.width', pickFirst, [0, 10], CST_LINE_WIDTH) }; @@ -33463,7 +43222,7 @@ module.exports = function style(s, gd, legend) { var ptgroup = d3.select(this).select('g.legendpoints'); var pts = ptgroup.selectAll('path.scatterpts') - .data(showMarkers ? dMod : []); + .data(showMarker ? dMod : []); // make sure marker is on the bottom, in case it enters after text pts.enter().insert('path', ':first-child') .classed('scatterpts', true) @@ -33473,7 +43232,7 @@ module.exports = function style(s, gd, legend) { // 'mrc' is set in pointStyle and used in textPointStyle: // constrain it here - if(showMarkers) dMod[0].mrc = 3; + if(showMarker) dMod[0].mrc = 3; var txt = ptgroup.selectAll('g.pointtext') .data(showText ? dMod : []); @@ -33555,8 +43314,23 @@ module.exports = function style(s, gd, legend) { var d0 = d[0]; var w = boundLineWidth(d0.mlw, marker.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH); - p.style('stroke-width', w + 'px') - .call(Color.fill, d0.mc || marker.color); + p.style('stroke-width', w + 'px'); + + var fillColor = d0.mc || marker.color; + + var markerPattern = marker.pattern; + var patternShape = markerPattern && Drawing.getPatternAttr(markerPattern.shape, 0, ''); + + if(patternShape) { + var patternBGColor = Drawing.getPatternAttr(markerPattern.bgcolor, 0, null); + var patternSize = Math.min(12, Drawing.getPatternAttr(markerPattern.size, 0, 8)); + var patternSolidity = Drawing.getPatternAttr(markerPattern.solidity, 0, 0.3); + var patternID = 'legend-' + trace.uid; + p.call(Drawing.pattern, gd, patternID, patternShape, patternBGColor, + fillColor, patternSize, patternSolidity, 'fill'); + } else { + p.call(Color.fill, fillColor); + } if(w) Color.stroke(p, d0.mlc || markerLine.color); }); @@ -33820,15 +43594,88 @@ function getGradientDirection(reversescale, isRadial) { return str + (reversescale ? '' : 'reversed'); } -},{"../../lib":233,"../../registry":326,"../../traces/pie/helpers":439,"../../traces/pie/style_one":445,"../../traces/scatter/subtypes":472,"../color":105,"../colorscale/helpers":116,"../drawing":127,"./constants":156,"d3":21}],164:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +function getStyleGuide(d) { + var trace = d[0].trace; + var contours = trace.contours; + var showLine = subTypes.hasLines(trace); + var showMarker = subTypes.hasMarkers(trace); + var showFill = trace.visible && trace.fill && trace.fill !== 'none'; + var showGradientLine = false; + var showGradientFill = false; + + if(contours) { + var coloring = contours.coloring; + + if(coloring === 'lines') { + showGradientLine = true; + } else { + showLine = coloring === 'none' || coloring === 'heatmap' || contours.showlines; + } + + if(contours.type === 'constraint') { + showFill = contours._operation !== '='; + } else if(coloring === 'fill' || coloring === 'heatmap') { + showGradientFill = true; + } + } + + return { + showMarker: showMarker, + showLine: showLine, + showFill: showFill, + showGradientLine: showGradientLine, + showGradientFill: showGradientFill, + anyLine: showLine || showGradientLine, + anyFill: showFill || showGradientFill, + }; +} + +},{"../../lib":285,"../../registry":373,"../../traces/pie/helpers":486,"../../traces/pie/style_one":492,"../../traces/scatter/subtypes":519,"../color":155,"../colorscale/helpers":166,"../drawing":177,"./constants":206,"@plotly/d3":20}],214:[function(_dereq_,module,exports){ +'use strict'; + +var constants = _dereq_('./constants'); + +module.exports = { + editType: 'modebar', + + orientation: { + valType: 'enumerated', + values: ['v', 'h'], + dflt: 'h', + editType: 'modebar', + }, + bgcolor: { + valType: 'color', + editType: 'modebar', + }, + color: { + valType: 'color', + editType: 'modebar', + }, + activecolor: { + valType: 'color', + editType: 'modebar', + }, + uirevision: { + valType: 'any', + editType: 'none', + }, + add: { + valType: 'string', + arrayOk: true, + dflt: '', + editType: 'modebar', + }, + remove: { + valType: 'string', + arrayOk: true, + dflt: '', + editType: 'modebar', + } +}; + +},{"./constants":216}],215:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -33923,6 +43770,7 @@ modeBarButtons.editInChartStudio = { modeBarButtons.zoom2d = { name: 'zoom2d', + _cat: 'zoom', title: function(gd) { return _(gd, 'Zoom'); }, attr: 'dragmode', val: 'zoom', @@ -33932,6 +43780,7 @@ modeBarButtons.zoom2d = { modeBarButtons.pan2d = { name: 'pan2d', + _cat: 'pan', title: function(gd) { return _(gd, 'Pan'); }, attr: 'dragmode', val: 'pan', @@ -33941,6 +43790,7 @@ modeBarButtons.pan2d = { modeBarButtons.select2d = { name: 'select2d', + _cat: 'select', title: function(gd) { return _(gd, 'Box Select'); }, attr: 'dragmode', val: 'select', @@ -33950,6 +43800,7 @@ modeBarButtons.select2d = { modeBarButtons.lasso2d = { name: 'lasso2d', + _cat: 'lasso', title: function(gd) { return _(gd, 'Lasso Select'); }, attr: 'dragmode', val: 'lasso', @@ -34011,6 +43862,7 @@ modeBarButtons.eraseshape = { modeBarButtons.zoomIn2d = { name: 'zoomIn2d', + _cat: 'zoomin', title: function(gd) { return _(gd, 'Zoom in'); }, attr: 'zoom', val: 'in', @@ -34020,6 +43872,7 @@ modeBarButtons.zoomIn2d = { modeBarButtons.zoomOut2d = { name: 'zoomOut2d', + _cat: 'zoomout', title: function(gd) { return _(gd, 'Zoom out'); }, attr: 'zoom', val: 'out', @@ -34029,6 +43882,7 @@ modeBarButtons.zoomOut2d = { modeBarButtons.autoScale2d = { name: 'autoScale2d', + _cat: 'autoscale', title: function(gd) { return _(gd, 'Autoscale'); }, attr: 'zoom', val: 'auto', @@ -34038,6 +43892,7 @@ modeBarButtons.autoScale2d = { modeBarButtons.resetScale2d = { name: 'resetScale2d', + _cat: 'resetscale', title: function(gd) { return _(gd, 'Reset axes'); }, attr: 'zoom', val: 'reset', @@ -34047,6 +43902,7 @@ modeBarButtons.resetScale2d = { modeBarButtons.hoverClosestCartesian = { name: 'hoverClosestCartesian', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Show closest data on hover'); }, attr: 'hovermode', val: 'closest', @@ -34057,6 +43913,7 @@ modeBarButtons.hoverClosestCartesian = { modeBarButtons.hoverCompareCartesian = { name: 'hoverCompareCartesian', + _cat: 'hoverCompare', title: function(gd) { return _(gd, 'Compare data on hover'); }, attr: 'hovermode', val: function(gd) { @@ -34140,6 +43997,7 @@ function handleCartesian(gd, ev) { modeBarButtons.zoom3d = { name: 'zoom3d', + _cat: 'zoom', title: function(gd) { return _(gd, 'Zoom'); }, attr: 'scene.dragmode', val: 'zoom', @@ -34149,6 +44007,7 @@ modeBarButtons.zoom3d = { modeBarButtons.pan3d = { name: 'pan3d', + _cat: 'pan', title: function(gd) { return _(gd, 'Pan'); }, attr: 'scene.dragmode', val: 'pan', @@ -34196,6 +44055,7 @@ function handleDrag3d(gd, ev) { modeBarButtons.resetCameraDefault3d = { name: 'resetCameraDefault3d', + _cat: 'resetCameraDefault', title: function(gd) { return _(gd, 'Reset camera to default'); }, attr: 'resetDefault', icon: Icons.home, @@ -34204,6 +44064,7 @@ modeBarButtons.resetCameraDefault3d = { modeBarButtons.resetCameraLastSave3d = { name: 'resetCameraLastSave3d', + _cat: 'resetCameraLastSave', title: function(gd) { return _(gd, 'Reset camera to last save'); }, attr: 'resetLastSave', icon: Icons.movie, @@ -34253,6 +44114,7 @@ function handleCamera3d(gd, ev) { modeBarButtons.hoverClosest3d = { name: 'hoverClosest3d', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: null, @@ -34307,6 +44169,7 @@ function handleHover3d(gd, ev) { modeBarButtons.zoomInGeo = { name: 'zoomInGeo', + _cat: 'zoomin', title: function(gd) { return _(gd, 'Zoom in'); }, attr: 'zoom', val: 'in', @@ -34316,6 +44179,7 @@ modeBarButtons.zoomInGeo = { modeBarButtons.zoomOutGeo = { name: 'zoomOutGeo', + _cat: 'zoomout', title: function(gd) { return _(gd, 'Zoom out'); }, attr: 'zoom', val: 'out', @@ -34325,6 +44189,7 @@ modeBarButtons.zoomOutGeo = { modeBarButtons.resetGeo = { name: 'resetGeo', + _cat: 'reset', title: function(gd) { return _(gd, 'Reset'); }, attr: 'reset', val: null, @@ -34334,6 +44199,7 @@ modeBarButtons.resetGeo = { modeBarButtons.hoverClosestGeo = { name: 'hoverClosestGeo', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: null, @@ -34369,6 +44235,7 @@ function handleGeo(gd, ev) { modeBarButtons.hoverClosestGl2d = { name: 'hoverClosestGl2d', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: null, @@ -34380,6 +44247,7 @@ modeBarButtons.hoverClosestGl2d = { modeBarButtons.hoverClosestPie = { name: 'hoverClosestPie', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: 'closest', @@ -34492,6 +44360,7 @@ function setSpikelineVisibility(gd) { modeBarButtons.resetViewMapbox = { name: 'resetViewMapbox', + _cat: 'resetView', title: function(gd) { return _(gd, 'Reset view'); }, attr: 'reset', icon: Icons.home, @@ -34502,6 +44371,7 @@ modeBarButtons.resetViewMapbox = { modeBarButtons.zoomInMapbox = { name: 'zoomInMapbox', + _cat: 'zoomin', title: function(gd) { return _(gd, 'Zoom in'); }, attr: 'zoom', val: 'in', @@ -34511,6 +44381,7 @@ modeBarButtons.zoomInMapbox = { modeBarButtons.zoomOutMapbox = { name: 'zoomOutMapbox', + _cat: 'zoomout', title: function(gd) { return _(gd, 'Zoom out'); }, attr: 'zoom', val: 'out', @@ -34556,30 +44427,89 @@ function resetView(gd, subplotType) { Registry.call('_guiRelayout', gd, aObj); } -},{"../../fonts/ploticon":216,"../../lib":233,"../../plots/cartesian/axis_ids":282,"../../plots/plots":313,"../../registry":326,"../shapes/draw":186}],165:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../fonts/ploticon":268,"../../lib":285,"../../plots/cartesian/axis_ids":334,"../../plots/plots":366,"../../registry":373,"../shapes/draw":239}],216:[function(_dereq_,module,exports){ 'use strict'; -exports.manage = _dereq_('./manage'); +var modeBarButtons = _dereq_('./buttons'); +var buttonList = Object.keys(modeBarButtons); -},{"./manage":166}],166:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +var DRAW_MODES = [ + 'drawline', + 'drawopenpath', + 'drawclosedpath', + 'drawcircle', + 'drawrect', + 'eraseshape' +]; +var backButtons = [ + 'v1hovermode', + 'hoverclosest', + 'hovercompare', + 'togglehover', + 'togglespikelines' +].concat(DRAW_MODES); +var foreButtons = []; +var addToForeButtons = function(b) { + if(backButtons.indexOf(b._cat || b.name) !== -1) return; + // for convenience add lowercase shotname e.g. zoomin as well fullname zoomInGeo + var name = b.name; + var _cat = (b._cat || b.name).toLowerCase(); + if(foreButtons.indexOf(name) === -1) foreButtons.push(name); + if(foreButtons.indexOf(_cat) === -1) foreButtons.push(_cat); +}; +buttonList.forEach(function(k) { + addToForeButtons(modeBarButtons[k]); +}); +foreButtons.sort(); + +module.exports = { + DRAW_MODES: DRAW_MODES, + backButtons: backButtons, + foreButtons: foreButtons +}; + +},{"./buttons":215}],217:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../../lib'); +var Color = _dereq_('../color'); +var Template = _dereq_('../../plot_api/plot_template'); +var attributes = _dereq_('./attributes'); + +module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { + var containerIn = layoutIn.modebar || {}; + var containerOut = Template.newContainer(layoutOut, 'modebar'); + + function coerce(attr, dflt) { + return Lib.coerce(containerIn, containerOut, attributes, attr, dflt); + } + + coerce('orientation'); + coerce('bgcolor', Color.addOpacity(layoutOut.paper_bgcolor, 0.5)); + var defaultColor = Color.contrast(Color.rgb(layoutOut.modebar.bgcolor)); + coerce('color', Color.addOpacity(defaultColor, 0.3)); + coerce('activecolor', Color.addOpacity(defaultColor, 0.7)); + coerce('uirevision', layoutOut.uirevision); + coerce('add'); + coerce('remove'); +}; + +},{"../../lib":285,"../../plot_api/plot_template":320,"../color":155,"./attributes":214}],218:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = { + moduleType: 'component', + name: 'modebar', + + layoutAttributes: _dereq_('./attributes'), + supplyLayoutDefaults: _dereq_('./defaults'), + + manage: _dereq_('./manage') +}; + +},{"./attributes":214,"./defaults":217,"./manage":219}],219:[function(_dereq_,module,exports){ 'use strict'; var axisIds = _dereq_('../../plots/cartesian/axis_ids'); @@ -34589,6 +44519,7 @@ var isUnifiedHover = _dereq_('../fx/helpers').isUnifiedHover; var createModeBar = _dereq_('./modebar'); var modeBarButtons = _dereq_('./buttons'); +var DRAW_MODES = _dereq_('./constants').DRAW_MODES; /** * ModeBar wrapper around 'create' and 'update', @@ -34640,22 +44571,47 @@ module.exports = function manageModeBar(gd) { else fullLayout._modeBar = createModeBar(gd, buttonGroups); }; -var DRAW_MODES = [ - 'drawline', - 'drawopenpath', - 'drawclosedpath', - 'drawcircle', - 'drawrect', - 'eraseshape' -]; - // logic behind which buttons are displayed by default function getButtonGroups(gd) { var fullLayout = gd._fullLayout; var fullData = gd._fullData; var context = gd._context; - var buttonsToRemove = context.modeBarButtonsToRemove; - var buttonsToAdd = context.modeBarButtonsToAdd; + + function match(name, B) { + if(typeof B === 'string') { + if(B.toLowerCase() === name.toLowerCase()) return true; + } else { + var v0 = B.name; + var v1 = (B._cat || B.name); + + if(v0 === name || v1 === name.toLowerCase()) return true; + } + return false; + } + + var layoutAdd = fullLayout.modebar.add; + if(typeof layoutAdd === 'string') layoutAdd = [layoutAdd]; + + var layoutRemove = fullLayout.modebar.remove; + if(typeof layoutRemove === 'string') layoutRemove = [layoutRemove]; + + var buttonsToAdd = context.modeBarButtonsToAdd.concat( + layoutAdd.filter(function(e) { + for(var i = 0; i < context.modeBarButtonsToRemove.length; i++) { + if(match(e, context.modeBarButtonsToRemove[i])) return false; + } + return true; + }) + ); + + var buttonsToRemove = context.modeBarButtonsToRemove.concat( + layoutRemove.filter(function(e) { + for(var i = 0; i < context.modeBarButtonsToAdd.length; i++) { + if(match(e, context.modeBarButtonsToAdd[i])) return false; + } + return true; + }) + ); var hasCartesian = fullLayout._has('cartesian'); var hasGL3D = fullLayout._has('gl3d'); @@ -34678,9 +44634,20 @@ function getButtonGroups(gd) { var out = []; for(var i = 0; i < newGroup.length; i++) { - var button = newGroup[i]; - if(buttonsToRemove.indexOf(button) !== -1) continue; - out.push(modeBarButtons[button]); + var name = newGroup[i]; + var B = modeBarButtons[name]; + var v0 = B.name.toLowerCase(); + var v1 = (B._cat || B.name).toLowerCase(); + var found = false; + for(var q = 0; q < buttonsToRemove.length; q++) { + var t = buttonsToRemove[q].toLowerCase(); + if(t === v0 || t === v1) { + found = true; + break; + } + } + if(found) continue; + out.push(modeBarButtons[name]); } groups.push(out); @@ -34752,19 +44719,50 @@ function getButtonGroups(gd) { dragModeGroup.push('select2d', 'lasso2d'); } - // accept pre-defined buttons as string + var enabledHoverGroup = []; + var enableHover = function(a) { + // return if already added + if(enabledHoverGroup.indexOf(a) !== -1) return; + // should be in hoverGroup + if(hoverGroup.indexOf(a) !== -1) { + enabledHoverGroup.push(a); + } + }; if(Array.isArray(buttonsToAdd)) { var newList = []; for(var i = 0; i < buttonsToAdd.length; i++) { var b = buttonsToAdd[i]; if(typeof b === 'string') { + b = b.toLowerCase(); + if(DRAW_MODES.indexOf(b) !== -1) { + // accept pre-defined drag modes i.e. shape drawing features as string if( fullLayout._has('mapbox') || // draw shapes in paper coordinate (could be improved in future to support data coordinate, when there is no pitch) fullLayout._has('cartesian') // draw shapes in data coordinate ) { dragModeGroup.push(b); } + } else if(b === 'togglespikelines') { + enableHover('toggleSpikelines'); + } else if(b === 'togglehover') { + enableHover('toggleHover'); + } else if(b === 'hovercompare') { + enableHover('hoverCompareCartesian'); + } else if(b === 'hoverclosest') { + enableHover('hoverClosestCartesian'); + enableHover('hoverClosestGeo'); + enableHover('hoverClosest3d'); + enableHover('hoverClosestGl2d'); + enableHover('hoverClosestPie'); + } else if(b === 'v1hovermode') { + enableHover('toggleHover'); + enableHover('hoverClosestCartesian'); + enableHover('hoverCompareCartesian'); + enableHover('hoverClosestGeo'); + enableHover('hoverClosest3d'); + enableHover('hoverClosestGl2d'); + enableHover('hoverClosestPie'); } } else newList.push(b); } @@ -34773,7 +44771,7 @@ function getButtonGroups(gd) { addGroup(dragModeGroup); addGroup(zoomGroup.concat(resetGroup)); - addGroup(hoverGroup); + addGroup(enabledHoverGroup); return appendButtonsToGroups(groups, buttonsToAdd); } @@ -34866,19 +44864,10 @@ function fillCustomButton(customButtons) { return customButtons; } -},{"../../plots/cartesian/axis_ids":282,"../../registry":326,"../../traces/scatter/subtypes":472,"../fx/helpers":141,"./buttons":164,"./modebar":167}],167:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian/axis_ids":334,"../../registry":373,"../../traces/scatter/subtypes":519,"../fx/helpers":191,"./buttons":215,"./constants":216,"./modebar":220}],220:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Lib = _dereq_('../../lib'); @@ -35212,15 +45201,7 @@ function createModeBar(gd, buttons) { module.exports = createModeBar; -},{"../../fonts/ploticon":216,"../../lib":233,"d3":21,"fast-isnumeric":23}],168:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../fonts/ploticon":268,"../../lib":285,"@plotly/d3":20,"fast-isnumeric":31}],221:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -35230,51 +45211,38 @@ var templatedArray = _dereq_('../../plot_api/plot_template').templatedArray; var buttonAttrs = templatedArray('button', { visible: { valType: 'boolean', - dflt: true, editType: 'plot', - }, step: { valType: 'enumerated', - values: ['month', 'year', 'day', 'hour', 'minute', 'second', 'all'], dflt: 'month', editType: 'plot', - }, stepmode: { valType: 'enumerated', - values: ['backward', 'todate'], dflt: 'backward', editType: 'plot', - }, count: { valType: 'number', - min: 0, dflt: 1, editType: 'plot', - }, label: { valType: 'string', - editType: 'plot', - }, editType: 'plot', - }); module.exports = { visible: { valType: 'boolean', - editType: 'plot', - }, buttons: buttonAttrs, @@ -35283,80 +45251,55 @@ module.exports = { valType: 'number', min: -2, max: 3, - editType: 'plot', - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'left', - editType: 'plot', - }, y: { valType: 'number', min: -2, max: 3, - editType: 'plot', - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'bottom', - editType: 'plot', - }, font: fontAttrs({ editType: 'plot', - }), bgcolor: { valType: 'color', dflt: colorAttrs.lightLine, - editType: 'plot', - }, activecolor: { valType: 'color', - editType: 'plot', - }, bordercolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'plot', - }, borderwidth: { valType: 'number', min: 0, dflt: 0, - editType: 'plot', - }, editType: 'plot' }; -},{"../../plot_api/plot_template":268,"../../plots/font_attributes":307,"../color/attributes":104}],169:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plot_api/plot_template":320,"../../plots/font_attributes":359,"../color/attributes":154}],222:[function(_dereq_,module,exports){ 'use strict'; @@ -35377,15 +45320,7 @@ module.exports = { darkAmount: 10 }; -},{}],170:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],223:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -35469,18 +45404,10 @@ function getPosDflt(containerOut, layout, counterAxes) { return [containerOut.domain[0], posY + constants.yPad]; } -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/array_container_defaults":274,"../color":105,"./attributes":168,"./constants":169}],171:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/array_container_defaults":326,"../color":155,"./attributes":221,"./constants":222}],224:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Plots = _dereq_('../../plots/plots'); @@ -35724,19 +45651,10 @@ function reposition(gd, buttons, opts, axName, selector) { selector.attr('transform', strTranslate(lx, ly)); } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/cartesian/axis_ids":282,"../../plots/plots":313,"../../registry":326,"../color":105,"../drawing":127,"./constants":169,"./get_update_object":172,"d3":21}],172:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/cartesian/axis_ids":334,"../../plots/plots":366,"../../registry":373,"../color":155,"../drawing":177,"./constants":222,"./get_update_object":225,"@plotly/d3":20}],225:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); module.exports = function getUpdateObject(axisLayout, buttonLayout) { var axName = axisLayout._name; @@ -35778,15 +45696,7 @@ function getXRange(axisLayout, buttonLayout) { return [range0, range1]; } -},{"d3":21}],173:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"@plotly/d3":20}],226:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -35805,15 +45715,7 @@ module.exports = { draw: _dereq_('./draw') }; -},{"./attributes":168,"./defaults":170,"./draw":171}],174:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":221,"./defaults":223,"./draw":224}],227:[function(_dereq_,module,exports){ 'use strict'; var colorAttributes = _dereq_('../color/attributes'); @@ -35822,72 +45724,50 @@ module.exports = { bgcolor: { valType: 'color', dflt: colorAttributes.background, - editType: 'plot', - }, bordercolor: { valType: 'color', dflt: colorAttributes.defaultLine, - editType: 'plot', - }, borderwidth: { valType: 'integer', dflt: 0, min: 0, - editType: 'plot', - }, autorange: { valType: 'boolean', dflt: true, - editType: 'calc', impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - }, range: { valType: 'info_array', - items: [ {valType: 'any', editType: 'calc', impliedEdits: {'^autorange': false}}, {valType: 'any', editType: 'calc', impliedEdits: {'^autorange': false}} ], editType: 'calc', impliedEdits: {'autorange': false}, - }, thickness: { valType: 'number', dflt: 0.15, min: 0, max: 1, - editType: 'plot', - }, visible: { valType: 'boolean', dflt: true, - editType: 'calc', - }, editType: 'calc' }; -},{"../color/attributes":104}],175:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../color/attributes":154}],228:[function(_dereq_,module,exports){ 'use strict'; var listAxes = _dereq_('../../plots/cartesian/axis_ids').list; @@ -35913,15 +45793,7 @@ module.exports = function calcAutorange(gd) { } }; -},{"../../plots/cartesian/autorange":278,"../../plots/cartesian/axis_ids":282,"./constants":176}],176:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/autorange":330,"../../plots/cartesian/axis_ids":334,"./constants":229}],229:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -35969,15 +45841,7 @@ module.exports = { extraPad: 15 }; -},{}],177:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],230:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -36055,18 +45919,10 @@ module.exports = function handleDefaults(layoutIn, layoutOut, axName) { containerOut._input = containerIn; }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/cartesian/axis_ids":282,"./attributes":174,"./oppaxis_attributes":181}],178:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/cartesian/axis_ids":334,"./attributes":227,"./oppaxis_attributes":234}],231:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Plots = _dereq_('../../plots/plots'); @@ -36699,15 +46555,7 @@ function drawGrabbers(rangeSlider, gd, axisOpts, opts) { grabAreaMax.attr('height', opts._height); } -},{"../../lib":233,"../../lib/setcursor":253,"../../plots/cartesian":292,"../../plots/cartesian/axis_ids":282,"../../plots/plots":313,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"../titles":200,"./constants":176,"d3":21}],179:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../lib/setcursor":305,"../../plots/cartesian":344,"../../plots/cartesian/axis_ids":334,"../../plots/plots":366,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"../titles":253,"./constants":229,"@plotly/d3":20}],232:[function(_dereq_,module,exports){ 'use strict'; var axisIDs = _dereq_('../../plots/cartesian/axis_ids'); @@ -36774,15 +46622,7 @@ exports.autoMarginOpts = function(gd, ax) { }; }; -},{"../../constants/alignment":207,"../../lib/svg_text_utils":255,"../../plots/cartesian/axis_ids":282,"./constants":176}],180:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib/svg_text_utils":307,"../../plots/cartesian/axis_ids":334,"./constants":229}],233:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -36813,15 +46653,7 @@ module.exports = { autoMarginOpts: helpers.autoMarginOpts }; -},{"../../lib":233,"./attributes":174,"./calc_autorange":175,"./defaults":177,"./draw":178,"./helpers":179,"./oppaxis_attributes":181}],181:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./attributes":227,"./calc_autorange":228,"./defaults":230,"./draw":231,"./helpers":232,"./oppaxis_attributes":234}],234:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -36834,32 +46666,20 @@ module.exports = { valType: 'enumerated', values: ['auto', 'fixed', 'match'], dflt: 'match', - editType: 'calc', - }, range: { valType: 'info_array', - items: [ {valType: 'any', editType: 'plot'}, {valType: 'any', editType: 'plot'} ], editType: 'plot', - }, editType: 'calc' }; -},{}],182:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],235:[function(_dereq_,module,exports){ 'use strict'; var annAttrs = _dereq_('../annotations/attributes'); @@ -36872,94 +46692,68 @@ var axisPlaceableObjs = _dereq_('../../constants/axis_placeable_objects'); module.exports = templatedArray('shape', { visible: { valType: 'boolean', - dflt: true, editType: 'calc+arraydraw', - }, type: { valType: 'enumerated', values: ['circle', 'rect', 'path', 'line'], - editType: 'calc+arraydraw', - }, layer: { valType: 'enumerated', values: ['below', 'above'], dflt: 'above', - editType: 'arraydraw', - }, xref: extendFlat({}, annAttrs.xref, { - }), xsizemode: { valType: 'enumerated', values: ['scaled', 'pixel'], dflt: 'scaled', - editType: 'calc+arraydraw', - }, xanchor: { valType: 'any', - editType: 'calc+arraydraw', - }, x0: { valType: 'any', - editType: 'calc+arraydraw', - }, x1: { valType: 'any', - editType: 'calc+arraydraw', - }, yref: extendFlat({}, annAttrs.yref, { - }), ysizemode: { valType: 'enumerated', values: ['scaled', 'pixel'], dflt: 'scaled', - editType: 'calc+arraydraw', - }, yanchor: { valType: 'any', - editType: 'calc+arraydraw', - }, y0: { valType: 'any', - editType: 'calc+arraydraw', - }, y1: { valType: 'any', - editType: 'calc+arraydraw', - }, path: { valType: 'string', - editType: 'calc+arraydraw', - }, opacity: { @@ -36967,52 +46761,35 @@ module.exports = templatedArray('shape', { min: 0, max: 1, dflt: 1, - editType: 'arraydraw', - }, line: { color: extendFlat({}, scatterLineAttrs.color, {editType: 'arraydraw'}), width: extendFlat({}, scatterLineAttrs.width, {editType: 'calc+arraydraw'}), dash: extendFlat({}, dash, {editType: 'arraydraw'}), - editType: 'calc+arraydraw' }, fillcolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'arraydraw', - }, fillrule: { valType: 'enumerated', values: ['evenodd', 'nonzero'], dflt: 'evenodd', - editType: 'arraydraw', - }, editable: { valType: 'boolean', - dflt: false, editType: 'calc+arraydraw', - }, editType: 'arraydraw' }); -},{"../../constants/axis_placeable_objects":208,"../../lib/extend":227,"../../plot_api/plot_template":268,"../../traces/scatter/attributes":447,"../annotations/attributes":90,"../drawing/attributes":126}],183:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/axis_placeable_objects":261,"../../lib/extend":279,"../../plot_api/plot_template":320,"../../traces/scatter/attributes":494,"../annotations/attributes":138,"../drawing/attributes":176}],236:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -37124,16 +46901,7 @@ function shapeBounds(ax, v0, v1, path, paramsToUse) { if(max >= min) return [min, max]; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"./constants":184,"./helpers":193}],184:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"./constants":237,"./helpers":246}],237:[function(_dereq_,module,exports){ 'use strict'; @@ -37188,16 +46956,7 @@ module.exports = { } }; -},{}],185:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],238:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -37272,7 +47031,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { var dflt0 = 0.25; var dflt1 = 0.75; - // hack until V2.0 when log has regular range behavior - make it look like other + // hack until V3.0 when log has regular range behavior - make it look like other // ranges to send to coerce, then put it back after // this is all to give reasonable default position behavior on log axes, which is // a pretty unimportant edge case so we could just ignore this. @@ -37319,16 +47078,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"./attributes":182,"./helpers":193}],186:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"./attributes":235,"./helpers":246}],239:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -38093,15 +47843,7 @@ function eraseActiveShape(gd) { } } -},{"../../lib":233,"../../lib/setcursor":253,"../../plot_api/plot_template":268,"../../plots/cartesian/axes":279,"../../plots/cartesian/handle_outline":289,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"./constants":184,"./draw_newshape/display_outlines":190,"./draw_newshape/helpers":191,"./helpers":193}],187:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../lib/setcursor":305,"../../plot_api/plot_template":320,"../../plots/cartesian/axes":331,"../../plots/cartesian/handle_outline":341,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"./constants":237,"./draw_newshape/display_outlines":243,"./draw_newshape/helpers":244,"./helpers":246}],240:[function(_dereq_,module,exports){ 'use strict'; var dash = _dereq_('../../drawing/attributes').dash; @@ -38113,63 +47855,48 @@ module.exports = { color: { valType: 'color', editType: 'none', - - }, width: { valType: 'number', min: 0, dflt: 4, - editType: 'none', - }, dash: extendFlat({}, dash, { dflt: 'solid', editType: 'none' }), - editType: 'none' }, fillcolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'none', - }, fillrule: { valType: 'enumerated', values: ['evenodd', 'nonzero'], dflt: 'evenodd', - editType: 'none', - }, opacity: { valType: 'number', min: 0, max: 1, dflt: 1, - editType: 'none', - }, layer: { valType: 'enumerated', values: ['below', 'above'], dflt: 'above', - editType: 'none', - }, drawdirection: { valType: 'enumerated', - values: ['ortho', 'horizontal', 'vertical', 'diagonal'], dflt: 'diagonal', editType: 'none', - }, editType: 'none' @@ -38179,32 +47906,20 @@ module.exports = { fillcolor: { valType: 'color', dflt: 'rgb(255,0,255)', - editType: 'none', - }, opacity: { valType: 'number', min: 0, max: 1, dflt: 0.5, - editType: 'none', - }, editType: 'none' } }; -},{"../../../lib/extend":227,"../../drawing/attributes":126}],188:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../../lib/extend":279,"../../drawing/attributes":176}],241:[function(_dereq_,module,exports){ 'use strict'; var CIRCLE_SIDES = 32; // should be divisible by 4 @@ -38220,16 +47935,7 @@ module.exports = { SQRT2: Math.sqrt(2) }; -},{}],189:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],242:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../color'); @@ -38252,16 +47958,7 @@ module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce coerce('activeshape.opacity'); }; -},{"../../color":105}],190:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../color":155}],243:[function(_dereq_,module,exports){ 'use strict'; var dragElement = _dereq_('../../dragelement'); @@ -38547,16 +48244,7 @@ function recordPositions(polygonsOut, polygonsIn) { return polygonsOut; } -},{"../../../plots/cartesian/handle_outline":289,"../../../registry":326,"../../dragelement":124,"../../dragelement/helpers":123,"./constants":188,"./helpers":191,"./newshapes":192}],191:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../../plots/cartesian/handle_outline":341,"../../../registry":373,"../../dragelement":174,"../../dragelement/helpers":173,"./constants":241,"./helpers":244,"./newshapes":245}],244:[function(_dereq_,module,exports){ 'use strict'; var parseSvgPath = _dereq_('parse-svg-path'); @@ -38885,16 +48573,7 @@ exports.ellipseOver = function(pos) { }; }; -},{"../../../plots/cartesian/helpers":290,"./constants":188,"parse-svg-path":77}],192:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../../plots/cartesian/helpers":342,"./constants":241,"parse-svg-path":72}],245:[function(_dereq_,module,exports){ 'use strict'; var dragHelpers = _dereq_('../../dragelement/helpers'); @@ -39144,16 +48823,7 @@ function fixDatesForPaths(polygons, xaxis, yaxis) { return polygons; } -},{"../../../plots/cartesian/handle_outline":289,"../../../plots/cartesian/helpers":290,"../../dragelement/helpers":123,"./constants":188,"./helpers":191}],193:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../../plots/cartesian/handle_outline":341,"../../../plots/cartesian/helpers":342,"../../dragelement/helpers":173,"./constants":241,"./helpers":244}],246:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -39165,7 +48835,7 @@ var Lib = _dereq_('../../lib'); // so these have to be specified in terms of the category serial numbers, // but can take fractional values. Other axis types we specify position based on // the actual data values. -// TODO: in V2.0 (when log axis ranges are in data units) range and shape position +// TODO: in V3.0 (when log axis ranges are in data units) range and shape position // will be identical, so rangeToShapePosition and shapePositionToRange can be // removed entirely. @@ -39302,16 +48972,7 @@ exports.makeOptionsAndPlotinfo = function(gd, index) { }; }; -},{"../../lib":233,"./constants":184}],194:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"./constants":237}],247:[function(_dereq_,module,exports){ 'use strict'; var drawModule = _dereq_('./draw'); @@ -39330,15 +48991,7 @@ module.exports = { drawOne: drawModule.drawOne }; -},{"../../plots/cartesian/include_components":291,"./attributes":182,"./calc_autorange":183,"./defaults":185,"./draw":186,"./draw_newshape/defaults":189}],195:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/include_components":343,"./attributes":235,"./calc_autorange":236,"./defaults":238,"./draw":239,"./draw_newshape/defaults":242}],248:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -39352,60 +49005,44 @@ var constants = _dereq_('./constants'); var stepsAttrs = templatedArray('step', { visible: { valType: 'boolean', - dflt: true, - }, method: { valType: 'enumerated', values: ['restyle', 'relayout', 'animate', 'update', 'skip'], dflt: 'restyle', - - }, args: { valType: 'info_array', - freeLength: true, items: [ { valType: 'any' }, { valType: 'any' }, { valType: 'any' } ], - }, label: { valType: 'string', - - }, value: { valType: 'string', - - }, execute: { valType: 'boolean', - dflt: true, - } }); module.exports = overrideAll(templatedArray('slider', { visible: { valType: 'boolean', - dflt: true, - }, active: { valType: 'number', - min: 0, dflt: 0, - }, steps: stepsAttrs, @@ -39413,176 +49050,122 @@ module.exports = overrideAll(templatedArray('slider', { lenmode: { valType: 'enumerated', values: ['fraction', 'pixels'], - dflt: 'fraction', - }, len: { valType: 'number', min: 0, dflt: 1, - - }, x: { valType: 'number', min: -2, max: 3, dflt: 0, - - }, pad: extendDeepAll(padAttrs({editType: 'arraydraw'}), { - }, {t: {dflt: 20}}), xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'left', - - }, y: { valType: 'number', min: -2, max: 3, dflt: 0, - - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'top', - - }, transition: { duration: { valType: 'number', - min: 0, dflt: 150, - }, easing: { valType: 'enumerated', values: animationAttrs.transition.easing.values, - dflt: 'cubic-in-out', - } }, currentvalue: { visible: { valType: 'boolean', - dflt: true, - }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'left', - - }, offset: { valType: 'number', dflt: 10, - - }, prefix: { valType: 'string', - - }, suffix: { valType: 'string', - - }, font: fontAttrs({ - }) }, font: fontAttrs({ - }), activebgcolor: { valType: 'color', - dflt: constants.gripBgActiveColor, - }, bgcolor: { valType: 'color', - dflt: constants.railBgColor, - }, bordercolor: { valType: 'color', dflt: constants.railBorderColor, - - }, borderwidth: { valType: 'number', min: 0, dflt: constants.railBorderWidth, - - }, ticklen: { valType: 'number', min: 0, dflt: constants.tickLength, - - }, tickcolor: { valType: 'color', dflt: constants.tickColor, - - }, tickwidth: { valType: 'number', min: 0, dflt: 1, - - }, minorticklen: { valType: 'number', min: 0, dflt: constants.minorTickLength, - - } }), 'arraydraw', 'from-root'); -},{"../../lib/extend":227,"../../plot_api/edit_types":261,"../../plot_api/plot_template":268,"../../plots/animation_attributes":273,"../../plots/font_attributes":307,"../../plots/pad_attributes":312,"./constants":196}],196:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/extend":279,"../../plot_api/edit_types":313,"../../plot_api/plot_template":320,"../../plots/animation_attributes":325,"../../plots/font_attributes":359,"../../plots/pad_attributes":365,"./constants":249}],249:[function(_dereq_,module,exports){ 'use strict'; @@ -39667,15 +49250,7 @@ module.exports = { currentValueInset: 0, }; -},{}],197:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],250:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -39782,18 +49357,10 @@ function stepDefaults(valueIn, valueOut) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"./attributes":195,"./constants":196}],198:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"./attributes":248,"./constants":249}],251:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Plots = _dereq_('../../plots/plots'); var Color = _dereq_('../color'); @@ -40413,15 +49980,7 @@ function drawRail(sliderGroup, sliderOpts) { ); } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/svg_text_utils":255,"../../plot_api/plot_template":268,"../../plots/plots":313,"../color":105,"../drawing":127,"./constants":196,"d3":21}],199:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/svg_text_utils":307,"../../plot_api/plot_template":320,"../../plots/plots":366,"../color":155,"../drawing":177,"./constants":249,"@plotly/d3":20}],252:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -40436,19 +49995,10 @@ module.exports = { draw: _dereq_('./draw') }; -},{"./attributes":195,"./constants":196,"./defaults":197,"./draw":198}],200:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./attributes":248,"./constants":249,"./defaults":250,"./draw":251}],253:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Plots = _dereq_('../../plots/plots'); @@ -40704,15 +50254,7 @@ module.exports = { draw: draw }; -},{"../../constants/alignment":207,"../../constants/interactions":211,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../../registry":326,"../color":105,"../drawing":127,"d3":21,"fast-isnumeric":23}],201:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../constants/interactions":264,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../../registry":373,"../color":155,"../drawing":177,"@plotly/d3":20,"fast-isnumeric":31}],254:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -40725,49 +50267,37 @@ var templatedArray = _dereq_('../../plot_api/plot_template').templatedArray; var buttonsAttrs = templatedArray('button', { visible: { valType: 'boolean', - - }, method: { valType: 'enumerated', values: ['restyle', 'relayout', 'animate', 'update', 'skip'], dflt: 'restyle', - - }, args: { valType: 'info_array', - freeLength: true, items: [ {valType: 'any'}, {valType: 'any'}, {valType: 'any'} ], - }, args2: { valType: 'info_array', - freeLength: true, items: [ {valType: 'any'}, {valType: 'any'}, {valType: 'any'} ], - }, label: { valType: 'string', - dflt: '', - }, execute: { valType: 'boolean', - dflt: true, - } }); @@ -40776,39 +50306,29 @@ module.exports = overrideAll(templatedArray('updatemenu', { visible: { valType: 'boolean', - - }, type: { valType: 'enumerated', values: ['dropdown', 'buttons'], dflt: 'dropdown', - - }, direction: { valType: 'enumerated', values: ['left', 'right', 'up', 'down'], dflt: 'down', - - }, active: { valType: 'integer', - min: -1, dflt: 0, - }, showactive: { valType: 'boolean', - dflt: true, - }, buttons: buttonsAttrs, @@ -40818,71 +50338,46 @@ module.exports = overrideAll(templatedArray('updatemenu', { min: -2, max: 3, dflt: -0.05, - - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'right', - - }, y: { valType: 'number', min: -2, max: 3, dflt: 1, - - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'top', - - }, pad: extendFlat(padAttrs({editType: 'arraydraw'}), { - }), font: fontAttrs({ - }), bgcolor: { valType: 'color', - - }, bordercolor: { valType: 'color', dflt: colorAttrs.borderLine, - - }, borderwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'arraydraw', - } }), 'arraydraw', 'from-root'); -},{"../../lib/extend":227,"../../plot_api/edit_types":261,"../../plot_api/plot_template":268,"../../plots/font_attributes":307,"../../plots/pad_attributes":312,"../color/attributes":104}],202:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/extend":279,"../../plot_api/edit_types":313,"../../plot_api/plot_template":320,"../../plots/font_attributes":359,"../../plots/pad_attributes":365,"../color/attributes":154}],255:[function(_dereq_,module,exports){ 'use strict'; @@ -40954,15 +50449,7 @@ module.exports = { } }; -},{}],203:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],256:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -41037,19 +50524,10 @@ function buttonDefaults(buttonIn, buttonOut) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"./attributes":201,"./constants":202}],204:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/array_container_defaults":326,"./attributes":254,"./constants":255}],257:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Plots = _dereq_('../../plots/plots'); var Color = _dereq_('../color'); @@ -41688,22 +51166,14 @@ function removeAllButtons(gButton, newMenuIndexAttr) { .selectAll('g.' + constants.dropdownButtonClassName).remove(); } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/svg_text_utils":255,"../../plot_api/plot_template":268,"../../plots/plots":313,"../color":105,"../drawing":127,"./constants":202,"./scrollbox":206,"d3":21}],205:[function(_dereq_,module,exports){ -arguments[4][199][0].apply(exports,arguments) -},{"./attributes":201,"./constants":202,"./defaults":203,"./draw":204,"dup":199}],206:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/svg_text_utils":307,"../../plot_api/plot_template":320,"../../plots/plots":366,"../color":155,"../drawing":177,"./constants":255,"./scrollbox":259,"@plotly/d3":20}],258:[function(_dereq_,module,exports){ +arguments[4][252][0].apply(exports,arguments) +},{"./attributes":254,"./constants":255,"./defaults":256,"./draw":257,"dup":252}],259:[function(_dereq_,module,exports){ 'use strict'; module.exports = ScrollBox; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../color'); var Drawing = _dereq_('../drawing'); @@ -42155,15 +51625,7 @@ ScrollBox.prototype.setTranslate = function setTranslate(translateX, translateY) } }; -},{"../../lib":233,"../color":105,"../drawing":127,"d3":21}],207:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../color":155,"../drawing":177,"@plotly/d3":20}],260:[function(_dereq_,module,exports){ 'use strict'; // fraction of some size to get to a named position @@ -42220,16 +51682,7 @@ module.exports = { } }; -},{}],208:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],261:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42252,15 +51705,7 @@ module.exports = { } }; -},{}],209:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],262:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42268,15 +51713,7 @@ module.exports = { DATE_FORMAT_LINK: 'https://github.com/d3/d3-time-format#locale_format' }; -},{}],210:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],263:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42306,15 +51743,7 @@ module.exports = { } }; -},{}],211:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],264:[function(_dereq_,module,exports){ 'use strict'; @@ -42329,15 +51758,7 @@ module.exports = { DESELECTDIM: 0.2 }; -},{}],212:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],265:[function(_dereq_,module,exports){ 'use strict'; @@ -42355,7 +51776,7 @@ module.exports = { * to avoid glitches: Make sure that even when you multiply it by the * number of pixels on a giant screen it still works */ - FP_SAFE: Number.MAX_VALUE / 10000, + FP_SAFE: Number.MAX_VALUE * 1e-4, /* * conversion of date units to milliseconds @@ -42402,16 +51823,7 @@ module.exports = { MINUS_SIGN: '\u2212' }; -},{}],213:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],266:[function(_dereq_,module,exports){ 'use strict'; @@ -42426,28 +51838,17 @@ exports.svgAttrs = { 'xmlns:xlink': exports.xlink }; -},{}],214:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],267:[function(_dereq_,module,exports){ 'use strict'; exports.version = _dereq_('./version').version; // inject promise polyfill -_dereq_('es6-promise').polyfill(); +_dereq_('native-promise-only'); // inject plot css _dereq_('../build/plotcss'); -// inject default MathJax config -_dereq_('./fonts/mathjax_config')(); - // include registry module and expose register method var Registry = _dereq_('./registry'); var register = exports.register = Registry.register; @@ -42484,7 +51885,8 @@ register([ _dereq_('./components/grid'), _dereq_('./components/errorbars'), _dereq_('./components/colorscale'), - _dereq_('./components/colorbar') + _dereq_('./components/colorbar'), + _dereq_('./components/modebar') ]); // locales en and en-US are required for default behavior @@ -42503,55 +51905,24 @@ if(window.PlotlyLocales && Array.isArray(window.PlotlyLocales)) { exports.Icons = _dereq_('./fonts/ploticon'); // unofficial 'beta' plot methods, use at your own risk -exports.Plots = _dereq_('./plots/plots'); -exports.Fx = _dereq_('./components/fx'); +var Fx = _dereq_('./components/fx'); +var Plots = _dereq_('./plots/plots'); + +exports.Plots = { + resize: Plots.resize, + graphJson: Plots.graphJson, + sendDataToCloud: Plots.sendDataToCloud +}; +exports.Fx = { + hover: Fx.hover, + unhover: Fx.unhover, + loneHover: Fx.loneHover, + loneUnhover: Fx.loneUnhover +}; exports.Snapshot = _dereq_('./snapshot'); exports.PlotSchema = _dereq_('./plot_api/plot_schema'); -exports.Queue = _dereq_('./lib/queue'); - -// export d3 used in the bundle -exports.d3 = _dereq_('d3'); - -},{"../build/plotcss":1,"./components/annotations":98,"./components/annotations3d":103,"./components/colorbar":111,"./components/colorscale":117,"./components/errorbars":133,"./components/fx":145,"./components/grid":149,"./components/images":154,"./components/legend":162,"./components/rangeselector":173,"./components/rangeslider":180,"./components/shapes":194,"./components/sliders":199,"./components/updatemenus":205,"./fonts/mathjax_config":215,"./fonts/ploticon":216,"./lib/queue":248,"./locale-en":259,"./locale-en-us":258,"./plot_api":263,"./plot_api/plot_schema":267,"./plots/plots":313,"./registry":326,"./snapshot":331,"./traces/scatter":459,"./version":494,"d3":21,"es6-promise":22}],215:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -/* global MathJax:false */ - -module.exports = function() { - if(typeof MathJax !== 'undefined') { - var globalConfig = (window.PlotlyConfig || {}).MathJaxConfig !== 'local'; - - if(globalConfig) { - MathJax.Hub.Config({ - messageStyle: 'none', - skipStartupTypeset: true, - displayAlign: 'left', - tex2jax: { - inlineMath: [['$', '$'], ['\\(', '\\)']] - } - }); - MathJax.Hub.Configured(); - } - } -}; - -},{}],216:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../build/plotcss":1,"./components/annotations":146,"./components/annotations3d":151,"./components/colorbar":161,"./components/colorscale":167,"./components/errorbars":183,"./components/fx":195,"./components/grid":199,"./components/images":204,"./components/legend":212,"./components/modebar":218,"./components/rangeselector":226,"./components/rangeslider":233,"./components/shapes":247,"./components/sliders":252,"./components/updatemenus":258,"./fonts/ploticon":268,"./locale-en":311,"./locale-en-us":310,"./plot_api":315,"./plot_api/plot_schema":319,"./plots/plots":366,"./registry":373,"./snapshot":378,"./traces/scatter":506,"./version":546,"native-promise-only":70}],268:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42723,16 +52094,7 @@ module.exports = { } }; -},{}],217:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],269:[function(_dereq_,module,exports){ 'use strict'; @@ -42787,15 +52149,7 @@ exports.isBottomAnchor = function isBottomAnchor(opts) { ); }; -},{}],218:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],270:[function(_dereq_,module,exports){ 'use strict'; var modModule = _dereq_('./mod'); @@ -43028,28 +52382,13 @@ module.exports = { pathAnnulus: pathAnnulus }; -},{"./mod":240}],219:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./mod":292}],271:[function(_dereq_,module,exports){ 'use strict'; var isArray = Array.isArray; -// IE9 fallbacks - -var ab = (typeof ArrayBuffer === 'undefined' || !ArrayBuffer.isView) ? - {isView: function() { return false; }} : - ArrayBuffer; - -var dv = (typeof DataView === 'undefined') ? - function() {} : - DataView; +var ab = ArrayBuffer; +var dv = DataView; function isTypedArray(a) { return ab.isView(a) && !(a instanceof dv); @@ -43185,16 +52524,7 @@ function _rowLength(z, fn, len0) { return 0; } -},{}],220:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],272:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -43218,15 +52548,7 @@ module.exports = function cleanNumber(v) { return BADNUM; }; -},{"../constants/numerical":212,"fast-isnumeric":23}],221:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/numerical":265,"fast-isnumeric":31}],273:[function(_dereq_,module,exports){ 'use strict'; /** @@ -43246,15 +52568,7 @@ module.exports = function clearGlCanvases(gd) { } }; -},{}],222:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],274:[function(_dereq_,module,exports){ 'use strict'; /** @@ -43269,15 +52583,7 @@ module.exports = function clearResponsive(gd) { } }; -},{}],223:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],275:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -43295,9 +52601,6 @@ var isArrayOrTypedArray = _dereq_('./array').isArrayOrTypedArray; exports.valObjectMeta = { data_array: { // You can use *dflt=[] to force said array to exist though. - - - coerceFunction: function(v, propOut, dflt) { // TODO maybe `v: {type: 'float32', vals: [/* ... */]}` also if(isArrayOrTypedArray(v)) propOut.set(v); @@ -43305,9 +52608,6 @@ exports.valObjectMeta = { } }, enumerated: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(opts.coerceNumber) v = +v; if(opts.values.indexOf(v) === -1) propOut.set(dflt); @@ -43329,18 +52629,12 @@ exports.valObjectMeta = { } }, 'boolean': { - - - coerceFunction: function(v, propOut, dflt) { if(v === true || v === false) propOut.set(v); else propOut.set(dflt); } }, number: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(!isNumeric(v) || (opts.min !== undefined && v < opts.min) || @@ -43350,9 +52644,6 @@ exports.valObjectMeta = { } }, integer: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(v % 1 || !isNumeric(v) || (opts.min !== undefined && v < opts.min) || @@ -43362,10 +52653,7 @@ exports.valObjectMeta = { } }, string: { - - // TODO 'values shouldn't be in there (edge case: 'dash' in Scatter) - coerceFunction: function(v, propOut, dflt, opts) { if(typeof v !== 'string') { var okToCoerce = (typeof v === 'number'); @@ -43377,18 +52665,12 @@ exports.valObjectMeta = { } }, color: { - - - coerceFunction: function(v, propOut, dflt) { if(tinycolor(v).isValid()) propOut.set(v); else propOut.set(dflt); } }, colorlist: { - - - coerceFunction: function(v, propOut, dflt) { function isColor(color) { return tinycolor(color).isValid(); @@ -43399,17 +52681,11 @@ exports.valObjectMeta = { } }, colorscale: { - - - coerceFunction: function(v, propOut, dflt) { propOut.set(colorscales.get(v, dflt)); } }, angle: { - - - coerceFunction: function(v, propOut, dflt) { if(v === 'auto') propOut.set('auto'); else if(!isNumeric(v)) propOut.set(dflt); @@ -43417,9 +52693,6 @@ exports.valObjectMeta = { } }, subplotid: { - - - coerceFunction: function(v, propOut, dflt, opts) { var regex = opts.regex || counterRegex(dflt); if(typeof v === 'string' && regex.test(v)) { @@ -43439,9 +52712,6 @@ exports.valObjectMeta = { } }, flaglist: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(typeof v !== 'string') { propOut.set(dflt); @@ -43464,23 +52734,17 @@ exports.valObjectMeta = { } }, any: { - - - coerceFunction: function(v, propOut, dflt) { if(v === undefined) propOut.set(dflt); else propOut.set(v); } }, info_array: { - - // set `dimensions=2` for a 2D array or '1-2' for either // `items` may be a single object instead of an array, in which case // `freeLength` must be true. // if `dimensions='1-2'` and items is a 1D array, then the value can // either be a matching 1D array or an array of such matching 1D arrays - coerceFunction: function(v, propOut, dflt, opts) { // simplified coerce function just for array items function coercePart(v, opts, dflt) { @@ -43651,6 +52915,18 @@ exports.coerceFont = function(coerce, attr, dfltObj) { return out; }; +/* + * Shortcut to coerce the pattern attributes + */ +exports.coercePattern = function(coerce, attr) { + var shape = coerce(attr + '.shape'); + if(shape) { + coerce(attr + '.size'); + coerce(attr + '.bgcolor'); + coerce(attr + '.solidity'); + } +}; + /** Coerce shortcut for 'hoverinfo' * handling 1-vs-multi-trace dflt logic * @@ -43733,16 +53009,7 @@ function validate(value, opts) { } exports.validate = validate; -},{"../components/colorscale/scales":120,"../constants/interactions":211,"../plots/attributes":275,"./array":219,"./mod":240,"./nested_property":241,"./regex":249,"fast-isnumeric":23,"tinycolor2":88}],224:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../components/colorscale/scales":170,"../constants/interactions":264,"../plots/attributes":327,"./array":271,"./mod":292,"./nested_property":293,"./regex":301,"fast-isnumeric":31,"tinycolor2":119}],276:[function(_dereq_,module,exports){ 'use strict'; var timeFormat = _dereq_('d3-time-format').timeFormat; @@ -44334,18 +53601,10 @@ exports.findExactDates = function(data, calendar) { }; }; -},{"../constants/numerical":212,"../registry":326,"./loggers":237,"./mod":240,"d3-time-format":19,"fast-isnumeric":23}],225:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/numerical":265,"../registry":373,"./loggers":289,"./mod":292,"d3-time-format":29,"fast-isnumeric":31}],277:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var loggers = _dereq_('./loggers'); var matrix = _dereq_('./matrix'); var mat4X4 = _dereq_('gl-mat4'); @@ -44512,16 +53771,7 @@ module.exports = { equalDomRects: equalDomRects }; -},{"./loggers":237,"./matrix":239,"d3":21,"gl-mat4":39}],226:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./loggers":289,"./matrix":291,"@plotly/d3":20,"gl-mat4":47}],278:[function(_dereq_,module,exports){ 'use strict'; /* global jQuery:false */ @@ -44685,16 +53935,7 @@ var Events = { module.exports = Events; -},{"events":17}],227:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"events":27}],279:[function(_dereq_,module,exports){ 'use strict'; var isPlainObject = _dereq_('./is_plain_object.js'); @@ -44799,16 +54040,7 @@ function _extend(inputs, isDeep, keepAllKeys, noArrayCopies) { return target; } -},{"./is_plain_object.js":234}],228:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./is_plain_object.js":286}],280:[function(_dereq_,module,exports){ 'use strict'; @@ -44850,15 +54082,7 @@ module.exports = function filterUnique(array) { return out; }; -},{}],229:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],281:[function(_dereq_,module,exports){ 'use strict'; /** Filter out object items with visible !== true @@ -44898,15 +54122,7 @@ function isCalcData(cont) { ); } -},{}],230:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],282:[function(_dereq_,module,exports){ 'use strict'; var mod = _dereq_('./mod').mod; @@ -45142,15 +54358,7 @@ exports.findPointOnPath = function findPointOnPath(path, val, coord, opts) { return pt; }; -},{"./mod":240}],231:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./mod":292}],283:[function(_dereq_,module,exports){ 'use strict'; // Simple helper functions @@ -45158,16 +54366,7 @@ exports.findPointOnPath = function findPointOnPath(path, val, coord, opts) { module.exports = function identity(d) { return d; }; -},{}],232:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],284:[function(_dereq_,module,exports){ 'use strict'; module.exports = function incrementNumeric(x, delta) { @@ -45200,23 +54399,16 @@ module.exports = function incrementNumeric(x, delta) { return newX; }; -},{}],233:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],285:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var utcFormat = _dereq_('d3-time-format').utcFormat; var isNumeric = _dereq_('fast-isnumeric'); var numConstants = _dereq_('../constants/numerical'); -var FP_SAFE = numConstants.FP_SAFE; +var MAX_SAFE = numConstants.FP_SAFE; +var MIN_SAFE = -MAX_SAFE; var BADNUM = numConstants.BADNUM; var lib = module.exports = {}; @@ -45246,6 +54438,7 @@ lib.valObjectMeta = coerceModule.valObjectMeta; lib.coerce = coerceModule.coerce; lib.coerce2 = coerceModule.coerce2; lib.coerceFont = coerceModule.coerceFont; +lib.coercePattern = coerceModule.coercePattern; lib.coerceHoverinfo = coerceModule.coerceHoverinfo; lib.coerceSelectionMarkerOpacity = coerceModule.coerceSelectionMarkerOpacity; lib.validate = coerceModule.validate; @@ -45376,8 +54569,7 @@ lib.cleanNumber = _dereq_('./clean_number'); lib.ensureNumber = function ensureNumber(v) { if(!isNumeric(v)) return BADNUM; v = Number(v); - if(v < -FP_SAFE || v > FP_SAFE) return BADNUM; - return isNumeric(v) ? Number(v) : BADNUM; + return (v > MAX_SAFE || v < MIN_SAFE) ? BADNUM : v; }; /** @@ -45915,11 +55107,6 @@ lib.isIE = function() { return typeof window.navigator.msSaveBlob !== 'undefined'; }; -var IS_IE9_OR_BELOW_REGEX = /MSIE [1-9]\./; -lib.isIE9orBelow = function() { - return lib.isIE() && IS_IE9_OR_BELOW_REGEX.test(window.navigator.userAgent); -}; - var IS_SAFARI_REGEX = /Version\/[\d\.]+.*Safari/; lib.isSafari = function() { return IS_SAFARI_REGEX.test(window.navigator.userAgent); @@ -45930,12 +55117,20 @@ lib.isIOS = function() { return IS_IOS_REGEX.test(window.navigator.userAgent); }; -/** - * Duck typing to recognize a d3 selection, mostly for IE9's benefit - * because it doesn't handle instanceof like modern browsers - */ +var FIREFOX_VERSION_REGEX = /Firefox\/(\d+)\.\d+/; +lib.getFirefoxVersion = function() { + var match = FIREFOX_VERSION_REGEX.exec(window.navigator.userAgent); + if(match && match.length === 2) { + var versionInt = parseInt(match[1]); + if(!isNaN(versionInt)) { + return versionInt; + } + } + return null; +}; + lib.isD3Selection = function(obj) { - return obj && (typeof obj.classed === 'function'); + return obj instanceof d3.selection; }; /** @@ -46262,21 +55457,50 @@ function templateFormatString(string, labels, d3locale) { // just in case it speeds things up *slightly*: var getterCache = {}; - return string.replace(lib.TEMPLATE_STRING_REGEX, function(match, key, format) { - var obj, value, i; - for(i = 3; i < args.length; i++) { - obj = args[i]; - if(!obj) continue; - if(obj.hasOwnProperty(key)) { - value = obj[key]; - break; - } + return string.replace(lib.TEMPLATE_STRING_REGEX, function(match, rawKey, format) { + var isOther = + rawKey === 'xother' || + rawKey === 'yother'; - if(!SIMPLE_PROPERTY_REGEX.test(key)) { - value = getterCache[key] || lib.nestedProperty(obj, key).get(); - if(value) getterCache[key] = value; + var isSpaceOther = + rawKey === '_xother' || + rawKey === '_yother'; + + var isSpaceOtherSpace = + rawKey === '_xother_' || + rawKey === '_yother_'; + + var isOtherSpace = + rawKey === 'xother_' || + rawKey === 'yother_'; + + var hasOther = isOther || isSpaceOther || isOtherSpace || isSpaceOtherSpace; + + var key = rawKey; + if(isSpaceOther || isSpaceOtherSpace) key = key.substring(1); + if(isOtherSpace || isSpaceOtherSpace) key = key.substring(0, key.length - 1); + + var value; + if(hasOther) { + value = labels[key]; + if(value === undefined) return ''; + } else { + var obj, i; + for(i = 3; i < args.length; i++) { + obj = args[i]; + if(!obj) continue; + if(obj.hasOwnProperty(key)) { + value = obj[key]; + break; + } + + if(!SIMPLE_PROPERTY_REGEX.test(key)) { + value = lib.nestedProperty(obj, key).get(); + value = getterCache[key] || lib.nestedProperty(obj, key).get(); + if(value) getterCache[key] = value; + } + if(value !== undefined) break; } - if(value !== undefined) break; } if(value === undefined && opts) { @@ -46306,8 +55530,16 @@ function templateFormatString(string, labels, d3locale) { value = lib.formatDate(ms, format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, ''), false, fmt); } } else { - if(labels.hasOwnProperty(key + 'Label')) value = labels[key + 'Label']; + var keyLabel = key + 'Label'; + if(labels.hasOwnProperty(keyLabel)) value = labels[keyLabel]; } + + if(hasOther) { + value = '(' + value + ')'; + if(isSpaceOther || isSpaceOtherSpace) value = ' ' + value; + if(isOtherSpace || isSpaceOtherSpace) value = value + ' '; + } + return value; }); } @@ -46483,16 +55715,35 @@ lib.join2 = function(arr, mainSeparator, lastSeparator) { return arr.join(mainSeparator); }; -},{"../constants/numerical":212,"./anchor_utils":217,"./angles":218,"./array":219,"./clean_number":220,"./clear_responsive":222,"./coerce":223,"./dates":224,"./dom":225,"./extend":227,"./filter_unique":228,"./filter_visible":229,"./geometry2d":230,"./identity":231,"./increment":232,"./is_plain_object":234,"./keyed_container":235,"./localize":236,"./loggers":237,"./make_trace_groups":238,"./matrix":239,"./mod":240,"./nested_property":241,"./noop":242,"./notifier":243,"./preserve_drawing_buffer":246,"./push_unique":247,"./regex":249,"./relative_attr":250,"./relink_private":251,"./search":252,"./stats":254,"./throttle":256,"./to_log_range":257,"d3":21,"d3-time-format":19,"fast-isnumeric":23}],234:[function(_dereq_,module,exports){ +lib.bigFont = function(size) { + return Math.round(1.2 * size); +}; + +var firefoxVersion = lib.getFirefoxVersion(); +// see https://bugzilla.mozilla.org/show_bug.cgi?id=1684973 +var isProblematicFirefox = firefoxVersion !== null && firefoxVersion < 86; + /** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - + * Return the mouse position from the last event registered by D3. + * @returns An array with two numbers, representing the x and y coordinates of the mouse pointer + * at the event relative to the targeted node. + */ +lib.getPositionFromD3Event = function() { + if(isProblematicFirefox) { + // layerX and layerY are non-standard, so we only fallback to them when we have to: + return [ + d3.event.layerX, + d3.event.layerY + ]; + } else { + return [ + d3.event.offsetX, + d3.event.offsetY + ]; + } +}; +},{"../constants/numerical":265,"./anchor_utils":269,"./angles":270,"./array":271,"./clean_number":272,"./clear_responsive":274,"./coerce":275,"./dates":276,"./dom":277,"./extend":279,"./filter_unique":280,"./filter_visible":281,"./geometry2d":282,"./identity":283,"./increment":284,"./is_plain_object":286,"./keyed_container":287,"./localize":288,"./loggers":289,"./make_trace_groups":290,"./matrix":291,"./mod":292,"./nested_property":293,"./noop":294,"./notifier":295,"./preserve_drawing_buffer":298,"./push_unique":299,"./regex":301,"./relative_attr":302,"./relink_private":303,"./search":304,"./stats":306,"./throttle":308,"./to_log_range":309,"@plotly/d3":20,"d3-time-format":29,"fast-isnumeric":31}],286:[function(_dereq_,module,exports){ 'use strict'; // more info: http://stackoverflow.com/questions/18531624/isplainobject-thing @@ -46507,19 +55758,11 @@ module.exports = function isPlainObject(obj) { return ( Object.prototype.toString.call(obj) === '[object Object]' && - Object.getPrototypeOf(obj) === Object.prototype + Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty') ); }; -},{}],235:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],287:[function(_dereq_,module,exports){ 'use strict'; var nestedProperty = _dereq_('./nested_property'); @@ -46704,16 +55947,7 @@ module.exports = function keyedContainer(baseObj, path, keyName, valueName) { return obj; }; -},{"./nested_property":241}],236:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./nested_property":293}],288:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -46760,15 +55994,7 @@ module.exports = function localize(gd, s) { return s; }; -},{"../registry":326}],237:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../registry":373}],289:[function(_dereq_,module,exports){ 'use strict'; /* eslint-disable no-console */ @@ -46793,7 +56019,7 @@ loggers.log = function() { for(i = 0; i < arguments.length; i++) { messages.push(arguments[i]); } - apply(console.trace || console.log, messages); + console.trace.apply(console, messages); } if(dfltConfig.notifyOnLogging > 1) { @@ -46813,7 +56039,7 @@ loggers.warn = function() { for(i = 0; i < arguments.length; i++) { messages.push(arguments[i]); } - apply(console.trace || console.log, messages); + console.trace.apply(console, messages); } if(dfltConfig.notifyOnLogging > 0) { @@ -46833,7 +56059,7 @@ loggers.error = function() { for(i = 0; i < arguments.length; i++) { messages.push(arguments[i]); } - apply(console.error, messages); + console.error.apply(console, messages); } if(dfltConfig.notifyOnLogging > 0) { @@ -46845,43 +56071,10 @@ loggers.error = function() { } }; -/* - * Robust apply, for IE9 where console.log doesn't support - * apply like other functions do - */ -function apply(f, args) { - if(f && f.apply) { - try { - // `this` should always be console, since here we're always - // applying a method of the console object. - f.apply(console, args); - return; - } catch(e) { /* in case apply failed, fall back on the code below */ } - } - - // no apply - just try calling the function on each arg independently - for(var i = 0; i < args.length; i++) { - try { - f(args[i]); - } catch(e) { - // still fails - last resort simple console.log - console.log(args[i]); - } - } -} - -},{"../plot_api/plot_config":266,"./notifier":243}],238:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../plot_api/plot_config":318,"./notifier":295}],290:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); /** * General helper to manage trace groups based on calcdata @@ -46913,16 +56106,7 @@ module.exports = function makeTraceGroups(traceLayer, cdModule, cls) { return traces; }; -},{"d3":21}],239:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"@plotly/d3":20}],291:[function(_dereq_,module,exports){ 'use strict'; var mat4X4 = _dereq_('gl-mat4'); @@ -47065,15 +56249,7 @@ exports.inverseTransformMatrix = function(m) { ]; }; -},{"gl-mat4":39}],240:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"gl-mat4":47}],292:[function(_dereq_,module,exports){ 'use strict'; /** @@ -47100,16 +56276,7 @@ module.exports = { modHalf: modHalf }; -},{}],241:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],293:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -47346,15 +56513,7 @@ function badContainer(container, propStr, propParts) { }; } -},{"./array":219,"fast-isnumeric":23}],242:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./array":271,"fast-isnumeric":31}],294:[function(_dereq_,module,exports){ 'use strict'; // Simple helper functions @@ -47362,19 +56521,10 @@ function badContainer(container, propStr, propParts) { module.exports = function noop() {}; -},{}],243:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],295:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var NOTEDATA = []; @@ -47450,16 +56600,7 @@ module.exports = function(text, displayLength) { }); }; -},{"d3":21,"fast-isnumeric":23}],244:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"@plotly/d3":20,"fast-isnumeric":31}],296:[function(_dereq_,module,exports){ 'use strict'; var setCursor = _dereq_('./setcursor'); @@ -47498,16 +56639,7 @@ module.exports = function overrideCursor(el3, csr) { } }; -},{"./setcursor":253}],245:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./setcursor":305}],297:[function(_dereq_,module,exports){ 'use strict'; var dot = _dereq_('./matrix').dot; @@ -47750,15 +56882,7 @@ polygon.filter = function filter(pts, tolerance) { }; }; -},{"../constants/numerical":212,"./matrix":239}],246:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/numerical":265,"./matrix":291}],298:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -47820,15 +56944,7 @@ function getUserAgent() { return ua; } -},{"fast-isnumeric":23,"is-mobile":74}],247:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"fast-isnumeric":31,"is-mobile":67}],299:[function(_dereq_,module,exports){ 'use strict'; /** @@ -47858,15 +56974,7 @@ module.exports = function pushUnique(array, item) { return array; }; -},{}],248:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],300:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -47987,10 +57095,6 @@ queue.stopSequence = function(gd) { queue.undo = function undo(gd) { var queueObj, i; - if(gd.framework && gd.framework.isPolar) { - gd.framework.undo(); - return; - } if(gd.undoQueue === undefined || isNaN(gd.undoQueue.index) || gd.undoQueue.index <= 0) { @@ -48020,10 +57124,6 @@ queue.undo = function undo(gd) { queue.redo = function redo(gd) { var queueObj, i; - if(gd.framework && gd.framework.isPolar) { - gd.framework.redo(); - return; - } if(gd.undoQueue === undefined || isNaN(gd.undoQueue.index) || gd.undoQueue.index >= gd.undoQueue.queue.length) { @@ -48066,15 +57166,7 @@ queue.plotDo = function(gd, func, args) { module.exports = queue; -},{"../lib":233,"../plot_api/plot_config":266}],249:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/plot_config":318}],301:[function(_dereq_,module,exports){ 'use strict'; /* @@ -48096,16 +57188,7 @@ exports.counter = function(head, tail, openEnded, matchBeginning) { return new RegExp(startWithPrefix + head + '([2-9]|[1-9][0-9]+)?' + fullTail); }; -},{}],250:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],302:[function(_dereq_,module,exports){ 'use strict'; // ASCEND: chop off the last nesting level - either [] or . - to ascend @@ -48149,16 +57232,7 @@ module.exports = function(baseAttr, relativeAttr) { return baseAttr + relativeAttr; }; -},{}],251:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],303:[function(_dereq_,module,exports){ 'use strict'; var isArrayOrTypedArray = _dereq_('./array').isArrayOrTypedArray; @@ -48206,16 +57280,7 @@ module.exports = function relinkPrivateKeys(toContainer, fromContainer) { } }; -},{"./array":219,"./is_plain_object":234}],252:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./array":271,"./is_plain_object":286}],304:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -48411,16 +57476,7 @@ exports.findIndexOfMin = function(arr, fn) { return ind; }; -},{"../constants/numerical":212,"./identity":231,"./loggers":237,"fast-isnumeric":23}],253:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../constants/numerical":265,"./identity":283,"./loggers":289,"fast-isnumeric":31}],305:[function(_dereq_,module,exports){ 'use strict'; // works with our CSS cursor classes (see css/_cursor.scss) @@ -48434,16 +57490,7 @@ module.exports = function setCursor(el3, csr) { if(csr) el3.classed('cursor-' + csr, true); }; -},{}],254:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],306:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -48544,21 +57591,12 @@ exports.interp = function(arr, n) { return frac * arr[Math.ceil(n)] + (1 - frac) * arr[Math.floor(n)]; }; -},{"./array":219,"fast-isnumeric":23}],255:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./array":271,"fast-isnumeric":31}],307:[function(_dereq_,module,exports){ 'use strict'; /* global MathJax:false */ -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../lib'); var strTranslate = Lib.strTranslate; @@ -49311,6 +58349,18 @@ function alignHTMLWith(_base, container, options) { }; } +var onePx = '1px '; + +exports.makeTextShadow = function(color) { + var x = onePx; + var y = onePx; + var b = onePx; + return x + y + b + color + ', ' + + '-' + x + '-' + y + b + color + ', ' + + x + '-' + y + b + color + ', ' + + '-' + x + y + b + color; +}; + /* * Editable title * @param {d3.selection} context: the element being edited. Normally text, @@ -49435,15 +58485,7 @@ exports.makeEditable = function(context, options) { return d3.rebind(context, dispatch, 'on'); }; -},{"../constants/alignment":207,"../constants/xmlns_namespaces":213,"../lib":233,"d3":21}],256:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/alignment":260,"../constants/xmlns_namespaces":266,"../lib":285,"@plotly/d3":20}],308:[function(_dereq_,module,exports){ 'use strict'; var timerCache = {}; @@ -49538,15 +58580,7 @@ function _clearTimeout(cache) { } } -},{}],257:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],309:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -49566,15 +58600,7 @@ module.exports = function toLogRange(val, range) { return newVal; }; -},{"fast-isnumeric":23}],258:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"fast-isnumeric":31}],310:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -49588,15 +58614,7 @@ module.exports = { } }; -},{}],259:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],311:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -49631,16 +58649,7 @@ module.exports = { } }; -},{}],260:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],312:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -49689,15 +58698,7 @@ module.exports = function containerArrayMatch(astr) { return {array: arrayStr, index: Number(match[1]), property: match[3] || ''}; }; -},{"../registry":326}],261:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../registry":373}],313:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -49708,7 +58709,6 @@ var traceOpts = { valType: 'flaglist', extras: ['none'], flags: ['calc', 'clearAxisTypes', 'plot', 'style', 'markerSize', 'colorbars'], - }; var layoutOpts = { @@ -49718,7 +58718,6 @@ var layoutOpts = { 'calc', 'plot', 'legend', 'ticks', 'axrange', 'layoutstyle', 'modebar', 'camera', 'arraydraw', 'colorbars' ], - }; // flags for inside restyle/relayout include a few extras @@ -49814,15 +58813,7 @@ function overrideOne(attr, editTypeOverride, overrideContainers, key) { } } -},{"../lib":233}],262:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285}],314:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -50516,20 +59507,12 @@ exports.clearAxisTypes = function(gd, traces, layoutUpdate) { } }; -},{"../components/color":105,"../lib":233,"../plots/cartesian/axis_ids":282,"../plots/plots":313,"../registry":326,"fast-isnumeric":23,"gl-mat4/fromQuat":29}],263:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color":155,"../lib":285,"../plots/cartesian/axis_ids":334,"../plots/plots":366,"../registry":373,"fast-isnumeric":31,"gl-mat4/fromQuat":37}],315:[function(_dereq_,module,exports){ 'use strict'; var main = _dereq_('./plot_api'); -exports.plot = main.plot; +exports._doPlot = main._doPlot; exports.newPlot = main.newPlot; exports.restyle = main.restyle; exports.relayout = main.relayout; @@ -50559,16 +59542,7 @@ var templateApi = _dereq_('./template_api'); exports.makeTemplate = templateApi.makeTemplate; exports.validateTemplate = templateApi.validateTemplate; -},{"../snapshot/download":328,"./plot_api":265,"./template_api":270,"./to_image":271,"./validate":272}],264:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../snapshot/download":375,"./plot_api":317,"./template_api":322,"./to_image":323,"./validate":324}],316:[function(_dereq_,module,exports){ 'use strict'; var isPlainObject = _dereq_('../lib/is_plain_object'); @@ -50772,18 +59746,10 @@ exports.applyContainerArrayChanges = function applyContainerArrayChanges(gd, np, return true; }; -},{"../lib/is_plain_object":234,"../lib/loggers":237,"../lib/noop":242,"../lib/search":252,"../registry":326,"./container_array_match":260}],265:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib/is_plain_object":286,"../lib/loggers":289,"../lib/noop":294,"../lib/search":304,"../registry":373,"./container_array_match":312}],317:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var hasHover = _dereq_('has-hover'); @@ -50796,14 +59762,12 @@ var Queue = _dereq_('../lib/queue'); var Registry = _dereq_('../registry'); var PlotSchema = _dereq_('./plot_schema'); var Plots = _dereq_('../plots/plots'); -var Polar = _dereq_('../plots/polar/legacy'); var Axes = _dereq_('../plots/cartesian/axes'); var Drawing = _dereq_('../components/drawing'); var Color = _dereq_('../components/color'); var initInteractions = _dereq_('../plots/cartesian/graph_interact').initInteractions; var xmlnsNamespaces = _dereq_('../constants/xmlns_namespaces'); -var svgTextUtils = _dereq_('../lib/svg_text_utils'); var clearSelect = _dereq_('../plots/cartesian/select').clearSelect; var dfltConfig = _dereq_('./plot_config').dfltConfig; @@ -50818,7 +59782,7 @@ var numericNameWarningCount = 0; var numericNameWarningCountLimit = 5; /** - * Main plot-creation function + * Internal plot-creation function * * @param {string id or DOM element} gd * the id or DOM element of the graph container div @@ -50838,7 +59802,7 @@ var numericNameWarningCountLimit = 5; * object containing `data`, `layout`, `config`, and `frames` members * */ -function plot(gd, data, layout, config) { +function _doPlot(gd, data, layout, config) { var frames; gd = Lib.getGraphDiv(gd); @@ -50860,7 +59824,7 @@ function plot(gd, data, layout, config) { // if there's no data or layout, and this isn't yet a plotly plot // container, log a warning to help plotly.js users debug if(!data && !layout && !Lib.isPlotDiv(gd)) { - Lib.warn('Calling Plotly.plot as if redrawing ' + + Lib.warn('Calling _doPlot as if redrawing ' + 'but this container doesn\'t yet have a plot.', gd); } @@ -50916,13 +59880,7 @@ function plot(gd, data, layout, config) { var fullLayout = gd._fullLayout; var hasCartesian = fullLayout._has('cartesian'); - // Legacy polar plots - if(!fullLayout._has('polar') && data && data[0] && data[0].r) { - Lib.log('Legacy polar charts are deprecated!'); - return plotLegacyPolar(gd, data, layout); - } - - // so we don't try to re-call Plotly.plot from inside + // so we don't try to re-call _doPlot from inside // legend and colorbar, if margins changed fullLayout._replotting = true; @@ -50935,14 +59893,9 @@ function plot(gd, data, layout, config) { } } - // polar need a different framework - if(gd.framework !== makePlotFramework) { - gd.framework = makePlotFramework; - makePlotFramework(gd); - } - - // clear gradient defs on each .plot call, because we know we'll loop through all traces + // clear gradient and pattern defs on each .plot call, because we know we'll loop through all traces Drawing.initGradients(gd); + Drawing.initPatterns(gd); // save initial show spikes once per graph if(graphWasEmpty) Axes.saveShowSpikeInitial(gd); @@ -50950,7 +59903,7 @@ function plot(gd, data, layout, config) { // prepare the data and find the autorange // generate calcdata, if we need to - // to force redoing calcdata, just delete it before calling Plotly.plot + // to force redoing calcdata, just delete it before calling _doPlot var recalc = !gd.calcdata || gd.calcdata.length !== (gd._fullData || []).length; if(recalc) Plots.doCalcdata(gd); @@ -51322,99 +60275,6 @@ function setPlotContext(gd, config) { } } -function plotLegacyPolar(gd, data, layout) { - // build or reuse the container skeleton - var plotContainer = d3.select(gd).selectAll('.plot-container') - .data([0]); - plotContainer.enter() - .insert('div', ':first-child') - .classed('plot-container plotly', true); - var paperDiv = plotContainer.selectAll('.svg-container') - .data([0]); - paperDiv.enter().append('div') - .classed('svg-container', true) - .style('position', 'relative'); - - // empty it everytime for now - paperDiv.html(''); - - // fulfill gd requirements - if(data) gd.data = data; - if(layout) gd.layout = layout; - Polar.manager.fillLayout(gd); - - // resize canvas - paperDiv.style({ - width: gd._fullLayout.width + 'px', - height: gd._fullLayout.height + 'px' - }); - - // instantiate framework - gd.framework = Polar.manager.framework(gd); - - // plot - gd.framework({data: gd.data, layout: gd.layout}, paperDiv.node()); - - // set undo point - gd.framework.setUndoPoint(); - - // get the resulting svg for extending it - var polarPlotSVG = gd.framework.svg(); - - // editable title - var opacity = 1; - var txt = gd._fullLayout.title ? gd._fullLayout.title.text : ''; - if(txt === '' || !txt) opacity = 0; - - var titleLayout = function() { - this.call(svgTextUtils.convertToTspans, gd); - // TODO: html/mathjax - // TODO: center title - }; - - var title = polarPlotSVG.select('.title-group text') - .call(titleLayout); - - if(gd._context.edits.titleText) { - var placeholderText = Lib._(gd, 'Click to enter Plot title'); - if(!txt || txt === placeholderText) { - opacity = 0.2; - // placeholder is not going through convertToTspans - // so needs explicit data-unformatted - title.attr({'data-unformatted': placeholderText}) - .text(placeholderText) - .style({opacity: opacity}) - .on('mouseover.opacity', function() { - d3.select(this).transition().duration(100) - .style('opacity', 1); - }) - .on('mouseout.opacity', function() { - d3.select(this).transition().duration(1000) - .style('opacity', 0); - }); - } - - var setContenteditable = function() { - this.call(svgTextUtils.makeEditable, {gd: gd}) - .on('edit', function(text) { - gd.framework({layout: {title: {text: text}}}); - this.text(text) - .call(titleLayout); - this.call(setContenteditable); - }) - .on('cancel', function() { - var txt = this.attr('data-unformatted'); - this.text(txt).call(titleLayout); - }); - }; - title.call(setContenteditable); - } - - gd._context.setBackground(gd, gd._fullLayout.paper_bgcolor); - Plots.addLinks(gd); - - return Promise.resolve(); -} // convenience function to force a full redraw, mostly for use by plotly.js function redraw(gd) { @@ -51428,7 +60288,7 @@ function redraw(gd) { helpers.cleanLayout(gd.layout); gd.calcdata = undefined; - return exports.plot(gd).then(function() { + return exports._doPlot(gd).then(function() { gd.emit('plotly_redraw'); return gd; }); @@ -51449,7 +60309,7 @@ function newPlot(gd, data, layout, config) { Plots.cleanPlot([], {}, gd._fullData || [], gd._fullLayout || {}); Plots.purge(gd); - return exports.plot(gd, data, layout, config); + return exports._doPlot(gd, data, layout, config); } /** @@ -52160,7 +61020,7 @@ function restyle(gd, astr, val, _traces) { var seq = []; if(flags.fullReplot) { - seq.push(exports.plot); + seq.push(exports._doPlot); } else { seq.push(Plots.previousPromises); @@ -52646,10 +61506,6 @@ function relayout(gd, astr, val) { gd = Lib.getGraphDiv(gd); helpers.clearPromiseQueue(gd); - if(gd.framework && gd.framework.isPolar) { - return Promise.resolve(gd); - } - var aobj = {}; if(typeof astr === 'string') { aobj[astr] = val; @@ -53159,10 +62015,6 @@ function update(gd, traceUpdate, layoutUpdate, _traces) { gd = Lib.getGraphDiv(gd); helpers.clearPromiseQueue(gd); - if(gd.framework && gd.framework.isPolar) { - return Promise.resolve(gd); - } - if(!Lib.isPlainObject(traceUpdate)) traceUpdate = {}; if(!Lib.isPlainObject(layoutUpdate)) layoutUpdate = {}; @@ -53189,7 +62041,7 @@ function update(gd, traceUpdate, layoutUpdate, _traces) { // relayoutFlags.layoutReplot and restyleFlags.fullReplot are true seq.push(subroutines.layoutReplot); } else if(restyleFlags.fullReplot) { - seq.push(exports.plot); + seq.push(exports._doPlot); } else { seq.push(Plots.previousPromises); axRangeSupplyDefaultsByPass(gd, relayoutFlags, relayoutSpecs) || Plots.supplyDefaults(gd); @@ -53581,7 +62433,7 @@ function react(gd, data, layout, config) { }); } else if(restyleFlags.fullReplot || relayoutFlags.layoutReplot || configChanged) { gd._fullLayout._skipDefaults = true; - seq.push(exports.plot); + seq.push(exports._doPlot); } else { for(var componentType in relayoutFlags.arrays) { var indices = relayoutFlags.arrays[componentType]; @@ -54480,7 +63332,7 @@ function deleteFrames(gd, frameList) { } /** - * Purge a graph container div back to its initial pre-Plotly.plot state + * Purge a graph container div back to its initial pre-_doPlot state * * @param {string id or DOM element} gd * the id or DOM element of the graph container div @@ -54503,7 +63355,7 @@ function purge(gd) { // remove plot container if(fullLayout._container) fullLayout._container.remove(); - // in contrast to Plotly.Plots.purge which does NOT clear _context! + // in contrast to _doPlots.purge which does NOT clear _context! delete gd._context; return gd; @@ -54684,7 +63536,7 @@ exports.moveTraces = moveTraces; exports.prependTraces = prependTraces; exports.newPlot = newPlot; -exports.plot = plot; +exports._doPlot = _doPlot; exports.purge = purge; exports.react = react; @@ -54702,20 +63554,12 @@ exports._guiUpdate = guiEdit(update); exports._storeDirectGUIEdit = _storeDirectGUIEdit; -},{"../components/color":105,"../components/drawing":127,"../constants/xmlns_namespaces":213,"../lib":233,"../lib/events":226,"../lib/queue":248,"../lib/svg_text_utils":255,"../plots/cartesian/axes":279,"../plots/cartesian/constants":285,"../plots/cartesian/graph_interact":288,"../plots/cartesian/select":298,"../plots/plots":313,"../plots/polar/legacy":316,"../registry":326,"./edit_types":261,"./helpers":262,"./manage_arrays":264,"./plot_config":266,"./plot_schema":267,"./subroutines":269,"d3":21,"fast-isnumeric":23,"has-hover":54}],266:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color":155,"../components/drawing":177,"../constants/xmlns_namespaces":266,"../lib":285,"../lib/events":278,"../lib/queue":300,"../plots/cartesian/axes":331,"../plots/cartesian/constants":337,"../plots/cartesian/graph_interact":340,"../plots/cartesian/select":350,"../plots/plots":366,"../registry":373,"./edit_types":313,"./helpers":314,"./manage_arrays":316,"./plot_config":318,"./plot_schema":319,"./subroutines":321,"@plotly/d3":20,"fast-isnumeric":31,"has-hover":62}],318:[function(_dereq_,module,exports){ 'use strict'; /** * This will be transferred over to gd and overridden by - * config args to Plotly.plot. + * config args to Plotly.newPlot. * * The defaults are the appropriate settings for plotly.js, * so we get the right experience without any config argument. @@ -54729,94 +63573,77 @@ var configAttributes = { staticPlot: { valType: 'boolean', dflt: false, - }, plotlyServerURL: { valType: 'string', dflt: '', - }, editable: { valType: 'boolean', dflt: false, - }, edits: { annotationPosition: { valType: 'boolean', dflt: false, - }, annotationTail: { valType: 'boolean', dflt: false, - }, annotationText: { valType: 'boolean', dflt: false, - }, axisTitleText: { valType: 'boolean', dflt: false, - }, colorbarPosition: { valType: 'boolean', dflt: false, - }, colorbarTitleText: { valType: 'boolean', dflt: false, - }, legendPosition: { valType: 'boolean', dflt: false, - }, legendText: { valType: 'boolean', dflt: false, - }, shapePosition: { valType: 'boolean', dflt: false, - }, titleText: { valType: 'boolean', dflt: false, - } }, autosizable: { valType: 'boolean', dflt: false, - }, responsive: { valType: 'boolean', dflt: false, - }, fillFrame: { valType: 'boolean', dflt: false, - }, frameMargins: { valType: 'number', dflt: 0, min: 0, max: 0.5, - }, scrollZoom: { @@ -54824,105 +63651,86 @@ var configAttributes = { flags: ['cartesian', 'gl3d', 'geo', 'mapbox'], extras: [true, false], dflt: 'gl3d+geo+mapbox', - }, doubleClick: { valType: 'enumerated', values: [false, 'reset', 'autosize', 'reset+autosize'], dflt: 'reset+autosize', - }, doubleClickDelay: { valType: 'number', dflt: 300, min: 0, - }, showAxisDragHandles: { valType: 'boolean', dflt: true, - }, showAxisRangeEntryBoxes: { valType: 'boolean', dflt: true, - }, showTips: { valType: 'boolean', dflt: true, - }, showLink: { valType: 'boolean', dflt: false, - }, linkText: { valType: 'string', dflt: 'Edit chart', noBlank: true, - }, sendData: { valType: 'boolean', dflt: true, - }, showSources: { valType: 'any', dflt: false, - }, displayModeBar: { valType: 'enumerated', values: ['hover', true, false], dflt: 'hover', - }, showSendToCloud: { valType: 'boolean', dflt: false, - }, showEditInChartStudio: { valType: 'boolean', dflt: false, - }, modeBarButtonsToRemove: { valType: 'any', dflt: [], - }, modeBarButtonsToAdd: { valType: 'any', dflt: [], - }, modeBarButtons: { valType: 'any', dflt: false, - }, toImageButtonOptions: { valType: 'any', dflt: {}, - }, displaylogo: { valType: 'boolean', dflt: true, - }, watermark: { valType: 'boolean', dflt: false, - }, plotGlPixelRatio: { @@ -54930,26 +63738,22 @@ var configAttributes = { dflt: 2, min: 1, max: 4, - }, setBackground: { valType: 'any', dflt: 'transparent', - }, topojsonURL: { valType: 'string', noBlank: true, dflt: 'https://cdn.plot.ly/', - }, mapboxAccessToken: { valType: 'string', dflt: null, - }, logging: { @@ -54957,7 +63761,6 @@ var configAttributes = { min: 0, max: 2, dflt: 1, - }, notifyOnLogging: { @@ -54965,32 +63768,27 @@ var configAttributes = { min: 0, max: 2, dflt: 0, - }, queueLength: { valType: 'integer', min: 0, dflt: 0, - }, globalTransforms: { valType: 'any', dflt: [], - }, locale: { valType: 'string', dflt: 'en-US', - }, locales: { valType: 'any', dflt: {}, - } }; @@ -55017,15 +63815,7 @@ module.exports = { dfltConfig: dfltConfig }; -},{}],267:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],319:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -55037,13 +63827,8 @@ var frameAttributes = _dereq_('../plots/frame_attributes'); var animationAttributes = _dereq_('../plots/animation_attributes'); var configAttributes = _dereq_('./plot_config').configAttributes; -// polar attributes are not part of the Registry yet -var polarAreaAttrs = _dereq_('../plots/polar/legacy/area_attributes'); -var polarAxisAttrs = _dereq_('../plots/polar/legacy/axis_attributes'); - var editTypes = _dereq_('./edit_types'); -var extendFlat = Lib.extendFlat; var extendDeepAll = Lib.extendDeepAll; var isPlainObject = Lib.isPlainObject; var isArrayOrTypedArray = Lib.isArrayOrTypedArray; @@ -55075,7 +63860,7 @@ exports.UNDERSCORE_ATTRS = UNDERSCORE_ATTRS; exports.get = function() { var traces = {}; - Registry.allTypes.concat('area').forEach(function(type) { + Registry.allTypes.forEach(function(type) { traces[type] = getTraceAttributes(type); }); @@ -55094,7 +63879,6 @@ exports.get = function() { layout: editTypes.layout }, impliedEdits: { - } }, @@ -55287,8 +64071,6 @@ exports.getTraceValObject = function(trace, parts) { moduleAttrs = (Registry.transformsRegistry[transforms[tNum].type] || {}).attributes; valObject = moduleAttrs && moduleAttrs[parts[2]]; i = 3; // start recursing only inside the transform - } else if(trace.type === 'area') { - valObject = polarAreaAttrs[head]; } else { // first look in the module for this trace // components have already merged their trace attributes in here @@ -55389,12 +64171,7 @@ function layoutHeadAttr(fullLayout, head) { if(head in baseLayoutAttributes) return baseLayoutAttributes[head]; - // Polar doesn't populate _modules or _basePlotModules - // just fall back on these when the others fail - if(head === 'radialaxis' || head === 'angularaxis') { - return polarAxisAttrs[head]; - } - return polarAxisAttrs.layout[head] || false; + return false; } function recurseIntoValObject(valObject, parts, i) { @@ -55452,13 +64229,8 @@ function isIndex(val) { function getTraceAttributes(type) { var _module, basePlotModule; - if(type === 'area') { - _module = { attributes: polarAreaAttrs }; - basePlotModule = {}; - } else { - _module = Registry.modules[type]._module, - basePlotModule = _module.basePlotModule; - } + _module = Registry.modules[type]._module, + basePlotModule = _module.basePlotModule; var attributes = {}; @@ -55556,9 +64328,6 @@ function getLayoutAttributes() { } } - // polar layout attributes - layoutAttributes = assignPolarLayoutAttrs(layoutAttributes); - // add registered components layout attributes for(key in Registry.componentsRegistry) { _module = Registry.componentsRegistry[key]; @@ -55636,21 +64405,14 @@ function mergeValTypeAndRole(attrs) { function makeSrcAttr(attrName) { return { valType: 'string', - - editType: 'none' }; } function callback(attr, attrName, attrs) { if(exports.isValObject(attr)) { - if(attr.valType === 'data_array') { - // all 'data_array' attrs have role 'data' - attr.role = 'data'; - // all 'data_array' attrs have a corresponding 'src' attr - attrs[attrName + 'src'] = makeSrcAttr(attrName); - } else if(attr.arrayOk === true) { - // all 'arrayOk' attrs have a corresponding 'src' attr + if(attr.arrayOk === true || attr.valType === 'data_array') { + // all 'arrayOk' and 'data_array' attrs have a corresponding 'src' attr attrs[attrName + 'src'] = makeSrcAttr(attrName); } } else if(isPlainObject(attr)) { @@ -55703,16 +64465,6 @@ function stringify(attrs) { walk(attrs); } -function assignPolarLayoutAttrs(layoutAttributes) { - extendFlat(layoutAttributes, { - radialaxis: polarAxisAttrs.radialaxis, - angularaxis: polarAxisAttrs.angularaxis - }); - - extendFlat(layoutAttributes, polarAxisAttrs.layout); - - return layoutAttributes; -} function handleBasePlotModule(layoutAttributes, _module, astr) { var np = nestedProperty(layoutAttributes, astr); @@ -55728,16 +64480,7 @@ function insertAttrs(baseAttrs, newAttrs, astr) { np.set(extendDeepAll(np.get() || {}, newAttrs)); } -},{"../lib":233,"../plots/animation_attributes":273,"../plots/attributes":275,"../plots/frame_attributes":308,"../plots/layout_attributes":311,"../plots/polar/legacy/area_attributes":314,"../plots/polar/legacy/axis_attributes":315,"../registry":326,"./edit_types":261,"./plot_config":266}],268:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../lib":285,"../plots/animation_attributes":325,"../plots/attributes":327,"../plots/frame_attributes":360,"../plots/layout_attributes":364,"../registry":373,"./edit_types":313,"./plot_config":318}],320:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -55748,16 +64491,12 @@ var TEMPLATEITEMNAME = 'templateitemname'; var templateAttrs = { name: { valType: 'string', - editType: 'none', - } }; templateAttrs[TEMPLATEITEMNAME] = { valType: 'string', - editType: 'calc', - }; /** @@ -56040,18 +64779,10 @@ exports.arrayEditor = function(parentIn, containerStr, itemOut) { }; }; -},{"../lib":233,"../plots/attributes":275}],269:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/attributes":327}],321:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../registry'); var Plots = _dereq_('../plots/plots'); @@ -56579,7 +65310,7 @@ exports.doColorBars = function(gd) { exports.layoutReplot = function(gd) { var layout = gd.layout; gd.layout = undefined; - return Registry.call('plot', gd, '', layout); + return Registry.call('_doPlot', gd, '', layout); }; exports.doLegend = function(gd) { @@ -56764,16 +65495,7 @@ exports.drawMarginPushers = function(gd) { Registry.getComponentMethod('colorbar', 'draw')(gd); }; -},{"../components/color":105,"../components/drawing":127,"../components/modebar":165,"../components/titles":200,"../constants/alignment":207,"../lib":233,"../lib/clear_gl_canvases":221,"../plots/cartesian/autorange":278,"../plots/cartesian/axes":279,"../plots/cartesian/constraints":286,"../plots/plots":313,"../registry":326,"d3":21}],270:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../components/color":155,"../components/drawing":177,"../components/modebar":218,"../components/titles":253,"../constants/alignment":260,"../lib":285,"../lib/clear_gl_canvases":273,"../plots/cartesian/autorange":330,"../plots/cartesian/axes":331,"../plots/cartesian/constraints":338,"../plots/plots":366,"../registry":373,"@plotly/d3":20}],322:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -57226,15 +65948,7 @@ function format(opts) { return opts; } -},{"../lib":233,"../plots/attributes":275,"../plots/plots":313,"./plot_config":266,"./plot_schema":267,"./plot_template":268}],271:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/attributes":327,"../plots/plots":366,"./plot_config":318,"./plot_schema":319,"./plot_template":320}],323:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -57253,33 +65967,27 @@ var attrs = { valType: 'enumerated', values: ['png', 'jpeg', 'webp', 'svg', 'full-json'], dflt: 'png', - }, width: { valType: 'number', min: 1, - }, height: { valType: 'number', min: 1, - }, scale: { valType: 'number', min: 0, dflt: 1, - }, setBackground: { valType: 'any', dflt: false, - }, imageDataOnly: { valType: 'boolean', dflt: false, - } }; @@ -57436,7 +66144,7 @@ function toImage(gd, opts) { } return new Promise(function(resolve, reject) { - plotApi.plot(clonedGd, data, layoutImage, configImage) + plotApi.newPlot(clonedGd, data, layoutImage, configImage) .then(redrawFunc) .then(wait) .then(convert) @@ -57447,15 +66155,7 @@ function toImage(gd, opts) { module.exports = toImage; -},{"../lib":233,"../plots/plots":313,"../snapshot/helpers":330,"../snapshot/svgtoimg":332,"../snapshot/tosvg":334,"../version":494,"./plot_api":265,"fast-isnumeric":23}],272:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/plots":366,"../snapshot/helpers":377,"../snapshot/svgtoimg":379,"../snapshot/tosvg":381,"../version":546,"./plot_api":317,"fast-isnumeric":31}],324:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -57878,61 +66578,41 @@ function convertPathToAttributeString(path) { return astr; } -},{"../lib":233,"../plots/plots":313,"./plot_config":266,"./plot_schema":267}],273:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/plots":366,"./plot_config":318,"./plot_schema":319}],325:[function(_dereq_,module,exports){ 'use strict'; module.exports = { mode: { valType: 'enumerated', dflt: 'afterall', - values: ['immediate', 'next', 'afterall'], - }, direction: { valType: 'enumerated', - values: ['forward', 'reverse'], dflt: 'forward', - }, fromcurrent: { valType: 'boolean', dflt: false, - - }, frame: { duration: { valType: 'number', - min: 0, dflt: 500, - }, redraw: { valType: 'boolean', - dflt: true, - }, }, transition: { duration: { valType: 'number', - min: 0, dflt: 500, editType: 'none', - }, easing: { valType: 'enumerated', @@ -57975,30 +66655,18 @@ module.exports = { 'back-in-out', 'bounce-in-out' ], - editType: 'none', - }, ordering: { valType: 'enumerated', values: ['layout first', 'traces first'], dflt: 'layout first', - editType: 'none', - } } }; -},{}],274:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],326:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -58085,15 +66753,7 @@ module.exports = function handleArrayContainerDefaults(parentObjIn, parentObjOut return contOut; }; -},{"../lib":233,"../plot_api/plot_template":268}],275:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/plot_template":320}],327:[function(_dereq_,module,exports){ 'use strict'; var fxAttrs = _dereq_('../components/fx/attributes'); @@ -58101,7 +66761,6 @@ var fxAttrs = _dereq_('../components/fx/attributes'); module.exports = { type: { valType: 'enumerated', - values: [], // listed dynamically dflt: 'scatter', editType: 'calc+clearAxisTypes', @@ -58110,64 +66769,48 @@ module.exports = { visible: { valType: 'enumerated', values: [true, false, 'legendonly'], - dflt: true, editType: 'calc', - }, showlegend: { valType: 'boolean', - dflt: true, editType: 'style', - }, legendgroup: { valType: 'string', - dflt: '', editType: 'style', - }, opacity: { valType: 'number', - min: 0, max: 1, dflt: 1, editType: 'style', - }, name: { valType: 'string', - editType: 'style', - }, uid: { valType: 'string', - editType: 'plot', anim: true, - }, ids: { valType: 'data_array', editType: 'calc', anim: true, - }, customdata: { valType: 'data_array', editType: 'calc', - }, meta: { valType: 'any', arrayOk: true, - editType: 'plot', - }, // N.B. these cannot be 'data_array' as they do not have the same length as @@ -58177,20 +66820,16 @@ module.exports = { // https://github.com/plotly/plotly.js/issues/1894 selectedpoints: { valType: 'any', - editType: 'calc', - }, hoverinfo: { valType: 'flaglist', - flags: ['x', 'y', 'z', 'text', 'name'], extras: ['all', 'none', 'skip'], arrayOk: true, dflt: 'all', editType: 'none', - }, hoverlabel: fxAttrs.hoverlabel, stream: { @@ -58198,43 +66837,28 @@ module.exports = { valType: 'string', noBlank: true, strict: true, - editType: 'calc', - }, maxpoints: { valType: 'number', min: 0, max: 10000, dflt: 500, - editType: 'calc', - }, editType: 'calc' }, transforms: { _isLinkedToArray: 'transform', editType: 'calc', - }, uirevision: { valType: 'any', - editType: 'none', - } }; -},{"../components/fx/attributes":136}],276:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/fx/attributes":186}],328:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -58318,51 +66942,33 @@ module.exports = function alignPeriod(trace, ax, axLetter, vals) { return newVals; }; -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],277:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],329:[function(_dereq_,module,exports){ 'use strict'; module.exports = { xaxis: { valType: 'subplotid', - dflt: 'x', editType: 'calc+clearAxisTypes', - }, yaxis: { valType: 'subplotid', - dflt: 'y', editType: 'calc+clearAxisTypes', - } }; -},{}],278:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],330:[function(_dereq_,module,exports){ 'use strict'; +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Lib = _dereq_('../../lib'); var FP_SAFE = _dereq_('../../constants/numerical').FP_SAFE; var Registry = _dereq_('../../registry'); +var Drawing = _dereq_('../../components/drawing'); var axIds = _dereq_('./axis_ids'); var getFromId = axIds.getFromId; @@ -58575,7 +67181,7 @@ function makePadFn(fullLayout, ax, max) { var zero = 0; if(!isLinked(fullLayout, ax._id)) { - zero = padInsideLabelsOnAnchorAxis(ax, max); + zero = padInsideLabelsOnAnchorAxis(fullLayout, ax, max); } extrappad = Math.max(zero, extrappad); @@ -58594,45 +67200,69 @@ function makePadFn(fullLayout, ax, max) { var TEXTPAD = 3; -function padInsideLabelsOnAnchorAxis(ax, max) { +function padInsideLabelsOnAnchorAxis(fullLayout, ax, max) { var pad = 0; - var anchorAxis = ax._anchorAxis || {}; - if((anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) { - // increase padding to make more room for inside tick labels of the counter axis - if(( - !max && ( - anchorAxis.side === 'left' || - anchorAxis.side === 'bottom' - ) - ) || ( - max && ( - anchorAxis.side === 'top' || - anchorAxis.side === 'right' - ) - )) { - var isX = ax._id.charAt(0) === 'x'; - if(anchorAxis._vals) { - var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + 'tick'] || 0); - var cosA = Math.abs(Math.cos(rad)); - var sinA = Math.abs(Math.sin(rad)); + var isX = ax._id.charAt(0) === 'x'; - // use bounding boxes - anchorAxis._vals.forEach(function(t) { - if(t.bb) { - var w = 2 * TEXTPAD + t.bb.width; - var h = 2 * TEXTPAD + t.bb.height; + for(var subplot in fullLayout._plots) { + var plotinfo = fullLayout._plots[subplot]; - pad = Math.max(pad, isX ? - Math.max(w * cosA, h * sinA) : - Math.max(h * cosA, w * sinA) - ); + if(ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue; + + var anchorAxis = (isX ? plotinfo.yaxis : plotinfo.xaxis) || {}; + + if((anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) { + // increase padding to make more room for inside tick labels of the counter axis + if(( + !max && ( + anchorAxis.side === 'left' || + anchorAxis.side === 'bottom' + ) + ) || ( + max && ( + anchorAxis.side === 'top' || + anchorAxis.side === 'right' + ) + )) { + if(anchorAxis._vals) { + var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + 'tick'] || 0); + var cosA = Math.abs(Math.cos(rad)); + var sinA = Math.abs(Math.sin(rad)); + + // no stashed bounding boxes - stash bounding boxes + if(!anchorAxis._vals[0].bb) { + var cls = anchorAxis._id + 'tick'; + var tickLabels = anchorAxis._selections[cls]; + tickLabels.each(function(d) { + var thisLabel = d3.select(this); + var mathjaxGroup = thisLabel.select('.text-math-group'); + if(mathjaxGroup.empty()) { + d.bb = Drawing.bBox(thisLabel.node()); + } + }); } - }); - } - if(anchorAxis.ticks === 'inside' && anchorAxis.ticklabelposition === 'inside') { - pad += anchorAxis.ticklen || 0; + // use bounding boxes + for(var i = 0; i < anchorAxis._vals.length; i++) { + var t = anchorAxis._vals[i]; + var bb = t.bb; + + if(bb) { + var w = 2 * TEXTPAD + bb.width; + var h = 2 * TEXTPAD + bb.height; + + pad = Math.max(pad, isX ? + Math.max(w * cosA, h * sinA) : + Math.max(h * cosA, w * sinA) + ); + } + } + } + + if(anchorAxis.ticks === 'inside' && anchorAxis.ticklabelposition === 'inside') { + pad += anchorAxis.ticklen || 0; + } } } } @@ -58956,18 +67586,10 @@ function goodNumber(v) { function lessOrEqual(v0, v1) { return v0 <= v1; } function greaterOrEqual(v0, v1) { return v0 >= v1; } -},{"../../constants/numerical":212,"../../lib":233,"../../registry":326,"./axis_ids":282,"fast-isnumeric":23}],279:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../constants/numerical":265,"../../lib":285,"../../registry":373,"./axis_ids":334,"@plotly/d3":20,"fast-isnumeric":31}],331:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Plots = _dereq_('../../plots/plots'); @@ -59001,6 +67623,11 @@ var ONESEC = constants.ONESEC; var MINUS_SIGN = constants.MINUS_SIGN; var BADNUM = constants.BADNUM; +var ZERO_PATH = { K: 'zeroline' }; +var GRID_PATH = { K: 'gridline', L: 'path' }; +var TICK_PATH = { K: 'tick', L: 'path' }; +var TICK_TEXT = { K: 'tick', L: 'text' }; + var alignmentConstants = _dereq_('../../constants/alignment'); var MID_SHIFT = alignmentConstants.MID_SHIFT; var CAP_SHIFT = alignmentConstants.CAP_SHIFT; @@ -59516,7 +68143,7 @@ axes.prepTicks = function(ax, opts) { if(!nt) { if(ax.type === 'category' || ax.type === 'multicategory') { - minPx = ax.tickfont ? (ax.tickfont.size || 12) * 1.2 : 15; + minPx = ax.tickfont ? Lib.bigFont(ax.tickfont.size || 12) : 15; nt = ax._length / minPx; } else { minPx = ax._id.charAt(0) === 'y' ? 40 : 80; @@ -60323,16 +68950,23 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { * log axes (where negative values can't be displayed but can appear in hover text) * * @param {object} ax: the axis to format text for - * @param {number} val: calcdata value to format - * @param {Optional(number)} val2: a second value to display + * @param {number or array of numbers} values: calcdata value(s) to format + * @param {Optional(string)} hoverformat: trace (x|y)hoverformat to override axis.hoverformat * * @returns {string} `val` formatted as a string appropriate to this axis, or - * `val` and `val2` as a range (ie ' - ') if `val2` is provided and - * it's different from `val`. + * first value and second value as a range (ie ' - ') if the second value is provided and + * it's different from the first value. */ -axes.hoverLabelText = function(ax, val, val2) { - if(val2 !== BADNUM && val2 !== val) { - return axes.hoverLabelText(ax, val) + ' - ' + axes.hoverLabelText(ax, val2); +axes.hoverLabelText = function(ax, values, hoverformat) { + if(hoverformat) ax = Lib.extendFlat({}, ax, {hoverformat: hoverformat}); + + var val = Array.isArray(values) ? values[0] : values; + var val2 = Array.isArray(values) ? values[1] : undefined; + if(val2 !== undefined && val2 !== val) { + return ( + axes.hoverLabelText(ax, val, hoverformat) + ' - ' + + axes.hoverLabelText(ax, val2, hoverformat) + ); } var logOffScale = (ax.type === 'log' && val <= 0); @@ -60416,7 +69050,7 @@ function formatDate(ax, out, hover, extraPrecision) { ax._prevDateHead = headStr; dateStr += '
' + headStr; } else { - var isInside = (ax.ticklabelposition || '').indexOf('inside') !== -1; + var isInside = insideTicklabelposition(ax); var side = ax._realSide || ax.side; // polar mocks the side of the radial axis if( (!isInside && side === 'top') || @@ -61147,6 +69781,7 @@ axes.drawOne = function(gd, ax, opts) { return axes.drawLabels(gd, ax, { vals: vals, layer: mainAxLayer, + plotinfo: plotinfo, transFn: transTickLabelFn, labelFns: axes.makeLabelFns(ax, mainLinePosition) }); @@ -61765,7 +70400,10 @@ axes.drawTicks = function(gd, ax, opts) { .classed('crisp', opts.crisp !== false) .call(Color.stroke, ax.tickcolor) .style('stroke-width', Drawing.crispRound(gd, ax.tickwidth, 1) + 'px') - .attr('d', opts.path); + .attr('d', opts.path) + .style('display', null); // visible + + hideCounterAxisInsideTickLabels(ax, [TICK_PATH]); ticks.attr('transform', opts.transFn); }; @@ -61828,7 +70466,10 @@ axes.drawGrid = function(gd, ax, opts) { grid.attr('transform', opts.transFn) .attr('d', opts.path) .call(Color.stroke, ax.gridcolor || '#ddd') - .style('stroke-width', ax._gw + 'px'); + .style('stroke-width', ax._gw + 'px') + .style('display', null); // visible + + hideCounterAxisInsideTickLabels(ax, [GRID_PATH]); if(typeof opts.path === 'function') grid.attr('d', opts.path); }; @@ -61877,7 +70518,10 @@ axes.drawZeroLine = function(gd, ax, opts) { zl.attr('transform', opts.transFn) .attr('d', opts.path) .call(Color.stroke, ax.zerolinecolor || Color.defaultLine) - .style('stroke-width', Drawing.crispRound(gd, ax.zerolinewidth, ax._gw || 1) + 'px'); + .style('stroke-width', Drawing.crispRound(gd, ax.zerolinewidth, ax._gw || 1) + 'px') + .style('display', null); // visible + + hideCounterAxisInsideTickLabels(ax, [ZERO_PATH]); }; /** @@ -61952,6 +70596,8 @@ axes.drawLabels = function(gd, ax, opts) { } }); + hideCounterAxisInsideTickLabels(ax, [TICK_TEXT]); + tickLabels.exit().remove(); if(opts.repositionOnUpdate) { @@ -61962,8 +70608,6 @@ axes.drawLabels = function(gd, ax, opts) { } function positionLabels(s, angle) { - var isInside = (ax.ticklabelposition || '').indexOf('inside') !== -1; - s.each(function(d) { var thisLabel = d3.select(this); var mathjaxGroup = thisLabel.select('.text-math-group'); @@ -61991,13 +70635,10 @@ axes.drawLabels = function(gd, ax, opts) { 'text-anchor': anchor }); - if(isInside) { - // ensure visible - thisText.style({ opacity: 100 }); + thisText.style('opacity', 1); // visible - if(ax._hideOutOfRangeInsideTickLabels) { - ax._hideOutOfRangeInsideTickLabels(); - } + if(ax._adjustTickLabelsOverflow) { + ax._adjustTickLabelsOverflow(); } } else { var mjWidth = Drawing.bBox(mathjaxGroup.node()).width; @@ -62007,39 +70648,135 @@ axes.drawLabels = function(gd, ax, opts) { }); } - ax._hideOutOfRangeInsideTickLabels = undefined; - if((ax.ticklabelposition || '').indexOf('inside') !== -1) { - ax._hideOutOfRangeInsideTickLabels = function() { + ax._adjustTickLabelsOverflow = function() { + var ticklabeloverflow = ax.ticklabeloverflow; + if(!ticklabeloverflow || ticklabeloverflow === 'allow') return; + + var hideOverflow = ticklabeloverflow.indexOf('hide') !== -1; + + var isX = ax._id.charAt(0) === 'x'; + // div positions + var p0 = 0; + var p1 = isX ? + gd._fullLayout.width : + gd._fullLayout.height; + + if(ticklabeloverflow.indexOf('domain') !== -1) { + // domain positions var rl = Lib.simpleMap(ax.range, ax.r2l); + p0 = ax.l2p(rl[0]) + ax._offset; + p1 = ax.l2p(rl[1]) + ax._offset; + } - // hide inside tick labels that go outside axis end points - var p0 = ax.l2p(rl[0]); - var p1 = ax.l2p(rl[1]); + var min = Math.min(p0, p1); + var max = Math.max(p0, p1); - var min = Math.min(p0, p1) + ax._offset; - var max = Math.max(p0, p1) + ax._offset; + var side = ax.side; - var isX = ax._id.charAt(0) === 'x'; + var visibleLabelMin = Infinity; + var visibleLabelMax = -Infinity; - tickLabels.each(function(d) { - var thisLabel = d3.select(this); - var mathjaxGroup = thisLabel.select('.text-math-group'); + tickLabels.each(function(d) { + var thisLabel = d3.select(this); + var mathjaxGroup = thisLabel.select('.text-math-group'); - if(mathjaxGroup.empty()) { - var bb = Drawing.bBox(thisLabel.node()); - var hide = false; - if(isX) { - if(bb.right > max) hide = true; - else if(bb.left < min) hide = true; + if(mathjaxGroup.empty()) { + var bb = Drawing.bBox(thisLabel.node()); + var adjust = 0; + if(isX) { + if(bb.right > max) adjust = 1; + else if(bb.left < min) adjust = 1; + } else { + if(bb.bottom > max) adjust = 1; + else if(bb.top + (ax.tickangle ? 0 : d.fontSize / 4) < min) adjust = 1; + } + + var t = thisLabel.select('text'); + if(adjust) { + if(hideOverflow) t.style('opacity', 0); // hidden + } else { + t.style('opacity', 1); // visible + + if(side === 'bottom' || side === 'right') { + visibleLabelMin = Math.min(visibleLabelMin, isX ? bb.top : bb.left); } else { - if(bb.bottom > max) hide = true; - else if(bb.top + (ax.tickangle ? 0 : d.fontSize / 4) < min) hide = true; + visibleLabelMin = -Infinity; } - if(hide) thisLabel.select('text').style({ opacity: 0 }); - } // TODO: hide mathjax? - }); - }; - } + + if(side === 'top' || side === 'left') { + visibleLabelMax = Math.max(visibleLabelMax, isX ? bb.bottom : bb.right); + } else { + visibleLabelMax = Infinity; + } + } + } // TODO: hide mathjax? + }); + + for(var subplot in fullLayout._plots) { + var plotinfo = fullLayout._plots[subplot]; + if(ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue; + var anchorAx = isX ? plotinfo.yaxis : plotinfo.xaxis; + if(anchorAx) { + anchorAx['_visibleLabelMin_' + ax._id] = visibleLabelMin; + anchorAx['_visibleLabelMax_' + ax._id] = visibleLabelMax; + } + } + }; + + ax._hideCounterAxisInsideTickLabels = function(partialOpts) { + var isX = ax._id.charAt(0) === 'x'; + + var anchoredAxes = []; + for(var subplot in fullLayout._plots) { + var plotinfo = fullLayout._plots[subplot]; + if(ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue; + anchoredAxes.push(isX ? plotinfo.yaxis : plotinfo.xaxis); + } + + anchoredAxes.forEach(function(anchorAx, idx) { + if(anchorAx && insideTicklabelposition(anchorAx)) { + (partialOpts || [ + ZERO_PATH, + GRID_PATH, + TICK_PATH, + TICK_TEXT + ]).forEach(function(e) { + var isPeriodLabel = + e.K === 'tick' && + e.L === 'text' && + ax.ticklabelmode === 'period'; + + var mainPlotinfo = fullLayout._plots[ax._mainSubplot]; + + var sel; + if(e.K === ZERO_PATH.K) sel = mainPlotinfo.zerolinelayer.selectAll('.' + ax._id + 'zl'); + else if(e.K === GRID_PATH.K) sel = mainPlotinfo.gridlayer.selectAll('.' + ax._id); + else sel = mainPlotinfo[ax._id.charAt(0) + 'axislayer']; + + sel.each(function() { + var w = d3.select(this); + if(e.L) w = w.selectAll(e.L); + + w.each(function(d) { + var q = ax.l2p( + isPeriodLabel ? getPosX(d) : d.x + ) + ax._offset; + + var t = d3.select(this); + if( + q < ax['_visibleLabelMax_' + anchorAx._id] && + q > ax['_visibleLabelMin_' + anchorAx._id] + ) { + t.style('display', 'none'); // hidden + } else if(e.K === 'tick' && !idx) { + t.style('display', null); // visible + } + }); + }); + }); + } + }); + }; // make sure all labels are correctly positioned at their base angle // the positionLabels call above is only for newly drawn labels. @@ -62168,7 +70905,7 @@ axes.drawLabels = function(gd, ax, opts) { var anchorAx = ax._anchorAxis; if( anchorAx && anchorAx.autorange && - (ax.ticklabelposition || '').indexOf('inside') !== -1 && + insideTicklabelposition(ax) && !isLinked(fullLayout, ax._id) ) { if(!fullLayout._insideTickLabelsAutorange) { @@ -62180,7 +70917,10 @@ axes.drawLabels = function(gd, ax, opts) { function computeFinalTickLabelBoundingBoxes() { tickLabels.each(function(d, i) { var thisLabel = selectTickLabel(this); - ax._vals[i].bb = Drawing.bBox(thisLabel.node()); + var mathjaxGroup = thisLabel.select('.text-math-group'); + if(mathjaxGroup.empty()) { + ax._vals[i].bb = Drawing.bBox(thisLabel.node()); + } }); } ); @@ -62317,7 +71057,7 @@ function drawTitle(gd, ax) { if(ax.title.hasOwnProperty('standoff')) { titleStandoff = ax._depth + ax.title.standoff + approxTitleDepth(ax); } else { - var isInside = (ax.ticklabelposition || '').indexOf('inside') !== -1; + var isInside = insideTicklabelposition(ax); if(ax.type === 'multicategory') { titleStandoff = ax._depth; @@ -62676,16 +71416,19 @@ function moveOutsideBreak(v, ax) { return v; } -},{"../../components/color":105,"../../components/drawing":127,"../../components/titles":200,"../../constants/alignment":207,"../../constants/numerical":212,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../../registry":326,"./autorange":278,"./axis_autotype":280,"./axis_ids":282,"./clean_ticks":284,"./layout_attributes":293,"./set_convert":299,"d3":21,"fast-isnumeric":23}],280:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +function insideTicklabelposition(ax) { + return ((ax.ticklabelposition || '').indexOf('inside') !== -1); +} +function hideCounterAxisInsideTickLabels(ax, opts) { + if(insideTicklabelposition(ax._anchorAxis || {})) { + if(ax._hideCounterAxisInsideTickLabels) { + ax._hideCounterAxisInsideTickLabels(opts); + } + } +} +},{"../../components/color":155,"../../components/drawing":177,"../../components/titles":253,"../../constants/alignment":260,"../../constants/numerical":265,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../../registry":373,"./autorange":330,"./axis_autotype":332,"./axis_ids":334,"./clean_ticks":336,"./layout_attributes":345,"./set_convert":351,"@plotly/d3":20,"fast-isnumeric":31}],332:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -62807,15 +71550,7 @@ function multiCategory(a) { return isArrayOrTypedArray(a[0]) && isArrayOrTypedArray(a[1]); } -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],281:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],333:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -62874,8 +71609,9 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } } + var ticklabelposition = ''; if(!options.noTicklabelposition || axType === 'multicategory') { - Lib.coerce(containerIn, containerOut, { + ticklabelposition = Lib.coerce(containerIn, containerOut, { ticklabelposition: { valType: 'enumerated', dflt: 'outside', @@ -62893,6 +71629,17 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, }, 'ticklabelposition'); } + if(!options.noTicklabeloverflow) { + coerce('ticklabeloverflow', + ticklabelposition.indexOf('inside') !== -1 ? + 'hide past domain' : + axType === 'category' || + axType === 'multicategory' ? + 'allow' : + 'hide past div' + ); + } + setConvert(containerOut, layoutOut); var autorangeDflt = !containerOut.isValidRange(containerIn.range); @@ -62922,7 +71669,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, coerce('title.text', dfltTitle); Lib.coerceFont(coerce, 'title.font', { family: font.family, - size: Math.round(font.size * 1.2), + size: Lib.bigFont(font.size), color: dfltFontColor }); @@ -63115,15 +71862,7 @@ function indexOfDay(v) { ]; } -},{"../../lib":233,"../../registry":326,"../array_container_defaults":274,"./category_order_defaults":283,"./constants":285,"./layout_attributes":293,"./line_grid_defaults":295,"./set_convert":299,"./tick_label_defaults":300,"./tick_mark_defaults":301,"./tick_value_defaults":302,"fast-isnumeric":23}],282:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"../array_container_defaults":326,"./category_order_defaults":335,"./constants":337,"./layout_attributes":345,"./line_grid_defaults":347,"./set_convert":351,"./tick_label_defaults":352,"./tick_mark_defaults":353,"./tick_value_defaults":354,"fast-isnumeric":31}],334:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -63271,15 +72010,7 @@ exports.isLinked = function(fullLayout, axId) { ); }; -},{"../../registry":326,"./constants":285}],283:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./constants":337}],335:[function(_dereq_,module,exports){ 'use strict'; function findCategories(ax, opts) { @@ -63365,15 +72096,7 @@ module.exports = function handleCategoryOrderDefaults(containerIn, containerOut, } }; -},{}],284:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],336:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -63457,15 +72180,7 @@ exports.tick0 = function(tick0, axType, calendar, dtick) { return isNumeric(tick0) ? Number(tick0) : 0; }; -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],285:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],337:[function(_dereq_,module,exports){ 'use strict'; var counterRegex = _dereq_('../../lib/regex').counter; @@ -63549,15 +72264,7 @@ module.exports = { } }; -},{"../../lib/regex":249}],286:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/regex":301}],338:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -64200,18 +72907,10 @@ function updateDomain(ax, factor) { ax.setScale(); } -},{"../../constants/alignment":207,"../../constants/numerical":212,"../../lib":233,"./autorange":278,"./axis_ids":282,"./layout_attributes":293,"./scale_zoom":297,"./set_convert":299}],287:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../constants/numerical":265,"../../lib":285,"./autorange":330,"./axis_ids":334,"./layout_attributes":345,"./scale_zoom":349,"./set_convert":351}],339:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var supportsPassive = _dereq_('has-passive-events'); @@ -64746,6 +73445,7 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) { // then replot after a delay to make sure // no more scrolling is coming redrawTimer = setTimeout(function() { + if(!gd._fullLayout) return; scrollViewBox = [0, 0, pw, ph]; dragTail(); }, REDRAWDELAY); @@ -65538,19 +74238,10 @@ module.exports = { attachWheelEventHandler: attachWheelEventHandler }; -},{"../../components/color":105,"../../components/dragelement":124,"../../components/dragelement/helpers":123,"../../components/drawing":127,"../../components/fx":145,"../../constants/alignment":207,"../../lib":233,"../../lib/clear_gl_canvases":221,"../../lib/setcursor":253,"../../lib/svg_text_utils":255,"../../plot_api/subroutines":269,"../../registry":326,"../plots":313,"./axes":279,"./axis_ids":282,"./constants":285,"./scale_zoom":297,"./select":298,"d3":21,"has-passive-events":55,"tinycolor2":88}],288:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"../../components/dragelement":174,"../../components/dragelement/helpers":173,"../../components/drawing":177,"../../components/fx":195,"../../constants/alignment":260,"../../lib":285,"../../lib/clear_gl_canvases":273,"../../lib/setcursor":305,"../../lib/svg_text_utils":307,"../../plot_api/subroutines":321,"../../registry":373,"../plots":366,"./axes":331,"./axis_ids":334,"./constants":337,"./scale_zoom":349,"./select":350,"@plotly/d3":20,"has-passive-events":63,"tinycolor2":119}],340:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Fx = _dereq_('../../components/fx'); var dragElement = _dereq_('../../components/dragelement'); @@ -65706,16 +74397,7 @@ exports.updateFx = function(gd) { setCursor(fullLayout._draggers, cursor); }; -},{"../../components/dragelement":124,"../../components/fx":145,"../../lib/setcursor":253,"./constants":285,"./dragbox":287,"d3":21}],289:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/dragelement":174,"../../components/fx":195,"../../lib/setcursor":305,"./constants":337,"./dragbox":339,"@plotly/d3":20}],341:[function(_dereq_,module,exports){ 'use strict'; function clearOutlineControllers(gd) { @@ -65742,21 +74424,12 @@ module.exports = { clearSelect: clearSelect }; -},{}],290:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],342:[function(_dereq_,module,exports){ 'use strict'; var strTranslate = _dereq_('../../lib').strTranslate; -// in v2 (once log ranges are fixed), +// in v3 (once log ranges are fixed), // we'll be able to p2r here for all axis types function p2r(ax, v) { switch(ax.type) { @@ -65799,16 +74472,7 @@ module.exports = { getTransform: getTransform }; -},{"../../lib":233}],291:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285}],343:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -65877,19 +74541,10 @@ module.exports = function makeIncludeComponents(containerArrayName) { }; }; -},{"../../lib":233,"../../registry":326,"./axis_ids":282}],292:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373,"./axis_ids":334}],344:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -66495,15 +75150,7 @@ exports.toSVG = function(gd) { exports.updateFx = _dereq_('./graph_interact').updateFx; -},{"../../components/drawing":127,"../../constants/xmlns_namespaces":213,"../../lib":233,"../../registry":326,"../get_data":309,"../plots":313,"./attributes":277,"./axis_ids":282,"./constants":285,"./graph_interact":288,"./layout_attributes":293,"./layout_defaults":294,"./transition_axes":303,"d3":21}],293:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../constants/xmlns_namespaces":266,"../../lib":285,"../../registry":373,"../get_data":361,"../plots":366,"./attributes":329,"./axis_ids":334,"./constants":337,"./graph_interact":340,"./layout_attributes":345,"./layout_defaults":346,"./transition_axes":355,"@plotly/d3":20}],345:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../font_attributes'); @@ -66512,8 +75159,10 @@ var dash = _dereq_('../../components/drawing/attributes').dash; var extendFlat = _dereq_('../../lib/extend').extendFlat; var templatedArray = _dereq_('../../plot_api/plot_template').templatedArray; -var FORMAT_LINK = _dereq_('../../constants/docs').FORMAT_LINK; -var DATE_FORMAT_LINK = _dereq_('../../constants/docs').DATE_FORMAT_LINK; +var docs = _dereq_('../../constants/docs'); +var FORMAT_LINK = docs.FORMAT_LINK; +var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK; + var ONEDAY = _dereq_('../../constants/numerical').ONEDAY; var constants = _dereq_('./constants'); var HOUR = constants.HOUR_PATTERN; @@ -66522,34 +75171,25 @@ var DAY_OF_WEEK = constants.WEEKDAY_PATTERN; module.exports = { visible: { valType: 'boolean', - editType: 'plot', - }, color: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, title: { text: { valType: 'string', - editType: 'ticks', - }, font: fontAttrs({ editType: 'ticks', - }), standoff: { valType: 'number', - min: 0, editType: 'ticks', - }, editType: 'ticks' }, @@ -66560,43 +75200,34 @@ module.exports = { // to gd.data like the others are. values: ['-', 'linear', 'log', 'date', 'category', 'multicategory'], dflt: '-', - editType: 'calc', // we forget when an axis has been autotyped, just writing the auto // value back to the input - so it doesn't make sense to template this. // Note: we do NOT prohibit this in `coerce`, so if someone enters a // type in the template explicitly it will be honored as the default. _noTemplating: true, - }, autotypenumbers: { valType: 'enumerated', values: ['convert types', 'strict'], dflt: 'convert types', - editType: 'calc', - }, autorange: { valType: 'enumerated', values: [true, false, 'reversed'], dflt: true, - editType: 'axrange', impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - }, rangemode: { valType: 'enumerated', values: ['normal', 'tozero', 'nonnegative'], dflt: 'normal', - editType: 'plot', - }, range: { valType: 'info_array', - items: [ {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true}, {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true} @@ -66604,14 +75235,11 @@ module.exports = { editType: 'axrange', impliedEdits: {'autorange': false}, anim: true, - }, fixedrange: { valType: 'boolean', dflt: false, - editType: 'calc', - }, // scaleanchor: not used directly, just put here for reference // values are any opposite-letter axis id @@ -66621,32 +75249,24 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'plot', - }, scaleratio: { valType: 'number', min: 0, dflt: 1, - editType: 'plot', - }, constrain: { valType: 'enumerated', values: ['range', 'domain'], - editType: 'plot', - }, // constraintoward: not used directly, just put here for reference constraintoward: { valType: 'enumerated', values: ['left', 'center', 'right', 'top', 'middle', 'bottom'], - editType: 'plot', - }, matches: { valType: 'enumerated', @@ -66654,58 +75274,46 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'calc', - }, rangebreaks: templatedArray('rangebreak', { enabled: { valType: 'boolean', - dflt: true, editType: 'calc', - }, bounds: { valType: 'info_array', - items: [ {valType: 'any', editType: 'calc'}, {valType: 'any', editType: 'calc'} ], editType: 'calc', - }, pattern: { valType: 'enumerated', values: [DAY_OF_WEEK, HOUR, ''], - editType: 'calc', - }, values: { valType: 'info_array', freeLength: true, - editType: 'calc', items: { valType: 'any', editType: 'calc' }, - }, dvalue: { // TODO could become 'any' to add support for 'months', 'years' valType: 'number', - editType: 'calc', min: 0, dflt: ONEDAY, - }, /* @@ -66714,16 +75322,12 @@ module.exports = { min: 0, dflt: 0, // for *date* axes, maybe something else for *linear* editType: 'calc', - - }, gapmode: { valType: 'enumerated', values: ['pixels', 'fraction'], dflt: 'pixels', editType: 'calc', - - }, */ @@ -66740,65 +75344,49 @@ module.exports = { tickmode: { valType: 'enumerated', values: ['auto', 'linear', 'array'], - editType: 'ticks', impliedEdits: {tick0: undefined, dtick: undefined}, - }, nticks: { valType: 'integer', min: 0, dflt: 0, - editType: 'ticks', - }, tick0: { valType: 'any', - editType: 'ticks', impliedEdits: {tickmode: 'linear'}, - }, dtick: { valType: 'any', - editType: 'ticks', impliedEdits: {tickmode: 'linear'}, - }, tickvals: { valType: 'data_array', editType: 'ticks', - }, ticktext: { valType: 'data_array', editType: 'ticks', - }, ticks: { valType: 'enumerated', values: ['outside', 'inside', ''], - editType: 'ticks', - }, tickson: { valType: 'enumerated', values: ['labels', 'boundaries'], - dflt: 'labels', editType: 'ticks', - }, ticklabelmode: { valType: 'enumerated', values: ['instant', 'period'], dflt: 'instant', - editType: 'ticks', - }, // ticklabelposition: not used directly, as values depend on direction (similar to side) // left/right options are for x axes, and top/bottom options are for y axes @@ -66812,291 +75400,223 @@ module.exports = { 'outside bottom', 'inside bottom' ], dflt: 'outside', - editType: 'calc', - + }, + ticklabeloverflow: { + valType: 'enumerated', + values: [ + 'allow', + 'hide past div', + 'hide past domain' + ], + editType: 'calc', }, mirror: { valType: 'enumerated', values: [true, 'ticks', false, 'all', 'allticks'], dflt: false, - editType: 'ticks+layoutstyle', - }, ticklen: { valType: 'number', min: 0, dflt: 5, - editType: 'ticks', - }, tickwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'ticks', - }, tickcolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, showticklabels: { valType: 'boolean', dflt: true, - editType: 'ticks', - }, automargin: { valType: 'boolean', dflt: false, - editType: 'ticks', - }, showspikes: { valType: 'boolean', dflt: false, - editType: 'modebar', - }, spikecolor: { valType: 'color', dflt: null, - editType: 'none', - }, spikethickness: { valType: 'number', dflt: 3, - editType: 'none', - }, spikedash: extendFlat({}, dash, {dflt: 'dash', editType: 'none'}), spikemode: { valType: 'flaglist', flags: ['toaxis', 'across', 'marker'], - dflt: 'toaxis', editType: 'none', - }, spikesnap: { valType: 'enumerated', values: ['data', 'cursor', 'hovered data'], - dflt: 'data', - + dflt: 'hovered data', editType: 'none', - }, tickfont: fontAttrs({ editType: 'ticks', - }), tickangle: { valType: 'angle', dflt: 'auto', - editType: 'ticks', - }, tickprefix: { valType: 'string', dflt: '', - editType: 'ticks', - }, showtickprefix: { valType: 'enumerated', values: ['all', 'first', 'last', 'none'], dflt: 'all', - editType: 'ticks', - }, ticksuffix: { valType: 'string', dflt: '', - editType: 'ticks', - }, showticksuffix: { valType: 'enumerated', values: ['all', 'first', 'last', 'none'], dflt: 'all', - editType: 'ticks', - }, showexponent: { valType: 'enumerated', values: ['all', 'first', 'last', 'none'], dflt: 'all', - editType: 'ticks', - }, exponentformat: { valType: 'enumerated', values: ['none', 'e', 'E', 'power', 'SI', 'B'], dflt: 'B', - editType: 'ticks', - }, minexponent: { valType: 'number', dflt: 3, min: 0, - editType: 'ticks', - }, separatethousands: { valType: 'boolean', dflt: false, - editType: 'ticks', - }, tickformat: { valType: 'string', dflt: '', - editType: 'ticks', - }, tickformatstops: templatedArray('tickformatstop', { enabled: { valType: 'boolean', - dflt: true, editType: 'ticks', - }, dtickrange: { valType: 'info_array', - items: [ {valType: 'any', editType: 'ticks'}, {valType: 'any', editType: 'ticks'} ], editType: 'ticks', - }, value: { valType: 'string', dflt: '', - editType: 'ticks', - }, editType: 'ticks' }), hoverformat: { valType: 'string', dflt: '', - editType: 'none', - }, // lines and grids showline: { valType: 'boolean', dflt: false, - editType: 'ticks+layoutstyle', - }, linecolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'layoutstyle', - }, linewidth: { valType: 'number', min: 0, dflt: 1, - editType: 'ticks+layoutstyle', - }, showgrid: { valType: 'boolean', - editType: 'ticks', - }, gridcolor: { valType: 'color', dflt: colorAttrs.lightLine, - editType: 'ticks', - }, gridwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'ticks', - }, zeroline: { valType: 'boolean', - editType: 'ticks', - }, zerolinecolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, zerolinewidth: { valType: 'number', dflt: 1, - editType: 'ticks', - }, showdividers: { valType: 'boolean', dflt: true, - editType: 'ticks', - }, dividercolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, dividerwidth: { valType: 'number', dflt: 1, - editType: 'ticks', - }, // TODO dividerlen: that would override "to label base" length? @@ -67110,18 +75630,14 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'plot', - }, // side: not used directly, as values depend on direction // values are top, bottom for x axes, and left, right for y side: { valType: 'enumerated', values: ['top', 'bottom', 'left', 'right'], - editType: 'plot', - }, // overlaying: not used directly, just put here for reference // values are false and any other same-letter axis id that's not @@ -67133,37 +75649,29 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'plot', - }, layer: { valType: 'enumerated', values: ['above traces', 'below traces'], dflt: 'above traces', - editType: 'plot', - }, domain: { valType: 'info_array', - items: [ {valType: 'number', min: 0, max: 1, editType: 'plot'}, {valType: 'number', min: 0, max: 1, editType: 'plot'} ], dflt: [0, 1], editType: 'plot', - }, position: { valType: 'number', min: 0, max: 1, dflt: 0, - editType: 'plot', - }, categoryorder: { valType: 'enumerated', @@ -67177,54 +75685,34 @@ module.exports = { 'median ascending', 'median descending' ], dflt: 'trace', - editType: 'calc', - }, categoryarray: { valType: 'data_array', - editType: 'calc', - }, uirevision: { valType: 'any', - editType: 'none', - }, editType: 'calc', _deprecated: { autotick: { valType: 'boolean', - editType: 'ticks', - }, title: { valType: 'string', - editType: 'ticks', - }, titlefont: fontAttrs({ editType: 'ticks', - }) } }; -},{"../../components/color/attributes":104,"../../components/drawing/attributes":126,"../../constants/docs":209,"../../constants/numerical":212,"../../lib/extend":227,"../../plot_api/plot_template":268,"../font_attributes":307,"./constants":285}],294:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color/attributes":154,"../../components/drawing/attributes":176,"../../constants/docs":262,"../../constants/numerical":265,"../../lib/extend":279,"../../plot_api/plot_template":320,"../font_attributes":359,"./constants":337}],346:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -67427,7 +75915,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { } } - var hovermode = handleHoverModeDefaults(layoutIn, layoutOut, fullData); + var hovermode = handleHoverModeDefaults(layoutIn, layoutOut); var unifiedHover = isUnifiedHover(hovermode); // first pass creates the containers, determines types, and handles most of the settings @@ -67480,7 +75968,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { var spikethickness = coerce2('spikethickness', unifiedHover ? 1.5 : undefined); var spikedash = coerce2('spikedash', unifiedHover ? 'dot' : undefined); var spikemode = coerce2('spikemode', unifiedHover ? 'across' : undefined); - var spikesnap = coerce2('spikesnap', unifiedHover ? 'hovered data' : undefined); + var spikesnap = coerce2('spikesnap'); var showSpikes = coerce('showspikes', !!unifiedSpike || !!spikecolor || !!spikethickness || !!spikedash || !!spikemode || !!spikesnap); if(!showSpikes) { @@ -67602,15 +76090,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { }); }; -},{"../../components/color":105,"../../components/fx/helpers":141,"../../components/fx/hovermode_defaults":144,"../../lib":233,"../../plot_api/plot_template":268,"../../registry":326,"../layout_attributes":311,"./axis_defaults":281,"./axis_ids":282,"./constants":285,"./constraints":286,"./layout_attributes":293,"./position_defaults":296,"./type_defaults":304}],295:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx/helpers":191,"../../components/fx/hovermode_defaults":194,"../../lib":285,"../../plot_api/plot_template":320,"../../registry":373,"../layout_attributes":364,"./axis_defaults":333,"./axis_ids":334,"./constants":337,"./constraints":338,"./layout_attributes":345,"./position_defaults":348,"./type_defaults":356}],347:[function(_dereq_,module,exports){ 'use strict'; var colorMix = _dereq_('tinycolor2').mix; @@ -67667,16 +76147,7 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer } }; -},{"../../components/color/attributes":104,"../../lib":233,"tinycolor2":88}],296:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color/attributes":154,"../../lib":285,"tinycolor2":119}],348:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -67755,16 +76226,7 @@ module.exports = function handlePositionDefaults(containerIn, containerOut, coer return containerOut; }; -},{"../../lib":233,"fast-isnumeric":23}],297:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"fast-isnumeric":31}],349:[function(_dereq_,module,exports){ 'use strict'; var FROM_BL = _dereq_('../../constants/alignment').FROM_BL; @@ -67784,16 +76246,7 @@ module.exports = function scaleZoom(ax, factor, centerFraction) { ax.setScale(); }; -},{"../../constants/alignment":207}],298:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/alignment":260}],350:[function(_dereq_,module,exports){ 'use strict'; var polybool = _dereq_('polybooljs'); @@ -68142,9 +76595,9 @@ function prepSelect(e, startX, startY, dragOptions, mode) { } if(clickmode === 'event') { - // TODO: remove in v2 - this was probably never intended to work as it does, + // TODO: remove in v3 - this was probably never intended to work as it does, // but in case anyone depends on it we don't want to break it now. - // Note that click-to-select introduced pre v2 also emitts proper + // Note that click-to-select introduced pre v3 also emitts proper // event data when clickmode is having 'select' in its flag list. gd.emit('plotly_selected', undefined); } @@ -68727,18 +77180,10 @@ module.exports = { selectOnClick: selectOnClick }; -},{"../../components/color":105,"../../components/dragelement/helpers":123,"../../components/drawing":127,"../../components/fx":145,"../../components/fx/helpers":141,"../../components/shapes/draw_newshape/display_outlines":190,"../../components/shapes/draw_newshape/helpers":191,"../../components/shapes/draw_newshape/newshapes":192,"../../lib":233,"../../lib/clear_gl_canvases":221,"../../lib/polygon":245,"../../lib/throttle":256,"../../plot_api/subroutines":269,"../../registry":326,"./axis_ids":282,"./constants":285,"./handle_outline":289,"./helpers":290,"polybooljs":79}],299:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/dragelement/helpers":173,"../../components/drawing":177,"../../components/fx":195,"../../components/fx/helpers":191,"../../components/shapes/draw_newshape/display_outlines":243,"../../components/shapes/draw_newshape/helpers":244,"../../components/shapes/draw_newshape/newshapes":245,"../../lib":285,"../../lib/clear_gl_canvases":273,"../../lib/polygon":297,"../../lib/throttle":308,"../../plot_api/subroutines":321,"../../registry":373,"./axis_ids":334,"./constants":337,"./handle_outline":341,"./helpers":342,"polybooljs":73}],351:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var utcFormat = _dereq_('d3-time-format').utcFormat; var isNumeric = _dereq_('fast-isnumeric'); @@ -68788,7 +77233,7 @@ function isValidCategory(v) { * - category: calcdata format (c), and will stay that way because * the data format has no continuous mapping * - log: linearized (l) format - * TODO: in v2.0 we plan to change it to data format. At that point + * TODO: in v3.0 we plan to change it to data format. At that point * shapes will work the same way as ranges, tick0, and annotations * so they can use this conversion too. * @@ -68825,7 +77270,7 @@ module.exports = function setConvert(ax, fullLayout) { if((opts || {}).msUTC && isNumeric(v)) { // For now it is only used // to fix bar length in milliseconds & gl3d ticks - // It could be applied in other places in v2 + // It could be applied in other places in v3 return +v; } @@ -69685,16 +78130,7 @@ module.exports = function setConvert(ax, fullLayout) { delete ax._forceTick0; }; -},{"../../constants/numerical":212,"../../lib":233,"./axis_ids":282,"./constants":285,"d3":21,"d3-time-format":19,"fast-isnumeric":23}],300:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285,"./axis_ids":334,"./constants":337,"@plotly/d3":20,"d3-time-format":29,"fast-isnumeric":31}],352:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -69812,16 +78248,7 @@ function tickformatstopDefaults(valueIn, valueOut) { } } -},{"../../components/color":105,"../../lib":233,"../array_container_defaults":274,"./layout_attributes":293}],301:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"../../lib":285,"../array_container_defaults":326,"./layout_attributes":345}],353:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -69845,15 +78272,7 @@ module.exports = function handleTickDefaults(containerIn, containerOut, coerce, } }; -},{"../../lib":233,"./layout_attributes":293}],302:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./layout_attributes":345}],354:[function(_dereq_,module,exports){ 'use strict'; var cleanTicks = _dereq_('./clean_ticks'); @@ -69892,18 +78311,10 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe } }; -},{"../../lib":233,"./clean_ticks":284}],303:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./clean_ticks":336}],355:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -70105,15 +78516,7 @@ module.exports = function transitionAxes(gd, edits, transitionOpts, makeOnComple return Promise.resolve(); }; -},{"../../components/drawing":127,"../../lib":233,"../../registry":326,"./axes":279,"d3":21}],304:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../lib":285,"../../registry":373,"./axes":331,"@plotly/d3":20}],356:[function(_dereq_,module,exports){ 'use strict'; var traceIs = _dereq_('../../registry').traceIs; @@ -70245,15 +78648,7 @@ function isBoxWithoutPositionCoords(trace, axLetter) { ); } -},{"../../registry":326,"./axis_autotype":280}],305:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./axis_autotype":332}],357:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -70672,15 +79067,7 @@ function crawl(attrs, callback, path, depth) { }); } -},{"../lib":233,"../registry":326}],306:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../registry":373}],358:[function(_dereq_,module,exports){ 'use strict'; var extendFlat = _dereq_('../lib/extend').extendFlat; @@ -70712,7 +79099,6 @@ exports.attributes = function(opts, extra) { var base = { valType: 'info_array', - editType: opts.editType, items: [ {valType: 'number', min: 0, max: 1, editType: opts.editType}, @@ -70727,10 +79113,8 @@ exports.attributes = function(opts, extra) { var out = { x: extendFlat({}, base, { - }), y: extendFlat({}, base, { - }), editType: opts.editType }; @@ -70740,17 +79124,13 @@ exports.attributes = function(opts, extra) { valType: 'integer', min: 0, dflt: 0, - editType: opts.editType, - }; out.column = { valType: 'integer', min: 0, dflt: 0, - editType: opts.editType, - }; } @@ -70784,15 +79164,7 @@ exports.defaults = function(containerOut, layout, coerce, dfltDomains) { if(!(y[0] < y[1])) containerOut.domain.y = dfltY.slice(); }; -},{"../lib/extend":227}],307:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib/extend":279}],359:[function(_dereq_,module,exports){ 'use strict'; /* @@ -70817,27 +79189,22 @@ module.exports = function(opts) { var attrs = { family: { valType: 'string', - noBlank: true, strict: true, editType: editType, - }, size: { valType: 'number', - min: 1, editType: editType }, color: { valType: 'color', - editType: colorEditType }, editType: editType, // blank strings so compress_attributes can remove // TODO - that's uber hacky... better solution? - }; if(opts.arrayOk) { @@ -70849,15 +79216,7 @@ module.exports = function(opts) { return attrs; }; -},{}],308:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],360:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -70865,45 +79224,25 @@ module.exports = { group: { valType: 'string', - - }, name: { valType: 'string', - - }, traces: { valType: 'any', - - }, baseframe: { valType: 'string', - - }, data: { valType: 'any', - - }, layout: { valType: 'any', - - } }; -},{}],309:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],361:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -71024,16 +79363,7 @@ exports.getSubplotData = function getSubplotData(data, type, subplotId) { return subplotData; }; -},{"../registry":326,"./cartesian/constants":285}],310:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../registry":373,"./cartesian/constants":337}],362:[function(_dereq_,module,exports){ 'use strict'; function xformMatrix(m, v) { @@ -71058,15 +79388,22 @@ function project(camera, v) { module.exports = project; -},{}],311:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{}],363:[function(_dereq_,module,exports){ +'use strict'; +var docs = _dereq_('../constants/docs'); +var FORMAT_LINK = docs.FORMAT_LINK; +var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK; + +module.exports = function axisHoverFormat(x, noDates) { + return { + valType: 'string', + dflt: '', + editType: 'none', + }; +}; + +},{"../constants/docs":262}],364:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('./font_attributes'); @@ -71078,7 +79415,6 @@ var extendFlat = _dereq_('../lib/extend').extendFlat; var globalFont = fontAttrs({ editType: 'calc', - }); globalFont.family.dflt = '"Open Sans", verdana, arial, sans-serif'; globalFont.size.dflt = 12; @@ -71089,66 +79425,50 @@ module.exports = { title: { text: { valType: 'string', - editType: 'layoutstyle', - }, font: fontAttrs({ editType: 'layoutstyle', - }), xref: { valType: 'enumerated', dflt: 'container', values: ['container', 'paper'], - editType: 'layoutstyle', - }, yref: { valType: 'enumerated', dflt: 'container', values: ['container', 'paper'], - editType: 'layoutstyle', - }, x: { valType: 'number', min: 0, max: 1, dflt: 0.5, - editType: 'layoutstyle', - }, y: { valType: 'number', min: 0, max: 1, dflt: 'auto', - editType: 'layoutstyle', - }, xanchor: { valType: 'enumerated', dflt: 'auto', values: ['auto', 'left', 'center', 'right'], - editType: 'layoutstyle', - }, yanchor: { valType: 'enumerated', dflt: 'auto', values: ['auto', 'top', 'middle', 'bottom'], - editType: 'layoutstyle', - }, pad: extendFlat(padAttrs({editType: 'layoutstyle'}), { - }), editType: 'layoutstyle' }, @@ -71157,217 +79477,134 @@ module.exports = { valType: 'enumerated', values: [false, 'hide', 'show'], dflt: false, - editType: 'plot', - }, minsize: { valType: 'number', min: 0, dflt: 0, - editType: 'plot', - }, editType: 'plot' }, autosize: { valType: 'boolean', - dflt: false, // autosize, width, and height get special editType treatment in _relayout // so we can handle noop resizes more efficiently editType: 'none', - }, width: { valType: 'number', - min: 10, dflt: 700, editType: 'plot', - }, height: { valType: 'number', - min: 10, dflt: 450, editType: 'plot', - }, margin: { l: { valType: 'number', - min: 0, dflt: 80, editType: 'plot', - }, r: { valType: 'number', - min: 0, dflt: 80, editType: 'plot', - }, t: { valType: 'number', - min: 0, dflt: 100, editType: 'plot', - }, b: { valType: 'number', - min: 0, dflt: 80, editType: 'plot', - }, pad: { valType: 'number', - min: 0, dflt: 0, editType: 'plot', - }, autoexpand: { valType: 'boolean', - dflt: true, editType: 'plot', - }, editType: 'plot' }, computed: { valType: 'any', - editType: 'none', - }, paper_bgcolor: { valType: 'color', - dflt: colorAttrs.background, editType: 'plot', - }, plot_bgcolor: { // defined here, but set in cartesian.supplyLayoutDefaults // because it needs to know if there are (2D) axes or not valType: 'color', - dflt: colorAttrs.background, editType: 'layoutstyle', - }, autotypenumbers: { valType: 'enumerated', values: ['convert types', 'strict'], dflt: 'convert types', - editType: 'calc', - }, separators: { valType: 'string', - editType: 'plot', - }, hidesources: { valType: 'boolean', - dflt: false, editType: 'plot', - }, showlegend: { // handled in legend.supplyLayoutDefaults // but included here because it's not in the legend object valType: 'boolean', - editType: 'legend', - }, colorway: { valType: 'colorlist', dflt: colorAttrs.defaults, - editType: 'calc', - }, datarevision: { valType: 'any', - editType: 'calc', - }, uirevision: { valType: 'any', - editType: 'none', - }, editrevision: { valType: 'any', - editType: 'none', - }, selectionrevision: { valType: 'any', - editType: 'none', - }, template: { valType: 'any', - editType: 'calc', - - }, - modebar: { - orientation: { - valType: 'enumerated', - values: ['v', 'h'], - dflt: 'h', - - editType: 'modebar', - - }, - bgcolor: { - valType: 'color', - - editType: 'modebar', - - }, - color: { - valType: 'color', - - editType: 'modebar', - - }, - activecolor: { - valType: 'color', - - editType: 'modebar', - - }, - uirevision: { - valType: 'any', - - editType: 'none', - - }, - editType: 'modebar' }, newshape: drawNewShapeAttrs.newshape, @@ -71376,38 +79613,24 @@ module.exports = { meta: { valType: 'any', arrayOk: true, - editType: 'plot', - }, transition: extendFlat({}, animationAttrs.transition, { - editType: 'none' }), _deprecated: { title: { valType: 'string', - editType: 'layoutstyle', - }, titlefont: fontAttrs({ editType: 'layoutstyle', - }) } }; -},{"../components/color/attributes":104,"../components/shapes/draw_newshape/attributes":187,"../lib/extend":227,"./animation_attributes":273,"./font_attributes":307,"./pad_attributes":312}],312:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color/attributes":154,"../components/shapes/draw_newshape/attributes":240,"../lib/extend":279,"./animation_attributes":325,"./font_attributes":359,"./pad_attributes":365}],365:[function(_dereq_,module,exports){ 'use strict'; /** @@ -71425,47 +79648,31 @@ module.exports = function(opts) { t: { valType: 'number', dflt: 0, - editType: editType, - }, r: { valType: 'number', dflt: 0, - editType: editType, - }, b: { valType: 'number', dflt: 0, - editType: editType, - }, l: { valType: 'number', dflt: 0, - editType: editType, - }, editType: editType }; }; -},{}],313:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],366:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var timeFormatLocale = _dereq_('d3-time-format').timeFormatLocale; var isNumeric = _dereq_('fast-isnumeric'); @@ -71514,15 +79721,9 @@ plots.hasSimpleAPICommandBindings = commandModule.hasSimpleAPICommandBindings; plots.redrawText = function(gd) { gd = Lib.getGraphDiv(gd); - var fullLayout = gd._fullLayout || {}; - var hasPolar = fullLayout._has && fullLayout._has('polar'); - var hasLegacyPolar = !hasPolar && gd.data && gd.data[0] && gd.data[0].r; - - // do not work if polar is present - if(hasLegacyPolar) return; - return new Promise(function(resolve) { setTimeout(function() { + if(!gd._fullLayout) return; Registry.getComponentMethod('annotations', 'draw')(gd); Registry.getComponentMethod('legend', 'draw')(gd); Registry.getComponentMethod('colorbar', 'draw')(gd); @@ -71588,7 +79789,7 @@ plots.previousPromises = function(gd) { /** * Adds the 'Edit chart' link. - * Note that now Plotly.plot() calls this so it can regenerate whenever it replots + * Note that now _doPlot calls this so it can regenerate whenever it replots * * Add source links to your graph inside the 'showSources' config argument. */ @@ -71925,15 +80126,6 @@ plots.supplyDefaults = function(gd, opts) { newFullLayout.images.length === 0 ); - // TODO remove in v2.0.0 - // add has-plot-type refs to fullLayout for backward compatibility - newFullLayout._hasCartesian = newFullLayout._has('cartesian'); - newFullLayout._hasGeo = newFullLayout._has('geo'); - newFullLayout._hasGL3D = newFullLayout._has('gl3d'); - newFullLayout._hasGL2D = newFullLayout._has('gl2d'); - newFullLayout._hasTernary = newFullLayout._has('ternary'); - newFullLayout._hasPie = newFullLayout._has('pie'); - // relink / initialize subplot axis objects plots.linkSubplots(newFullData, newFullLayout, oldFullData, oldFullLayout); @@ -72168,7 +80360,7 @@ function getFormatObj(gd, formatKeys) { /** * getFormatter: combine the final separators with the locale formatting object * we pulled earlier to generate number and time formatters - * TODO: remove separators in v2, only use locale, so we don't need this step? + * TODO: remove separators in v3, only use locale, so we don't need this step? * * @param {object} formatObj: d3.locale format object * @param {string} separators: length-2 string to override decimal and thousands @@ -72969,7 +81161,7 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { // layouts with no set width and height were set temporary set to 'initial' // to pass through the autosize routine // - // This behavior is subject to change in v2. + // This behavior is subject to change in v3. coerce('autosize', !(layoutIn.width && layoutIn.height)); coerce('width'); @@ -72997,12 +81189,10 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { coerce('editrevision', uirevision); coerce('selectionrevision', uirevision); - coerce('modebar.orientation'); - coerce('modebar.bgcolor', Color.addOpacity(layoutOut.paper_bgcolor, 0.5)); - var modebarDefaultColor = Color.contrast(Color.rgb(layoutOut.modebar.bgcolor)); - coerce('modebar.color', Color.addOpacity(modebarDefaultColor, 0.3)); - coerce('modebar.activecolor', Color.addOpacity(modebarDefaultColor, 0.7)); - coerce('modebar.uirevision', uirevision); + Registry.getComponentMethod( + 'modebar', + 'supplyLayoutDefaults' + )(layoutIn, layoutOut); Registry.getComponentMethod( 'shapes', @@ -73213,7 +81403,6 @@ plots.purge = function(gd) { delete gd._fullData; delete gd._fullLayout; delete gd.calcdata; - delete gd.framework; delete gd.empty; delete gd.fid; @@ -73223,7 +81412,7 @@ plots.purge = function(gd) { delete gd.autoplay; // are we doing an action that doesn't go in undo queue? delete gd.changed; - // these get recreated on Plotly.plot anyway, but just to be safe + // these get recreated on _doPlot anyway, but just to be safe // (and to have a record of them...) delete gd._promises; delete gd._redrawTimer; @@ -73550,24 +81739,28 @@ plots.doAutoMargin = function(gd) { var maxNumberOfRedraws = 3 * (1 + Object.keys(pushMarginIds).length); if(fullLayout._redrawFromAutoMarginCount < maxNumberOfRedraws) { - return Registry.call('plot', gd); + return Registry.call('_doPlot', gd); } else { fullLayout._size = oldMargins; Lib.warn('Too many auto-margin redraws.'); } } - hideOutOfRangeInsideTickLabels(gd); + refineTicks(gd); }; -function hideOutOfRangeInsideTickLabels(gd) { +function refineTicks(gd) { var axList = axisIDs.list(gd, '', true); - for(var i = 0; i < axList.length; i++) { - var ax = axList[i]; - var hideFn = ax._hideOutOfRangeInsideTickLabels; - if(hideFn) hideFn(); - } + [ + '_adjustTickLabelsOverflow', + '_hideCounterAxisInsideTickLabels' + ].forEach(function(k) { + for(var i = 0; i < axList.length; i++) { + var hideFn = axList[i][k]; + if(hideFn) hideFn(); + } + }); } var marginKeys = ['l', 'r', 't', 'b', 'p', 'w', 'h']; @@ -73708,8 +81901,6 @@ plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfi } } - if(gd.framework && gd.framework.isPolar) obj = gd.framework.getConfig(); - if(frames) obj.frames = stripObj(frames); if(includeConfig) obj.config = stripObj(gd._context, true); @@ -74204,6 +82395,7 @@ plots.transitionFromReact = function(gd, restyleFlags, relayoutFlags, oldFullLay } function transitionAxes() { + if(!gd._fullLayout) return; for(var j = 0; j < basePlotModules.length; j++) { if(basePlotModules[j].transitionAxes) { basePlotModules[j].transitionAxes(gd, axEdits, axisTransitionOpts, makeCallback); @@ -74212,6 +82404,7 @@ plots.transitionFromReact = function(gd, restyleFlags, relayoutFlags, oldFullLay } function transitionTraces() { + if(!gd._fullLayout) return; for(var j = 0; j < basePlotModules.length; j++) { basePlotModules[j].plot(gd, transitionedTraces, traceTransitionOpts, makeCallback); } @@ -74881,1769 +83074,7 @@ plots.cleanBasePlot = function(desiredType, newFullData, newFullLayout, oldFullD } }; -},{"../components/color":105,"../constants/numerical":212,"../lib":233,"../plot_api/plot_schema":267,"../plot_api/plot_template":268,"../plots/get_data":309,"../registry":326,"./animation_attributes":273,"./attributes":275,"./cartesian/axis_ids":282,"./cartesian/handle_outline":289,"./command":305,"./font_attributes":307,"./frame_attributes":308,"./layout_attributes":311,"d3":21,"d3-time-format":19,"fast-isnumeric":23}],314:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -var scatterAttrs = _dereq_('../../../traces/scatter/attributes'); -var scatterMarkerAttrs = scatterAttrs.marker; -var extendFlat = _dereq_('../../../lib/extend').extendFlat; - -var deprecationWarning = [ - 'Area traces are deprecated!', - 'Please switch to the *barpolar* trace type.' -].join(' '); - -module.exports = { - r: extendFlat({}, scatterAttrs.r, { - - }), - t: extendFlat({}, scatterAttrs.t, { - - }), - marker: { - color: extendFlat({}, scatterMarkerAttrs.color, { - - }), - size: extendFlat({}, scatterMarkerAttrs.size, { - - }), - symbol: extendFlat({}, scatterMarkerAttrs.symbol, { - - }), - opacity: extendFlat({}, scatterMarkerAttrs.opacity, { - - }), - editType: 'calc' - } -}; - -},{"../../../lib/extend":227,"../../../traces/scatter/attributes":447}],315:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - -'use strict'; - -var axesAttrs = _dereq_('../../cartesian/layout_attributes'); -var extendFlat = _dereq_('../../../lib/extend').extendFlat; -var overrideAll = _dereq_('../../../plot_api/edit_types').overrideAll; - -var deprecationWarning = [ - 'Legacy polar charts are deprecated!', - 'Please switch to *polar* subplots.' -].join(' '); - -var domainAttr = extendFlat({}, axesAttrs.domain, { - -}); - -function mergeAttrs(axisName, nonCommonAttrs) { - var commonAttrs = { - showline: { - valType: 'boolean', - - - }, - showticklabels: { - valType: 'boolean', - - - }, - tickorientation: { - valType: 'enumerated', - values: ['horizontal', 'vertical'], - - - }, - ticklen: { - valType: 'number', - min: 0, - - - }, - tickcolor: { - valType: 'color', - - - }, - ticksuffix: { - valType: 'string', - - - }, - endpadding: { - valType: 'number', - - description: deprecationWarning, - }, - visible: { - valType: 'boolean', - - - } - }; - - return extendFlat({}, nonCommonAttrs, commonAttrs); -} - -module.exports = overrideAll({ - radialaxis: mergeAttrs('radial', { - range: { - valType: 'info_array', - - items: [ - { valType: 'number' }, - { valType: 'number' } - ], - - }, - domain: domainAttr, - orientation: { - valType: 'number', - - - } - }), - - angularaxis: mergeAttrs('angular', { - range: { - valType: 'info_array', - - items: [ - { valType: 'number', dflt: 0 }, - { valType: 'number', dflt: 360 } - ], - - }, - domain: domainAttr - }), - - // attributes that appear at layout root - layout: { - direction: { - valType: 'enumerated', - values: ['clockwise', 'counterclockwise'], - - - }, - orientation: { - valType: 'angle', - - - } - } -}, 'plot', 'nested'); - -},{"../../../lib/extend":227,"../../../plot_api/edit_types":261,"../../cartesian/layout_attributes":293}],316:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -var Polar = module.exports = _dereq_('./micropolar'); - -Polar.manager = _dereq_('./micropolar_manager'); - -},{"./micropolar":317,"./micropolar_manager":318}],317:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -var d3 = _dereq_('d3'); -var Lib = _dereq_('../../../lib'); -var extendDeepAll = Lib.extendDeepAll; -var MID_SHIFT = _dereq_('../../../constants/alignment').MID_SHIFT; - -var µ = module.exports = { version: '0.2.2' }; - -µ.Axis = function module() { - var config = { - data: [], - layout: {} - }, inputConfig = {}, liveConfig = {}; - var svg, container, dispatch = d3.dispatch('hover'), radialScale, angularScale; - var exports = {}; - function render(_container) { - container = _container || container; - var data = config.data; - var axisConfig = config.layout; - if (typeof container == 'string' || container.nodeName) container = d3.select(container); - container.datum(data).each(function(_data, _index) { - var dataOriginal = _data.slice(); - liveConfig = { - data: µ.util.cloneJson(dataOriginal), - layout: µ.util.cloneJson(axisConfig) - }; - var colorIndex = 0; - dataOriginal.forEach(function(d, i) { - if (!d.color) { - d.color = axisConfig.defaultColorRange[colorIndex]; - colorIndex = (colorIndex + 1) % axisConfig.defaultColorRange.length; - } - if (!d.strokeColor) { - d.strokeColor = d.geometry === 'LinePlot' ? d.color : d3.rgb(d.color).darker().toString(); - } - liveConfig.data[i].color = d.color; - liveConfig.data[i].strokeColor = d.strokeColor; - liveConfig.data[i].strokeDash = d.strokeDash; - liveConfig.data[i].strokeSize = d.strokeSize; - }); - var data = dataOriginal.filter(function(d, i) { - var visible = d.visible; - return typeof visible === 'undefined' || visible === true; - }); - var isStacked = false; - var dataWithGroupId = data.map(function(d, i) { - isStacked = isStacked || typeof d.groupId !== 'undefined'; - return d; - }); - if (isStacked) { - var grouped = d3.nest().key(function(d, i) { - return typeof d.groupId != 'undefined' ? d.groupId : 'unstacked'; - }).entries(dataWithGroupId); - var dataYStack = []; - var stacked = grouped.map(function(d, i) { - if (d.key === 'unstacked') return d.values; else { - var prevArray = d.values[0].r.map(function(d, i) { - return 0; - }); - d.values.forEach(function(d, i, a) { - d.yStack = [ prevArray ]; - dataYStack.push(prevArray); - prevArray = µ.util.sumArrays(d.r, prevArray); - }); - return d.values; - } - }); - data = d3.merge(stacked); - } - data.forEach(function(d, i) { - d.t = Array.isArray(d.t[0]) ? d.t : [ d.t ]; - d.r = Array.isArray(d.r[0]) ? d.r : [ d.r ]; - }); - var radius = Math.min(axisConfig.width - axisConfig.margin.left - axisConfig.margin.right, axisConfig.height - axisConfig.margin.top - axisConfig.margin.bottom) / 2; - radius = Math.max(10, radius); - var chartCenter = [ axisConfig.margin.left + radius, axisConfig.margin.top + radius ]; - var extent; - if (isStacked) { - var highestStackedValue = d3.max(µ.util.sumArrays(µ.util.arrayLast(data).r[0], µ.util.arrayLast(dataYStack))); - extent = [ 0, highestStackedValue ]; - } else extent = d3.extent(µ.util.flattenArray(data.map(function(d, i) { - return d.r; - }))); - if (axisConfig.radialAxis.domain != µ.DATAEXTENT) extent[0] = 0; - radialScale = d3.scale.linear().domain(axisConfig.radialAxis.domain != µ.DATAEXTENT && axisConfig.radialAxis.domain ? axisConfig.radialAxis.domain : extent).range([ 0, radius ]); - liveConfig.layout.radialAxis.domain = radialScale.domain(); - var angularDataMerged = µ.util.flattenArray(data.map(function(d, i) { - return d.t; - })); - var isOrdinal = typeof angularDataMerged[0] === 'string'; - var ticks; - if (isOrdinal) { - angularDataMerged = µ.util.deduplicate(angularDataMerged); - ticks = angularDataMerged.slice(); - angularDataMerged = d3.range(angularDataMerged.length); - data = data.map(function(d, i) { - var result = d; - d.t = [ angularDataMerged ]; - if (isStacked) result.yStack = d.yStack; - return result; - }); - } - var hasOnlyLineOrDotPlot = data.filter(function(d, i) { - return d.geometry === 'LinePlot' || d.geometry === 'DotPlot'; - }).length === data.length; - var needsEndSpacing = axisConfig.needsEndSpacing === null ? isOrdinal || !hasOnlyLineOrDotPlot : axisConfig.needsEndSpacing; - var useProvidedDomain = axisConfig.angularAxis.domain && axisConfig.angularAxis.domain != µ.DATAEXTENT && !isOrdinal && axisConfig.angularAxis.domain[0] >= 0; - var angularDomain = useProvidedDomain ? axisConfig.angularAxis.domain : d3.extent(angularDataMerged); - var angularDomainStep = Math.abs(angularDataMerged[1] - angularDataMerged[0]); - if (hasOnlyLineOrDotPlot && !isOrdinal) angularDomainStep = 0; - var angularDomainWithPadding = angularDomain.slice(); - if (needsEndSpacing && isOrdinal) angularDomainWithPadding[1] += angularDomainStep; - var tickCount = axisConfig.angularAxis.ticksCount || 4; - if (tickCount > 8) tickCount = tickCount / (tickCount / 8) + tickCount % 8; - if (axisConfig.angularAxis.ticksStep) { - tickCount = (angularDomainWithPadding[1] - angularDomainWithPadding[0]) / tickCount; - } - var angularTicksStep = axisConfig.angularAxis.ticksStep || (angularDomainWithPadding[1] - angularDomainWithPadding[0]) / (tickCount * (axisConfig.minorTicks + 1)); - if (ticks) angularTicksStep = Math.max(Math.round(angularTicksStep), 1); - if (!angularDomainWithPadding[2]) angularDomainWithPadding[2] = angularTicksStep; - var angularAxisRange = d3.range.apply(this, angularDomainWithPadding); - angularAxisRange = angularAxisRange.map(function(d, i) { - return parseFloat(d.toPrecision(12)); - }); - angularScale = d3.scale.linear().domain(angularDomainWithPadding.slice(0, 2)).range(axisConfig.direction === 'clockwise' ? [ 0, 360 ] : [ 360, 0 ]); - liveConfig.layout.angularAxis.domain = angularScale.domain(); - liveConfig.layout.angularAxis.endPadding = needsEndSpacing ? angularDomainStep : 0; - svg = d3.select(this).select('svg.chart-root'); - if (typeof svg === 'undefined' || svg.empty()) { - var skeleton = "' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '"; - var doc = new DOMParser().parseFromString(skeleton, 'application/xml'); - var newSvg = this.appendChild(this.ownerDocument.importNode(doc.documentElement, true)); - svg = d3.select(newSvg); - } - svg.select('.guides-group').style({ - 'pointer-events': 'none' - }); - svg.select('.angular.axis-group').style({ - 'pointer-events': 'none' - }); - svg.select('.radial.axis-group').style({ - 'pointer-events': 'none' - }); - var chartGroup = svg.select('.chart-group'); - var lineStyle = { - fill: 'none', - stroke: axisConfig.tickColor - }; - var fontStyle = { - 'font-size': axisConfig.font.size, - 'font-family': axisConfig.font.family, - fill: axisConfig.font.color, - 'text-shadow': [ '-1px 0px', '1px -1px', '-1px 1px', '1px 1px' ].map(function(d, i) { - return ' ' + d + ' 0 ' + axisConfig.font.outlineColor; - }).join(',') - }; - var legendContainer; - if (axisConfig.showLegend) { - legendContainer = svg.select('.legend-group').attr({ - transform: 'translate(' + [ radius, axisConfig.margin.top ] + ')' - }).style({ - display: 'block' - }); - var elements = data.map(function(d, i) { - var datumClone = µ.util.cloneJson(d); - datumClone.symbol = d.geometry === 'DotPlot' ? d.dotType || 'circle' : d.geometry != 'LinePlot' ? 'square' : 'line'; - datumClone.visibleInLegend = typeof d.visibleInLegend === 'undefined' || d.visibleInLegend; - datumClone.color = d.geometry === 'LinePlot' ? d.strokeColor : d.color; - return datumClone; - }); - - µ.Legend().config({ - data: data.map(function(d, i) { - return d.name || 'Element' + i; - }), - legendConfig: extendDeepAll({}, - µ.Legend.defaultConfig().legendConfig, - { - container: legendContainer, - elements: elements, - reverseOrder: axisConfig.legend.reverseOrder - } - ) - })(); - - var legendBBox = legendContainer.node().getBBox(); - radius = Math.min(axisConfig.width - legendBBox.width - axisConfig.margin.left - axisConfig.margin.right, axisConfig.height - axisConfig.margin.top - axisConfig.margin.bottom) / 2; - radius = Math.max(10, radius); - chartCenter = [ axisConfig.margin.left + radius, axisConfig.margin.top + radius ]; - radialScale.range([ 0, radius ]); - liveConfig.layout.radialAxis.domain = radialScale.domain(); - legendContainer.attr('transform', 'translate(' + [ chartCenter[0] + radius, chartCenter[1] - radius ] + ')'); - } else { - legendContainer = svg.select('.legend-group').style({ - display: 'none' - }); - } - svg.attr({ - width: axisConfig.width, - height: axisConfig.height - }).style({ - opacity: axisConfig.opacity - }); - chartGroup.attr('transform', 'translate(' + chartCenter + ')').style({ - cursor: 'crosshair' - }); - var centeringOffset = [ (axisConfig.width - (axisConfig.margin.left + axisConfig.margin.right + radius * 2 + (legendBBox ? legendBBox.width : 0))) / 2, (axisConfig.height - (axisConfig.margin.top + axisConfig.margin.bottom + radius * 2)) / 2 ]; - centeringOffset[0] = Math.max(0, centeringOffset[0]); - centeringOffset[1] = Math.max(0, centeringOffset[1]); - svg.select('.outer-group').attr('transform', 'translate(' + centeringOffset + ')'); - if (axisConfig.title && axisConfig.title.text) { - var title = svg.select('g.title-group text').style(fontStyle).text(axisConfig.title.text); - var titleBBox = title.node().getBBox(); - title.attr({ - x: chartCenter[0] - titleBBox.width / 2, - y: chartCenter[1] - radius - 20 - }); - } - var radialAxis = svg.select('.radial.axis-group'); - if (axisConfig.radialAxis.gridLinesVisible) { - var gridCircles = radialAxis.selectAll('circle.grid-circle').data(radialScale.ticks(5)); - gridCircles.enter().append('circle').attr({ - 'class': 'grid-circle' - }).style(lineStyle); - gridCircles.attr('r', radialScale); - gridCircles.exit().remove(); - } - radialAxis.select('circle.outside-circle').attr({ - r: radius - }).style(lineStyle); - var backgroundCircle = svg.select('circle.background-circle').attr({ - r: radius - }).style({ - fill: axisConfig.backgroundColor, - stroke: axisConfig.stroke - }); - function currentAngle(d, i) { - return angularScale(d) % 360 + axisConfig.orientation; - } - if (axisConfig.radialAxis.visible) { - var axis = d3.svg.axis().scale(radialScale).ticks(5).tickSize(5); - radialAxis.call(axis).attr({ - transform: 'rotate(' + axisConfig.radialAxis.orientation + ')' - }); - radialAxis.selectAll('.domain').style(lineStyle); - radialAxis.selectAll('g>text').text(function(d, i) { - return this.textContent + axisConfig.radialAxis.ticksSuffix; - }).style(fontStyle).style({ - 'text-anchor': 'start' - }).attr({ - x: 0, - y: 0, - dx: 0, - dy: 0, - transform: function(d, i) { - if (axisConfig.radialAxis.tickOrientation === 'horizontal') { - return 'rotate(' + -axisConfig.radialAxis.orientation + ') translate(' + [ 0, fontStyle['font-size'] ] + ')'; - } else return 'translate(' + [ 0, fontStyle['font-size'] ] + ')'; - } - }); - radialAxis.selectAll('g>line').style({ - stroke: 'black' - }); - } - var angularAxis = svg.select('.angular.axis-group').selectAll('g.angular-tick').data(angularAxisRange); - var angularAxisEnter = angularAxis.enter().append('g').classed('angular-tick', true); - angularAxis.attr({ - transform: function(d, i) { - return 'rotate(' + currentAngle(d, i) + ')'; - } - }).style({ - display: axisConfig.angularAxis.visible ? 'block' : 'none' - }); - angularAxis.exit().remove(); - angularAxisEnter.append('line').classed('grid-line', true).classed('major', function(d, i) { - return i % (axisConfig.minorTicks + 1) == 0; - }).classed('minor', function(d, i) { - return !(i % (axisConfig.minorTicks + 1) == 0); - }).style(lineStyle); - angularAxisEnter.selectAll('.minor').style({ - stroke: axisConfig.minorTickColor - }); - angularAxis.select('line.grid-line').attr({ - x1: axisConfig.tickLength ? radius - axisConfig.tickLength : 0, - x2: radius - }).style({ - display: axisConfig.angularAxis.gridLinesVisible ? 'block' : 'none' - }); - angularAxisEnter.append('text').classed('axis-text', true).style(fontStyle); - var ticksText = angularAxis.select('text.axis-text').attr({ - x: radius + axisConfig.labelOffset, - dy: MID_SHIFT + 'em', - transform: function(d, i) { - var angle = currentAngle(d, i); - var rad = radius + axisConfig.labelOffset; - var orient = axisConfig.angularAxis.tickOrientation; - if (orient == 'horizontal') return 'rotate(' + -angle + ' ' + rad + ' 0)'; else if (orient == 'radial') return angle < 270 && angle > 90 ? 'rotate(180 ' + rad + ' 0)' : null; else return 'rotate(' + (angle <= 180 && angle > 0 ? -90 : 90) + ' ' + rad + ' 0)'; - } - }).style({ - 'text-anchor': 'middle', - display: axisConfig.angularAxis.labelsVisible ? 'block' : 'none' - }).text(function(d, i) { - if (i % (axisConfig.minorTicks + 1) != 0) return ''; - if (ticks) { - return ticks[d] + axisConfig.angularAxis.ticksSuffix; - } else return d + axisConfig.angularAxis.ticksSuffix; - }).style(fontStyle); - if (axisConfig.angularAxis.rewriteTicks) ticksText.text(function(d, i) { - if (i % (axisConfig.minorTicks + 1) != 0) return ''; - return axisConfig.angularAxis.rewriteTicks(this.textContent, i); - }); - var rightmostTickEndX = d3.max(chartGroup.selectAll('.angular-tick text')[0].map(function(d, i) { - return d.getCTM().e + d.getBBox().width; - })); - legendContainer.attr({ - transform: 'translate(' + [ radius + rightmostTickEndX, axisConfig.margin.top ] + ')' - }); - var hasGeometry = svg.select('g.geometry-group').selectAll('g').size() > 0; - var geometryContainer = svg.select('g.geometry-group').selectAll('g.geometry').data(data); - geometryContainer.enter().append('g').attr({ - 'class': function(d, i) { - return 'geometry geometry' + i; - } - }); - geometryContainer.exit().remove(); - if (data[0] || hasGeometry) { - var geometryConfigs = []; - data.forEach(function(d, i) { - var geometryConfig = {}; - geometryConfig.radialScale = radialScale; - geometryConfig.angularScale = angularScale; - geometryConfig.container = geometryContainer.filter(function(dB, iB) { - return iB == i; - }); - geometryConfig.geometry = d.geometry; - geometryConfig.orientation = axisConfig.orientation; - geometryConfig.direction = axisConfig.direction; - geometryConfig.index = i; - geometryConfigs.push({ - data: d, - geometryConfig: geometryConfig - }); - }); - var geometryConfigsGrouped = d3.nest().key(function(d, i) { - return typeof d.data.groupId != 'undefined' || 'unstacked'; - }).entries(geometryConfigs); - var geometryConfigsGrouped2 = []; - geometryConfigsGrouped.forEach(function(d, i) { - if (d.key === 'unstacked') geometryConfigsGrouped2 = geometryConfigsGrouped2.concat(d.values.map(function(d, i) { - return [ d ]; - })); else geometryConfigsGrouped2.push(d.values); - }); - geometryConfigsGrouped2.forEach(function(d, i) { - var geometry; - if (Array.isArray(d)) geometry = d[0].geometryConfig.geometry; else geometry = d.geometryConfig.geometry; - var finalGeometryConfig = d.map(function(dB, iB) { - return extendDeepAll(µ[geometry].defaultConfig(), dB); - }); - µ[geometry]().config(finalGeometryConfig)(); - }); - } - var guides = svg.select('.guides-group'); - var tooltipContainer = svg.select('.tooltips-group'); - var angularTooltip = µ.tooltipPanel().config({ - container: tooltipContainer, - fontSize: 8 - })(); - var radialTooltip = µ.tooltipPanel().config({ - container: tooltipContainer, - fontSize: 8 - })(); - var geometryTooltip = µ.tooltipPanel().config({ - container: tooltipContainer, - hasTick: true - })(); - var angularValue, radialValue; - if (!isOrdinal) { - var angularGuideLine = guides.select('line').attr({ - x1: 0, - y1: 0, - y2: 0 - }).style({ - stroke: 'grey', - 'pointer-events': 'none' - }); - chartGroup.on('mousemove.angular-guide', function(d, i) { - var mouseAngle = µ.util.getMousePos(backgroundCircle).angle; - angularGuideLine.attr({ - x2: -radius, - transform: 'rotate(' + mouseAngle + ')' - }).style({ - opacity: .5 - }); - var angleWithOriginOffset = (mouseAngle + 180 + 360 - axisConfig.orientation) % 360; - angularValue = angularScale.invert(angleWithOriginOffset); - var pos = µ.util.convertToCartesian(radius + 12, mouseAngle + 180); - angularTooltip.text(µ.util.round(angularValue)).move([ pos[0] + chartCenter[0], pos[1] + chartCenter[1] ]); - }).on('mouseout.angular-guide', function(d, i) { - guides.select('line').style({ - opacity: 0 - }); - }); - } - var angularGuideCircle = guides.select('circle').style({ - stroke: 'grey', - fill: 'none' - }); - chartGroup.on('mousemove.radial-guide', function(d, i) { - var r = µ.util.getMousePos(backgroundCircle).radius; - angularGuideCircle.attr({ - r: r - }).style({ - opacity: .5 - }); - radialValue = radialScale.invert(µ.util.getMousePos(backgroundCircle).radius); - var pos = µ.util.convertToCartesian(r, axisConfig.radialAxis.orientation); - radialTooltip.text(µ.util.round(radialValue)).move([ pos[0] + chartCenter[0], pos[1] + chartCenter[1] ]); - }).on('mouseout.radial-guide', function(d, i) { - angularGuideCircle.style({ - opacity: 0 - }); - geometryTooltip.hide(); - angularTooltip.hide(); - radialTooltip.hide(); - }); - svg.selectAll('.geometry-group .mark').on('mouseover.tooltip', function(d, i) { - var el = d3.select(this); - var color = this.style.fill; - var newColor = 'black'; - var opacity = this.style.opacity || 1; - el.attr({ - 'data-opacity': opacity - }); - if (color && color !== 'none') { - el.attr({ - 'data-fill': color - }); - newColor = d3.hsl(color).darker().toString(); - el.style({ - fill: newColor, - opacity: 1 - }); - var textData = { - t: µ.util.round(d[0]), - r: µ.util.round(d[1]) - }; - if (isOrdinal) textData.t = ticks[d[0]]; - var text = 't: ' + textData.t + ', r: ' + textData.r; - var bbox = this.getBoundingClientRect(); - var svgBBox = svg.node().getBoundingClientRect(); - var pos = [ bbox.left + bbox.width / 2 - centeringOffset[0] - svgBBox.left, bbox.top + bbox.height / 2 - centeringOffset[1] - svgBBox.top ]; - geometryTooltip.config({ - color: newColor - }).text(text); - geometryTooltip.move(pos); - } else { - color = this.style.stroke || 'black'; - el.attr({ - 'data-stroke': color - }); - newColor = d3.hsl(color).darker().toString(); - el.style({ - stroke: newColor, - opacity: 1 - }); - } - }).on('mousemove.tooltip', function(d, i) { - if (d3.event.which != 0) return false; - if (d3.select(this).attr('data-fill')) geometryTooltip.show(); - }).on('mouseout.tooltip', function(d, i) { - geometryTooltip.hide(); - var el = d3.select(this); - var fillColor = el.attr('data-fill'); - if (fillColor) el.style({ - fill: fillColor, - opacity: el.attr('data-opacity') - }); else el.style({ - stroke: el.attr('data-stroke'), - opacity: el.attr('data-opacity') - }); - }); - }); - return exports; - } - exports.render = function(_container) { - render(_container); - return this; - }; - exports.config = function(_x) { - if (!arguments.length) return config; - var xClone = µ.util.cloneJson(_x); - xClone.data.forEach(function(d, i) { - if (!config.data[i]) config.data[i] = {}; - extendDeepAll(config.data[i], µ.Axis.defaultConfig().data[0]); - extendDeepAll(config.data[i], d); - }); - extendDeepAll(config.layout, µ.Axis.defaultConfig().layout); - extendDeepAll(config.layout, xClone.layout); - return this; - }; - exports.getLiveConfig = function() { - return liveConfig; - }; - exports.getinputConfig = function() { - return inputConfig; - }; - exports.radialScale = function(_x) { - return radialScale; - }; - exports.angularScale = function(_x) { - return angularScale; - }; - exports.svg = function() { - return svg; - }; - d3.rebind(exports, dispatch, 'on'); - return exports; -}; - -µ.Axis.defaultConfig = function(d, i) { - var config = { - data: [ { - t: [ 1, 2, 3, 4 ], - r: [ 10, 11, 12, 13 ], - name: 'Line1', - geometry: 'LinePlot', - color: null, - strokeDash: 'solid', - strokeColor: null, - strokeSize: '1', - visibleInLegend: true, - opacity: 1 - } ], - layout: { - defaultColorRange: d3.scale.category10().range(), - title: null, - height: 450, - width: 500, - margin: { - top: 40, - right: 40, - bottom: 40, - left: 40 - }, - font: { - size: 12, - color: 'gray', - outlineColor: 'white', - family: 'Tahoma, sans-serif' - }, - direction: 'clockwise', - orientation: 0, - labelOffset: 10, - radialAxis: { - domain: null, - orientation: -45, - ticksSuffix: '', - visible: true, - gridLinesVisible: true, - tickOrientation: 'horizontal', - rewriteTicks: null - }, - angularAxis: { - domain: [ 0, 360 ], - ticksSuffix: '', - visible: true, - gridLinesVisible: true, - labelsVisible: true, - tickOrientation: 'horizontal', - rewriteTicks: null, - ticksCount: null, - ticksStep: null - }, - minorTicks: 0, - tickLength: null, - tickColor: 'silver', - minorTickColor: '#eee', - backgroundColor: 'none', - needsEndSpacing: null, - showLegend: true, - legend: { - reverseOrder: false - }, - opacity: 1 - } - }; - return config; -}; - -µ.util = {}; - -µ.DATAEXTENT = 'dataExtent'; - -µ.AREA = 'AreaChart'; - -µ.LINE = 'LinePlot'; - -µ.DOT = 'DotPlot'; - -µ.BAR = 'BarChart'; - -µ.util._override = function(_objA, _objB) { - for (var x in _objA) if (x in _objB) _objB[x] = _objA[x]; -}; - -µ.util._extend = function(_objA, _objB) { - for (var x in _objA) _objB[x] = _objA[x]; -}; - -µ.util._rndSnd = function() { - return Math.random() * 2 - 1 + (Math.random() * 2 - 1) + (Math.random() * 2 - 1); -}; - -µ.util.dataFromEquation2 = function(_equation, _step) { - var step = _step || 6; - var data = d3.range(0, 360 + step, step).map(function(deg, index) { - var theta = deg * Math.PI / 180; - var radius = _equation(theta); - return [ deg, radius ]; - }); - return data; -}; - -µ.util.dataFromEquation = function(_equation, _step, _name) { - var step = _step || 6; - var t = [], r = []; - d3.range(0, 360 + step, step).forEach(function(deg, index) { - var theta = deg * Math.PI / 180; - var radius = _equation(theta); - t.push(deg); - r.push(radius); - }); - var result = { - t: t, - r: r - }; - if (_name) result.name = _name; - return result; -}; - -µ.util.ensureArray = function(_val, _count) { - if (typeof _val === 'undefined') return null; - var arr = [].concat(_val); - return d3.range(_count).map(function(d, i) { - return arr[i] || arr[0]; - }); -}; - -µ.util.fillArrays = function(_obj, _valueNames, _count) { - _valueNames.forEach(function(d, i) { - _obj[d] = µ.util.ensureArray(_obj[d], _count); - }); - return _obj; -}; - -µ.util.cloneJson = function(json) { - return JSON.parse(JSON.stringify(json)); -}; - -µ.util.validateKeys = function(obj, keys) { - if (typeof keys === 'string') keys = keys.split('.'); - var next = keys.shift(); - return obj[next] && (!keys.length || objHasKeys(obj[next], keys)); -}; - -µ.util.sumArrays = function(a, b) { - return d3.zip(a, b).map(function(d, i) { - return d3.sum(d); - }); -}; - -µ.util.arrayLast = function(a) { - return a[a.length - 1]; -}; - -µ.util.arrayEqual = function(a, b) { - var i = Math.max(a.length, b.length, 1); - while (i-- >= 0 && a[i] === b[i]) ; - return i === -2; -}; - -µ.util.flattenArray = function(arr) { - var r = []; - while (!µ.util.arrayEqual(r, arr)) { - r = arr; - arr = [].concat.apply([], arr); - } - return arr; -}; - -µ.util.deduplicate = function(arr) { - return arr.filter(function(v, i, a) { - return a.indexOf(v) == i; - }); -}; - -µ.util.convertToCartesian = function(radius, theta) { - var thetaRadians = theta * Math.PI / 180; - var x = radius * Math.cos(thetaRadians); - var y = radius * Math.sin(thetaRadians); - return [ x, y ]; -}; - -µ.util.round = function(_value, _digits) { - var digits = _digits || 2; - var mult = Math.pow(10, digits); - return Math.round(_value * mult) / mult; -}; - -µ.util.getMousePos = function(_referenceElement) { - var mousePos = d3.mouse(_referenceElement.node()); - var mouseX = mousePos[0]; - var mouseY = mousePos[1]; - var mouse = {}; - mouse.x = mouseX; - mouse.y = mouseY; - mouse.pos = mousePos; - mouse.angle = (Math.atan2(mouseY, mouseX) + Math.PI) * 180 / Math.PI; - mouse.radius = Math.sqrt(mouseX * mouseX + mouseY * mouseY); - return mouse; -}; - -µ.util.duplicatesCount = function(arr) { - var uniques = {}, val; - var dups = {}; - for (var i = 0, len = arr.length; i < len; i++) { - val = arr[i]; - if (val in uniques) { - uniques[val]++; - dups[val] = uniques[val]; - } else { - uniques[val] = 1; - } - } - return dups; -}; - -µ.util.duplicates = function(arr) { - return Object.keys(µ.util.duplicatesCount(arr)); -}; - -µ.util.translator = function(obj, sourceBranch, targetBranch, reverse) { - if (reverse) { - var targetBranchCopy = targetBranch.slice(); - targetBranch = sourceBranch; - sourceBranch = targetBranchCopy; - } - var value = sourceBranch.reduce(function(previousValue, currentValue) { - if (typeof previousValue != 'undefined') return previousValue[currentValue]; - }, obj); - if (typeof value === 'undefined') return; - sourceBranch.reduce(function(previousValue, currentValue, index) { - if (typeof previousValue == 'undefined') return; - if (index === sourceBranch.length - 1) delete previousValue[currentValue]; - return previousValue[currentValue]; - }, obj); - targetBranch.reduce(function(previousValue, currentValue, index) { - if (typeof previousValue[currentValue] === 'undefined') previousValue[currentValue] = {}; - if (index === targetBranch.length - 1) previousValue[currentValue] = value; - return previousValue[currentValue]; - }, obj); -}; - -µ.PolyChart = function module() { - var config = [ µ.PolyChart.defaultConfig() ]; - var dispatch = d3.dispatch('hover'); - var dashArray = { - solid: 'none', - dash: [ 5, 2 ], - dot: [ 2, 5 ] - }; - var colorScale; - function exports() { - var geometryConfig = config[0].geometryConfig; - var container = geometryConfig.container; - if (typeof container == 'string') container = d3.select(container); - container.datum(config).each(function(_config, _index) { - var isStack = !!_config[0].data.yStack; - var data = _config.map(function(d, i) { - if (isStack) return d3.zip(d.data.t[0], d.data.r[0], d.data.yStack[0]); else return d3.zip(d.data.t[0], d.data.r[0]); - }); - var angularScale = geometryConfig.angularScale; - var domainMin = geometryConfig.radialScale.domain()[0]; - var generator = {}; - generator.bar = function(d, i, pI) { - var dataConfig = _config[pI].data; - var h = geometryConfig.radialScale(d[1]) - geometryConfig.radialScale(0); - var stackTop = geometryConfig.radialScale(d[2] || 0); - var w = dataConfig.barWidth; - d3.select(this).attr({ - 'class': 'mark bar', - d: 'M' + [ [ h + stackTop, -w / 2 ], [ h + stackTop, w / 2 ], [ stackTop, w / 2 ], [ stackTop, -w / 2 ] ].join('L') + 'Z', - transform: function(d, i) { - return 'rotate(' + (geometryConfig.orientation + angularScale(d[0])) + ')'; - } - }); - }; - generator.dot = function(d, i, pI) { - var stackedData = d[2] ? [ d[0], d[1] + d[2] ] : d; - var symbol = d3.svg.symbol().size(_config[pI].data.dotSize).type(_config[pI].data.dotType)(d, i); - d3.select(this).attr({ - 'class': 'mark dot', - d: symbol, - transform: function(d, i) { - var coord = convertToCartesian(getPolarCoordinates(stackedData)); - return 'translate(' + [ coord.x, coord.y ] + ')'; - } - }); - }; - var line = d3.svg.line.radial().interpolate(_config[0].data.lineInterpolation).radius(function(d) { - return geometryConfig.radialScale(d[1]); - }).angle(function(d) { - return geometryConfig.angularScale(d[0]) * Math.PI / 180; - }); - generator.line = function(d, i, pI) { - var lineData = d[2] ? data[pI].map(function(d, i) { - return [ d[0], d[1] + d[2] ]; - }) : data[pI]; - d3.select(this).each(generator['dot']).style({ - opacity: function(dB, iB) { - return +_config[pI].data.dotVisible; - }, - fill: markStyle.stroke(d, i, pI) - }).attr({ - 'class': 'mark dot' - }); - if (i > 0) return; - var lineSelection = d3.select(this.parentNode).selectAll('path.line').data([ 0 ]); - lineSelection.enter().insert('path'); - lineSelection.attr({ - 'class': 'line', - d: line(lineData), - transform: function(dB, iB) { - return 'rotate(' + (geometryConfig.orientation + 90) + ')'; - }, - 'pointer-events': 'none' - }).style({ - fill: function(dB, iB) { - return markStyle.fill(d, i, pI); - }, - 'fill-opacity': 0, - stroke: function(dB, iB) { - return markStyle.stroke(d, i, pI); - }, - 'stroke-width': function(dB, iB) { - return markStyle['stroke-width'](d, i, pI); - }, - 'stroke-dasharray': function(dB, iB) { - return markStyle['stroke-dasharray'](d, i, pI); - }, - opacity: function(dB, iB) { - return markStyle.opacity(d, i, pI); - }, - display: function(dB, iB) { - return markStyle.display(d, i, pI); - } - }); - }; - var angularRange = geometryConfig.angularScale.range(); - var triangleAngle = Math.abs(angularRange[1] - angularRange[0]) / data[0].length * Math.PI / 180; - var arc = d3.svg.arc().startAngle(function(d) { - return -triangleAngle / 2; - }).endAngle(function(d) { - return triangleAngle / 2; - }).innerRadius(function(d) { - return geometryConfig.radialScale(domainMin + (d[2] || 0)); - }).outerRadius(function(d) { - return geometryConfig.radialScale(domainMin + (d[2] || 0)) + geometryConfig.radialScale(d[1]); - }); - generator.arc = function(d, i, pI) { - d3.select(this).attr({ - 'class': 'mark arc', - d: arc, - transform: function(d, i) { - return 'rotate(' + (geometryConfig.orientation + angularScale(d[0]) + 90) + ')'; - } - }); - }; - var markStyle = { - fill: function(d, i, pI) { - return _config[pI].data.color; - }, - stroke: function(d, i, pI) { - return _config[pI].data.strokeColor; - }, - 'stroke-width': function(d, i, pI) { - return _config[pI].data.strokeSize + 'px'; - }, - 'stroke-dasharray': function(d, i, pI) { - return dashArray[_config[pI].data.strokeDash]; - }, - opacity: function(d, i, pI) { - return _config[pI].data.opacity; - }, - display: function(d, i, pI) { - return typeof _config[pI].data.visible === 'undefined' || _config[pI].data.visible ? 'block' : 'none'; - } - }; - var geometryLayer = d3.select(this).selectAll('g.layer').data(data); - geometryLayer.enter().append('g').attr({ - 'class': 'layer' - }); - var geometry = geometryLayer.selectAll('path.mark').data(function(d, i) { - return d; - }); - geometry.enter().append('path').attr({ - 'class': 'mark' - }); - geometry.style(markStyle).each(generator[geometryConfig.geometryType]); - geometry.exit().remove(); - geometryLayer.exit().remove(); - function getPolarCoordinates(d, i) { - var r = geometryConfig.radialScale(d[1]); - var t = (geometryConfig.angularScale(d[0]) + geometryConfig.orientation) * Math.PI / 180; - return { - r: r, - t: t - }; - } - function convertToCartesian(polarCoordinates) { - var x = polarCoordinates.r * Math.cos(polarCoordinates.t); - var y = polarCoordinates.r * Math.sin(polarCoordinates.t); - return { - x: x, - y: y - }; - } - }); - } - exports.config = function(_x) { - if (!arguments.length) return config; - _x.forEach(function(d, i) { - if (!config[i]) config[i] = {}; - extendDeepAll(config[i], µ.PolyChart.defaultConfig()); - extendDeepAll(config[i], d); - }); - return this; - }; - exports.getColorScale = function() { - return colorScale; - }; - d3.rebind(exports, dispatch, 'on'); - return exports; -}; - -µ.PolyChart.defaultConfig = function() { - var config = { - data: { - name: 'geom1', - t: [ [ 1, 2, 3, 4 ] ], - r: [ [ 1, 2, 3, 4 ] ], - dotType: 'circle', - dotSize: 64, - dotVisible: false, - barWidth: 20, - color: '#ffa500', - strokeSize: 1, - strokeColor: 'silver', - strokeDash: 'solid', - opacity: 1, - index: 0, - visible: true, - visibleInLegend: true - }, - geometryConfig: { - geometry: 'LinePlot', - geometryType: 'arc', - direction: 'clockwise', - orientation: 0, - container: 'body', - radialScale: null, - angularScale: null, - colorScale: d3.scale.category20() - } - }; - return config; -}; - -µ.BarChart = function module() { - return µ.PolyChart(); -}; - -µ.BarChart.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'bar' - } - }; - return config; -}; - -µ.AreaChart = function module() { - return µ.PolyChart(); -}; - -µ.AreaChart.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'arc' - } - }; - return config; -}; - -µ.DotPlot = function module() { - return µ.PolyChart(); -}; - -µ.DotPlot.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'dot', - dotType: 'circle' - } - }; - return config; -}; - -µ.LinePlot = function module() { - return µ.PolyChart(); -}; - -µ.LinePlot.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'line' - } - }; - return config; -}; - -µ.Legend = function module() { - var config = µ.Legend.defaultConfig(); - var dispatch = d3.dispatch('hover'); - function exports() { - var legendConfig = config.legendConfig; - var flattenData = config.data.map(function(d, i) { - return [].concat(d).map(function(dB, iB) { - var element = extendDeepAll({}, legendConfig.elements[i]); - element.name = dB; - element.color = [].concat(legendConfig.elements[i].color)[iB]; - return element; - }); - }); - var data = d3.merge(flattenData); - data = data.filter(function(d, i) { - return legendConfig.elements[i] && (legendConfig.elements[i].visibleInLegend || typeof legendConfig.elements[i].visibleInLegend === 'undefined'); - }); - if (legendConfig.reverseOrder) data = data.reverse(); - var container = legendConfig.container; - if (typeof container == 'string' || container.nodeName) container = d3.select(container); - var colors = data.map(function(d, i) { - return d.color; - }); - var lineHeight = legendConfig.fontSize; - var isContinuous = legendConfig.isContinuous == null ? typeof data[0] === 'number' : legendConfig.isContinuous; - var height = isContinuous ? legendConfig.height : lineHeight * data.length; - var legendContainerGroup = container.classed('legend-group', true); - var svg = legendContainerGroup.selectAll('svg').data([ 0 ]); - var svgEnter = svg.enter().append('svg').attr({ - width: 300, - height: height + lineHeight, - xmlns: 'http://www.w3.org/2000/svg', - 'xmlns:xlink': 'http://www.w3.org/1999/xlink', - version: '1.1' - }); - svgEnter.append('g').classed('legend-axis', true); - svgEnter.append('g').classed('legend-marks', true); - var dataNumbered = d3.range(data.length); - var colorScale = d3.scale[isContinuous ? 'linear' : 'ordinal']().domain(dataNumbered).range(colors); - var dataScale = d3.scale[isContinuous ? 'linear' : 'ordinal']().domain(dataNumbered)[isContinuous ? 'range' : 'rangePoints']([ 0, height ]); - var shapeGenerator = function(_type, _size) { - var squareSize = _size * 3; - if (_type === 'line') { - return 'M' + [ [ -_size / 2, -_size / 12 ], [ _size / 2, -_size / 12 ], [ _size / 2, _size / 12 ], [ -_size / 2, _size / 12 ] ] + 'Z'; - } else if (d3.svg.symbolTypes.indexOf(_type) != -1) return d3.svg.symbol().type(_type).size(squareSize)(); else return d3.svg.symbol().type('square').size(squareSize)(); - }; - if (isContinuous) { - var gradient = svg.select('.legend-marks').append('defs').append('linearGradient').attr({ - id: 'grad1', - x1: '0%', - y1: '0%', - x2: '0%', - y2: '100%' - }).selectAll('stop').data(colors); - gradient.enter().append('stop'); - gradient.attr({ - offset: function(d, i) { - return i / (colors.length - 1) * 100 + '%'; - } - }).style({ - 'stop-color': function(d, i) { - return d; - } - }); - svg.append('rect').classed('legend-mark', true).attr({ - height: legendConfig.height, - width: legendConfig.colorBandWidth, - fill: 'url(#grad1)' - }); - } else { - var legendElement = svg.select('.legend-marks').selectAll('path.legend-mark').data(data); - legendElement.enter().append('path').classed('legend-mark', true); - legendElement.attr({ - transform: function(d, i) { - return 'translate(' + [ lineHeight / 2, dataScale(i) + lineHeight / 2 ] + ')'; - }, - d: function(d, i) { - var symbolType = d.symbol; - return shapeGenerator(symbolType, lineHeight); - }, - fill: function(d, i) { - return colorScale(i); - } - }); - legendElement.exit().remove(); - } - var legendAxis = d3.svg.axis().scale(dataScale).orient('right'); - var axis = svg.select('g.legend-axis').attr({ - transform: 'translate(' + [ isContinuous ? legendConfig.colorBandWidth : lineHeight, lineHeight / 2 ] + ')' - }).call(legendAxis); - axis.selectAll('.domain').style({ - fill: 'none', - stroke: 'none' - }); - axis.selectAll('line').style({ - fill: 'none', - stroke: isContinuous ? legendConfig.textColor : 'none' - }); - axis.selectAll('text').style({ - fill: legendConfig.textColor, - 'font-size': legendConfig.fontSize - }).text(function(d, i) { - return data[i].name; - }); - return exports; - } - exports.config = function(_x) { - if (!arguments.length) return config; - extendDeepAll(config, _x); - return this; - }; - d3.rebind(exports, dispatch, 'on'); - return exports; -}; - -µ.Legend.defaultConfig = function(d, i) { - var config = { - data: [ 'a', 'b', 'c' ], - legendConfig: { - elements: [ { - symbol: 'line', - color: 'red' - }, { - symbol: 'square', - color: 'yellow' - }, { - symbol: 'diamond', - color: 'limegreen' - } ], - height: 150, - colorBandWidth: 30, - fontSize: 12, - container: 'body', - isContinuous: null, - textColor: 'grey', - reverseOrder: false - } - }; - return config; -}; - -µ.tooltipPanel = function() { - var tooltipEl, tooltipTextEl, backgroundEl; - var config = { - container: null, - hasTick: false, - fontSize: 12, - color: 'white', - padding: 5 - }; - var id = 'tooltip-' + µ.tooltipPanel.uid++; - var tickSize = 10; - var exports = function() { - tooltipEl = config.container.selectAll('g.' + id).data([ 0 ]); - var tooltipEnter = tooltipEl.enter().append('g').classed(id, true).style({ - 'pointer-events': 'none', - display: 'none' - }); - backgroundEl = tooltipEnter.append('path').style({ - fill: 'white', - 'fill-opacity': .9 - }).attr({ - d: 'M0 0' - }); - tooltipTextEl = tooltipEnter.append('text').attr({ - dx: config.padding + tickSize, - dy: +config.fontSize * .3 - }); - return exports; - }; - exports.text = function(_text) { - var l = d3.hsl(config.color).l; - var strokeColor = l >= .5 ? '#aaa' : 'white'; - var fillColor = l >= .5 ? 'black' : 'white'; - var text = _text || ''; - tooltipTextEl.style({ - fill: fillColor, - 'font-size': config.fontSize + 'px' - }).text(text); - var padding = config.padding; - var bbox = tooltipTextEl.node().getBBox(); - var boxStyle = { - fill: config.color, - stroke: strokeColor, - 'stroke-width': '2px' - }; - var backGroundW = bbox.width + padding * 2 + tickSize; - var backGroundH = bbox.height + padding * 2; - backgroundEl.attr({ - d: 'M' + [ [ tickSize, -backGroundH / 2 ], [ tickSize, -backGroundH / 4 ], [ config.hasTick ? 0 : tickSize, 0 ], [ tickSize, backGroundH / 4 ], [ tickSize, backGroundH / 2 ], [ backGroundW, backGroundH / 2 ], [ backGroundW, -backGroundH / 2 ] ].join('L') + 'Z' - }).style(boxStyle); - tooltipEl.attr({ - transform: 'translate(' + [ tickSize, -backGroundH / 2 + padding * 2 ] + ')' - }); - tooltipEl.style({ - display: 'block' - }); - return exports; - }; - exports.move = function(_pos) { - if (!tooltipEl) return; - tooltipEl.attr({ - transform: 'translate(' + [ _pos[0], _pos[1] ] + ')' - }).style({ - display: 'block' - }); - return exports; - }; - exports.hide = function() { - if (!tooltipEl) return; - tooltipEl.style({ - display: 'none' - }); - return exports; - }; - exports.show = function() { - if (!tooltipEl) return; - tooltipEl.style({ - display: 'block' - }); - return exports; - }; - exports.config = function(_x) { - extendDeepAll(config, _x); - return exports; - }; - return exports; -}; - -µ.tooltipPanel.uid = 1; - -µ.adapter = {}; - -µ.adapter.plotly = function module() { - var exports = {}; - exports.convert = function(_inputConfig, reverse) { - var outputConfig = {}; - if (_inputConfig.data) { - outputConfig.data = _inputConfig.data.map(function(d, i) { - var r = extendDeepAll({}, d); - var toTranslate = [ - [ r, [ 'marker', 'color' ], [ 'color' ] ], - [ r, [ 'marker', 'opacity' ], [ 'opacity' ] ], - [ r, [ 'marker', 'line', 'color' ], [ 'strokeColor' ] ], - [ r, [ 'marker', 'line', 'dash' ], [ 'strokeDash' ] ], - [ r, [ 'marker', 'line', 'width' ], [ 'strokeSize' ] ], - [ r, [ 'marker', 'symbol' ], [ 'dotType' ] ], - [ r, [ 'marker', 'size' ], [ 'dotSize' ] ], - [ r, [ 'marker', 'barWidth' ], [ 'barWidth' ] ], - [ r, [ 'line', 'interpolation' ], [ 'lineInterpolation' ] ], - [ r, [ 'showlegend' ], [ 'visibleInLegend' ] ] - ]; - toTranslate.forEach(function(d, i) { - µ.util.translator.apply(null, d.concat(reverse)); - }); - - if (!reverse) delete r.marker; - if (reverse) delete r.groupId; - if (!reverse) { - if (r.type === 'scatter') { - if (r.mode === 'lines') r.geometry = 'LinePlot'; else if (r.mode === 'markers') r.geometry = 'DotPlot'; else if (r.mode === 'lines+markers') { - r.geometry = 'LinePlot'; - r.dotVisible = true; - } - } else if (r.type === 'area') r.geometry = 'AreaChart'; else if (r.type === 'bar') r.geometry = 'BarChart'; - delete r.mode; - delete r.type; - } else { - if (r.geometry === 'LinePlot') { - r.type = 'scatter'; - if (r.dotVisible === true) { - delete r.dotVisible; - r.mode = 'lines+markers'; - } else r.mode = 'lines'; - } else if (r.geometry === 'DotPlot') { - r.type = 'scatter'; - r.mode = 'markers'; - } else if (r.geometry === 'AreaChart') r.type = 'area'; else if (r.geometry === 'BarChart') r.type = 'bar'; - delete r.geometry; - } - return r; - }); - if (!reverse && _inputConfig.layout && _inputConfig.layout.barmode === 'stack') { - var duplicates = µ.util.duplicates(outputConfig.data.map(function(d, i) { - return d.geometry; - })); - outputConfig.data.forEach(function(d, i) { - var idx = duplicates.indexOf(d.geometry); - if (idx != -1) outputConfig.data[i].groupId = idx; - }); - } - } - if (_inputConfig.layout) { - var r = extendDeepAll({}, _inputConfig.layout); - var toTranslate = [ - [ r, [ 'plot_bgcolor' ], [ 'backgroundColor' ] ], - [ r, [ 'showlegend' ], [ 'showLegend' ] ], - [ r, [ 'radialaxis' ], [ 'radialAxis' ] ], - [ r, [ 'angularaxis' ], [ 'angularAxis' ] ], - [ r.angularaxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.angularaxis, [ 'showticklabels' ], [ 'labelsVisible' ] ], - [ r.angularaxis, [ 'nticks' ], [ 'ticksCount' ] ], - [ r.angularaxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.angularaxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.angularaxis, [ 'range' ], [ 'domain' ] ], - [ r.angularaxis, [ 'endpadding' ], [ 'endPadding' ] ], - [ r.radialaxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.radialaxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.radialaxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.radialaxis, [ 'range' ], [ 'domain' ] ], - [ r.angularAxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.angularAxis, [ 'showticklabels' ], [ 'labelsVisible' ] ], - [ r.angularAxis, [ 'nticks' ], [ 'ticksCount' ] ], - [ r.angularAxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.angularAxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.angularAxis, [ 'range' ], [ 'domain' ] ], - [ r.angularAxis, [ 'endpadding' ], [ 'endPadding' ] ], - [ r.radialAxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.radialAxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.radialAxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.radialAxis, [ 'range' ], [ 'domain' ] ], - [ r.font, [ 'outlinecolor' ], [ 'outlineColor' ] ], - [ r.legend, [ 'traceorder' ], [ 'reverseOrder' ] ], - [ r, [ 'labeloffset' ], [ 'labelOffset' ] ], - [ r, [ 'defaultcolorrange' ], [ 'defaultColorRange' ] ] - ]; - toTranslate.forEach(function(d, i) { - µ.util.translator.apply(null, d.concat(reverse)); - }); - - if (!reverse) { - if (r.angularAxis && typeof r.angularAxis.ticklen !== 'undefined') r.tickLength = r.angularAxis.ticklen; - if (r.angularAxis && typeof r.angularAxis.tickcolor !== 'undefined') r.tickColor = r.angularAxis.tickcolor; - } else { - if (typeof r.tickLength !== 'undefined') { - r.angularaxis.ticklen = r.tickLength; - delete r.tickLength; - } - if (r.tickColor) { - r.angularaxis.tickcolor = r.tickColor; - delete r.tickColor; - } - } - if (r.legend && typeof r.legend.reverseOrder != 'boolean') { - r.legend.reverseOrder = r.legend.reverseOrder != 'normal'; - } - if (r.legend && typeof r.legend.traceorder == 'boolean') { - r.legend.traceorder = r.legend.traceorder ? 'reversed' : 'normal'; - delete r.legend.reverseOrder; - } - if (r.margin && typeof r.margin.t != 'undefined') { - var source = [ 't', 'r', 'b', 'l', 'pad' ]; - var target = [ 'top', 'right', 'bottom', 'left', 'pad' ]; - var margin = {}; - d3.entries(r.margin).forEach(function(dB, iB) { - margin[target[source.indexOf(dB.key)]] = dB.value; - }); - r.margin = margin; - } - if (reverse) { - delete r.needsEndSpacing; - delete r.minorTickColor; - delete r.minorTicks; - delete r.angularaxis.ticksCount; - delete r.angularaxis.ticksCount; - delete r.angularaxis.ticksStep; - delete r.angularaxis.rewriteTicks; - delete r.angularaxis.nticks; - delete r.radialaxis.ticksCount; - delete r.radialaxis.ticksCount; - delete r.radialaxis.ticksStep; - delete r.radialaxis.rewriteTicks; - delete r.radialaxis.nticks; - } - outputConfig.layout = r; - } - return outputConfig; - }; - return exports; -}; - -},{"../../../constants/alignment":207,"../../../lib":233,"d3":21}],318:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -/* eslint-disable new-cap */ - -'use strict'; - -var d3 = _dereq_('d3'); -var Lib = _dereq_('../../../lib'); -var Color = _dereq_('../../../components/color'); - -var micropolar = _dereq_('./micropolar'); -var UndoManager = _dereq_('./undo_manager'); -var extendDeepAll = Lib.extendDeepAll; - -var manager = module.exports = {}; - -manager.framework = function(_gd) { - var config, previousConfigClone, plot, convertedInput, container; - var undoManager = new UndoManager(); - - function exports(_inputConfig, _container) { - if(_container) container = _container; - d3.select(d3.select(container).node().parentNode).selectAll('.svg-container>*:not(.chart-root)').remove(); - - config = (!config) ? - _inputConfig : - extendDeepAll(config, _inputConfig); - - if(!plot) plot = micropolar.Axis(); - convertedInput = micropolar.adapter.plotly().convert(config); - plot.config(convertedInput).render(container); - _gd.data = config.data; - _gd.layout = config.layout; - manager.fillLayout(_gd); - return config; - } - exports.isPolar = true; - exports.svg = function() { return plot.svg(); }; - exports.getConfig = function() { return config; }; - exports.getLiveConfig = function() { - return micropolar.adapter.plotly().convert(plot.getLiveConfig(), true); - }; - exports.getLiveScales = function() { return {t: plot.angularScale(), r: plot.radialScale()}; }; - exports.setUndoPoint = function() { - var that = this; - var configClone = micropolar.util.cloneJson(config); - (function(_configClone, _previousConfigClone) { - undoManager.add({ - undo: function() { - if(_previousConfigClone) that(_previousConfigClone); - }, - redo: function() { - that(_configClone); - } - }); - })(configClone, previousConfigClone); - previousConfigClone = micropolar.util.cloneJson(configClone); - }; - exports.undo = function() { undoManager.undo(); }; - exports.redo = function() { undoManager.redo(); }; - return exports; -}; - -manager.fillLayout = function(_gd) { - var container = d3.select(_gd).selectAll('.plot-container'); - var paperDiv = container.selectAll('.svg-container'); - var paper = _gd.framework && _gd.framework.svg && _gd.framework.svg(); - var dflts = { - width: 800, - height: 600, - paper_bgcolor: Color.background, - _container: container, - _paperdiv: paperDiv, - _paper: paper - }; - - _gd._fullLayout = extendDeepAll(dflts, _gd.layout); -}; - -},{"../../../components/color":105,"../../../lib":233,"./micropolar":317,"./undo_manager":319,"d3":21}],319:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -// Modified from https://github.com/ArthurClemens/Javascript-Undo-Manager -// Copyright (c) 2010-2013 Arthur Clemens, arthur@visiblearea.com -module.exports = function UndoManager() { - var undoCommands = []; - var index = -1; - var isExecuting = false; - var callback; - - function execute(command, action) { - if(!command) return this; - - isExecuting = true; - command[action](); - isExecuting = false; - - return this; - } - - return { - add: function(command) { - if(isExecuting) return this; - undoCommands.splice(index + 1, undoCommands.length - index); - undoCommands.push(command); - index = undoCommands.length - 1; - return this; - }, - setCallback: function(callbackFunc) { callback = callbackFunc; }, - undo: function() { - var command = undoCommands[index]; - if(!command) return this; - execute(command, 'undo'); - index -= 1; - if(callback) callback(command.undo); - return this; - }, - redo: function() { - var command = undoCommands[index + 1]; - if(!command) return this; - execute(command, 'redo'); - index += 1; - if(callback) callback(command.redo); - return this; - }, - clear: function() { - undoCommands = []; - index = -1; - }, - hasUndo: function() { return index !== -1; }, - hasRedo: function() { return index < (undoCommands.length - 1); }, - getCommands: function() { return undoCommands; }, - getPreviousCommand: function() { return undoCommands[index - 1]; }, - getIndex: function() { return index; } - }; -}; - -},{}],320:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../components/color":155,"../constants/numerical":265,"../lib":285,"../plot_api/plot_schema":319,"../plot_api/plot_template":320,"../plots/get_data":361,"../registry":373,"./animation_attributes":325,"./attributes":327,"./cartesian/axis_ids":334,"./cartesian/handle_outline":341,"./command":357,"./font_attributes":359,"./frame_attributes":360,"./layout_attributes":364,"@plotly/d3":20,"d3-time-format":29,"fast-isnumeric":31}],367:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -76719,29 +83150,31 @@ module.exports = function handleSubplotDefaults(layoutIn, layoutOut, fullData, o } }; -},{"../lib":233,"../plot_api/plot_template":268,"./domain":306}],321:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/plot_template":320,"./domain":358}],368:[function(_dereq_,module,exports){ 'use strict'; -var FORMAT_LINK = _dereq_('../constants/docs').FORMAT_LINK; -var DATE_FORMAT_LINK = _dereq_('../constants/docs').DATE_FORMAT_LINK; +var docs = _dereq_('../constants/docs'); +var FORMAT_LINK = docs.FORMAT_LINK; +var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK; -var templateFormatStringDescription = [ - 'Variables are inserted using %{variable}, for example "y: %{y}".', - 'Numbers are formatted using d3-format\'s syntax %{variable:d3-format}, for example "Price: %{y:$.2f}".', - FORMAT_LINK, - 'for details on the formatting syntax.', - 'Dates are formatted using d3-time-format\'s syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}".', - DATE_FORMAT_LINK, - 'for details on the date formatting syntax.' -].join(' '); +function templateFormatStringDescription(opts) { + var supportOther = opts && opts.supportOther; + + return [ + 'Variables are inserted using %{variable},', + 'for example "y: %{y}"' + ( + supportOther ? + ' as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown.' : + '.' + ), + 'Numbers are formatted using d3-format\'s syntax %{variable:d3-format}, for example "Price: %{y:$.2f}".', + FORMAT_LINK, + 'for details on the formatting syntax.', + 'Dates are formatted using d3-time-format\'s syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}".', + DATE_FORMAT_LINK, + 'for details on the date formatting syntax.' + ].join(' '); +} function describeVariables(extra) { var descPart = extra.description ? ' ' + extra.description : ''; @@ -76769,10 +83202,8 @@ exports.hovertemplateAttrs = function(opts, extra) { var hovertemplate = { valType: 'string', - dflt: '', editType: opts.editType || 'none', - }; if(opts.arrayOk !== false) { @@ -76790,10 +83221,8 @@ exports.texttemplateAttrs = function(opts, extra) { var texttemplate = { valType: 'string', - dflt: '', editType: opts.editType || 'calc', - }; if(opts.arrayOk !== false) { @@ -76802,16 +83231,7 @@ exports.texttemplateAttrs = function(opts, extra) { return texttemplate; }; -},{"../constants/docs":209}],322:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../constants/docs":262}],369:[function(_dereq_,module,exports){ 'use strict'; var Ternary = _dereq_('./ternary'); @@ -76831,10 +83251,8 @@ exports.idRegex = exports.attrRegex = counterRegex(TERNARY); var attributes = exports.attributes = {}; attributes[attr] = { valType: 'subplotid', - dflt: 'ternary', editType: 'calc', - }; exports.layoutAttributes = _dereq_('./layout_attributes'); @@ -76886,15 +83304,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) } }; -},{"../../lib":233,"../../plots/get_data":309,"./layout_attributes":323,"./layout_defaults":324,"./ternary":325}],323:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/get_data":361,"./layout_attributes":370,"./layout_defaults":371,"./ternary":372}],370:[function(_dereq_,module,exports){ 'use strict'; var colorAttrs = _dereq_('../../components/color/attributes'); @@ -76948,9 +83358,7 @@ var ternaryAxesAttrs = { min: { valType: 'number', dflt: 0, - min: 0, - }, _deprecated: { title: axesAttrs._deprecated.title, @@ -76963,16 +83371,12 @@ var attrs = module.exports = overrideAll({ bgcolor: { valType: 'color', - dflt: colorAttrs.background, - }, sum: { valType: 'number', - dflt: 1, min: 0, - }, aaxis: ternaryAxesAttrs, baxis: ternaryAxesAttrs, @@ -76982,27 +83386,15 @@ var attrs = module.exports = overrideAll({ // set uirevisions outside of `overrideAll` so we can get `editType: none` attrs.uirevision = { valType: 'any', - editType: 'none', - }; attrs.aaxis.uirevision = attrs.baxis.uirevision = attrs.caxis.uirevision = { valType: 'any', - editType: 'none', - }; -},{"../../components/color/attributes":104,"../../lib/extend":227,"../../plot_api/edit_types":261,"../cartesian/layout_attributes":293,"../domain":306}],324:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color/attributes":154,"../../lib/extend":279,"../../plot_api/edit_types":313,"../cartesian/layout_attributes":345,"../domain":358}],371:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -77087,7 +83479,7 @@ function handleAxisDefaults(containerIn, containerOut, options, ternaryLayoutOut Lib.coerceFont(coerce, 'title.font', { family: options.font.family, - size: Math.round(options.font.size * 1.2), + size: Lib.bigFont(options.font.size), color: dfltFontColor }); @@ -77126,19 +83518,10 @@ function handleAxisDefaults(containerIn, containerOut, options, ternaryLayoutOut coerce('layer'); } -},{"../../components/color":105,"../../lib":233,"../../plot_api/plot_template":268,"../cartesian/line_grid_defaults":295,"../cartesian/tick_label_defaults":300,"../cartesian/tick_mark_defaults":301,"../cartesian/tick_value_defaults":302,"../subplot_defaults":320,"./layout_attributes":323}],325:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"../../lib":285,"../../plot_api/plot_template":320,"../cartesian/line_grid_defaults":347,"../cartesian/tick_label_defaults":352,"../cartesian/tick_mark_defaults":353,"../cartesian/tick_value_defaults":354,"../subplot_defaults":367,"./layout_attributes":370}],372:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Registry = _dereq_('../../registry'); @@ -77907,15 +84290,7 @@ function removeZoombox(gd) { .remove(); } -},{"../../components/color":105,"../../components/dragelement":124,"../../components/dragelement/helpers":123,"../../components/drawing":127,"../../components/fx":145,"../../components/titles":200,"../../lib":233,"../../lib/extend":227,"../../registry":326,"../cartesian/axes":279,"../cartesian/constants":285,"../cartesian/select":298,"../cartesian/set_convert":299,"../plots":313,"d3":21,"tinycolor2":88}],326:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/dragelement":174,"../../components/dragelement/helpers":173,"../../components/drawing":177,"../../components/fx":195,"../../components/titles":253,"../../lib":285,"../../lib/extend":279,"../../registry":373,"../cartesian/axes":331,"../cartesian/constants":337,"../cartesian/select":350,"../cartesian/set_convert":351,"../plots":366,"@plotly/d3":20,"tinycolor2":119}],373:[function(_dereq_,module,exports){ 'use strict'; var Loggers = _dereq_('./lib/loggers'); @@ -78054,7 +84429,7 @@ exports.traceIs = function(traceType, category) { var _module = exports.modules[traceType]; if(!_module) { - if(traceType && traceType !== 'area') { + if(traceType) { Loggers.log('Unrecognized trace type ' + traceType + '.'); } @@ -78373,15 +84748,7 @@ function getTraceType(traceType) { return traceType; } -},{"./lib/dom":225,"./lib/extend":227,"./lib/is_plain_object":234,"./lib/loggers":237,"./lib/noop":242,"./lib/push_unique":247,"./plots/attributes":275,"./plots/layout_attributes":311}],327:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./lib/dom":277,"./lib/extend":279,"./lib/is_plain_object":286,"./lib/loggers":289,"./lib/noop":294,"./lib/push_unique":299,"./plots/attributes":327,"./plots/layout_attributes":364}],374:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -78434,11 +84801,6 @@ function keyIsAxis(keyName) { module.exports = function clonePlot(graphObj, options) { - // Polar plot compatibility - if(graphObj.framework && graphObj.framework.isPolar) { - graphObj = graphObj.framework.getConfig(); - } - var i; var oldData = graphObj.data; var oldLayout = graphObj.layout; @@ -78546,15 +84908,7 @@ module.exports = function clonePlot(graphObj, options) { return plotTile; }; -},{"../lib":233,"../registry":326}],328:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../registry":373}],375:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -78618,15 +84972,7 @@ function downloadImage(gd, opts) { module.exports = downloadImage; -},{"../lib":233,"../plot_api/to_image":271,"./filesaver":329,"./helpers":330}],329:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/to_image":323,"./filesaver":376,"./helpers":377}],376:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -78652,10 +84998,6 @@ function fileSaver(url, name, format) { var blob; var objectUrl; - if(Lib.isIE9orBelow()) { - reject(new Error('IE < 10 unsupported')); - } - // Safari doesn't allow downloading of blob urls if(Lib.isSafari()) { var prefix = format === 'svg' ? ',' : ';base64,'; @@ -78698,15 +85040,7 @@ function fileSaver(url, name, format) { module.exports = fileSaver; -},{"../lib":233,"./helpers":330}],330:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"./helpers":377}],377:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -78723,13 +85057,7 @@ exports.getDelay = function(fullLayout) { exports.getRedrawFunc = function(gd) { return function() { - var fullLayout = gd._fullLayout || {}; - var hasPolar = fullLayout._has && fullLayout._has('polar'); - var hasLegacyPolar = !hasPolar && gd.data && gd.data[0] && gd.data[0].r; - - if(!hasLegacyPolar) { - Registry.getComponentMethod('colorbar', 'draw')(gd); - } + Registry.getComponentMethod('colorbar', 'draw')(gd); }; }; @@ -78781,16 +85109,7 @@ exports.IMAGE_URL_PREFIX = /^data:image\/\w+;base64,/; exports.MSG_IE_BAD_FORMAT = 'Sorry IE does not support downloading from canvas. Try {format:\'svg\'} instead.'; -},{"../registry":326}],331:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../registry":373}],378:[function(_dereq_,module,exports){ 'use strict'; var helpers = _dereq_('./helpers'); @@ -78807,15 +85126,7 @@ var Snapshot = { module.exports = Snapshot; -},{"./cloneplot":327,"./download":328,"./helpers":330,"./svgtoimg":332,"./toimage":333,"./tosvg":334}],332:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./cloneplot":374,"./download":375,"./helpers":377,"./svgtoimg":379,"./toimage":380,"./tosvg":381}],379:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -78855,7 +85166,7 @@ function svgToImg(opts) { var img = new Image(); var svgBlob, url; - if(format === 'svg' || Lib.isIE9orBelow() || Lib.isSafari()) { + if(format === 'svg' || Lib.isSafari()) { url = helpers.encodeSVG(svg); } else { svgBlob = helpers.createBlob(svg, 'svg'); @@ -78934,15 +85245,7 @@ function svgToImg(opts) { module.exports = svgToImg; -},{"../lib":233,"./helpers":330,"events":17}],333:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"./helpers":377,"events":27}],380:[function(_dereq_,module,exports){ 'use strict'; var EventEmitter = _dereq_('events').EventEmitter; @@ -78998,7 +85301,7 @@ function toImage(gd, opts) { var redrawFunc = helpers.getRedrawFunc(clonedGd); - Registry.call('plot', clonedGd, clone.data, clone.layout, clone.config) + Registry.call('_doPlot', clonedGd, clone.data, clone.layout, clone.config) .then(redrawFunc) .then(wait) .catch(function(err) { @@ -79011,19 +85314,10 @@ function toImage(gd, opts) { module.exports = toImage; -},{"../lib":233,"../registry":326,"./cloneplot":327,"./helpers":330,"./svgtoimg":332,"./tosvg":334,"events":17}],334:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../lib":285,"../registry":373,"./cloneplot":374,"./helpers":377,"./svgtoimg":379,"./tosvg":381,"events":27}],381:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../lib'); var Drawing = _dereq_('../components/drawing'); @@ -79056,7 +85350,7 @@ module.exports = function toSVG(gd, format, scale) { var toppaper = fullLayout._toppaper; var width = fullLayout.width; var height = fullLayout.height; - var i; + var i, k; // make background color a rect in the svg, then revert after scraping // all other alterations have been dealt with by properly preparing the svg @@ -79129,28 +85423,31 @@ module.exports = function toSVG(gd, format, scale) { } }); - + var queryParts = []; if(fullLayout._gradientUrlQueryParts) { - var queryParts = []; - for(var k in fullLayout._gradientUrlQueryParts) queryParts.push(k); + for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k); + } - if(queryParts.length) { - svg.selectAll(queryParts.join(',')).each(function() { - var pt = d3.select(this); + if(fullLayout._patternUrlQueryParts) { + for(k in fullLayout._patternUrlQueryParts) queryParts.push(k); + } - // similar to font family styles above, - // we must remove " after the SVG DOM has been serialized - var fill = this.style.fill; - if(fill && fill.indexOf('url(') !== -1) { - pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); - } + if(queryParts.length) { + svg.selectAll(queryParts.join(',')).each(function() { + var pt = d3.select(this); - var stroke = this.style.stroke; - if(stroke && stroke.indexOf('url(') !== -1) { - pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); - } - }); - } + // similar to font family styles above, + // we must remove " after the SVG DOM has been serialized + var fill = this.style.fill; + if(fill && fill.indexOf('url(') !== -1) { + pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); + } + + var stroke = this.style.stroke; + if(stroke && stroke.indexOf('url(') !== -1) { + pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); + } + }); } if(format === 'pdf' || format === 'eps') { @@ -79178,6 +85475,8 @@ module.exports = function toSVG(gd, format, scale) { // Fix quotations around font strings and gradient URLs s = s.replace(DUMMY_REGEX, '\''); + // Do we need this process now that IE9 and IE10 are not supported? + // IE is very strict, so we will need to clean // svg with the following regex // yes this is messy, but do not know a better way @@ -79200,15 +85499,7 @@ module.exports = function toSVG(gd, format, scale) { return s; }; -},{"../components/color":105,"../components/drawing":127,"../constants/xmlns_namespaces":213,"../lib":233,"d3":21}],335:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color":155,"../components/drawing":177,"../constants/xmlns_namespaces":266,"../lib":285,"@plotly/d3":20}],382:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -79233,23 +85524,17 @@ module.exports = function arraysToCalcdata(cd, trace) { } }; -},{"../../lib":233}],336:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],383:[function(_dereq_,module,exports){ 'use strict'; var scatterAttrs = _dereq_('../scatter/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var fontAttrs = _dereq_('../../plots/font_attributes'); var constants = _dereq_('./constants'); +var pattern = _dereq_('../../components/drawing/attributes').pattern; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -79257,7 +85542,6 @@ var textFontAttrs = fontAttrs({ editType: 'calc', arrayOk: true, colorEditType: 'style', - }); var scatterMarkerAttrs = scatterAttrs.marker; @@ -79281,10 +85565,9 @@ var marker = extendFlat({ dflt: 1, min: 0, max: 1, - editType: 'style', - - } + }, + pattern: pattern }); module.exports = { @@ -79301,6 +85584,8 @@ module.exports = { yperiod0: scatterAttrs.yperiod0, xperiodalignment: scatterAttrs.xperiodalignment, yperiodalignment: scatterAttrs.yperiodalignment, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), text: scatterAttrs.text, texttemplate: texttemplateAttrs({editType: 'plot'}, { @@ -79313,80 +85598,62 @@ module.exports = { textposition: { valType: 'enumerated', - values: ['inside', 'outside', 'auto', 'none'], - dflt: 'none', + dflt: 'auto', arrayOk: true, editType: 'calc', - }, insidetextanchor: { valType: 'enumerated', values: ['end', 'middle', 'start'], dflt: 'end', - editType: 'plot', - }, textangle: { valType: 'angle', dflt: 'auto', - editType: 'plot', - }, textfont: extendFlat({}, textFontAttrs, { - }), insidetextfont: extendFlat({}, textFontAttrs, { - }), outsidetextfont: extendFlat({}, textFontAttrs, { - }), constraintext: { valType: 'enumerated', values: ['inside', 'outside', 'both', 'none'], - dflt: 'both', editType: 'calc', - }, cliponaxis: extendFlat({}, scatterAttrs.cliponaxis, { - }), orientation: { valType: 'enumerated', - values: ['v', 'h'], editType: 'calc+clearAxisTypes', - }, base: { valType: 'any', dflt: null, arrayOk: true, - editType: 'calc', - }, offset: { valType: 'number', dflt: null, arrayOk: true, - editType: 'calc', - }, width: { @@ -79394,26 +85661,20 @@ module.exports = { dflt: null, min: 0, arrayOk: true, - editType: 'calc', - }, marker: marker, offsetgroup: { valType: 'string', - dflt: '', editType: 'calc', - }, alignmentgroup: { valType: 'string', - dflt: '', editType: 'calc', - }, selected: { @@ -79435,29 +85696,16 @@ module.exports = { editType: 'style' }, - r: scatterAttrs.r, - t: scatterAttrs.t, - _deprecated: { bardir: { valType: 'enumerated', - editType: 'calc', values: ['v', 'h'], - } } }; -},{"../../components/colorscale/attributes":112,"../../lib/extend":227,"../../plots/font_attributes":307,"../../plots/template_attributes":321,"../scatter/attributes":447,"./constants":338}],337:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../components/drawing/attributes":176,"../../lib/extend":279,"../../plots/font_attributes":359,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../scatter/attributes":494,"./constants":385}],384:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -79528,16 +85776,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../../components/colorscale/calc":113,"../../components/colorscale/helpers":116,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"../scatter/calc_selection":449,"./arrays_to_calcdata":335}],338:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/calc":163,"../../components/colorscale/helpers":166,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"../scatter/calc_selection":496,"./arrays_to_calcdata":382}],385:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -79550,15 +85789,7 @@ module.exports = { eventDataKeys: ['value', 'label'] }; -},{}],339:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],386:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -80330,15 +86561,7 @@ module.exports = { setGroupPositions: setGroupPositions }; -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/axes":279,"../../plots/cartesian/constraints":286,"../../registry":326,"./sieve.js":349,"fast-isnumeric":23}],340:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/axes":331,"../../plots/cartesian/constraints":338,"../../registry":373,"./sieve.js":396,"fast-isnumeric":31}],387:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -80365,6 +86588,8 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { } handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); coerce('orientation', (traceOut.x && !traceOut.y) ? 'h' : 'v'); coerce('base'); @@ -80515,15 +86740,7 @@ module.exports = { handleText: handleText }; -},{"../../components/color":105,"../../lib":233,"../../plots/cartesian/constraints":286,"../../registry":326,"../scatter/period_defaults":467,"../scatter/xy_defaults":474,"./attributes":336,"./style_defaults":351}],341:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../../plots/cartesian/constraints":338,"../../registry":373,"../scatter/period_defaults":514,"../scatter/xy_defaults":521,"./attributes":383,"./style_defaults":398}],388:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace) { @@ -80544,15 +86761,7 @@ module.exports = function eventData(out, pt, trace) { return out; }; -},{}],342:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],389:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -80622,16 +86831,7 @@ exports.getLineWidth = function(trace, di) { return w; }; -},{"../../lib":233,"fast-isnumeric":23,"tinycolor2":88}],343:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"fast-isnumeric":31,"tinycolor2":119}],390:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -80643,8 +86843,8 @@ var getLineWidth = _dereq_('./helpers').getLineWidth; var hoverLabelText = _dereq_('../../plots/cartesian/axes').hoverLabelText; var BADNUM = _dereq_('../../constants/numerical').BADNUM; -function hoverPoints(pointData, xval, yval, hovermode) { - var barPointData = hoverOnBars(pointData, xval, yval, hovermode); +function hoverPoints(pointData, xval, yval, hovermode, opts) { + var barPointData = hoverOnBars(pointData, xval, yval, hovermode, opts); if(barPointData) { var cd = barPointData.cd; @@ -80658,20 +86858,46 @@ function hoverPoints(pointData, xval, yval, hovermode) { } } -function hoverOnBars(pointData, xval, yval, hovermode) { +function hoverOnBars(pointData, xval, yval, hovermode, opts) { var cd = pointData.cd; var trace = cd[0].trace; var t = cd[0].t; var isClosest = (hovermode === 'closest'); var isWaterfall = (trace.type === 'waterfall'); var maxHoverDistance = pointData.maxHoverDistance; + var maxSpikeDistance = pointData.maxSpikeDistance; var posVal, sizeVal, posLetter, sizeLetter, dx, dy, pRangeCalc; - function thisBarMinPos(di) { return di[posLetter] - di.w / 2; } - function thisBarMaxPos(di) { return di[posLetter] + di.w / 2; } + if(trace.orientation === 'h') { + posVal = yval; + sizeVal = xval; + posLetter = 'y'; + sizeLetter = 'x'; + dx = sizeFn; + dy = positionFn; + } else { + posVal = xval; + sizeVal = yval; + posLetter = 'x'; + sizeLetter = 'y'; + dy = sizeFn; + dx = positionFn; + } - var minPos = isClosest ? + var period = trace[posLetter + 'period']; + + function thisBarMinPos(di) { return thisBarExtPos(di, -1); } + function thisBarMaxPos(di) { return thisBarExtPos(di, 1); } + + function thisBarExtPos(di, sgn) { + if(period) { + return di.p + sgn * Math.abs(di.p - di.orig_p); + } + return di[posLetter] + sgn * di.w / 2; + } + + var minPos = isClosest || period ? thisBarMinPos : function(di) { /* @@ -80689,60 +86915,62 @@ function hoverOnBars(pointData, xval, yval, hovermode) { return Math.min(thisBarMinPos(di), di.p - t.bardelta / 2); }; - var maxPos = isClosest ? + var maxPos = isClosest || period ? thisBarMaxPos : function(di) { return Math.max(thisBarMaxPos(di), di.p + t.bardelta / 2); }; - function _positionFn(_minPos, _maxPos) { + function inbox(_minPos, _maxPos, maxDistance) { + if(opts.finiteRange) maxDistance = 0; + // add a little to the pseudo-distance for wider bars, so that like scatter, // if you are over two overlapping bars, the narrower one wins. return Fx.inbox(_minPos - posVal, _maxPos - posVal, - maxHoverDistance + Math.min(1, Math.abs(_maxPos - _minPos) / pRangeCalc) - 1); + maxDistance + Math.min(1, Math.abs(_maxPos - _minPos) / pRangeCalc) - 1); } function positionFn(di) { - return _positionFn(minPos(di), maxPos(di)); + return inbox(minPos(di), maxPos(di), maxHoverDistance); } function thisBarPositionFn(di) { - return _positionFn(thisBarMinPos(di), thisBarMaxPos(di)); + return inbox(thisBarMinPos(di), thisBarMaxPos(di), maxSpikeDistance); + } + + function getSize(di) { + var s = di[sizeLetter]; + + if(isWaterfall) { + var rawS = Math.abs(di.rawS) || 0; + if(sizeVal > 0) { + s += rawS; + } else if(sizeVal < 0) { + s -= rawS; + } + } + + return s; } function sizeFn(di) { var v = sizeVal; var b = di.b; - var s = di[sizeLetter]; - - if(isWaterfall) { - var rawS = Math.abs(di.rawS) || 0; - if(v > 0) { - s += rawS; - } else if(v < 0) { - s -= rawS; - } - } + var s = getSize(di); // add a gradient so hovering near the end of a // bar makes it a little closer match return Fx.inbox(b - v, s - v, maxHoverDistance + (s - v) / (s - b) - 1); } - if(trace.orientation === 'h') { - posVal = yval; - sizeVal = xval; - posLetter = 'y'; - sizeLetter = 'x'; - dx = sizeFn; - dy = positionFn; - } else { - posVal = xval; - sizeVal = yval; - posLetter = 'x'; - sizeLetter = 'y'; - dy = sizeFn; - dx = positionFn; + function thisBarSizeFn(di) { + var v = sizeVal; + var b = di.b; + var s = getSize(di); + + // add a gradient so hovering near the end of a + // bar makes it a little closer match + return Fx.inbox(b - v, s - v, maxSpikeDistance + (s - v) / (s - b) - 1); } var pa = pointData[posLetter + 'a']; @@ -80787,12 +87015,12 @@ function hoverOnBars(pointData, xval, yval, hovermode) { var hasPeriod = di.orig_p !== undefined; pointData[posLetter + 'LabelVal'] = hasPeriod ? di.orig_p : di.p; - pointData.labelLabel = hoverLabelText(pa, pointData[posLetter + 'LabelVal']); - pointData.valueLabel = hoverLabelText(sa, pointData[sizeLetter + 'LabelVal']); - pointData.baseLabel = hoverLabelText(sa, di.b); + pointData.labelLabel = hoverLabelText(pa, pointData[posLetter + 'LabelVal'], trace[posLetter + 'hoverformat']); + pointData.valueLabel = hoverLabelText(sa, pointData[sizeLetter + 'LabelVal'], trace[sizeLetter + 'hoverformat']); + pointData.baseLabel = hoverLabelText(sa, di.b, trace[sizeLetter + 'hoverformat']); // spikelines always want "closest" distance regardless of hovermode - pointData.spikeDistance = (sizeFn(di) + thisBarPositionFn(di)) / 2 - maxHoverDistance; + pointData.spikeDistance = (thisBarSizeFn(di) + thisBarPositionFn(di)) / 2; // they also want to point to the data value, regardless of where the label goes // in case of bars shifted within groups pointData[posLetter + 'Spike'] = pa.c2p(di.p, true); @@ -80818,15 +87046,7 @@ module.exports = { getTraceColor: getTraceColor }; -},{"../../components/color":105,"../../components/fx":145,"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"./helpers":342}],344:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx":195,"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"./helpers":389}],391:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -80852,19 +87072,10 @@ module.exports = { categories: ['bar-like', 'cartesian', 'svg', 'bar', 'oriented', 'errorBarsOK', 'showLegend', 'zoomScale'], animatable: true, meta: { - } }; -},{"../../plots/cartesian":292,"../scatter/marker_colorbar":465,"./arrays_to_calcdata":335,"./attributes":336,"./calc":337,"./cross_trace_calc":339,"./defaults":340,"./event_data":341,"./hover":343,"./layout_attributes":345,"./layout_defaults":346,"./plot":347,"./select":348,"./style":350}],345:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../scatter/marker_colorbar":512,"./arrays_to_calcdata":382,"./attributes":383,"./calc":384,"./cross_trace_calc":386,"./defaults":387,"./event_data":388,"./hover":390,"./layout_attributes":392,"./layout_defaults":393,"./plot":394,"./select":395,"./style":397}],392:[function(_dereq_,module,exports){ 'use strict'; @@ -80873,46 +87084,30 @@ module.exports = { valType: 'enumerated', values: ['stack', 'group', 'overlay', 'relative'], dflt: 'group', - editType: 'calc', - }, barnorm: { valType: 'enumerated', values: ['', 'fraction', 'percent'], dflt: '', - editType: 'calc', - }, bargap: { valType: 'number', min: 0, max: 1, - editType: 'calc', - }, bargroupgap: { valType: 'number', min: 0, max: 1, dflt: 0, - editType: 'calc', - } }; -},{}],346:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],393:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -80964,18 +87159,10 @@ module.exports = function(layoutIn, layoutOut, fullData) { coerce('bargroupgap'); }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"./layout_attributes":345}],347:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"./layout_attributes":392}],394:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Lib = _dereq_('../../lib'); @@ -81622,11 +87809,11 @@ function calcTexttemplate(fullLayout, cd, index, xa, ya) { } function formatLabel(u) { - return tickText(pAxis, u, true).text; + return tickText(pAxis, pAxis.c2l(u), true).text; } function formatNumber(v) { - return tickText(vAxis, +v, true).text; + return tickText(vAxis, vAxis.c2l(v), true).text; } var cdi = cd[index]; @@ -81749,15 +87936,7 @@ module.exports = { toMoveInsideBar: toMoveInsideBar }; -},{"../../components/color":105,"../../components/drawing":127,"../../components/fx/helpers":141,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../registry":326,"./attributes":336,"./constants":338,"./helpers":342,"./style":350,"./uniform_text":352,"d3":21,"fast-isnumeric":23}],348:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"../../components/fx/helpers":191,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../registry":373,"./attributes":383,"./constants":385,"./helpers":389,"./style":397,"./uniform_text":399,"@plotly/d3":20,"fast-isnumeric":31}],395:[function(_dereq_,module,exports){ 'use strict'; module.exports = function selectPoints(searchInfo, selectionTester) { @@ -81813,15 +87992,7 @@ function getCentroid(d, xa, ya, isHorizontal, isFunnel) { } } -},{}],349:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],396:[function(_dereq_,module,exports){ 'use strict'; module.exports = Sieve; @@ -81927,18 +88098,10 @@ Sieve.prototype.getLabel = function getLabel(position, value) { return prefix + label; }; -},{"../../constants/numerical":212,"../../lib":233}],350:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285}],397:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../../components/color'); var Drawing = _dereq_('../../components/drawing'); var Lib = _dereq_('../../lib'); @@ -82096,7 +88259,7 @@ function getBarColor(cd, trace) { if(trace.type === 'waterfall') { return trace[cd.dir].marker.color; } - return cd.mc || trace.marker.color; + return cd.mcc || cd.mc || trace.marker.color; } module.exports = { @@ -82109,20 +88272,13 @@ module.exports = { resizeText: resizeText }; -},{"../../components/color":105,"../../components/drawing":127,"../../lib":233,"../../registry":326,"./attributes":336,"./helpers":342,"./uniform_text":352,"d3":21}],351:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"../../lib":285,"../../registry":373,"./attributes":383,"./helpers":389,"./uniform_text":399,"@plotly/d3":20}],398:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale; var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); +var coercePattern = _dereq_('../../lib').coercePattern; module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, defaultColor, layout) { coerce('marker.color', defaultColor); @@ -82143,22 +88299,16 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, default coerce('marker.line.width'); coerce('marker.opacity'); + coercePattern(coerce, 'marker.pattern'); + coerce('selected.marker.color'); coerce('unselected.marker.color'); }; -},{"../../components/color":105,"../../components/colorscale/defaults":115,"../../components/colorscale/helpers":116}],352:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/colorscale/defaults":165,"../../components/colorscale/helpers":166,"../../lib":285}],399:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); function resizeText(gd, gTrace, traceType) { @@ -82233,20 +88383,13 @@ module.exports = { resizeText: resizeText }; -},{"../../lib":233,"d3":21}],353:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"@plotly/d3":20}],400:[function(_dereq_,module,exports){ 'use strict'; var scatterAttrs = _dereq_('../scatter/attributes'); var barAttrs = _dereq_('../bar/attributes'); var colorAttrs = _dereq_('../../components/color/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -82257,37 +88400,27 @@ module.exports = { y: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, x: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, x0: { valType: 'any', - editType: 'calc+clearAxisTypes', - }, y0: { valType: 'any', - editType: 'calc+clearAxisTypes', - }, dx: { valType: 'number', - editType: 'calc', - }, dy: { valType: 'number', - editType: 'calc', - }, xperiod: scatterAttrs.xperiod, @@ -82296,65 +88429,49 @@ module.exports = { yperiod0: scatterAttrs.yperiod0, xperiodalignment: scatterAttrs.xperiodalignment, yperiodalignment: scatterAttrs.yperiodalignment, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), name: { valType: 'string', - editType: 'calc+clearAxisTypes', - }, q1: { valType: 'data_array', - editType: 'calc+clearAxisTypes', - }, median: { valType: 'data_array', - editType: 'calc+clearAxisTypes', - }, q3: { valType: 'data_array', - editType: 'calc+clearAxisTypes', - }, lowerfence: { valType: 'data_array', - editType: 'calc', - }, upperfence: { valType: 'data_array', - editType: 'calc', - }, notched: { valType: 'boolean', - editType: 'calc', - }, notchwidth: { valType: 'number', min: 0, max: 0.5, dflt: 0.25, - editType: 'calc', - }, notchspan: { valType: 'data_array', - editType: 'calc', - }, // TODO @@ -82365,80 +88482,60 @@ module.exports = { boxpoints: { valType: 'enumerated', values: ['all', 'outliers', 'suspectedoutliers', false], - editType: 'calc', - }, jitter: { valType: 'number', min: 0, max: 1, - editType: 'calc', - }, pointpos: { valType: 'number', min: -2, max: 2, - editType: 'calc', - }, boxmean: { valType: 'enumerated', values: [true, 'sd', false], - editType: 'calc', - }, mean: { valType: 'data_array', - editType: 'calc', - }, sd: { valType: 'data_array', - editType: 'calc', - }, orientation: { valType: 'enumerated', values: ['v', 'h'], - editType: 'calc+clearAxisTypes', - }, quartilemethod: { valType: 'enumerated', values: ['linear', 'exclusive', 'inclusive'], dflt: 'linear', - editType: 'calc', - }, width: { valType: 'number', min: 0, - dflt: 0, editType: 'calc', - }, marker: { outliercolor: { valType: 'color', dflt: 'rgba(0, 0, 0, 0)', - editType: 'style', - }, symbol: extendFlat({}, scatterMarkerAttrs.symbol, {arrayOk: false, editType: 'plot'}), @@ -82457,17 +88554,13 @@ module.exports = { ), outliercolor: { valType: 'color', - editType: 'style', - }, outlierwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'style', - }, editType: 'style' }, @@ -82477,17 +88570,13 @@ module.exports = { line: { color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', - min: 0, dflt: 2, editType: 'style', - }, editType: 'plot' }, @@ -82499,9 +88588,7 @@ module.exports = { min: 0, max: 1, dflt: 0.5, - editType: 'calc', - }, offsetgroup: barAttrs.offsetgroup, @@ -82517,34 +88604,21 @@ module.exports = { }, text: extendFlat({}, scatterAttrs.text, { - }), hovertext: extendFlat({}, scatterAttrs.hovertext, { - }), hovertemplate: hovertemplateAttrs({ - }), hoveron: { valType: 'flaglist', flags: ['boxes', 'points'], dflt: 'boxes+points', - editType: 'style', - } }; -},{"../../components/color/attributes":104,"../../lib/extend":227,"../../plots/template_attributes":321,"../bar/attributes":336,"../scatter/attributes":447}],354:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color/attributes":154,"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../bar/attributes":383,"../scatter/attributes":494}],401:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -82990,15 +89064,7 @@ function computeNotchSpan(cdi, N) { return 1.57 * (cdi.q3 - cdi.q1) / Math.sqrt(N); } -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"fast-isnumeric":23}],355:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"fast-isnumeric":31}],402:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -83222,15 +89288,7 @@ module.exports = { setPositionOffset: setPositionOffset }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../plots/cartesian/constraints":286}],356:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../plots/cartesian/constraints":338}],403:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -83250,6 +89308,8 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { if(traceOut.visible === false) return; handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); var hasPreCompStats = traceOut._hasPreCompStats; @@ -83538,15 +89598,7 @@ module.exports = { handlePointsDefaults: handlePointsDefaults }; -},{"../../components/color":105,"../../lib":233,"../../plots/cartesian/axis_autotype":280,"../../registry":326,"../bar/defaults":340,"../scatter/period_defaults":467,"./attributes":353}],357:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../../plots/cartesian/axis_autotype":332,"../../registry":373,"../bar/defaults":387,"../scatter/period_defaults":514,"./attributes":400}],404:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -83563,15 +89615,7 @@ module.exports = function eventData(out, pt) { return out; }; -},{}],358:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],405:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -83740,7 +89784,7 @@ function hoverOnBoxes(pointData, xval, yval, hovermode) { pointData2.attr = attr; pointData2[vLetter + '0'] = pointData2[vLetter + '1'] = valPx; pointData2[vLetter + 'LabelVal'] = val; - pointData2[vLetter + 'Label'] = (t.labels ? t.labels[attr] + ' ' : '') + Axes.hoverLabelText(vAxis, val); + pointData2[vLetter + 'Label'] = (t.labels ? t.labels[attr] + ' ' : '') + Axes.hoverLabelText(vAxis, val, trace[vLetter + 'hoverformat']); // Note: introduced to be able to distinguish a // clicked point from a box during click-to-select @@ -83850,15 +89894,7 @@ module.exports = { hoverOnPoints: hoverOnPoints }; -},{"../../components/color":105,"../../components/fx":145,"../../lib":233,"../../plots/cartesian/axes":279}],359:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx":195,"../../lib":285,"../../plots/cartesian/axes":331}],406:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -83881,19 +89917,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', 'symbols', 'oriented', 'box-violin', 'showLegend', 'boxLayout', 'zoomScale'], meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":353,"./calc":354,"./cross_trace_calc":355,"./defaults":356,"./event_data":357,"./hover":358,"./layout_attributes":360,"./layout_defaults":361,"./plot":362,"./select":363,"./style":364}],360:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./attributes":400,"./calc":401,"./cross_trace_calc":402,"./defaults":403,"./event_data":404,"./hover":405,"./layout_attributes":407,"./layout_defaults":408,"./plot":409,"./select":410,"./style":411}],407:[function(_dereq_,module,exports){ 'use strict'; @@ -83902,39 +89929,25 @@ module.exports = { valType: 'enumerated', values: ['group', 'overlay'], dflt: 'overlay', - editType: 'calc', - }, boxgap: { valType: 'number', min: 0, max: 1, dflt: 0.3, - editType: 'calc', - }, boxgroupgap: { valType: 'number', min: 0, max: 1, dflt: 0.3, - editType: 'calc', - } }; -},{}],361:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],408:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -83972,18 +89985,10 @@ module.exports = { _supply: _supply }; -},{"../../lib":233,"../../registry":326,"./layout_attributes":360}],362:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"./layout_attributes":407}],409:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Drawing = _dereq_('../../components/drawing'); @@ -84322,15 +90327,7 @@ module.exports = { plotBoxMean: plotBoxMean }; -},{"../../components/drawing":127,"../../lib":233,"d3":21}],363:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../lib":285,"@plotly/d3":20}],410:[function(_dereq_,module,exports){ 'use strict'; module.exports = function selectPoints(searchInfo, selectionTester) { @@ -84371,18 +90368,10 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; -},{}],364:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],411:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../../components/color'); var Drawing = _dereq_('../../components/drawing'); @@ -84445,19 +90434,12 @@ module.exports = { styleOnSelect: styleOnSelect }; -},{"../../components/color":105,"../../components/drawing":127,"d3":21}],365:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"@plotly/d3":20}],412:[function(_dereq_,module,exports){ 'use strict'; var heatmapAttrs = _dereq_('../heatmap/attributes'); var scatterAttrs = _dereq_('../scatter/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var dash = _dereq_('../../components/drawing/attributes').dash; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -84492,39 +90474,34 @@ module.exports = extendFlat({ transpose: heatmapAttrs.transpose, xtype: heatmapAttrs.xtype, ytype: heatmapAttrs.ytype, - zhoverformat: heatmapAttrs.zhoverformat, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), hovertemplate: heatmapAttrs.hovertemplate, hoverongaps: heatmapAttrs.hoverongaps, connectgaps: extendFlat({}, heatmapAttrs.connectgaps, { - }), fillcolor: { valType: 'color', - editType: 'calc', - }, autocontour: { valType: 'boolean', dflt: true, - editType: 'calc', impliedEdits: { 'contours.start': undefined, 'contours.end': undefined, 'contours.size': undefined }, - }, ncontours: { valType: 'integer', dflt: 15, min: 1, - editType: 'calc', - }, contours: { @@ -84532,83 +90509,62 @@ module.exports = extendFlat({ valType: 'enumerated', values: ['levels', 'constraint'], dflt: 'levels', - editType: 'calc', - }, start: { valType: 'number', dflt: null, - editType: 'plot', impliedEdits: {'^autocontour': false}, - }, end: { valType: 'number', dflt: null, - editType: 'plot', impliedEdits: {'^autocontour': false}, - }, size: { valType: 'number', dflt: null, min: 0, - editType: 'plot', impliedEdits: {'^autocontour': false}, - }, coloring: { valType: 'enumerated', values: ['fill', 'heatmap', 'lines', 'none'], dflt: 'fill', - editType: 'calc', - }, showlines: { valType: 'boolean', dflt: true, - editType: 'plot', - }, showlabels: { valType: 'boolean', dflt: false, - editType: 'plot', - }, labelfont: fontAttrs({ editType: 'plot', colorEditType: 'style', - }), labelformat: { valType: 'string', dflt: '', - editType: 'plot', - }, operation: { valType: 'enumerated', values: [].concat(COMPARISON_OPS2).concat(INTERVAL_OPS), - dflt: '=', editType: 'calc', - }, value: { valType: 'any', dflt: 0, - editType: 'calc', - }, editType: 'calc', impliedEdits: {'autocontour': false} @@ -84617,18 +90573,14 @@ module.exports = extendFlat({ line: { color: extendFlat({}, scatterLineAttrs.color, { editType: 'style+colorbars', - }), width: { valType: 'number', min: 0, - editType: 'style+colorbars', - }, dash: dash, smoothing: extendFlat({}, scatterLineAttrs.smoothing, { - }), editType: 'plot' } @@ -84640,15 +90592,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":112,"../../components/drawing/attributes":126,"../../constants/docs":209,"../../constants/filter_ops":210,"../../lib/extend":227,"../../plots/font_attributes":307,"../heatmap/attributes":387,"../scatter/attributes":447}],366:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../components/drawing/attributes":176,"../../constants/docs":262,"../../constants/filter_ops":263,"../../lib/extend":279,"../../plots/font_attributes":359,"../../plots/hoverformat_attributes":363,"../heatmap/attributes":434,"../scatter/attributes":494}],413:[function(_dereq_,module,exports){ 'use strict'; var Colorscale = _dereq_('../../components/colorscale'); @@ -84693,15 +90637,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../../components/colorscale":117,"../heatmap/calc":388,"./end_plus":376,"./set_contours":384}],367:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"../heatmap/calc":435,"./end_plus":423,"./set_contours":431}],414:[function(_dereq_,module,exports){ 'use strict'; module.exports = function(pathinfo, contours) { @@ -84783,15 +90719,7 @@ module.exports = function(pathinfo, contours) { } }; -},{}],368:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],415:[function(_dereq_,module,exports){ 'use strict'; var Colorscale = _dereq_('../../components/colorscale'); @@ -84834,15 +90762,7 @@ module.exports = { calc: calc }; -},{"../../components/colorscale":117,"./end_plus":376,"./make_color_map":381}],369:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"./end_plus":423,"./make_color_map":428}],416:[function(_dereq_,module,exports){ 'use strict'; module.exports = { // some constants to help with marching squares algorithm @@ -84912,16 +90832,7 @@ module.exports = { } }; -},{}],370:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],417:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -85006,15 +90917,7 @@ function handleConstraintValueDefaults(coerce, contours) { } } -},{"../../components/color":105,"../../constants/filter_ops":210,"./label_defaults":380,"fast-isnumeric":23}],371:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../constants/filter_ops":263,"./label_defaults":427,"fast-isnumeric":31}],418:[function(_dereq_,module,exports){ 'use strict'; var filterOps = _dereq_('../../constants/filter_ops'); @@ -85085,15 +90988,7 @@ function makeInequalitySettings(operation) { }; } -},{"../../constants/filter_ops":210,"fast-isnumeric":23}],372:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/filter_ops":263,"fast-isnumeric":31}],419:[function(_dereq_,module,exports){ 'use strict'; module.exports = function handleContourDefaults(traceIn, traceOut, coerce, coerce2) { @@ -85114,15 +91009,7 @@ module.exports = function handleContourDefaults(traceIn, traceOut, coerce, coerc if(autoContour || !contourSize) coerce('ncontours'); }; -},{}],373:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],420:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85214,15 +91101,7 @@ function copyPathinfo(pi) { }); } -},{"../../lib":233}],374:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],421:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85251,6 +91130,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); coerce('text'); coerce('hovertext'); @@ -85268,15 +91149,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } }; -},{"../../lib":233,"../heatmap/xyz_defaults":401,"../scatter/period_defaults":467,"./attributes":365,"./constraint_defaults":370,"./contours_defaults":372,"./style_defaults":386}],375:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../heatmap/xyz_defaults":448,"../scatter/period_defaults":514,"./attributes":412,"./constraint_defaults":417,"./contours_defaults":419,"./style_defaults":433}],422:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85332,16 +91205,7 @@ module.exports = function emptyPathinfo(contours, plotinfo, cd0) { return pathinfo; }; -},{"../../lib":233,"./constraint_mapping":371,"./end_plus":376}],376:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"./constraint_mapping":418,"./end_plus":423}],423:[function(_dereq_,module,exports){ 'use strict'; /* @@ -85352,15 +91216,7 @@ module.exports = function endPlus(contours) { return contours.end + contours.size / 1e6; }; -},{}],377:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],424:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85646,24 +91502,18 @@ function getInterpPx(pi, loc, step) { } } -},{"../../lib":233,"./constants":369}],378:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"./constants":416}],425:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); var heatmapHoverPoints = _dereq_('../heatmap/hover'); -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer) { - var hoverData = heatmapHoverPoints(pointData, xval, yval, hovermode, hoverLayer, true); +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + if(!opts) opts = {}; + opts.isContour = true; + + var hoverData = heatmapHoverPoints(pointData, xval, yval, hovermode, opts); if(hoverData) { hoverData.forEach(function(hoverPt) { @@ -85681,15 +91531,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay return hoverData; }; -},{"../../components/color":105,"../heatmap/hover":394}],379:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../heatmap/hover":441}],426:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -85706,20 +91548,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'contour', 'showLegend'], meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":365,"./calc":366,"./colorbar":368,"./defaults":374,"./hover":378,"./plot":383,"./style":385}],380:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian":344,"./attributes":412,"./calc":413,"./colorbar":415,"./defaults":421,"./hover":425,"./plot":430,"./style":432}],427:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85740,18 +91572,10 @@ module.exports = function handleLabelDefaults(coerce, layout, lineColor, opts) { if(opts.hasHover !== false) coerce('zhoverformat'); }; -},{"../../lib":233}],381:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],428:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Colorscale = _dereq_('../../components/colorscale'); var endPlus = _dereq_('./end_plus'); @@ -85824,15 +91648,7 @@ module.exports = function makeColorMap(trace) { ); }; -},{"../../components/colorscale":117,"./end_plus":376,"d3":21}],382:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"./end_plus":423,"@plotly/d3":20}],429:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -85916,19 +91732,10 @@ function getMarchingIndex(val, corners) { return (mi === 15) ? 0 : mi; } -},{"./constants":369}],383:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./constants":416}],430:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Drawing = _dereq_('../../components/drawing'); @@ -86607,15 +92414,7 @@ function makeClipMask(cd0) { return z; } -},{"../../components/colorscale":117,"../../components/drawing":127,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../plots/cartesian/set_convert":299,"../heatmap/plot":398,"./close_boundaries":367,"./constants":369,"./convert_to_constraints":373,"./empty_pathinfo":375,"./find_all_paths":377,"./make_crossings":382,"d3":21}],384:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"../../components/drawing":177,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../plots/cartesian/set_convert":351,"../heatmap/plot":445,"./close_boundaries":414,"./constants":416,"./convert_to_constraints":420,"./empty_pathinfo":422,"./find_all_paths":424,"./make_crossings":429,"@plotly/d3":20}],431:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -86711,19 +92510,10 @@ function autoContours(start, end, ncontours) { return dummyAx; } -},{"../../lib":233,"../../plots/cartesian/axes":279}],385:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331}],432:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Drawing = _dereq_('../../components/drawing'); var heatmapStyle = _dereq_('../heatmap/style'); @@ -86792,16 +92582,7 @@ module.exports = function style(gd) { heatmapStyle(gd); }; -},{"../../components/drawing":127,"../heatmap/style":399,"./make_color_map":381,"d3":21}],386:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/drawing":177,"../heatmap/style":446,"./make_color_map":428,"@plotly/d3":20}],433:[function(_dereq_,module,exports){ 'use strict'; var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); @@ -86837,22 +92618,14 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, layout, handleLabelDefaults(coerce, layout, lineColor, opts); }; -},{"../../components/colorscale/defaults":115,"./label_defaults":380}],387:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/defaults":165,"./label_defaults":427}],434:[function(_dereq_,module,exports){ 'use strict'; var scatterAttrs = _dereq_('../scatter/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); -var FORMAT_LINK = _dereq_('../../constants/docs').FORMAT_LINK; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -86860,7 +92633,6 @@ module.exports = extendFlat({ z: { valType: 'data_array', editType: 'calc', - }, x: extendFlat({}, scatterAttrs.x, {impliedEdits: {xtype: 'array'}}), x0: extendFlat({}, scatterAttrs.x0, {impliedEdits: {xtype: 'scaled'}}), @@ -86879,78 +92651,57 @@ module.exports = extendFlat({ text: { valType: 'data_array', editType: 'calc', - }, hovertext: { valType: 'data_array', editType: 'calc', - }, transpose: { valType: 'boolean', dflt: false, - editType: 'calc', - }, xtype: { valType: 'enumerated', values: ['array', 'scaled'], - editType: 'calc+clearAxisTypes', - }, ytype: { valType: 'enumerated', values: ['array', 'scaled'], - editType: 'calc+clearAxisTypes', - }, zsmooth: { valType: 'enumerated', values: ['fast', 'best', false], dflt: false, - editType: 'calc', - }, hoverongaps: { valType: 'boolean', dflt: true, - editType: 'none', - }, connectgaps: { valType: 'boolean', - editType: 'calc', - }, xgap: { valType: 'number', dflt: 0, min: 0, - editType: 'plot', - }, ygap: { valType: 'number', dflt: 0, min: 0, - editType: 'plot', - - }, - zhoverformat: { - valType: 'string', - dflt: '', - - editType: 'none', - }, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), + hovertemplate: hovertemplateAttrs(), showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, { @@ -86959,15 +92710,7 @@ module.exports = extendFlat({ colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":112,"../../constants/docs":209,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"../scatter/attributes":447}],388:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../scatter/attributes":494}],435:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -87168,15 +92911,7 @@ function dropZonBreaks(x, y, z) { return newZ; } -},{"../../components/colorscale/calc":113,"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"../../registry":326,"../histogram2d/calc":416,"./clean_2d_array":389,"./convert_column_xyz":391,"./find_empties":393,"./interp2d":396,"./make_bound_array":397}],389:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/calc":163,"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"../../registry":373,"../histogram2d/calc":463,"./clean_2d_array":436,"./convert_column_xyz":438,"./find_empties":440,"./interp2d":443,"./make_bound_array":444}],436:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -87245,15 +92980,7 @@ module.exports = function clean2dArray(zOld, trace, xa, ya) { return zNew; }; -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],390:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],437:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -87261,16 +92988,7 @@ module.exports = { max: 'zmax' }; -},{}],391:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],438:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -87351,16 +93069,7 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name, trace._after2before = after2before; }; -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276}],392:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328}],439:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -87384,6 +93093,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); coerce('text'); coerce('hovertext'); @@ -87397,15 +93108,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); }; -},{"../../components/colorscale/defaults":115,"../../lib":233,"../scatter/period_defaults":467,"./attributes":387,"./style_defaults":400,"./xyz_defaults":401}],393:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/defaults":165,"../../lib":285,"../scatter/period_defaults":514,"./attributes":434,"./style_defaults":447,"./xyz_defaults":448}],440:[function(_dereq_,module,exports){ 'use strict'; var maxRowLength = _dereq_('../../lib').maxRowLength; @@ -87502,15 +93205,7 @@ module.exports = function findEmpties(z) { return empties.sort(function(a, b) { return b[2] - a[2]; }); }; -},{"../../lib":233}],394:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],441:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -87518,7 +93213,10 @@ var Lib = _dereq_('../../lib'); var Axes = _dereq_('../../plots/cartesian/axes'); var extractOpts = _dereq_('../../components/colorscale').extractOpts; -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer, contour) { +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + if(!opts) opts = {}; + var isContour = opts.isContour; + var cd0 = pointData.cd[0]; var trace = cd0.trace; var xa = pointData.xa; @@ -87551,7 +93249,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay Fx.inbox(yval - y[0], yval - y[y.length - 1], 0) > 0) { return; } else { - if(contour) { + if(isContour) { var i2; x2 = [2 * x[0] - x[1]]; @@ -87576,7 +93274,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay var y1 = ya.c2p(y[ny + 1]); var _x, _y; - if(contour) { + if(isContour) { _x = cd0.orig_x || x; _y = cd0.orig_y || y; @@ -87640,15 +93338,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay })]; }; -},{"../../components/colorscale":117,"../../components/fx":145,"../../lib":233,"../../plots/cartesian/axes":279}],395:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"../../components/fx":195,"../../lib":285,"../../plots/cartesian/axes":331}],442:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -87665,19 +93355,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'showLegend'], meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":387,"./calc":388,"./colorbar":390,"./defaults":392,"./hover":394,"./plot":398,"./style":399}],396:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./attributes":434,"./calc":435,"./colorbar":437,"./defaults":439,"./hover":441,"./plot":445,"./style":446}],443:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -87802,15 +93483,7 @@ function iterateInterp2d(z, emptyPoints, overshoot) { return maxFractionalChange; } -},{"../../lib":233}],397:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],444:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -87890,19 +93563,10 @@ module.exports = function makeBoundArray(trace, arrayIn, v0In, dvIn, numbricks, return arrayOut; }; -},{"../../lib":233,"../../registry":326}],398:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373}],445:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Registry = _dereq_('../../registry'); @@ -88295,19 +93959,10 @@ function putColor(pixels, pxIndex, c) { pixels[pxIndex + 3] = Math.round(c[3] * 255); } -},{"../../components/colorscale":117,"../../constants/xmlns_namespaces":213,"../../lib":233,"../../registry":326,"d3":21,"tinycolor2":88}],399:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale":167,"../../constants/xmlns_namespaces":266,"../../lib":285,"../../registry":373,"@plotly/d3":20,"tinycolor2":119}],446:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); module.exports = function style(gd) { d3.select(gd).selectAll('.hm image') @@ -88316,16 +93971,7 @@ module.exports = function style(gd) { }); }; -},{"d3":21}],400:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"@plotly/d3":20}],447:[function(_dereq_,module,exports){ 'use strict'; module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { @@ -88339,15 +93985,7 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { coerce('zhoverformat'); }; -},{}],401:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],448:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -88386,10 +94024,7 @@ module.exports = function handleXYZDefaults(traceIn, traceOut, coerce, layout, x traceOut._length = null; } - if( - traceIn.type === 'heatmapgl' || - traceIn.type === 'contourgl' - ) return true; // skip calendars until we handle them in those traces + if(traceIn.type === 'heatmapgl') return true; // skip calendars until we handle them in those traces var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults'); handleCalendarDefaults(traceIn, traceOut, [xName, yName], layout); @@ -88441,18 +94076,11 @@ function isValidZ(z) { return (allRowsAreArrays && oneRowIsFilled && hasOneNumber); } -},{"../../lib":233,"../../registry":326,"fast-isnumeric":23}],402:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"fast-isnumeric":31}],449:[function(_dereq_,module,exports){ 'use strict'; var barAttrs = _dereq_('../bar/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var makeBinAttrs = _dereq_('./bin_attributes'); var constants = _dereq_('./constants'); @@ -88462,64 +94090,53 @@ module.exports = { x: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, y: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + text: extendFlat({}, barAttrs.text, { - }), hovertext: extendFlat({}, barAttrs.hovertext, { - }), orientation: barAttrs.orientation, histfunc: { valType: 'enumerated', values: ['count', 'sum', 'avg', 'min', 'max'], - dflt: 'count', editType: 'calc', - }, histnorm: { valType: 'enumerated', values: ['', 'percent', 'probability', 'density', 'probability density'], dflt: '', - editType: 'calc', - }, cumulative: { enabled: { valType: 'boolean', dflt: false, - editType: 'calc', - }, direction: { valType: 'enumerated', values: ['increasing', 'decreasing'], dflt: 'increasing', - editType: 'calc', - }, currentbin: { valType: 'enumerated', values: ['include', 'exclude', 'half'], dflt: 'include', - editType: 'calc', - }, editType: 'calc' }, @@ -88527,9 +94144,7 @@ module.exports = { valType: 'integer', min: 0, dflt: 0, - editType: 'calc', - }, xbins: makeBinAttrs('x', true), @@ -88537,32 +94152,24 @@ module.exports = { valType: 'integer', min: 0, dflt: 0, - editType: 'calc', - }, ybins: makeBinAttrs('y', true), autobinx: { valType: 'boolean', dflt: null, - editType: 'calc', - }, autobiny: { valType: 'boolean', dflt: null, - editType: 'calc', - }, bingroup: { valType: 'string', - dflt: '', editType: 'calc', - }, hovertemplate: hovertemplateAttrs({}, { @@ -88582,16 +94189,7 @@ module.exports = { } }; -},{"../../lib/extend":227,"../../plots/template_attributes":321,"../bar/attributes":336,"./bin_attributes":404,"./constants":408}],403:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../bar/attributes":383,"./bin_attributes":451,"./constants":455}],450:[function(_dereq_,module,exports){ 'use strict'; @@ -88607,51 +94205,28 @@ module.exports = function doAvg(size, counts) { return total; }; -},{}],404:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],451:[function(_dereq_,module,exports){ 'use strict'; module.exports = function makeBinAttrs(axLetter, match) { return { start: { valType: 'any', // for date axes - editType: 'calc', - }, end: { valType: 'any', // for date axes - editType: 'calc', - }, size: { valType: 'any', // for date axes - editType: 'calc', - }, editType: 'calc' }; }; -},{}],405:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],452:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -88716,16 +94291,7 @@ module.exports = { } }; -},{"fast-isnumeric":23}],406:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"fast-isnumeric":31}],453:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -88892,15 +94458,7 @@ function dateParts(v, pa, calendar) { return parts; } -},{"../../constants/numerical":212,"../../plots/cartesian/axes":279}],407:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../plots/cartesian/axes":331}],454:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -89471,31 +95029,14 @@ module.exports = { calcAllAutoBins: calcAllAutoBins }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"../bar/arrays_to_calcdata":335,"./average":403,"./bin_functions":405,"./bin_label_vals":406,"./norm_functions":414,"fast-isnumeric":23}],408:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"../bar/arrays_to_calcdata":382,"./average":450,"./bin_functions":452,"./bin_label_vals":453,"./norm_functions":461,"fast-isnumeric":31}],455:[function(_dereq_,module,exports){ 'use strict'; module.exports = { eventDataKeys: ['binNumber'] }; -},{}],409:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],456:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -89764,15 +95305,7 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) { } }; -},{"../../lib":233,"../../plots/cartesian/axis_ids":282,"../../plots/cartesian/constraints":286,"../../registry":326,"../bar/defaults":340}],410:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axis_ids":334,"../../plots/cartesian/constraints":338,"../../registry":373,"../bar/defaults":387}],457:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -89799,6 +95332,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('text'); coerce('hovertext'); coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); var orientation = coerce('orientation', (y && !x) ? 'h' : 'v'); var sampleLetter = orientation === 'v' ? 'x' : 'y'; @@ -89838,15 +95373,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {axis: 'x', inherit: 'y'}); }; -},{"../../components/color":105,"../../lib":233,"../../registry":326,"../bar/style_defaults":351,"./attributes":402}],411:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../../registry":373,"../bar/style_defaults":398,"./attributes":449}],458:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -89887,23 +95414,14 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],412:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],459:[function(_dereq_,module,exports){ 'use strict'; var barHover = _dereq_('../bar/hover').hoverPoints; var hoverLabelText = _dereq_('../../plots/cartesian/axes').hoverLabelText; -module.exports = function hoverPoints(pointData, xval, yval, hovermode) { - var pts = barHover(pointData, xval, yval, hovermode); +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + var pts = barHover(pointData, xval, yval, hovermode, opts); if(!pts) return; @@ -89914,21 +95432,13 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { if(!trace.cumulative.enabled) { var posLetter = trace.orientation === 'h' ? 'y' : 'x'; - pointData[posLetter + 'Label'] = hoverLabelText(pointData[posLetter + 'a'], di.ph0, di.ph1); + pointData[posLetter + 'Label'] = hoverLabelText(pointData[posLetter + 'a'], [di.ph0, di.ph1], trace[posLetter + 'hoverformat']); } return pts; }; -},{"../../plots/cartesian/axes":279,"../bar/hover":343}],413:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/axes":331,"../bar/hover":390}],460:[function(_dereq_,module,exports){ 'use strict'; /** @@ -89966,20 +95476,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['bar-like', 'cartesian', 'svg', 'bar', 'histogram', 'oriented', 'errorBarsOK', 'showLegend'], meta: { - } }; -},{"../../plots/cartesian":292,"../bar/cross_trace_calc":339,"../bar/layout_attributes":345,"../bar/layout_defaults":346,"../bar/plot":347,"../bar/select":348,"../bar/style":350,"../scatter/marker_colorbar":465,"./attributes":402,"./calc":407,"./cross_trace_defaults":409,"./defaults":410,"./event_data":411,"./hover":412}],414:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian":344,"../bar/cross_trace_calc":386,"../bar/layout_attributes":392,"../bar/layout_defaults":393,"../bar/plot":394,"../bar/select":395,"../bar/style":397,"../scatter/marker_colorbar":512,"./attributes":449,"./calc":454,"./cross_trace_defaults":456,"./defaults":457,"./event_data":458,"./hover":459}],461:[function(_dereq_,module,exports){ 'use strict'; @@ -90005,21 +95505,14 @@ module.exports = { } }; -},{}],415:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],462:[function(_dereq_,module,exports){ 'use strict'; var histogramAttrs = _dereq_('../histogram/attributes'); var makeBinAttrs = _dereq_('../histogram/bin_attributes'); var heatmapAttrs = _dereq_('../heatmap/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); @@ -90033,13 +95526,11 @@ module.exports = extendFlat( z: { valType: 'data_array', editType: 'calc', - }, marker: { color: { valType: 'data_array', editType: 'calc', - }, editType: 'calc' }, @@ -90054,34 +95545,25 @@ module.exports = extendFlat( autobiny: histogramAttrs.autobiny, bingroup: extendFlat({}, histogramAttrs.bingroup, { - }), xbingroup: extendFlat({}, histogramAttrs.bingroup, { - }), ybingroup: extendFlat({}, histogramAttrs.bingroup, { - }), xgap: heatmapAttrs.xgap, ygap: heatmapAttrs.ygap, zsmooth: heatmapAttrs.zsmooth, - zhoverformat: heatmapAttrs.zhoverformat, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), hovertemplate: hovertemplateAttrs({}, {keys: 'z'}), showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":112,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"../heatmap/attributes":387,"../histogram/attributes":402,"../histogram/bin_attributes":404}],416:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../heatmap/attributes":434,"../histogram/attributes":449,"../histogram/bin_attributes":451}],463:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90292,16 +95774,7 @@ function getRanges(edges, uniqueVals, gapLow, gapHigh, ax, calendar) { return out; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"../histogram/average":403,"../histogram/bin_functions":405,"../histogram/bin_label_vals":406,"../histogram/calc":407,"../histogram/norm_functions":414}],417:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../histogram/average":450,"../histogram/bin_functions":452,"../histogram/bin_label_vals":453,"../histogram/calc":454,"../histogram/norm_functions":461}],464:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90323,25 +95796,18 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleStyleDefaults(traceIn, traceOut, coerce, layout); colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); }; -},{"../../components/colorscale/defaults":115,"../../lib":233,"../heatmap/style_defaults":400,"./attributes":415,"./sample_defaults":420}],418:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/defaults":165,"../../lib":285,"../heatmap/style_defaults":447,"./attributes":462,"./sample_defaults":467}],465:[function(_dereq_,module,exports){ 'use strict'; var heatmapHover = _dereq_('../heatmap/hover'); var hoverLabelText = _dereq_('../../plots/cartesian/axes').hoverLabelText; -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer, contour) { - var pts = heatmapHover(pointData, xval, yval, hovermode, hoverLayer, contour); +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + var pts = heatmapHover(pointData, xval, yval, hovermode, opts); if(!pts) return; @@ -90350,24 +95816,17 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay var ny = indices[0]; var nx = indices[1]; var cd0 = pointData.cd[0]; + var trace = cd0.trace; var xRange = cd0.xRanges[nx]; var yRange = cd0.yRanges[ny]; - pointData.xLabel = hoverLabelText(pointData.xa, xRange[0], xRange[1]); - pointData.yLabel = hoverLabelText(pointData.ya, yRange[0], yRange[1]); + pointData.xLabel = hoverLabelText(pointData.xa, [xRange[0], xRange[1]], trace.xhoverformat); + pointData.yLabel = hoverLabelText(pointData.ya, [yRange[0], yRange[1]], trace.yhoverformat); return pts; }; -},{"../../plots/cartesian/axes":279,"../heatmap/hover":394}],419:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/axes":331,"../heatmap/hover":441}],466:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -90387,20 +95846,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'histogram', 'showLegend'], meta: { - - } }; -},{"../../plots/cartesian":292,"../heatmap/calc":388,"../heatmap/colorbar":390,"../heatmap/plot":398,"../heatmap/style":399,"../histogram/cross_trace_defaults":409,"../histogram/event_data":411,"./attributes":415,"./defaults":417,"./hover":418}],420:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../heatmap/calc":435,"../heatmap/colorbar":437,"../heatmap/plot":445,"../heatmap/style":446,"../histogram/cross_trace_defaults":456,"../histogram/event_data":458,"./attributes":462,"./defaults":464,"./hover":465}],467:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -90437,20 +95886,13 @@ module.exports = function handleSampleDefaults(traceIn, traceOut, coerce, layout coerce('autobiny'); }; -},{"../../lib":233,"../../registry":326}],421:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373}],468:[function(_dereq_,module,exports){ 'use strict'; var histogram2dAttrs = _dereq_('../histogram2d/attributes'); var contourAttrs = _dereq_('../contour/attributes'); var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -90480,13 +95922,14 @@ module.exports = extendFlat({ color: contourAttrs.line.color, width: extendFlat({}, contourAttrs.line.width, { dflt: 0.5, - }), dash: contourAttrs.line.dash, smoothing: contourAttrs.line.smoothing, editType: 'plot' }, - zhoverformat: histogram2dAttrs.zhoverformat, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), hovertemplate: histogram2dAttrs.hovertemplate }, colorScaleAttrs('', { @@ -90495,16 +95938,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":112,"../../lib/extend":227,"../contour/attributes":365,"../histogram2d/attributes":415}],422:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/attributes":162,"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../contour/attributes":412,"../histogram2d/attributes":462}],469:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90530,17 +95964,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleContoursDefaults(traceIn, traceOut, coerce, coerce2); handleStyleDefaults(traceIn, traceOut, coerce, layout); coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); }; -},{"../../lib":233,"../contour/contours_defaults":372,"../contour/style_defaults":386,"../histogram2d/sample_defaults":420,"./attributes":421}],423:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../contour/contours_defaults":419,"../contour/style_defaults":433,"../histogram2d/sample_defaults":467,"./attributes":468}],470:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -90559,20 +95987,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'contour', 'histogram', 'showLegend'], meta: { - - } }; -},{"../../plots/cartesian":292,"../contour/calc":366,"../contour/colorbar":368,"../contour/hover":378,"../contour/plot":383,"../contour/style":385,"../histogram/cross_trace_defaults":409,"./attributes":421,"./defaults":422}],424:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../contour/calc":413,"../contour/colorbar":415,"../contour/hover":425,"../contour/plot":430,"../contour/style":432,"../histogram/cross_trace_defaults":456,"./attributes":468,"./defaults":469}],471:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -90592,22 +96010,22 @@ for(var i = 0; i < cm.length; i++) { module.exports = extendFlat({ source: { valType: 'string', - editType: 'calc', - }, z: { valType: 'data_array', - editType: 'calc', - }, colormodel: { valType: 'enumerated', values: cm, - editType: 'calc', - + }, + zsmooth: { + valType: 'enumerated', + values: ['fast', false], + dflt: false, + editType: 'plot', }, zmin: { valType: 'info_array', @@ -90617,9 +96035,7 @@ module.exports = extendFlat({ {valType: 'number', editType: 'calc'}, {valType: 'number', editType: 'calc'} ], - editType: 'calc', - }, zmax: { valType: 'info_array', @@ -90629,47 +96045,35 @@ module.exports = extendFlat({ {valType: 'number', editType: 'calc'}, {valType: 'number', editType: 'calc'} ], - editType: 'calc', - }, x0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', - }, y0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', - }, dx: { valType: 'number', dflt: 1, - editType: 'calc', - }, dy: { valType: 'number', dflt: 1, - editType: 'calc', - }, text: { valType: 'data_array', editType: 'plot', - }, hovertext: { valType: 'data_array', editType: 'plot', - }, hoverinfo: extendFlat({}, baseAttrs.hoverinfo, { flags: ['x', 'y', 'z', 'color', 'name', 'text'], @@ -90682,15 +96086,7 @@ module.exports = extendFlat({ transforms: undefined }); -},{"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"./constants":426}],425:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plots/attributes":327,"../../plots/template_attributes":368,"./constants":473}],472:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90780,15 +96176,7 @@ function makeScaler(trace) { }; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"./constants":426,"./helpers":429,"fast-isnumeric":23}],426:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"./constants":473,"./helpers":476,"fast-isnumeric":31}],473:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -90838,18 +96226,23 @@ module.exports = { }, suffix: ['°', '%', '%', ''] } - } + }, + // For pixelated image rendering + // http://phrogz.net/tmp/canvas_image_zoom.html + // https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering + pixelatedStyle: [ + 'image-rendering: optimizeSpeed', + 'image-rendering: -moz-crisp-edges', + 'image-rendering: -o-crisp-edges', + 'image-rendering: -webkit-optimize-contrast', + 'image-rendering: optimize-contrast', + 'image-rendering: crisp-edges', + 'image-rendering: pixelated', + '' + ].join('; ') }; -},{}],427:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],474:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90891,6 +96284,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) { traceOut.zmax = cm.zmaxDflt; } + coerce('zsmooth'); coerce('text'); coerce('hovertext'); coerce('hovertemplate'); @@ -90898,15 +96292,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) { traceOut._length = null; }; -},{"../../lib":233,"../../snapshot/helpers":330,"./attributes":424,"./constants":426}],428:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../snapshot/helpers":377,"./attributes":471,"./constants":473}],475:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -90920,36 +96306,20 @@ module.exports = function eventData(out, pt) { return out; }; -},{}],429:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],476:[function(_dereq_,module,exports){ 'use strict'; -var sizeOf = _dereq_('image-size'); +var probeSync = _dereq_('probe-image-size/sync'); var dataUri = _dereq_('../../snapshot/helpers').IMAGE_URL_PREFIX; var Buffer = _dereq_('buffer/').Buffer; // note: the trailing slash is important! exports.getImageSize = function(src) { var data = src.replace(dataUri, ''); var buff = new Buffer(data, 'base64'); - return sizeOf(buff); + return probeSync(buff); }; -},{"../../snapshot/helpers":330,"buffer/":18,"image-size":58}],430:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../snapshot/helpers":377,"buffer/":28,"probe-image-size/sync":95}],477:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -91041,15 +96411,7 @@ module.exports = function hoverPoints(pointData, xval, yval) { })]; }; -},{"../../components/fx":145,"../../lib":233,"./constants":426}],431:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/fx":195,"../../lib":285,"./constants":473}],478:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -91067,22 +96429,13 @@ module.exports = { categories: ['cartesian', 'svg', '2dMap', 'noSortingByValue'], animatable: false, meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":424,"./calc":425,"./defaults":427,"./event_data":428,"./hover":430,"./plot":432,"./style":433}],432:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./attributes":471,"./calc":472,"./defaults":474,"./event_data":475,"./hover":477,"./plot":479,"./style":480}],479:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var strTranslate = Lib.strTranslate; var xmlnsNamespaces = _dereq_('../../constants/xmlns_namespaces'); @@ -91100,8 +96453,11 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { var plotGroup = d3.select(this); var cd0 = cd[0]; var trace = cd0.trace; - var fastImage = supportsPixelatedImage && !trace._hasZ && trace._hasSource && xa.type === 'linear' && ya.type === 'linear'; - trace._fastImage = fastImage; + var realImage = ( + ((trace.zsmooth === 'fast') || (trace.zsmooth === false && supportsPixelatedImage)) && + !trace._hasZ && trace._hasSource && xa.type === 'linear' && ya.type === 'linear' + ); + trace._realImage = realImage; var z = cd0.z; var x0 = cd0.x0; @@ -91147,7 +96503,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { } // Reduce image size when zoomed in to save memory - if(!fastImage) { + if(!realImage) { var extra = 0.5; // half the axis size left = Math.max(-extra * xa._length, left); right = Math.min((1 + extra) * xa._length, right); @@ -91210,11 +96566,9 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { image3.exit().remove(); - // Pixelated image rendering - // http://phrogz.net/tmp/canvas_image_zoom.html - // https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering - var style = 'image-rendering: optimizeSpeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; image-rendering: optimize-contrast; image-rendering: crisp-edges; image-rendering: pixelated;'; - if(fastImage) { + var style = (trace.zsmooth === false) ? constants.pixelatedStyle : ''; + + if(realImage) { var xRange = Lib.simpleMap(xa.range, xa.r2l); var yRange = Lib.simpleMap(ya.range, ya.r2l); @@ -91270,7 +96624,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { canvas = drawMagnifiedPixelsOnCanvas(function(i, j) {return z[j][i];}); href = canvas.toDataURL('image/png'); } else if(trace._hasSource) { - if(fastImage) { + if(realImage) { href = trace.source; } else { var context = trace._canvas.el.getContext('2d'); @@ -91301,18 +96655,10 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { }); }; -},{"../../constants/xmlns_namespaces":213,"../../lib":233,"./constants":426,"d3":21}],433:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/xmlns_namespaces":266,"../../lib":285,"./constants":473,"@plotly/d3":20}],480:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); module.exports = function style(gd) { d3.select(gd).selectAll('.im image') @@ -91321,15 +96667,7 @@ module.exports = function style(gd) { }); }; -},{"d3":21}],434:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"@plotly/d3":20}],481:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -91345,61 +96683,49 @@ var textFontAttrs = fontAttrs({ editType: 'plot', arrayOk: true, colorEditType: 'plot', - }); module.exports = { labels: { valType: 'data_array', editType: 'calc', - }, // equivalent of x0 and dx, if label is missing label0: { valType: 'number', - dflt: 0, editType: 'calc', - }, dlabel: { valType: 'number', - dflt: 1, editType: 'calc', - }, values: { valType: 'data_array', editType: 'calc', - }, marker: { colors: { valType: 'data_array', // TODO 'color_array' ? editType: 'calc', - }, line: { color: { valType: 'color', - dflt: colorAttrs.defaultLine, arrayOk: true, editType: 'style', - }, width: { valType: 'number', - min: 0, dflt: 0, arrayOk: true, editType: 'style', - }, editType: 'calc' }, @@ -91409,15 +96735,12 @@ module.exports = { text: { valType: 'data_array', editType: 'plot', - }, hovertext: { valType: 'string', - dflt: '', arrayOk: true, editType: 'style', - }, // 'see eg:' @@ -91426,20 +96749,16 @@ module.exports = { // 'of its own. but the point is the size of the whole pie is important.)' scalegroup: { valType: 'string', - dflt: '', editType: 'calc', - }, // labels (legend is handled by plots.attributes.showlegend and layout.hiddenlabels) textinfo: { valType: 'flaglist', - flags: ['label', 'text', 'value', 'percent'], extras: ['none'], editType: 'calc', - }, hoverinfo: extendFlat({}, baseAttrs.hoverinfo, { flags: ['label', 'text', 'value', 'percent', 'name'] @@ -91452,48 +96771,36 @@ module.exports = { }), textposition: { valType: 'enumerated', - values: ['inside', 'outside', 'auto', 'none'], dflt: 'auto', arrayOk: true, editType: 'plot', - }, textfont: extendFlat({}, textFontAttrs, { - }), insidetextorientation: { valType: 'enumerated', - values: ['horizontal', 'radial', 'tangential', 'auto'], dflt: 'auto', editType: 'plot', - }, insidetextfont: extendFlat({}, textFontAttrs, { - }), outsidetextfont: extendFlat({}, textFontAttrs, { - }), automargin: { valType: 'boolean', dflt: false, - editType: 'plot', - }, title: { text: { valType: 'string', dflt: '', - editType: 'plot', - }, font: extendFlat({}, textFontAttrs, { - }), position: { valType: 'enumerated', @@ -91502,9 +96809,7 @@ module.exports = { 'middle center', 'bottom left', 'bottom center', 'bottom right' ], - editType: 'plot', - }, editType: 'plot' @@ -91515,21 +96820,17 @@ module.exports = { hole: { valType: 'number', - min: 0, max: 1, dflt: 0, editType: 'calc', - }, // ordering and direction sort: { valType: 'boolean', - dflt: true, editType: 'calc', - }, direction: { /** @@ -91541,42 +96842,33 @@ module.exports = { */ valType: 'enumerated', values: ['clockwise', 'counterclockwise'], - dflt: 'counterclockwise', editType: 'calc', - }, rotation: { valType: 'number', - min: -360, max: 360, dflt: 0, editType: 'calc', - }, pull: { valType: 'number', - min: 0, max: 1, dflt: 0, arrayOk: true, editType: 'calc', - }, _deprecated: { title: { valType: 'string', dflt: '', - editType: 'calc', - }, titlefont: extendFlat({}, textFontAttrs, { - }), titleposition: { valType: 'enumerated', @@ -91585,22 +96877,12 @@ module.exports = { 'middle center', 'bottom left', 'bottom center', 'bottom right' ], - editType: 'calc', - } } }; -},{"../../components/color/attributes":104,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/domain":306,"../../plots/font_attributes":307,"../../plots/template_attributes":321}],435:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color/attributes":154,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/domain":358,"../../plots/font_attributes":359,"../../plots/template_attributes":368}],482:[function(_dereq_,module,exports){ 'use strict'; var plots = _dereq_('../../plots/plots'); @@ -91615,15 +96897,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout); }; -},{"../../plots/plots":313}],436:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/plots":366}],483:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -91798,15 +97072,7 @@ module.exports = { generateExtendedColors: generateExtendedColors }; -},{"../../components/color":105,"fast-isnumeric":23,"tinycolor2":88}],437:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"fast-isnumeric":31,"tinycolor2":119}],484:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -91929,15 +97195,7 @@ module.exports = { supplyDefaults: supplyDefaults }; -},{"../../lib":233,"../../plots/domain":306,"../bar/defaults":340,"./attributes":434,"fast-isnumeric":23}],438:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/domain":358,"../bar/defaults":387,"./attributes":481,"fast-isnumeric":31}],485:[function(_dereq_,module,exports){ 'use strict'; var appendArrayMultiPointValues = _dereq_('../../components/fx/helpers').appendArrayMultiPointValues; @@ -91978,15 +97236,7 @@ module.exports = function eventData(pt, trace) { return out; }; -},{"../../components/fx/helpers":141}],439:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/fx/helpers":191}],486:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -92026,15 +97276,7 @@ exports.getRotationAngle = function(rotation) { return (rotation === 'auto' ? 0 : rotation) * Math.PI / 180; }; -},{"../../lib":233}],440:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],487:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -92055,52 +97297,29 @@ module.exports = { basePlotModule: _dereq_('./base_plot'), categories: ['pie-like', 'pie', 'showLegend'], meta: { - } }; -},{"./attributes":434,"./base_plot":435,"./calc":436,"./defaults":437,"./layout_attributes":441,"./layout_defaults":442,"./plot":443,"./style":444,"./style_one":445}],441:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":481,"./base_plot":482,"./calc":483,"./defaults":484,"./layout_attributes":488,"./layout_defaults":489,"./plot":490,"./style":491,"./style_one":492}],488:[function(_dereq_,module,exports){ 'use strict'; module.exports = { hiddenlabels: { valType: 'data_array', - editType: 'calc', - }, piecolorway: { valType: 'colorlist', - editType: 'calc', - }, extendpiecolors: { valType: 'boolean', dflt: true, - editType: 'calc', - } }; -},{}],442:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],489:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -92117,18 +97336,10 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { coerce('extendpiecolors'); }; -},{"../../lib":233,"./layout_attributes":441}],443:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./layout_attributes":488}],490:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Plots = _dereq_('../../plots/plots'); var Fx = _dereq_('../../components/fx'); @@ -93297,18 +98508,10 @@ module.exports = { computeTransform: computeTransform }; -},{"../../components/color":105,"../../components/drawing":127,"../../components/fx":145,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../bar/constants":338,"../bar/uniform_text":352,"./event_data":438,"./helpers":439,"d3":21}],444:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"../../components/fx":195,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../bar/constants":385,"../bar/uniform_text":399,"./event_data":485,"./helpers":486,"@plotly/d3":20}],491:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var styleOne = _dereq_('./style_one'); var resizeText = _dereq_('../bar/uniform_text').resizeText; @@ -93330,15 +98533,7 @@ module.exports = function style(gd) { }); }; -},{"../bar/uniform_text":352,"./style_one":445,"d3":21}],445:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../bar/uniform_text":399,"./style_one":492,"@plotly/d3":20}],492:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -93354,16 +98549,7 @@ module.exports = function styleOne(s, pt, trace) { .call(Color.stroke, lineColor); }; -},{"../../components/color":105,"./helpers":439}],446:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"./helpers":486}],493:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -93406,17 +98592,10 @@ module.exports = function arraysToCalcdata(cd, trace) { } }; -},{"../../lib":233}],447:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],494:[function(_dereq_,module,exports){ 'use strict'; +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); @@ -93432,18 +98611,14 @@ function axisPeriod(axis) { return { valType: 'any', dflt: 0, - editType: 'calc', - }; } function axisPeriod0(axis) { return { valType: 'any', - editType: 'calc', - }; } @@ -93454,9 +98629,7 @@ function axisPeriodAlignment(axis) { 'start', 'middle', 'end' ], dflt: 'middle', - editType: 'calc', - }; } @@ -93465,45 +98638,35 @@ module.exports = { valType: 'data_array', editType: 'calc+clearAxisTypes', anim: true, - }, x0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', anim: true, - }, dx: { valType: 'number', dflt: 1, - editType: 'calc', anim: true, - }, y: { valType: 'data_array', editType: 'calc+clearAxisTypes', anim: true, - }, y0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', anim: true, - }, dy: { valType: 'number', dflt: 1, - editType: 'calc', anim: true, - }, xperiod: axisPeriod('x'), @@ -93512,45 +98675,37 @@ module.exports = { yperiod0: axisPeriod0('y0'), xperiodalignment: axisPeriodAlignment('x'), yperiodalignment: axisPeriodAlignment('y'), + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), stackgroup: { valType: 'string', - dflt: '', editType: 'calc', - }, orientation: { valType: 'enumerated', - values: ['v', 'h'], editType: 'calc', - }, groupnorm: { valType: 'enumerated', values: ['', 'fraction', 'percent'], dflt: '', - editType: 'calc', - }, stackgaps: { valType: 'enumerated', values: ['infer zero', 'interpolate'], dflt: 'infer zero', - editType: 'calc', - }, text: { valType: 'string', - dflt: '', arrayOk: true, editType: 'calc', - }, texttemplate: texttemplateAttrs({}, { @@ -93558,71 +98713,56 @@ module.exports = { }), hovertext: { valType: 'string', - dflt: '', arrayOk: true, editType: 'style', - }, mode: { valType: 'flaglist', flags: ['lines', 'markers', 'text'], extras: ['none'], - editType: 'calc', - }, hoveron: { valType: 'flaglist', flags: ['points', 'fills'], - editType: 'style', - }, hovertemplate: hovertemplateAttrs({}, { keys: constants.eventDataKeys }), + line: { color: { valType: 'color', - editType: 'style', anim: true, - }, width: { valType: 'number', min: 0, dflt: 2, - editType: 'style', anim: true, - }, shape: { valType: 'enumerated', values: ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'], dflt: 'linear', - editType: 'plot', - }, smoothing: { valType: 'number', min: 0, max: 1.3, dflt: 1, - editType: 'plot', - }, dash: extendFlat({}, dash, {editType: 'style'}), simplify: { valType: 'boolean', dflt: true, - editType: 'plot', - }, editType: 'plot' }, @@ -93630,31 +98770,23 @@ module.exports = { connectgaps: { valType: 'boolean', dflt: false, - editType: 'calc', - }, cliponaxis: { valType: 'boolean', dflt: true, - editType: 'plot', - }, fill: { valType: 'enumerated', values: ['none', 'tozeroy', 'tozerox', 'tonexty', 'tonextx', 'toself', 'tonext'], - editType: 'calc', - }, fillcolor: { valType: 'color', - editType: 'style', anim: true, - }, marker: extendFlat({ symbol: { @@ -93662,60 +98794,46 @@ module.exports = { values: Drawing.symbolList, dflt: 'circle', arrayOk: true, - editType: 'style', - }, opacity: { valType: 'number', min: 0, max: 1, arrayOk: true, - editType: 'style', anim: true, - }, size: { valType: 'number', min: 0, dflt: 6, arrayOk: true, - editType: 'calc', anim: true, - }, maxdisplayed: { valType: 'number', min: 0, dflt: 0, - editType: 'plot', - }, sizeref: { valType: 'number', dflt: 1, - editType: 'calc', - }, sizemin: { valType: 'number', min: 0, dflt: 0, - editType: 'calc', - }, sizemode: { valType: 'enumerated', values: ['diameter', 'area'], dflt: 'diameter', - editType: 'calc', - }, line: extendFlat({ @@ -93723,10 +98841,8 @@ module.exports = { valType: 'number', min: 0, arrayOk: true, - editType: 'style', anim: true, - }, editType: 'calc' }, @@ -93738,16 +98854,12 @@ module.exports = { values: ['radial', 'horizontal', 'vertical', 'none'], arrayOk: true, dflt: 'none', - editType: 'calc', - }, color: { valType: 'color', arrayOk: true, - editType: 'calc', - }, editType: 'calc' }, @@ -93761,31 +98873,23 @@ module.exports = { valType: 'number', min: 0, max: 1, - editType: 'style', - }, color: { valType: 'color', - editType: 'style', - }, size: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'style' }, textfont: { color: { valType: 'color', - editType: 'style', - }, editType: 'style' }, @@ -93797,31 +98901,23 @@ module.exports = { valType: 'number', min: 0, max: 1, - editType: 'style', - }, color: { valType: 'color', - editType: 'style', - }, size: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'style' }, textfont: { color: { valType: 'color', - editType: 'style', - }, editType: 'style' }, @@ -93837,38 +98933,16 @@ module.exports = { ], dflt: 'middle center', arrayOk: true, - editType: 'calc', - }, textfont: fontAttrs({ editType: 'calc', colorEditType: 'style', arrayOk: true, - }), - - r: { - valType: 'data_array', - editType: 'calc', - - }, - t: { - valType: 'data_array', - editType: 'calc', - - } }; -},{"../../components/colorscale/attributes":112,"../../components/drawing":127,"../../components/drawing/attributes":126,"../../lib/extend":227,"../../plots/font_attributes":307,"../../plots/template_attributes":321,"./constants":451}],448:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../components/drawing":177,"../../components/drawing/attributes":176,"../../lib/extend":279,"../../plots/font_attributes":359,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"./constants":498}],495:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -94159,15 +99233,7 @@ module.exports = { getStackOpts: getStackOpts }; -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"./arrays_to_calcdata":446,"./calc_selection":449,"./colorscale_calc":450,"./subtypes":472,"fast-isnumeric":23}],449:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"./arrays_to_calcdata":493,"./calc_selection":496,"./colorscale_calc":497,"./subtypes":519,"fast-isnumeric":31}],496:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94178,15 +99244,7 @@ module.exports = function calcSelection(cd, trace) { } }; -},{"../../lib":233}],450:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],497:[function(_dereq_,module,exports){ 'use strict'; var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale; @@ -94221,16 +99279,7 @@ module.exports = function calcMarkerColorscale(gd, trace) { } }; -},{"../../components/colorscale/calc":113,"../../components/colorscale/helpers":116,"./subtypes":472}],451:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/calc":163,"../../components/colorscale/helpers":166,"./subtypes":519}],498:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94250,16 +99299,7 @@ module.exports = { eventDataKeys: [] }; -},{}],452:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],499:[function(_dereq_,module,exports){ 'use strict'; var calc = _dereq_('./calc'); @@ -94431,16 +99471,7 @@ function getInterp(calcTrace, index, position, posAttr) { return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]); } -},{"./calc":448}],453:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./calc":495}],500:[function(_dereq_,module,exports){ 'use strict'; @@ -94470,15 +99501,7 @@ module.exports = function crossTraceDefaults(fullData) { } }; -},{}],454:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],501:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94507,6 +99530,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(!traceOut.visible) return; handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); var stackGroupOpts = handleStackDefaults(traceIn, traceOut, layout, coerce); @@ -94563,16 +99588,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":233,"../../registry":326,"./attributes":447,"./constants":451,"./fillcolor_defaults":455,"./line_defaults":460,"./line_shape_defaults":462,"./marker_defaults":466,"./period_defaults":467,"./stack_defaults":470,"./subtypes":472,"./text_defaults":473,"./xy_defaults":474}],455:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373,"./attributes":494,"./constants":498,"./fillcolor_defaults":502,"./line_defaults":507,"./line_shape_defaults":509,"./marker_defaults":513,"./period_defaults":514,"./stack_defaults":517,"./subtypes":519,"./text_defaults":520,"./xy_defaults":521}],502:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -94600,15 +99616,7 @@ module.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coe )); }; -},{"../../components/color":105,"../../lib":233}],456:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285}],503:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -94620,22 +99628,13 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { var xa = Axes.getFromTrace(mockGd, trace, 'x'); var ya = Axes.getFromTrace(mockGd, trace, 'y'); - labels.xLabel = Axes.tickText(xa, cdi.x, true).text; - labels.yLabel = Axes.tickText(ya, cdi.y, true).text; + labels.xLabel = Axes.tickText(xa, xa.c2l(cdi.x), true).text; + labels.yLabel = Axes.tickText(ya, ya.c2l(cdi.y), true).text; return labels; }; -},{"../../plots/cartesian/axes":279}],457:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian/axes":331}],504:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -94675,15 +99674,7 @@ module.exports = function getTraceColor(trace, di) { } }; -},{"../../components/color":105,"./subtypes":472}],458:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"./subtypes":519}],505:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94714,13 +99705,14 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var rad = Math.max(3, di.mrc || 0); var kink = 1 - 1 / rad; var dxRaw = Math.abs(xa.c2p(di.x) - xpx); - var d = (dxRaw < rad) ? (kink * dxRaw / rad) : (dxRaw - rad + kink); - return d; + if(di.orig_x !== undefined) dxRaw += xa.c2p(di.orig_x) - xa.c2p(di.x); + return (dxRaw < rad) ? (kink * dxRaw / rad) : (dxRaw - rad + kink); }; var dy = function(di) { var rad = Math.max(3, di.mrc || 0); var kink = 1 - 1 / rad; var dyRaw = Math.abs(ya.c2p(di.y) - ypx); + if(di.orig_y !== undefined) dyRaw += ya.c2p(di.orig_y) - ya.c2p(di.y); return (dyRaw < rad) ? (kink * dyRaw / rad) : (dyRaw - rad + kink); }; var dxy = function(di) { @@ -94870,15 +99862,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { } }; -},{"../../components/color":105,"../../components/fx":145,"../../lib":233,"../../registry":326,"./get_trace_color":457}],459:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx":195,"../../lib":285,"../../registry":373,"./get_trace_color":504}],506:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -94912,19 +99896,10 @@ module.exports = { 'zoomScale' ], meta: { - } }; -},{"../../plots/cartesian":292,"./arrays_to_calcdata":446,"./attributes":447,"./calc":448,"./cross_trace_calc":452,"./cross_trace_defaults":453,"./defaults":454,"./format_labels":456,"./hover":458,"./marker_colorbar":465,"./plot":468,"./select":469,"./style":471,"./subtypes":472}],460:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./arrays_to_calcdata":493,"./attributes":494,"./calc":495,"./cross_trace_calc":499,"./cross_trace_defaults":500,"./defaults":501,"./format_labels":503,"./hover":505,"./marker_colorbar":512,"./plot":515,"./select":516,"./style":518,"./subtypes":519}],507:[function(_dereq_,module,exports){ 'use strict'; var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray; @@ -94947,16 +99922,7 @@ module.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout, if(!(opts || {}).noDash) coerce('line.dash'); }; -},{"../../components/colorscale/defaults":115,"../../components/colorscale/helpers":116,"../../lib":233}],461:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/defaults":165,"../../components/colorscale/helpers":166,"../../lib":285}],508:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -95408,16 +100374,7 @@ module.exports = function linePoints(d, opts) { return segments; }; -},{"../../constants/numerical":212,"../../lib":233,"./constants":451}],462:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285,"./constants":498}],509:[function(_dereq_,module,exports){ 'use strict'; @@ -95427,15 +100384,7 @@ module.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) { if(shape === 'spline') coerce('line.smoothing'); }; -},{}],463:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],510:[function(_dereq_,module,exports){ 'use strict'; var LINKEDFILLS = {tonextx: 1, tonexty: 1, tonext: 1}; @@ -95517,16 +100466,7 @@ module.exports = function linkTraces(gd, plotinfo, cdscatter) { return cdscatterSorted; }; -},{}],464:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],511:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -95559,16 +100499,7 @@ module.exports = function makeBubbleSizeFn(trace) { }; }; -},{"fast-isnumeric":23}],465:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"fast-isnumeric":31}],512:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -95577,15 +100508,7 @@ module.exports = { max: 'cmax' }; -},{}],466:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],513:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -95658,15 +100581,7 @@ module.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout } }; -},{"../../components/color":105,"../../components/colorscale/defaults":115,"../../components/colorscale/helpers":116,"./subtypes":472}],467:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/colorscale/defaults":165,"../../components/colorscale/helpers":166,"./subtypes":519}],514:[function(_dereq_,module,exports){ 'use strict'; var dateTick0 = _dereq_('../../lib').dateTick0; @@ -95705,19 +100620,10 @@ module.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce } }; -},{"../../constants/numerical":212,"../../lib":233}],468:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285}],515:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -96266,16 +101172,7 @@ function selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) { }); } -},{"../../components/drawing":127,"../../lib":233,"../../lib/polygon":245,"../../registry":326,"./line_points":461,"./link_traces":463,"./subtypes":472,"d3":21}],469:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/drawing":177,"../../lib":285,"../../lib/polygon":297,"../../registry":373,"./line_points":508,"./link_traces":510,"./subtypes":519,"@plotly/d3":20}],516:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -96320,15 +101217,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; -},{"./subtypes":472}],470:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./subtypes":519}],517:[function(_dereq_,module,exports){ 'use strict'; var perStackAttrs = ['orientation', 'groupnorm', 'stackgaps']; @@ -96425,19 +101314,10 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) } }; -},{}],471:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],518:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Drawing = _dereq_('../../components/drawing'); var Registry = _dereq_('../../registry'); @@ -96496,16 +101376,7 @@ module.exports = { styleOnSelect: styleOnSelect }; -},{"../../components/drawing":127,"../../registry":326,"d3":21}],472:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/drawing":177,"../../registry":373,"@plotly/d3":20}],519:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96535,16 +101406,7 @@ module.exports = { } }; -},{"../../lib":233}],473:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285}],520:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96565,15 +101427,7 @@ module.exports = function(traceIn, traceOut, layout, coerce, opts) { } }; -},{"../../lib":233}],474:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],521:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96609,15 +101463,7 @@ module.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) { return len; }; -},{"../../lib":233,"../../registry":326}],475:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373}],522:[function(_dereq_,module,exports){ 'use strict'; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; @@ -96637,35 +101483,28 @@ module.exports = { a: { valType: 'data_array', editType: 'calc', - }, b: { valType: 'data_array', editType: 'calc', - }, c: { valType: 'data_array', editType: 'calc', - }, sum: { valType: 'number', - dflt: 0, min: 0, editType: 'calc', - }, mode: extendFlat({}, scatterAttrs.mode, {dflt: 'markers'}), text: extendFlat({}, scatterAttrs.text, { - }), texttemplate: texttemplateAttrs({editType: 'plot'}, { keys: ['a', 'b', 'c', 'text'] }), hovertext: extendFlat({}, scatterAttrs.hovertext, { - }), line: { color: scatterLineAttrs.color, @@ -96681,7 +101520,6 @@ module.exports = { fill: extendFlat({}, scatterAttrs.fill, { values: ['none', 'toself', 'tonext'], dflt: 'none', - }), fillcolor: scatterAttrs.fillcolor, marker: extendFlat({ @@ -96717,16 +101555,7 @@ module.exports = { hovertemplate: hovertemplateAttrs(), }; -},{"../../components/colorscale/attributes":112,"../../components/drawing/attributes":126,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"../scatter/attributes":447}],476:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/attributes":162,"../../components/drawing/attributes":176,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/template_attributes":368,"../scatter/attributes":494}],523:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -96798,16 +101627,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../scatter/arrays_to_calcdata":446,"../scatter/calc":448,"../scatter/calc_selection":449,"../scatter/colorscale_calc":450,"fast-isnumeric":23}],477:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../scatter/arrays_to_calcdata":493,"../scatter/calc":495,"../scatter/calc_selection":496,"../scatter/colorscale_calc":497,"fast-isnumeric":31}],524:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96902,15 +101722,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":233,"../scatter/constants":451,"../scatter/fillcolor_defaults":455,"../scatter/line_defaults":460,"../scatter/line_shape_defaults":462,"../scatter/marker_defaults":466,"../scatter/subtypes":472,"../scatter/text_defaults":473,"./attributes":475}],478:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../scatter/constants":498,"../scatter/fillcolor_defaults":502,"../scatter/line_defaults":507,"../scatter/line_shape_defaults":509,"../scatter/marker_defaults":513,"../scatter/subtypes":519,"../scatter/text_defaults":520,"./attributes":522}],525:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -96934,15 +101746,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],479:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],526:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -96958,15 +101762,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { return labels; }; -},{"../../plots/cartesian/axes":279}],480:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/axes":331}],527:[function(_dereq_,module,exports){ 'use strict'; var scatterHover = _dereq_('../scatter/hover'); @@ -97032,15 +101828,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { return scatterPointData; }; -},{"../scatter/hover":458}],481:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../scatter/hover":505}],528:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -97061,21 +101849,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/ternary'), categories: ['ternary', 'symbols', 'showLegend', 'scatter-like'], meta: { - - } }; -},{"../../plots/ternary":322,"../scatter/marker_colorbar":465,"../scatter/select":469,"../scatter/style":471,"./attributes":475,"./calc":476,"./defaults":477,"./event_data":478,"./format_labels":479,"./hover":480,"./plot":482}],482:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/ternary":369,"../scatter/marker_colorbar":512,"../scatter/select":516,"../scatter/style":518,"./attributes":522,"./calc":523,"./defaults":524,"./event_data":525,"./format_labels":526,"./hover":527,"./plot":529}],529:[function(_dereq_,module,exports){ 'use strict'; var scatterPlot = _dereq_('../scatter/plot'); @@ -97099,19 +101876,12 @@ module.exports = function plot(gd, ternary, moduleCalcData) { scatterPlot(gd, plotinfo, moduleCalcData, scatterLayer); }; -},{"../scatter/plot":468}],483:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../scatter/plot":515}],530:[function(_dereq_,module,exports){ 'use strict'; var boxAttrs = _dereq_('../box/attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); module.exports = { y: boxAttrs.y, @@ -97119,44 +101889,37 @@ module.exports = { x0: boxAttrs.x0, y0: boxAttrs.y0, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + name: extendFlat({}, boxAttrs.name, { - }), orientation: extendFlat({}, boxAttrs.orientation, { - }), bandwidth: { valType: 'number', min: 0, - editType: 'calc', - }, scalegroup: { valType: 'string', - dflt: '', editType: 'calc', - }, scalemode: { valType: 'enumerated', values: ['width', 'count'], dflt: 'width', - editType: 'calc', - }, spanmode: { valType: 'enumerated', values: ['soft', 'hard', 'manual'], dflt: 'soft', - editType: 'calc', - }, span: { valType: 'info_array', @@ -97164,42 +101927,32 @@ module.exports = { {valType: 'any', editType: 'calc'}, {valType: 'any', editType: 'calc'} ], - editType: 'calc', - }, line: { color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', - min: 0, dflt: 2, editType: 'style', - }, editType: 'plot' }, fillcolor: boxAttrs.fillcolor, points: extendFlat({}, boxAttrs.boxpoints, { - }), jitter: extendFlat({}, boxAttrs.jitter, { - }), pointpos: extendFlat({}, boxAttrs.pointpos, { - }), width: extendFlat({}, boxAttrs.width, { - }), marker: boxAttrs.marker, @@ -97211,38 +101964,28 @@ module.exports = { visible: { valType: 'boolean', dflt: false, - editType: 'plot', - }, width: { valType: 'number', min: 0, max: 1, dflt: 0.25, - editType: 'plot', - }, fillcolor: { valType: 'color', - editType: 'style', - }, line: { color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'style' }, @@ -97253,22 +101996,16 @@ module.exports = { visible: { valType: 'boolean', dflt: false, - editType: 'plot', - }, color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'plot' }, @@ -97277,9 +102014,7 @@ module.exports = { valType: 'enumerated', values: ['both', 'positive', 'negative'], dflt: 'both', - editType: 'calc', - }, offsetgroup: boxAttrs.offsetgroup, @@ -97293,21 +102028,11 @@ module.exports = { flags: ['violins', 'points', 'kde'], dflt: 'violins+points+kde', extras: ['all'], - editType: 'style', - } }; -},{"../../lib/extend":227,"../box/attributes":353}],484:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../box/attributes":400}],531:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97475,15 +102200,7 @@ function calcSpan(trace, cdi, valAxis, bandwidth) { return spanOut; } -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/axes":279,"../box/calc":354,"./helpers":487}],485:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/axes":331,"../box/calc":401,"./helpers":534}],532:[function(_dereq_,module,exports){ 'use strict'; var setPositionOffset = _dereq_('../box/cross_trace_calc').setPositionOffset; @@ -97518,15 +102235,7 @@ module.exports = function crossTraceCalc(gd, plotinfo) { } }; -},{"../box/cross_trace_calc":355}],486:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../box/cross_trace_calc":402}],533:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97579,15 +102288,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(!meanLineVisible) traceOut.meanline = {visible: false}; }; -},{"../../components/color":105,"../../lib":233,"../box/defaults":356,"./attributes":483}],487:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../box/defaults":403,"./attributes":530}],534:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97652,15 +102353,7 @@ exports.getKdeValue = function(calcItem, trace, valueDist) { exports.extractVal = function(o) { return o.v; }; -},{"../../lib":233}],488:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],535:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97668,7 +102361,10 @@ var Axes = _dereq_('../../plots/cartesian/axes'); var boxHoverPoints = _dereq_('../box/hover'); var helpers = _dereq_('./helpers'); -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer) { +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + if(!opts) opts = {}; + var hoverLayer = opts.hoverLayer; + var cd = pointData.cd; var trace = cd[0].trace; var hoveron = trace.hoveron; @@ -97713,7 +102409,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay kdePointData[pLetter + '0'] = pOnPath[0]; kdePointData[pLetter + '1'] = pOnPath[1]; kdePointData[vLetter + '0'] = kdePointData[vLetter + '1'] = vValPx; - kdePointData[vLetter + 'Label'] = vLetter + ': ' + Axes.hoverLabelText(vAxis, vVal) + ', ' + cd[0].t.labels.kde + ' ' + kdeVal.toFixed(3); + kdePointData[vLetter + 'Label'] = vLetter + ': ' + Axes.hoverLabelText(vAxis, vVal, trace[vLetter + 'hoverformat']) + ', ' + cd[0].t.labels.kde + ' ' + kdeVal.toFixed(3); // move the spike to the KDE point kdePointData.spikeDistance = closeBoxData[0].spikeDistance; @@ -97764,15 +102460,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay return closeData; }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../box/hover":358,"./helpers":487}],489:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../box/hover":405,"./helpers":534}],536:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -97794,19 +102482,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', 'symbols', 'oriented', 'box-violin', 'showLegend', 'violinLayout', 'zoomScale'], meta: { - } }; -},{"../../plots/cartesian":292,"../box/defaults":356,"../box/select":363,"../scatter/style":471,"./attributes":483,"./calc":484,"./cross_trace_calc":485,"./defaults":486,"./hover":488,"./layout_attributes":490,"./layout_defaults":491,"./plot":492,"./style":493}],490:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../box/defaults":403,"../box/select":410,"../scatter/style":518,"./attributes":530,"./calc":531,"./cross_trace_calc":532,"./defaults":533,"./hover":535,"./layout_attributes":537,"./layout_defaults":538,"./plot":539,"./style":540}],537:[function(_dereq_,module,exports){ 'use strict'; var boxLayoutAttrs = _dereq_('../box/layout_attributes'); @@ -97814,25 +102493,14 @@ var extendFlat = _dereq_('../../lib').extendFlat; module.exports = { violinmode: extendFlat({}, boxLayoutAttrs.boxmode, { - }), violingap: extendFlat({}, boxLayoutAttrs.boxgap, { - }), violingroupgap: extendFlat({}, boxLayoutAttrs.boxgroupgap, { - }) }; -},{"../../lib":233,"../box/layout_attributes":360}],491:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../box/layout_attributes":407}],538:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97846,18 +102514,10 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { boxLayoutDefaults._supply(layoutIn, layoutOut, fullData, coerce, 'violin'); }; -},{"../../lib":233,"../box/layout_defaults":361,"./layout_attributes":490}],492:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../box/layout_defaults":408,"./layout_attributes":537}],539:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Drawing = _dereq_('../../components/drawing'); @@ -98036,18 +102696,10 @@ module.exports = function plot(gd, plotinfo, cdViolins, violinLayer) { }); }; -},{"../../components/drawing":127,"../../lib":233,"../box/plot":362,"../scatter/line_points":461,"./helpers":487,"d3":21}],493:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../lib":285,"../box/plot":409,"../scatter/line_points":508,"./helpers":534,"@plotly/d3":20}],540:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../../components/color'); var stylePoints = _dereq_('../scatter/style').stylePoints; @@ -98091,21 +102743,1077 @@ module.exports = function style(gd) { }); }; -},{"../../components/color":105,"../scatter/style":471,"d3":21}],494:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../../components/color":155,"../scatter/style":518,"@plotly/d3":20}],541:[function(_dereq_,module,exports){ +'use strict'; +var Axes = _dereq_('../plots/cartesian/axes'); +var Lib = _dereq_('../lib'); +var PlotSchema = _dereq_('../plot_api/plot_schema'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; +var BADNUM = _dereq_('../constants/numerical').BADNUM; + +exports.moduleType = 'transform'; + +exports.name = 'aggregate'; + +var attrs = exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + groups: { + // TODO: groupby should support string or array grouping this way too + // currently groupby only allows a grouping array + valType: 'string', + strict: true, + noBlank: true, + arrayOk: true, + dflt: 'x', + editType: 'calc', + }, + aggregations: { + _isLinkedToArray: 'aggregation', + target: { + valType: 'string', + editType: 'calc', + }, + func: { + valType: 'enumerated', + values: ['count', 'sum', 'avg', 'median', 'mode', 'rms', 'stddev', 'min', 'max', 'first', 'last', 'change', 'range'], + dflt: 'first', + editType: 'calc', + }, + funcmode: { + valType: 'enumerated', + values: ['sample', 'population'], + dflt: 'sample', + editType: 'calc', + }, + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + editType: 'calc' + }, + editType: 'calc' +}; + +var aggAttrs = attrs.aggregations; + +/** + * Supply transform attributes defaults + * + * @param {object} transformIn + * object linked to trace.transforms[i] with 'func' set to exports.name + * @param {object} traceOut + * the _fullData trace this transform applies to + * @param {object} layout + * the plot's (not-so-full) layout + * @param {object} traceIn + * the input data trace this transform applies to + * + * @return {object} transformOut + * copy of transformIn that contains attribute defaults + */ +exports.supplyDefaults = function(transformIn, traceOut) { + var transformOut = {}; + var i; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, attrs, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(!enabled) return transformOut; + + /* + * Normally _arrayAttrs is calculated during doCalc, but that comes later. + * Anyway this can change due to *count* aggregations (see below) so it's not + * necessarily the same set. + * + * For performance we turn it into an object of truthy values + * we'll use 1 for arrays we haven't aggregated yet, 0 for finished arrays, + * as distinct from undefined which means this array isn't present in the input + * missing arrays can still be aggregate outputs for *count* aggregations. + */ + var arrayAttrArray = PlotSchema.findArrayAttributes(traceOut); + var arrayAttrs = {}; + for(i = 0; i < arrayAttrArray.length; i++) arrayAttrs[arrayAttrArray[i]] = 1; + + var groups = coerce('groups'); + + if(!Array.isArray(groups)) { + if(!arrayAttrs[groups]) { + transformOut.enabled = false; + return transformOut; + } + arrayAttrs[groups] = 0; + } + + var aggregationsIn = transformIn.aggregations || []; + var aggregationsOut = transformOut.aggregations = new Array(aggregationsIn.length); + var aggregationOut; + + function coercei(attr, dflt) { + return Lib.coerce(aggregationsIn[i], aggregationOut, aggAttrs, attr, dflt); + } + + for(i = 0; i < aggregationsIn.length; i++) { + aggregationOut = {_index: i}; + var target = coercei('target'); + var func = coercei('func'); + var enabledi = coercei('enabled'); + + // add this aggregation to the output only if it's the first instance + // of a valid target attribute - or an unused target attribute with "count" + if(enabledi && target && (arrayAttrs[target] || (func === 'count' && arrayAttrs[target] === undefined))) { + if(func === 'stddev') coercei('funcmode'); + + arrayAttrs[target] = 0; + aggregationsOut[i] = aggregationOut; + } else aggregationsOut[i] = {enabled: false, _index: i}; + } + + // any array attributes we haven't yet covered, fill them with the default aggregation + for(i = 0; i < arrayAttrArray.length; i++) { + if(arrayAttrs[arrayAttrArray[i]]) { + aggregationsOut.push({ + target: arrayAttrArray[i], + func: aggAttrs.func.dflt, + enabled: true, + _index: -1 + }); + } + } + + return transformOut; +}; + + +exports.calcTransform = function(gd, trace, opts) { + if(!opts.enabled) return; + + var groups = opts.groups; + + var groupArray = Lib.getTargetArray(trace, {target: groups}); + if(!groupArray) return; + + var i, vi, groupIndex, newGrouping; + + var groupIndices = {}; + var indexToPoints = {}; + var groupings = []; + + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + + var len = groupArray.length; + if(trace._length) len = Math.min(len, trace._length); + + for(i = 0; i < len; i++) { + vi = groupArray[i]; + groupIndex = groupIndices[vi]; + if(groupIndex === undefined) { + groupIndices[vi] = groupings.length; + newGrouping = [i]; + groupings.push(newGrouping); + indexToPoints[groupIndices[vi]] = originalPointsAccessor(i); + } else { + groupings[groupIndex].push(i); + indexToPoints[groupIndices[vi]] = (indexToPoints[groupIndices[vi]] || []).concat(originalPointsAccessor(i)); + } + } + + opts._indexToPoints = indexToPoints; + + var aggregations = opts.aggregations; + + for(i = 0; i < aggregations.length; i++) { + aggregateOneArray(gd, trace, groupings, aggregations[i]); + } + + if(typeof groups === 'string') { + aggregateOneArray(gd, trace, groupings, { + target: groups, + func: 'first', + enabled: true + }); + } + + trace._length = groupings.length; +}; + +function aggregateOneArray(gd, trace, groupings, aggregation) { + if(!aggregation.enabled) return; + + var attr = aggregation.target; + var targetNP = Lib.nestedProperty(trace, attr); + var arrayIn = targetNP.get(); + var conversions = Axes.getDataConversions(gd, trace, attr, arrayIn); + var func = getAggregateFunction(aggregation, conversions); + + var arrayOut = new Array(groupings.length); + for(var i = 0; i < groupings.length; i++) { + arrayOut[i] = func(arrayIn, groupings[i]); + } + targetNP.set(arrayOut); + + if(aggregation.func === 'count') { + // count does not depend on an input array, so it's likely not part of _arrayAttrs yet + // but after this transform it most definitely *is* an array attribute. + Lib.pushUnique(trace._arrayAttrs, attr); + } +} + +function getAggregateFunction(opts, conversions) { + var func = opts.func; + var d2c = conversions.d2c; + var c2d = conversions.c2d; + + switch(func) { + // count, first, and last don't depend on anything about the data + // point back to pure functions for performance + case 'count': + return count; + case 'first': + return first; + case 'last': + return last; + + case 'sum': + // This will produce output in all cases even though it's nonsensical + // for date or category data. + return function(array, indices) { + var total = 0; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) total += vi; + } + return c2d(total); + }; + + case 'avg': + // Generally meaningless for category data but it still does something. + return function(array, indices) { + var total = 0; + var cnt = 0; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + total += vi; + cnt++; + } + } + return cnt ? c2d(total / cnt) : BADNUM; + }; + + case 'min': + return function(array, indices) { + var out = Infinity; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) out = Math.min(out, vi); + } + return (out === Infinity) ? BADNUM : c2d(out); + }; + + case 'max': + return function(array, indices) { + var out = -Infinity; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) out = Math.max(out, vi); + } + return (out === -Infinity) ? BADNUM : c2d(out); + }; + + case 'range': + return function(array, indices) { + var min = Infinity; + var max = -Infinity; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + min = Math.min(min, vi); + max = Math.max(max, vi); + } + } + return (max === -Infinity || min === Infinity) ? BADNUM : c2d(max - min); + }; + + case 'change': + return function(array, indices) { + var first = d2c(array[indices[0]]); + var last = d2c(array[indices[indices.length - 1]]); + return (first === BADNUM || last === BADNUM) ? BADNUM : c2d(last - first); + }; + + case 'median': + return function(array, indices) { + var sortCalc = []; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) sortCalc.push(vi); + } + if(!sortCalc.length) return BADNUM; + sortCalc.sort(Lib.sorterAsc); + var mid = (sortCalc.length - 1) / 2; + return c2d((sortCalc[Math.floor(mid)] + sortCalc[Math.ceil(mid)]) / 2); + }; + + case 'mode': + return function(array, indices) { + var counts = {}; + var maxCnt = 0; + var out = BADNUM; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + var counti = counts[vi] = (counts[vi] || 0) + 1; + if(counti > maxCnt) { + maxCnt = counti; + out = vi; + } + } + } + return maxCnt ? c2d(out) : BADNUM; + }; + + case 'rms': + return function(array, indices) { + var total = 0; + var cnt = 0; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + total += vi * vi; + cnt++; + } + } + return cnt ? c2d(Math.sqrt(total / cnt)) : BADNUM; + }; + + case 'stddev': + return function(array, indices) { + // balance numerical stability with performance: + // so that we call d2c once per element but don't need to + // store them, reference all to the first element + var total = 0; + var total2 = 0; + var cnt = 1; + var v0 = BADNUM; + var i; + for(i = 0; i < indices.length && v0 === BADNUM; i++) { + v0 = d2c(array[indices[i]]); + } + if(v0 === BADNUM) return BADNUM; + + for(; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + var dv = vi - v0; + total += dv; + total2 += dv * dv; + cnt++; + } + } + + // This is population std dev, if we want sample std dev + // we would need (...) / (cnt - 1) + // Also note there's no c2d here - that means for dates the result + // is a number of milliseconds, and for categories it's a number + // of category differences, which is not generically meaningful but + // as in other cases we don't forbid it. + var norm = (opts.funcmode === 'sample') ? (cnt - 1) : cnt; + // this is debatable: should a count of 1 return sample stddev of + // 0 or undefined? + if(!norm) return 0; + return Math.sqrt((total2 - (total * total / cnt)) / norm); + }; + } +} + +function count(array, indices) { + return indices.length; +} + +function first(array, indices) { + return array[indices[0]]; +} + +function last(array, indices) { + return array[indices[indices.length - 1]]; +} + +},{"../constants/numerical":265,"../lib":285,"../plot_api/plot_schema":319,"../plots/cartesian/axes":331,"./helpers":544}],542:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../lib'); +var Registry = _dereq_('../registry'); +var Axes = _dereq_('../plots/cartesian/axes'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; + +var filterOps = _dereq_('../constants/filter_ops'); +var COMPARISON_OPS = filterOps.COMPARISON_OPS; +var INTERVAL_OPS = filterOps.INTERVAL_OPS; +var SET_OPS = filterOps.SET_OPS; + +exports.moduleType = 'transform'; + +exports.name = 'filter'; + +exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + target: { + valType: 'string', + strict: true, + noBlank: true, + arrayOk: true, + dflt: 'x', + editType: 'calc', + }, + operation: { + valType: 'enumerated', + values: [] + .concat(COMPARISON_OPS) + .concat(INTERVAL_OPS) + .concat(SET_OPS), + dflt: '=', + editType: 'calc', + }, + value: { + valType: 'any', + dflt: 0, + editType: 'calc', + }, + preservegaps: { + valType: 'boolean', + dflt: false, + editType: 'calc', + }, + editType: 'calc' +}; + +exports.supplyDefaults = function(transformIn) { + var transformOut = {}; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(enabled) { + var target = coerce('target'); + + if(Lib.isArrayOrTypedArray(target) && target.length === 0) { + transformOut.enabled = false; + return transformOut; + } + + coerce('preservegaps'); + coerce('operation'); + coerce('value'); + + var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleDefaults'); + handleCalendarDefaults(transformIn, transformOut, 'valuecalendar', null); + handleCalendarDefaults(transformIn, transformOut, 'targetcalendar', null); + } + + return transformOut; +}; + +exports.calcTransform = function(gd, trace, opts) { + if(!opts.enabled) return; + + var targetArray = Lib.getTargetArray(trace, opts); + if(!targetArray) return; + + var target = opts.target; + + var len = targetArray.length; + if(trace._length) len = Math.min(len, trace._length); + + var targetCalendar = opts.targetcalendar; + var arrayAttrs = trace._arrayAttrs; + var preservegaps = opts.preservegaps; + + // even if you provide targetcalendar, if target is a string and there + // is a calendar attribute matching target it will get used instead. + if(typeof target === 'string') { + var attrTargetCalendar = Lib.nestedProperty(trace, target + 'calendar').get(); + if(attrTargetCalendar) targetCalendar = attrTargetCalendar; + } + + var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); + var filterFunc = getFilterFunc(opts, d2c, targetCalendar); + var originalArrays = {}; + var indexToPoints = {}; + var index = 0; + + function forAllAttrs(fn, index) { + for(var j = 0; j < arrayAttrs.length; j++) { + var np = Lib.nestedProperty(trace, arrayAttrs[j]); + fn(np, index); + } + } + + var initFn; + var fillFn; + if(preservegaps) { + initFn = function(np) { + originalArrays[np.astr] = Lib.extendDeep([], np.get()); + np.set(new Array(len)); + }; + fillFn = function(np, index) { + var val = originalArrays[np.astr][index]; + np.get()[index] = val; + }; + } else { + initFn = function(np) { + originalArrays[np.astr] = Lib.extendDeep([], np.get()); + np.set([]); + }; + fillFn = function(np, index) { + var val = originalArrays[np.astr][index]; + np.get().push(val); + }; + } + + // copy all original array attribute values, and clear arrays in trace + forAllAttrs(initFn); + + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + + // loop through filter array, fill trace arrays if passed + for(var i = 0; i < len; i++) { + var passed = filterFunc(targetArray[i]); + if(passed) { + forAllAttrs(fillFn, i); + indexToPoints[index++] = originalPointsAccessor(i); + } else if(preservegaps) index++; + } + + opts._indexToPoints = indexToPoints; + trace._length = index; +}; + +function getFilterFunc(opts, d2c, targetCalendar) { + var operation = opts.operation; + var value = opts.value; + var hasArrayValue = Array.isArray(value); + + function isOperationIn(array) { + return array.indexOf(operation) !== -1; + } + + var d2cValue = function(v) { return d2c(v, 0, opts.valuecalendar); }; + var d2cTarget = function(v) { return d2c(v, 0, targetCalendar); }; + + var coercedValue; + + if(isOperationIn(COMPARISON_OPS)) { + coercedValue = hasArrayValue ? d2cValue(value[0]) : d2cValue(value); + } else if(isOperationIn(INTERVAL_OPS)) { + coercedValue = hasArrayValue ? + [d2cValue(value[0]), d2cValue(value[1])] : + [d2cValue(value), d2cValue(value)]; + } else if(isOperationIn(SET_OPS)) { + coercedValue = hasArrayValue ? value.map(d2cValue) : [d2cValue(value)]; + } + + switch(operation) { + case '=': + return function(v) { return d2cTarget(v) === coercedValue; }; + + case '!=': + return function(v) { return d2cTarget(v) !== coercedValue; }; + + case '<': + return function(v) { return d2cTarget(v) < coercedValue; }; + + case '<=': + return function(v) { return d2cTarget(v) <= coercedValue; }; + + case '>': + return function(v) { return d2cTarget(v) > coercedValue; }; + + case '>=': + return function(v) { return d2cTarget(v) >= coercedValue; }; + + case '[]': + return function(v) { + var cv = d2cTarget(v); + return cv >= coercedValue[0] && cv <= coercedValue[1]; + }; + + case '()': + return function(v) { + var cv = d2cTarget(v); + return cv > coercedValue[0] && cv < coercedValue[1]; + }; + + case '[)': + return function(v) { + var cv = d2cTarget(v); + return cv >= coercedValue[0] && cv < coercedValue[1]; + }; + + case '(]': + return function(v) { + var cv = d2cTarget(v); + return cv > coercedValue[0] && cv <= coercedValue[1]; + }; + + case '][': + return function(v) { + var cv = d2cTarget(v); + return cv <= coercedValue[0] || cv >= coercedValue[1]; + }; + + case ')(': + return function(v) { + var cv = d2cTarget(v); + return cv < coercedValue[0] || cv > coercedValue[1]; + }; + + case '](': + return function(v) { + var cv = d2cTarget(v); + return cv <= coercedValue[0] || cv > coercedValue[1]; + }; + + case ')[': + return function(v) { + var cv = d2cTarget(v); + return cv < coercedValue[0] || cv >= coercedValue[1]; + }; + + case '{}': + return function(v) { + return coercedValue.indexOf(d2cTarget(v)) !== -1; + }; + + case '}{': + return function(v) { + return coercedValue.indexOf(d2cTarget(v)) === -1; + }; + } +} + +},{"../constants/filter_ops":263,"../lib":285,"../plots/cartesian/axes":331,"../registry":373,"./helpers":544}],543:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../lib'); +var PlotSchema = _dereq_('../plot_api/plot_schema'); +var Plots = _dereq_('../plots/plots'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; + +exports.moduleType = 'transform'; + +exports.name = 'groupby'; + +exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + groups: { + valType: 'data_array', + dflt: [], + editType: 'calc', + }, + nameformat: { + valType: 'string', + editType: 'calc', + }, + styles: { + _isLinkedToArray: 'style', + target: { + valType: 'string', + editType: 'calc', + }, + value: { + valType: 'any', + dflt: {}, + editType: 'calc', + _compareAsJSON: true + }, + editType: 'calc' + }, + editType: 'calc' +}; + +/** + * Supply transform attributes defaults + * + * @param {object} transformIn + * object linked to trace.transforms[i] with 'type' set to exports.name + * @param {object} traceOut + * the _fullData trace this transform applies to + * @param {object} layout + * the plot's (not-so-full) layout + * @param {object} traceIn + * the input data trace this transform applies to + * + * @return {object} transformOut + * copy of transformIn that contains attribute defaults + */ +exports.supplyDefaults = function(transformIn, traceOut, layout) { + var i; + var transformOut = {}; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(!enabled) return transformOut; + + coerce('groups'); + coerce('nameformat', layout._dataLength > 1 ? '%{group} (%{trace})' : '%{group}'); + + var styleIn = transformIn.styles; + var styleOut = transformOut.styles = []; + + if(styleIn) { + for(i = 0; i < styleIn.length; i++) { + var thisStyle = styleOut[i] = {}; + Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'target'); + var value = Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'value'); + + // so that you can edit value in place and have Plotly.react notice it, or + // rebuild it every time and have Plotly.react NOT think it changed: + // use _compareAsJSON to say we should diff the _JSON_value + if(Lib.isPlainObject(value)) thisStyle.value = Lib.extendDeep({}, value); + else if(value) delete thisStyle.value; + } + } + + return transformOut; +}; + + +/** + * Apply transform !!! + * + * @param {array} data + * array of transformed traces (is [fullTrace] upon first transform) + * + * @param {object} state + * state object which includes: + * - transform {object} full transform attributes + * - fullTrace {object} full trace object which is being transformed + * - fullData {array} full pre-transform(s) data array + * - layout {object} the plot's (not-so-full) layout + * + * @return {object} newData + * array of transformed traces + */ +exports.transform = function(data, state) { + var newTraces, i, j; + var newData = []; + + for(i = 0; i < data.length; i++) { + newTraces = transformOne(data[i], state); + + for(j = 0; j < newTraces.length; j++) { + newData.push(newTraces[j]); + } + } + + return newData; +}; + +function transformOne(trace, state) { + var i, j, k, attr, srcArray, groupName, newTrace, transforms, arrayLookup; + var groupNameObj; + + var opts = state.transform; + var transformIndex = state.transformIndex; + var groups = trace.transforms[transformIndex].groups; + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + + if(!(Lib.isArrayOrTypedArray(groups)) || groups.length === 0) { + return [trace]; + } + + var groupNames = Lib.filterUnique(groups); + var newData = new Array(groupNames.length); + var len = groups.length; + + var arrayAttrs = PlotSchema.findArrayAttributes(trace); + + var styles = opts.styles || []; + var styleLookup = {}; + for(i = 0; i < styles.length; i++) { + styleLookup[styles[i].target] = styles[i].value; + } + + if(opts.styles) { + groupNameObj = Lib.keyedContainer(opts, 'styles', 'target', 'value.name'); + } + + // An index to map group name --> expanded trace index + var indexLookup = {}; + var indexCnts = {}; + + for(i = 0; i < groupNames.length; i++) { + groupName = groupNames[i]; + indexLookup[groupName] = i; + indexCnts[groupName] = 0; + + // Start with a deep extend that just copies array references. + newTrace = newData[i] = Lib.extendDeepNoArrays({}, trace); + newTrace._group = groupName; + newTrace.transforms[transformIndex]._indexToPoints = {}; + + var suppliedName = null; + if(groupNameObj) { + suppliedName = groupNameObj.get(groupName); + } + + if(suppliedName || suppliedName === '') { + newTrace.name = suppliedName; + } else { + newTrace.name = Lib.templateString(opts.nameformat, { + trace: trace.name, + group: groupName + }); + } + + // In order for groups to apply correctly to other transform data (e.g. + // a filter transform), we have to break the connection and clone the + // transforms so that each group writes grouped values into a different + // destination. This function does not break the array reference + // connection between the split transforms it creates. That's handled in + // initialize, which creates a new empty array for each arrayAttr. + transforms = newTrace.transforms; + newTrace.transforms = []; + for(j = 0; j < transforms.length; j++) { + newTrace.transforms[j] = Lib.extendDeepNoArrays({}, transforms[j]); + } + + // Initialize empty arrays for the arrayAttrs, to be split in the next step + for(j = 0; j < arrayAttrs.length; j++) { + Lib.nestedProperty(newTrace, arrayAttrs[j]).set([]); + } + } + + // For each array attribute including those nested inside this and other + // transforms (small note that we technically only need to do this for + // transforms that have not yet been applied): + for(k = 0; k < arrayAttrs.length; k++) { + attr = arrayAttrs[k]; + + // Cache all the arrays to which we'll push: + for(j = 0, arrayLookup = []; j < groupNames.length; j++) { + arrayLookup[j] = Lib.nestedProperty(newData[j], attr).get(); + } + + // Get the input data: + srcArray = Lib.nestedProperty(trace, attr).get(); + + // Send each data point to the appropriate expanded trace: + for(j = 0; j < len; j++) { + // Map group data --> trace index --> array and push data onto it + arrayLookup[indexLookup[groups[j]]].push(srcArray[j]); + } + } + + for(j = 0; j < len; j++) { + newTrace = newData[indexLookup[groups[j]]]; + + var indexToPoints = newTrace.transforms[transformIndex]._indexToPoints; + indexToPoints[indexCnts[groups[j]]] = originalPointsAccessor(j); + indexCnts[groups[j]]++; + } + + for(i = 0; i < groupNames.length; i++) { + groupName = groupNames[i]; + newTrace = newData[i]; + + Plots.clearExpandedTraceDefaultColors(newTrace); + + // there's no need to coerce styleLookup[groupName] here + // as another round of supplyDefaults is done on the transformed traces + newTrace = Lib.extendDeepNoArrays(newTrace, styleLookup[groupName] || {}); + } + + return newData; +} + +},{"../lib":285,"../plot_api/plot_schema":319,"../plots/plots":366,"./helpers":544}],544:[function(_dereq_,module,exports){ +'use strict'; + +exports.pointsAccessorFunction = function(transforms, opts) { + var tr; + var prevIndexToPoints; + for(var i = 0; i < transforms.length; i++) { + tr = transforms[i]; + if(tr === opts) break; + if(!tr._indexToPoints || tr.enabled === false) continue; + prevIndexToPoints = tr._indexToPoints; + } + var originalPointsAccessor = prevIndexToPoints ? + function(i) {return prevIndexToPoints[i];} : + function(i) {return [i];}; + return originalPointsAccessor; +}; + +},{}],545:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../lib'); +var Axes = _dereq_('../plots/cartesian/axes'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; + +var BADNUM = _dereq_('../constants/numerical').BADNUM; + +exports.moduleType = 'transform'; + +exports.name = 'sort'; + +exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + target: { + valType: 'string', + strict: true, + noBlank: true, + arrayOk: true, + dflt: 'x', + editType: 'calc', + }, + order: { + valType: 'enumerated', + values: ['ascending', 'descending'], + dflt: 'ascending', + editType: 'calc', + }, + editType: 'calc' +}; + +exports.supplyDefaults = function(transformIn) { + var transformOut = {}; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(enabled) { + coerce('target'); + coerce('order'); + } + + return transformOut; +}; + +exports.calcTransform = function(gd, trace, opts) { + if(!opts.enabled) return; + + var targetArray = Lib.getTargetArray(trace, opts); + if(!targetArray) return; + + var target = opts.target; + + var len = targetArray.length; + if(trace._length) len = Math.min(len, trace._length); + + var arrayAttrs = trace._arrayAttrs; + var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); + var indices = getIndices(opts, targetArray, d2c, len); + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + var indexToPoints = {}; + var i, j; + + for(i = 0; i < arrayAttrs.length; i++) { + var np = Lib.nestedProperty(trace, arrayAttrs[i]); + var arrayOld = np.get(); + var arrayNew = new Array(len); + + for(j = 0; j < len; j++) { + arrayNew[j] = arrayOld[indices[j]]; + } + + np.set(arrayNew); + } + + for(j = 0; j < len; j++) { + indexToPoints[j] = originalPointsAccessor(indices[j]); + } + + opts._indexToPoints = indexToPoints; + trace._length = len; +}; + +function getIndices(opts, targetArray, d2c, len) { + var sortedArray = new Array(len); + var indices = new Array(len); + var i; + + for(i = 0; i < len; i++) { + sortedArray[i] = {v: targetArray[i], i: i}; + } + + sortedArray.sort(getSortFunc(opts, d2c)); + + for(i = 0; i < len; i++) { + indices[i] = sortedArray[i].i; + } + + return indices; +} + +function getSortFunc(opts, d2c) { + switch(opts.order) { + case 'ascending': + return function(a, b) { + var ac = d2c(a.v); + var bc = d2c(b.v); + if(ac === BADNUM) { + return 1; + } + if(bc === BADNUM) { + return -1; + } + return ac - bc; + }; + case 'descending': + return function(a, b) { + var ac = d2c(a.v); + var bc = d2c(b.v); + if(ac === BADNUM) { + return 1; + } + if(bc === BADNUM) { + return -1; + } + return bc - ac; + }; + } +} + +},{"../constants/numerical":265,"../lib":285,"../plots/cartesian/axes":331,"./helpers":544}],546:[function(_dereq_,module,exports){ 'use strict'; // package version injected by `npm run preprocess` -exports.version = '1.58.4'; +exports.version = '2.0.0'; -},{}]},{},[11])(11) +},{}]},{},[15])(15) }); var locale={moduleType:"locale",name:"de",dictionary:{Autoscale:"Automatische Skalierung","Box Select":"Rechteckauswahl","Click to enter Colorscale title":"Klicken, um den Farbskalatitel einzugeben","Click to enter Component A title":"Klicken, um den Titel der Komponente A einzugeben","Click to enter Component B title":"Klicken, um den Titel der Komponente B einzugeben","Click to enter Component C title":"Klicken, um den Titel der Komponente C einzugeben","Click to enter Plot title":"Klicken, um den Titel des Graphen einzugeben","Click to enter X axis title":"Klicken, um den Titel der X-Achse einzugeben","Click to enter Y axis title":"Klicken, um den Titel der Y-Achse einzugeben","Compare data on hover":"\xdcber die Daten fahren, um sie zu vergleichen","Double-click on legend to isolate one trace":"Daten isolieren durch Doppelklick in der Legende","Double-click to zoom back out":"Herauszoomen durch Doppelklick","Download plot as a png":"Graphen als PNG herunterladen","Download plot":"Graphen herunterladen","Edit in Chart Studio":"Im Chart Studio bearbeiten","IE only supports svg. Changing format to svg.":"IE unterst\xfctzt nur SVG-Dateien. Format wird zu SVG gewechselt.","Lasso Select":"Lassoauswahl","Orbital rotation":"Orbitalrotation",Pan:"Verschieben","Produced with Plotly":"Erstellt mit Plotly",Reset:"Zur\xfccksetzen","Reset axes":"Achsen zur\xfccksetzen","Reset camera to default":"Kamera auf Standard zur\xfccksetzen","Reset camera to last save":"Kamera auf letzte Speicherung zur\xfccksetzen","Reset view":"Ansicht zur\xfccksetzen","Reset views":"Ansichten zur\xfccksetzen","Show closest data on hover":"Zeige n\xe4heste Daten beim \xdcberfahren","Snapshot succeeded":"Snapshot erfolgreich","Sorry, there was a problem downloading your snapshot!":"Es gab ein Problem beim Herunterladen des Snapshots","Taking snapshot - this may take a few seconds":"Erstelle einen Snapshot - dies kann einige Sekunden dauern",Zoom:"Zoom","Zoom in":"Hineinzoomen","Zoom out":"Herauszoomen","close:":"Schluss:",trace:"Datenspur","lat:":"Lat.:","lon:":"Lon.:","q1:":"q1:","q3:":"q3:","source:":"Quelle:","target:":"Ziel:","lower fence:":"Untere Schranke:","upper fence:":"Obere Schranke:","max:":"Max.:","mean \xb1 \u03c3:":"Mittelwert \xb1 \u03c3:","mean:":"Mittelwert:","median:":"Median:","min:":"Min.:","Turntable rotation":"Drehscheibenorbit","Toggle Spike Lines":"Bezugslinien an-/abschalten","open:":"Er\xf6ffnung:","high:":"H\xf6chstkurs:","low:":"Tiefstkurs:","Toggle show closest data on hover":"Anzeige der n\xe4hesten Daten an-/abschalten","incoming flow count:":"Anzahl eingehender Verbindungen:","outgoing flow count:":"Anzahl ausgehender Verbindungen:","kde:":"Dichte:"},format:{days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","M\xe4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],date:"%d.%m.%Y",decimal:",",thousands:"."}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); diff --git a/static/babybuddy/js/graph.09e32032c8ef.js.gz b/static/babybuddy/js/graph.09e32032c8ef.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..62dd672bb7fa6dbd11f699b6a4202dc69143175c GIT binary patch literal 824232 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�|a zh}rriX1~oLhQ$sW9zqMRLb_U+TpNQ)k7Yzeyxuz>3L!aFt zGBgMRdHAX#{hWDEyfx;^4#Hb;sb8#KDV1KDj4Utcy8RiQ>Xrmo17*`vbg|-Vb(*NU z#!1|OS~w(Lx^U;fqy@f7dNmL)Q#3+~a*1N>jgB5YzudFoGxh^=pR#M5ztJ0HMbfVY z$~~tXE{%7}oFW)4SpmYljc#(Dnn<{L_vCF65Ix?J!XChIqninMSFe1jGBf8 z>ui{fv!RRQYn6CUM{cN`O!|Fl!+5l~J0VKx11A>nk(pkc$Vfu^ro#7MHeqHJV}!!I z**K_BYF_E!M6}Mj-0rL~_$C;>8_8+Bc)a59pS)%nUz6LpO)=5tHfVt_gh?^MU06CU zMVr+arxQ&Iw#rGgVbT69(TEMwXbK&jSoeBgyAU?f@1SUX#Cwan0GpmR=)D)(H`IPm z07anYAw93=gBn>Ica@2C9uasN|C31Z1Chcd0UaWIfsT>b`KJ!CKeXjhUA13Q;Ha)y z4R_ugd>ZXob7Wxp>dD9(Tv6`3B)`TulnNY2J_JR7qoV@Id6-!vfQQ{u{c`5`vOU`l z^~{qN`*vW%{i{m_-jvnRE6i?UUXM?78!mzy(H5{wtCtOX7~xxW?L-j#w6P+Yz661m zCyj3Gi;cDqc&wnvM-z0K?L`MQMz?GC4EGuX(edP8A#mC&sZZ{pO0EG0j+4MeJd2Hf{k0$sfBfD;$LgDl(0o@+-8@OEm%ml z8|HkgK4RP2xXm6WUbb3~^oPB|BXJk0h}f3@Y^zUbTCPk$Fxg1~$$}rH0{;5?f#1#N z+z(~AqkhW%Df=CD(CIgm#Vf6-;gqc;f{9hj-Nsm<{(w`k*(M<_x9j2VdDM^@rnkpm z4EtMem|QL*kG_gg2r$?>;Znt4>x5G|ci)?l=70Q?(CK2lG}E5~yD ze_ht?kUoWWS-RnILI)iB{{$nF3Y_r8fFI}`A$sv58}HP8l6;f=oF+N?txvVL%koub z4Xq*ulnRP;t;b6;08c=$zt5q=J!yzPMpOT#6-Z&=sq}Oi%}V8FrkwCA40oZ9bi8MPDpyCW#-Twn@WNUfpqtqSIlU zP76G)SeivgfMF;=>Y;mlH405#);LqpdWJ&RAzel3A$bXaW=BV=(&La{ zVw2T7!Rj+pebxvmrDbvM=q2+;khnT-MqO_Y9J7+z?K9D1@mJ_H1VoMtCVka=(yV&v|?Pd0I2F$U>W#mCCxQHvw~hIIOY3c zFti79+fMP$$*H;#BZaqu*LO6?>v_b|$0Xi|3$jmDQabq!Ml~W4yV9 zGSPJ$FQTuaC!Q|?y~y$~+IIZ13dc1;VO$_!FI{(`a2vY~87?Aw?bcoV1ho+zOI#tIn^*s)E4NWtA*7DwI#EPYicK1=9COX zy1%uZug+55aBa^Wu1)@MUh0feiLhAVkeooj4!M~}B@e1w_oBhHLk)D)&GSRL2Rk3s ztOC>wL7`sxt9a{m#5ouYRcJiRmD)CXvQu4NJ^D3W{@QvOpooqzx&g<(8D-7d^S%Ex z#E$SH?1bG2J1hDTwpVo|YSB^N`Sop*IH>^NcUXmXvEu6ZP}ch3Xc zYu~NGw$tE}ZFN4kbIbSZjvkbzDUw>V723NS9cOK)!6n=3d~WBK@7HhQAR2D^|6vEw zMa#Wj84!|4*41BmrIj<>*Ac8#7zXK8ZK(nHO*~OcO?&CLu8*K~>}uI37ef9~2jzN{ zUR{mB9>_puNxazem6fWH=c@p-U^}5&@*oDc69yV>Cs?kUZ32Hfb4cDQRTAGT-WKKE zo3To2d*wT#yxy*`TyhJ}L^_@qH*QC7<{}axVz|fqv`FM zf!?R0PN!U_Q>xQxsK*WMbHVOFC`OUz6?S^IkbZ|z7yth5clg~=-<=>ZWR;vwh2nB} z1P*UtqZ_E;2KalujuVU;kh~%T-BN&trT9J7XP%E0#z9O zGvW%Aaq%;PCPT5d1@3j{&aHB_#)4XMkqxWWnq`++Yx=MYrH1{^2!u0 z3|JXP+vK5$O$TzX$DXVs-IRgx_8|eZFB@lYKf2aZ(l5AOT@Vm* zoksb^U~8oeF5uel@VR!1Btgg@Tk>PuaY)o;3kZ(smlGUQA7|aH!E6bf> z!7{N|9R;KMd++sqEt{%)81YU@kjot#dh*yu>5gMEr>UxEvt1!ZzWAn2MVJ#-U;7*? zl70nFSPUz8=PSOF*Kneq2u>+x*WIj=LC~6F2cOG+fHcr``6U!5=NQub_em(jljGXu zz^Tj@6l}00xusQw3qPl5Ta7wmQ7-O0tw7~lsv~!hK~T|1AVZBx`NPe*&kisKh4*yK z@)FrlH4;=`1%pyfkh|>|`qq%WovJf8%MpH^8V5wH&9BMhNW&=EE_cF>Ql~dj_jkHu zf~ncSXr-M)2X+cNfZ9^Ua`zIZ@TpQ<>R)T-ZtjP=rEcrySyAlUahH9a)7xDqK(M17 zY;03t6x|8#*?0Em4{o9FOuv5cikl)om?B=F_u7vta%~IN07sj{08h6`?&PvbAe6PTtHYR2xpd*PjBm!FjUcNX{8W ze*|B-yvd1Ch+)0zA>!A@c}fPnjed567r^IXJq-h!cf|F0u>zwEE&K(wz=MOL-Z%(}B1Tg7blcwb6w^W% z8OOu=cAL9OYT>XjxAc<%t0JJ&j5At;$2sJuzLGYKuN^_18fOSy`sMI4$uw$_&%?s6@djWPqqvtabZbV_P7BtoHq83C&6KEx8po#11-|qe=IjeRDj8-spw{XQ zcU-X4#vf+2uU75yL*E?>Hfd}=Ptm?!o~+(6cO2=(Nn=c+-OqAl_gkZmcSZy=p6jgDd77(i~F zshi>$!Job)v^Z?nxH9HgXMuOLg<|?y=r-hmN{9>Tq${6{##Kyc-arI;Cm2!!GewAF z3HHoF+poxYb6lUtn~iellK}9;m4P?P0V{&lhsARHi$T`Af=vTteM)fB@h^EyTE`-q zrG^FY1IGC0aukNHcXguctM3+npE?dDoYulwmbZGPhXPr^UBrF1dpsPC7e7|CzHhO*wvi%;)ov zYAcxC<8(zd9NS5^H;9YElyK@9=2y)rIWg4Cf;29iEE2-0>w(N!o*ElyM0*&!Vw!#6 z!g4*FuBLFH1tP9DC)~_Ab(8DScve}Na_7`mGA~>iGw0M5``dC|y(NPcJiJbtIxzfY zX=QSeCC!Hf^>x*v`gO3p5{df)@;<2-`m^4UrA@MPo^1=Dg~qT)m_G9;N6^dE$nuir zK$9)iS^<3-KA)!tz%O2`^dLr&Zo`+pI^81i-)h+|uiGf6RsYcvu6o5H%o0V2Fj&w( zHasst1YOfbYEe3*N)1g|QyYbi{Fc6TWd*_vi_jr30mb!6+IQUsT|GioExQB$Qdxy! z!OwTUzk?D|&C$;WgWrOw3$5lFYFd<*WA$fzApP0g{_E*P9Lez`C3Y zoZ_4gR&u%6$=M63%4ttQzVCVNnFbwhSMR*5wgYV54sf~R@sBdx$rljn?a)+E6Tu6u zQYqBABMasDJb~y5&^xezFRhd;TgVgRn zFb;HxK-$oO@6TsAhxUm|+h@GZcG2Qb%b}*V6iKR`Jh{$3C9)~Jb+CN>LgA^2q+o;} z{k0@NqtbS7K@cb`VimQ`CPC5L-%l){li>`WqSTbg_;FZ<<>#eQW2UNZYNQ2oLTd1oc<%|>hI`vO_ zu(TiO%XL=f>d4I*(RT;t7!DEL8Vv022qdc@`w+#U>z7W#pu=QGvkhJOPI@O}f+ zNZ2B%KRi>OL2lZejNK^{hVbTi0Sq*S0F;)JQuKR}^^7BJ0PY9kld=O_SImChKJr(W zLP*t`;TuQf*sFyXh#aqXz_17Y?WCC2wJz!Jsq4heu63fRv8NtkD}~<*Gy(;sz_$j9 z1#|%VEk_App1aecdX#=``c$^OG|fT_rINk8a@3GSEi~^t5e#J@3Q=#lyb*{y!f1=*3;&Wdjos%LH9HlBAK9}QhyO3=^59?}<{G6W5;kN4D zNkxYFs?1Segq4c%%=J-pbcRu$W;xz$@S?}~tCx)D>jaY$>N~L^DenbPW_VF6?E!fW z)Ju1*X6GTThZ-5ZB&r3GdSEh{EGPQ&)Lp=X%cFSYO}AiM_r1=svCuL`8EPQ{>W-3p zJe#wYQSoDR)5PrG2@nO#1r943@R6Cdv0p4=C;SO^53k>wi zlC5F{&%-0QNT~UvWGS(DQ<+R%w{xjtFXj)dUNdar6@nkv7%%AIrRJhYY!`@*yzmMr90?cAbNhirTF1~LFpw6 zR4lBeJU08=(qD5agTpc#R7DhOb6G-?yTU(>lGOTg2A3~nM$r9TU&?Y2up6u^xv(4QV2WY)tOXgR}to zo#bECm?_0?s$7@C9!*W1|FYWQ%6KW~GqI*uoFiL@0qvBqP+IxJUIl&55svllUgpe3 zsD{xwM$jHC>KK^~j6cF60{DbehI04ZaYaF{+~yabXVt}VJG-a+{qKQ9T5|d+u+tb9 zbGoz!YdEgz_{X@g)EbROtIVx)b!)vrnyZ5a-5cCl(3aC6?c?p(D#yR&PeUs_{{CB? z^W5povwb@Mklj0B?=-#hM|OA=jD!hIrwIE#N?wBmw}^6o6lHi3Tz8U`jPW9RSg_#&?&;h76;>Gm!Noi5 z?WjEfeV@ovC+H<5elfR5=@Kc{v7l?@oje_bi|-syMpn;AylBymI0#-Eq z3KO^Eo!?jYv7&RgzRAwSeY$Pp>V(zI;7Pw&sqdAP48+t+235Gg>2|hJbKI^dv~Gw$VuO3`E@)#^Ups4pZbMm zp$oQ>R-U$8sBY30P}(*fT9_Ts*;(%rs6h4=Q$`P%Dq_ zn>{chfGsZLek#KxC;2oZ2XQXk&#vPXd%G{1kaSaRD$3HaesWQt*7kX|8a_Wt6UF{&IfP6pd>-d2sFj?M5d;@TF_l_}z zCW0}CIkTu4QJ^g`XSkm6>~Xm(#~|5ijv^J`<9FQ7rZ(F+cS z`oIFPe$;E2Sf;uLr=F^0%}P=Rt4T)giM9IM{=?lWW>|w;pximzgqHWdl_D%PdFkx=#E3fx{e;U{wtp zOVU+rnh)}+KWg!zw=Ch+_x5+TJV)jEp{o4+s|<6f_M@iS%usD=s5Y}yo6e_Nt+l;X zO(IECv?U@<*|@kY(W+?F^eOsX`v;$B-z`Hld%sUlS;k?u)zozzAt*(Go@uH^$J7wg zRFt>Voh#r3X*X7C&Z*uJ)fcr*_XT(XB@%rT4+Hz=sa6*{>LsSBEnRnl43H5`DY~8-0i>`EH*_yHYE{6$5CB)*K;$SW`#c zl7bl2qWwyBekqK#HXG2g7X;sN6i2(a^L7G&T%70etnMGiFM*fYIou&Mkf|;)GXSSc z<6uHtOay#f`ELlK=@$Vs~ob+>)%1~Y&6w{DtI?~X3j1t0$E zv|JJG`IFS^(;eojgiuMU<%id9rtijOs=nkh3vvZKjwjuI`YG)vVS!K;`wdOnK1{Ez zTQ5vXNmxZzuWg3powoUal8d@Bw~=04j?EX>HlL_m!$(y_Ez*JIU2u99*x2FhO>Wk$ z>=lh>aJ|N^eWEuY+Vy@Za3s|xKTUerIxYBVu==MqMt6pK`_MGh;{dwtM$K_8s=)q7 zi9J14{Q20==3~zhc7piN4E|;8mD#GBPm0SbyOljsKck;7^tn3K0>zg8nlpC#GCxpD z#&=|lk!farO^>F^xsP5zB&*ackfzGLpuMjtqCcn42k|u>In&ERGxsx3FzA4Y5JX75 z=T!3^lNm$G{Y*ob-Z{|IC`rCSG^5=+C{1=_v2l}huhQ|xI38_W!fYAfjM?aA1Kx|} z7u^^JmHykPk&{C0I-3*;2BvCh8e7V9iE%dR@pq_*yQS~Oy(>KT9rjCB3!CLyF2uWX zrbNkdkpq~r<-!4}Nbo5w(r!9nqfPA+cAv@6=JqCe!L*=QaF=nK%Uza>aY8)dV!I?} zrfR8Ov_$!a5N4OBCN+hN$5j^{G#hR&-EH#JBUI3gIdu#eew$)IwT;3jp)pi!*dhnc`1JGm=FfH2)!@byv7If0 z?Q9urX8~-@_%4U;k8{!GGNmH!j#sh4CvWq)!Wu($aZ|#_i`jV~<}C}cj&uG-QMT3M zDSeG*`+5zPsp-DA(2Bf|`|hf1X`x#VALS^l4&18}@+_xRf;?G*zK6aGrMu{g`Or`< z{O&p!Brg$3_ROHvZl!J*iCIOlj|U-WqQEo=M--U31$emYE|Tm7y6@;(PJvrDqD4br zB%$*A3yDC+vhwAnXJjAHJfugfg)c16s!GrN(zC|FT!QF>W46)?yzE=AnOkq<>;;rN@@{82-tG9jy9DQz z`Z}klem|E0kGqArY(3X58f;+hym7%Vtnc-{vhOQ`^?H3f#|7us+py>*NUkP9y>z+V zX4Sq}@!84xW@42!d+;+e*?%eA>_%>>oZMKT9 z9Hmt2D;f@|041P7EPq@MOFDpB7Ry9odE;Vf^pu%IbG86Y%jDiIHS-7rYYxPbAMC>r zx+{23i*yVw-)M$(5A{Nc)IPjju&zwZ$CfV9B5si;*L9KqXDD!g^Dp(`-;0K3FP%q0 zex|nUkE(3)_nUB8d~z+1FD}aM(yl3iO^O~bF8LlnWO*VC9A}t(JQs+Km7112G;-hPIvDFojIUfnSzh)1C#&T1&b(&9gk`DeLq!@a9d4H(@T(&AZLN z4E-#D3h@tFzl?kWM3Sk4x{wN(IdgE0$~|+a0I=qF9pDA}Yq%^PjQ^OxCXHtUyHWs* zRxwC>!isTGZ3d%#a3j1-m3Gn2X4y`pS~u&@0yY~t-`zax6;oP|D^&!$5*vQDJv35R z&DN4fvmqH2cusd(4x{a@azx4dAqFOoZB62`Mr=oR<4`PR!9pD>G^;2igymK^C|+a) zJK;Zpx)pgE4X_ueuRvlLbI;T}OmI{sw&hv7Z#{0~dLIj*dbs=Qe z#o(y7!s;`bJ#(|8(< zrZL88y1;5?+bs3iHht(ar@iAG6dB=#FCkYti+n&;nyU_~Q_-cg!DY`>7AuNgg{plF zhX@L7VQfx$U*+Y=EtSpkH+@cy-;n5<-Lgso2LyDbiRm_YH<)QVm4_5RFYD=IcnGWi zY`qlb9lqb6Mo*tco#^k;{h9BpLnYcRJJ63T7r@XbN?sdB zhEo*b=u)WV`AiCTIqB)BkKi<{Q^fuIKl6rBCUo?@GIcsAON$(UBdaY*1hZg;|RJmye^Qk;AhyOQTtsMpMl!ZBpf#OFB-mS&2se7=_tS z@}0|Yt1%muCK}Bg8qGQ~4QV8O;Hvm&;YyUm`5f1AM~`yYaVej?YR;Q?mb)bG`thP_ zFW39`X>tl)JCt08RK0(nCgRK~;!7Rx9pi0KJi94qv&yfLR4PzVGv)5%JIV@oDC2iA z1chr@Y$y$u_r$1#B{yzb5h!;PC^y8!;Z2cv$p~|p6h71>Sh~3JN>_E}y-|r!=+%bg z9*6&sqJBfhTmF|*`QMuw3q~$#zJ^?pzLZs3Kd6;nCuir{dtW8AWCBI+P0o_x_s4WU zogMSTAif{>EEJX2nv8ql(l3jwR2m@EYY%?hcyPV(p#R~)cl!@s?>{(hJ$UtRHT~41 zgq;!ydK+kKc0qRAjt$y!HNqj!(DR?e<2y1ONNbZtv6oT95>=)q7PAa&KY^ zJh5NSDTU(+)T@&tk{9a}5f$jwoml+=AQ-07jW5Z8iJd3VRiu2~%fd#EH4Uf5oA`~w z=xe?Ry-yXL=vg5I#+jnzVY!IO6aZke*UN@|QJglJpW=b_stQm>MJB+UI++^I2U(U= z$!Ig`B-@SXA^jnQ<%u~3`FHKK>bB|l12j(sFt99rpgBZ<*VU>)hXxRU9aAUOyQa5| za{mi4n>eLq+yT9kI6=y#A+cQJIvq~N$(N<=Ub2G(z(2ndZL2_6(DpTTGDutQzoadv zR8h*OttuU)?PWH}m!>R7IJi!J&W1D`f)1GUmikV&8u!`zt$*K!mb#m?|@#xK|(^xA;Rx4x&7gxl3~WrhIFHUxzRDMxm>v)&+5V}RMUop zWycG8t3~3H^nHzZ83OYcQdpHpC9QOGwy2R8HxsfB8q;h4sC{@WR+@qNy@HHzO5aNE%{_Q9P_Zx-c$7 zRBV$0a6CuQl)Gu6{8=pW$K!;aJmMox58D(K@N#i|PYrj`iVIpZ;t73(bH-%A+k1SP z!#EP{=DM(9*r@H!E{K>t>w~5Vak9nx_xmX|?I89#9Sl;nPAkVk%l|$GMOs>00Uef{Iyo$Q4engE43XNq)_WV6r<&x3n{f0Ll~qr^ zf|34OU`cD`eprq>LC$11#XyNg9^Wx_*C){($^bTN1kQo<(xkop?^)NBbnrR2Vg1FZ zSxPU)&A2S>TV4u@@6xUMdGn@fdbrc*SD7YX&z&VCx*T?8yQ5%oOtiGH@eYaEPCtK| znd{%qq!BAfU_9+wW2X-WWQX3On4?z+K&-IDEQw2S|A=-=&Rr->UO{I%PRp5Q;7 z$M`Sm-N=RXvDKlko$W3B^LTHE@*Ztb=3aY;3++DHO7@!3qeqYS@UL1~%XS^Y=@r^< zn0K``$=zx~18gSplXt_(or?7BwwunItrB#dyjxMaBHf3Mdxa8gPTUS9?gguFxv8*I zD8ZyOuiQx*2d{$H2lQ0n{j}Ag z)CNPD1@|8uFRXnWs`%jL{)5*`G%PprrfT$Hw6Ln&T2EVy7eMCjfRwtS^dNDSn$uYY5y`$)u_TFT28fL+emb@> zKQ2+=)g-%01j2Y$w%n|oX{D0|Tk899&x+9MPB|N)YY%1ERl!<}n{imjjCc5LqpHD* z=?^)pN`UV_JpVi)002Hi4p8%V76nlI&e8ztx&na`K0_wVssGJVbXZa{R4`v?*68yU zXXYp~(3hD#w*6)WlgcM)^rL4`a(bD60KM8yi9Gq+Bq@B&N~NN&*(e(p$p-)+?O?5s zh5LBNB!?XW#y!K^=H;$Ivs|QxL0r=wg&^KUAWUieCF%zsSimwB=>FmO?HfLqsfRF^ z@mwy)*MmDDjx^lF+Ke&&T7)r{@iF%NaQj)0jA5-_o&XoK?L-?u@k4p)(aR39JUZ^V zhEguhaOh>Y>39NiG>PgQ2 zHX+bdIndpP@V8Rnt}_g{&ET@`N4yotKH!+#N~WVM9~TYpo8T%~vZ;f6w>qkDGB^j! zZ=1i|o;J5S`zNONXZ-}ade&r!P2IvT_Y8re`o$pY!nX4lkpu?k*z8i-%`Tv|x%ar8z}_a=dHnc%Yb%a>TaR|1Jc)N7^?Q$Z zcH%wQsyx|x-0yEvtZ$gu*fhI%!(Mlo!R|8I2YephzXwXnhsz{l=z1gw6^i2ikvD-r zVJMSlH${@Spbl31pYa5wRSw+qEnyfv>t>Uy%ebF@OfI9RjQ0QJKdmgk_$qpey@Sq) zGy;V8sDRs|==IAFkg$2rkX(_AUlb)?rDrsVRk|MYwwdwo**KW7FjHX~?uff4?Vfn8 zLcQ5DNUTFP8lamI%tv~+2XYRg_4U+w-4jih^bo4^W)HP2yveCm@!f^ld?iDv-_xFq zPotUFr;U!D&E!mj-br2wQ@~Q;*3wV2SY1$$8M~!;4{eh?3!U_qVNN9Vng+P$wH~em zt$A48zhCd-T2A&MXtLWn(}i({($wh2`0xQBO|K#0#Z}b5OI!;j-+Z%AO#A)&SJ5~l z-h7^2!xr!l$5Am#deH6YDjAKVkCS4|?3)8yQVcSzuit>%;6|d$xQLQZ*#Iw(#L*xd zM@2g9p;*C(UAx)%660Pzd-sy2Z8y1$KcyMW1B9hm`X;?fakc^yABnRmW%K)CIzIaV zA~hXeY<600sDYI}eE0G=g8#jF`yu*pbo}Ay1^j#;y?Xh_qgOvhAKpfPdi(y5(cAAo z9KU>V6#ek{zN+_D5o0h@Q#8(RE`k0Zi>R&;QAvzM11mkxMl%Xd7u9=>Xsg|R0>sO% zq0jHLZaTz8|LNA__7FtiC3fK})!4fvzfM7T5gSF9Al16F=mJ)xanc8&kS9q5T!Vp4 zF7N@M42Uy}MoEqUv+g)fhv?4`M`%1B`~)HqKE zNrCT+Cehllst)W6ZB3!42UEM#e+p7W+x$dv4AVsAFH9Kpf5Ge96I zbbvZ-ain6{&-V^2SpFzFe*5i*KRtVYgslJW{o5aaxnD$U&u}WNHKRYh{O}#Hd;}%lKYR1x$LQ_1 z(X%%{Mt^+y=0!6)`t!T@N5{v}+xH0VG|g6n{VGkLr1TV-h605!;lso{Qw`)@psQ&y~5TI+_UeY8}E;! zZ;k+!XWzU!V!+Um=dYf=q=QFPsJFW=uh7rQ4&CZ_J*K6|M2qd z8$|v2+czKH!)FtE_WpyZ{im15N6qNj`5Wp@-P;29{9EXif4W=D?)LFz2?VUT4EqEXzP?yRG9X zi77Ywpk1%(ps_iyN4{35!kMkVVDZAjBWl?2#YpA&od+RFMYHcOL zsI~b1ytTLrjsVbN4Ck-u!r^&VlJ7c#CtP(_-n!N`O**VX!ggY+<<$#90iY_7b#Tnvql-GLG^*%hw7J+@Ljr zmI{J%GQgM1j0}!Yii1SO^Au`}M5xo;HEJkOgQEMF#5tWboyWaIO*~ciu)Gz@u6Td3 z#eH&-#Pyr^U-TRsLm^EFPg~TdTc!RBAYBwOnncx)rdFM*{uB3bbGonoE-Vhn!|Y1> z`{oyHG`XL7azRlgHh(G}>T&p~Sg)V_<)`{j#p%Naq;DQLN@HN-H24U*Nq18N5c3#C z0`H{aeggmLJ?@_OdVB4?$KB53NBu|rC+FSm{%*J1>2Jr|?Z;1^Y^K+vL1NSs+)|lo zf02w)Dv?C8v;ICxMVLU}>P;tQyBsPRzAWYZxdjCXb9pWXx`?uT7~xbmrp{}OSxe6x z<}LbNC&E&`0?I{jvyDIKtn>C>kRybF#bd8}HX_6sU-NP+R9N#S%Yn{k7D2w{sw%>*q|FsNU2(7`C{9I*W1xn*H=xTLe(2k8TotZxNP%P&H$QGe*ERsB)ew|7qr$hJE!KvbbZeF9K@o zhmpyoExSSh->wF6iK_SrwRYGnfXL2q+6VyW!!yN+dX84~&%RNNVh7sg=Plo!*Vld; zu0`t_lH;p`g}*vqkB&xo%Vw#8Xy*(!+!`eC`qUJo%L5GZ+#iXZ)~$)k7%5)L4#U*TfP$)xN6%m{4f}p{UCM@o8O=9P*^&gq@e~m* z+|UQK@6cWt6*G)1j(cFNK7qNC7vn7JM_sOrO~NkES@rd%SE*kG3A_<7FPS%>R?e*{ zJ+7oFf}RJwIq6|{H?YVox=CrDjR4Y%Ax!cg zfz(p8zT|Ap?>qJZR0)-4+9b;e6xHh&>bnTxI-a2k0BNIi$8)NqROEguA{=Agw00ZP z1xP_J?5a*_W?0TZm1!KXZ3@kSFt=!mA?)OD zlN1`lFEl7J1W1erb$;DIH9(sS2OjKuGQwG%&Y+1@om(*GTpuRAz>SL@3HTvYCC5Q; z2%IS*6n^zeF)^ho#6S%{t{on(H7#KpLfOu)#4c`^cX8BleEHHJ6*A9dH)yI%@*duv zGevPOBZ$L8IS5R`%9)~ui zF_Cp_g@E4$k@fi zRxEpBA7%a_iW-l@%Pj7jbpD^}n)#`>)OD zujFWl+fMu##Krg}?p^VNmEz}dk^Hq0rXe>UprXoHKu3k4LqwJKyWia_SvOmZv`2JK z3zj!sbF0|oU@b!fx0X!~*0RKMtJ!qR6`=6Fr6qF|r@69m_cK~BNoU7xjrI&+R=}+_ z5As^mV~SqFCT3SGc;h9d1Ni~K&R8{I)CSu`!|P%c)vZym48i0%FnkjLi9Xm42jo<= zAC=cT3TG`fjv&bHWQ7l)hBCW%ne?t` zWEfoK*%nCgtJt23HCoXdv_xryqHa2ja|MK@a7stmsD^zz$l~$CXNnGZ+!KB{w~6Q*?Wj8$GmRKh7Z1bZF))xgHZf~a%U?10R7$QFlwwx_pLtAwOfAI2rdHRy zulZKku&AHgThvit!h6AkkWz)c9jZ{Zl;I}y`*b*d%#VtwInC!?jq-yV6cfd%VdlH4 zQ(6mmqiq{_e<%~O>derFn6w_Lk!e2Ovg96aAssTSVW3_;6-4k z^gK<}nm{YYg2Q4uaBVcj!jg;;Jepe=N(NJ+VtsR@m| zOXgP1*3xDIZLr%$JQUi|nn86$dc&qwLHI zH*3|Gbr9i=j(cm|fqAH*+Eq)zEp@LVYNw9uXnUzK9N`m(4ticwRKT>Ox~-pA?S4E$ zhFPdeYdf*@2QaS>*LgOr=w3iIa6vm!+LeLFwpn49FjzLDuEmUT{vj<=K$zPrd_PLP zlJb|e_CZqDDbRHbG=jW_hD@0DL#1Dia`d)JKP5bOS?-YOvdgnlp`vuQce;2zZeWw8 ztoF-X*&`>nE(r&#pmRH)Lw~8G@OU4ST z1;Bs?i!4`x@u5BYvAOy0|NifwS%JO>V9Cs)y^7JJ*kZa7bK2vVELD5m-#R z>hD}>G_SvolxOSrW5*&`Y3su7pg$^g5u}x}c}Y_jjQoq0tzEK`X9s+-ip}dwn!IG& zj+yX9wc$(Uy0))!qVSU|XMT1+SF?zf5rEE?6YV;TWBr8LMJ)`~26Z>T%E}c!Iaro= zim;)vSdF4$ue`Du`B0kLi=Yt^{o>jV(H0utRXID$u!(!6O#)!tiUfBa-+_c~HE#kQ z--(ciceBU42KfaBSqGt zE2bx#gxXB4q2tXjo{BGbx<1MQRh|4rq8@pk)s0^gnpwzB1x$k6Ct#B8BI;*JF=In#N$3v%_0K}H z)QwFm(<1YxY_(4RL8hTQM@E`fDDVD`wVS z<7Es`;S9=&mK&m}hI8F*0+Q&R^2-pOh3bB#P7w6gI(u4tKfIwkJw`ZT@Ouw&wGZQw z7a~DJC<(X#3^h_n2FJci`=byV#u69moXK25wl=JdE{N=+@%TOL5he<~1!F;-sqDDm zL50u#CDDg1OFvN_h;CJlPj2jS?nGe$Y_k>RYuGb8&g? zTGiZq$iAxa;NfP%j(jr75l32rv7dw%U0li1R_P_e@r8`xXkZu)vl(qOv*;#I@homK zE`U$?Vv}-{H>bU@g1pJbOu{dNIISJ?F;|VJ=e`>?y1fE4?E%|RV*@`ABHiUF`aF?8 zE$LX~+Xj;^jfb?EW!U#TUGno?RE$C3)>U53&Y!P4*UipO-PXj0NDJH#XqmW|Hrs*y zit}tNq&*z=!y1+<@}dN)ycxKMZc`2>wj)lmbC(;<8ukJc84S?J+FUp?_k@(ug91L$ zUf5hH#yxUMW;walXM=_@@6p?)FoO{U+aU4VTlX=O8R@pcHOZx1el(pML$rq1jF}GO zs;LYUe+@k;1H~xW6yj%F1I1Lve)P+218>*YoSW{o{YRZiyO-SMP;_ zpa{=l4}zDK(8}nzX7YVl)EN75-q&~6Bf6TlrsTlAsC;imIQ1%D>XocjdX9{nUkP_**6JHR+aBzWv= zPJlaS(0sO03$x*QdNIjuo@*`FK`z7*0s68I`ccul%(6jLT&CB=)|jUK{eLw|;?((& zT#ufQ-3upllaEU1T!-EP3Wo=VR9FR}-UyUwNgv%q%G8UgiX*YT3^UK6j=c49wT9v%F}1*_-Jcj{}H!*PH1Gpr$W6*XVNkU2djp z-^B9e^p$R=D`)9Bm(y3cnU25~Tuxu&W;)$p|Mf4YllT1a*SMTsqs!^FB`>E_h=%uf zy_}A<{rl;6zMM{BGD`Q;&E<4}_WbR;AK$K7|()zp`>qMUw zFRfSJSVv&1Tw3R_ZpvBhFxq@@QuIGQINiKBxToZoeUHTmI&q8pep)DB5qpE%s*F|z z^rOmf{1`t#I;5_zTN{}I!b+gN?_%oEJEbxlwmq7rS|77?SYM0QT$2E{-Z2N5d^%}B z>U55HgSlR;9KKj;dJHSXXn@xQB^jH6fbbm2hE|aW57tZ^__YUX_N<7`l%P5PF~tI; zAlkx2bon0oLajY0*7kK-?ZyKrp8yR{%`G)mv~P>Pp(DrYq951x?ThHfI_Fp|DGC{z zOhD!aKnWAxStA5t?c{ly)6MYHwQ}(0K0ms>UwVs8m`WSY&SI*@3s2u{Xd;ukzHVa? zvFpg232YOlWJCZSX4Mn}{TpO)sMimbAxk&xzHH|d(flbNArKoDD9ig55@>OL#m!yygU@UrwCRp>08qJTQf^cIH6(D)G6coujDxg#wc%-3bZlUv3XFd~TB<)JeNcLN^gb#ANuX_2%u1qq7%B-+cdj6c&6%wBQ#pl5uOC zeLuo&7Rb)JacsHISf4-vN9^F>DF^JepML71*g#0@5q&kIwREk)2TU%C&i(IE+7}qY z*MX6mrqOVaa~1!fxZraHvAU}fQi1&=qPNO=s>2sJS0&=X zn664(61F3T1N!(wSkf-y-fTZ28yTz@H{YfGKE`5$iGyLjd)WZCgECN{UX!Q>Hf_YW zS|>CHN}Bb?Qxo~QNRlCWKdKv*lM%8h8^Q#h38!myj zstPkH8y;Qf!tYIrad!QZIZD@*X<`My`l1=`2{R4_UZG!qg3UcKk+^fu(&z`AtBRD! zxwd;~dC??KO|$BkQm$0Uzhv0LV1uKipT;)y;IlW!FVB*q7mt#&Ue-_k$3-5GK#wZ! zDIk^_IR0zhY|zKk&XZ0v+S;PYu$GSFLE59#ZAjhbRKC;zgBy5CBsi6JizeqzXr zX=yybKn#RAHO4-Xn5LTL?(+2ZlZ_1?Gl+T$#(<#G_)&^F;oaBdphSE-29q=`)D@l@ z9(C9F(Uc*}>cNb9M!ZY+R@NwL&fSWO-Q8=fspe zwWsEo0PWMD?KokQrgj0O+7SxMtQZ;b9A`k2r*Y2p=m0>`}xpge_JFnJ= zVAq{pk*rHMc0Od^#ps+)7efrGE+I`Rg6QHvq47Xq9L2p$8^W0$@Jah-vy7EaAn{a& z6k=Bdg#(uGkSK{Ebt(wz=>(=S-X*k4sXBuP<>NBT*aruX<~NA9X~(7|mE)9ywqEk! zp;g~rJ{&rC2IFC=HqNSaETya?h0P&4gEXHa&X{)PL}f>3tKNCPam>w)&l%RG8Vq@6k15MrV)R6WZdMg{*4lF8agPb=u1_JOiQVdC72NQfv;=ZXV~e%{1BU-`wnO72R?D z)8VJ0^<<~fii^?I=uo^>XOt9c0AEs1Z73?`X0X;EuX5aFy7_%jSn_nFPI@W0mT#4y zp_Yxw{vT)h$|K%0u+jzRo49a*aeMIo$t6tI-eim}U;1(ZqNDV2x;^LG(pfmY-QS3G;>Gl7VwPIq$X9yCz9$x~0O{mrP0#vroTul<6AywP%AmmD@CV_ZILVao{TK zr|A>99H%3Hc{noPgfLV&_vZ4VX$;#~iU&&=Ag2_pD~PFlp5_?yC+3?wSmxdwMs?6A zF(|&jvltJSsf34itaOo}0{7-IvV+DPi58SdBv$Xo>h7@`TT`GcF_{BdJ*I}&byDZl zX-Tfu(Nkaa{pupdHJ$}UBd>*3!jL*b6=2uHM`@a#_e?;^5l1alA%xt2JfdY}Be-1%Dq2DNv*MO}RU>Nmv`x9eZCKNcLar?93UUC$S@hEyP9yK6 zjw_gB%gw*k{$Bf+%?oH|t#L0}{Ef|mW=x}opg^l=c8goOVY)M=NiZ)NE8;}%J07Fnl7`OucR@kkGZVkhhNx$gR z#2~S1*75-?N2GI(DHq{E#*U^kdW4x%3R1ZNU!%=G-wT;9nr!UL67bcao~B1 z>ZfPS(rp|B@NBpA=!|C-YC4l7-JDv|zpG*4l#2XL8RytBSNeA@W7V5781z1S>nPpY)S_y9@I-bgK z&_b{|mJoSPsRFqB<`WCENs_es*m?;7j$*gr1a`KFVvu+lG8(quPQ;FY&Lk1Q>cwb~ zj=8d{?@+L6r;-)R5h=k~LcVx@+fZIj1dIbz*S8$68;=ee5f!leGw@lAP~Z{vW#@!- z2Aa>nQj4O<i4c8h)#qXZBw5GUU*!!@cfnBSg#2Y_9+xWM$Q~jg8 z@#OSjqvkZJfKyd9W}PN~nwSE15LIbOAC`)1_@_e7$R?Ik%!10-ykd3I6&nN-ATCB% zDrjOWqF*#uHXPoHm(Kx~SH|t)F}Z#PoKYMVV{$RH&U~~9)GH-JwroGjlTXbEWPuTW z7S8&*9eOC?ivqHQ1&SLhYVrv>hZQZg>B!}$lb`xO^}oJWs<-BYb@gyv6W|&A@aFA@BYNAeP-aZB{kws`-J`m`IhFjYy)pe)3dfxEVoYb>xAQ!{NC)g!t<0aG zu4BZL^BCj8kv-$D?!}eHUt4Z4BZ^CwJ8Ct*+axlbgKJJ!VR7KsffF4`?>_vi5dIwq zz2k5}tJ(xy{dU3A!W+6~p@SN^@US=mdqY`1q_?>h$YG!rFhxZJUZnXgX_wWx6j3`l zzcGrib7;W0psnNVT+rrzumr6_10EVM9_ZP1HybPlO~riBl*pjzrwe)!(P7t=rG0+( z(gJlUUO{VR(aPO@qH&SMbXa0}`)UFOV(MWiih_%P@iW&y-KJF&iwLGJ|M2ry7j(i{ z<}nq;@6dpCn<6V{KitKBsE2*8g9yOy-V64bt4G)VF}Rb8t!qD z(gPx%n9)~j)h`z#V=!MtZs*#Q1ukCUu^(;|B5v6ndE=bbo*6<phP-W!vnJ%!XAVSNA0 zIOk$1I*0<@bCdusSXL9o@Sf)=&9o9A$h&ugeR~B-n@f8QH(XcUmwfqEUkXqj82Vup zx}=P;5vBJA=yP~Ok?uTd=Ua5N{kHsWoxWPjfCe#e{Ko=Fj<CU3GFS}pOM2%^bq^A6IMPcW8LEkcEXF%_0INSCEdV6d7_bMDsEZJV2*Z>l zeO=Mw#ZE0`Bp${n9VBK2qHSqa00WIwjUf_$5d9(k6d#lMi@Y1iJ&mFO#RUQ~Q8j}2 z)r$lMASJu+N4l_)cRD*y+S?7^(^(^QOV@s*=VFY!n<%E2sU2>FL{r3!Rv5Oqs~m1X z0JSv1;b!M(>tLifLC92{Mv~NX*OilipVS5>?)Qyr7dtoh>8dQhIR+atC;)7L8OB%3 z1gYxx-3vts%-rYV7R<3*z)=Q^ABc-;;*=AUfy}^ybrE!sL85sRZ$6=q8-OsMUd#mD zz7vGYvj~#EEgmG#Us?ijh(%SBS=DhF%+Q>vOAKp`e|D^f^1@r&-`Z~0G={bPCwtAB zW+lkm!pq;g%Uu3m!`&uda9*+&GW zt|lWoTu~2*etP94J)`Fb6}@cKY>s$kl^dX$$lQ-aBj`mRV62CU#x3?uroP|nk-*X}0;3?2g68Stt|=g+if9(akn$ z4z)SRTP5tORPbn~wi_gFwV54(fhX#~PR0YZR&+WT^Ni;@5{83O5wy0O#IxggsD$V( znwa`;nOdsZJju4U+uE=YAbx2EZFF@HHnfvmTY?>Liz*5$nlmGqUm=(oWjYn1Bp~fk z)WpC03YT@!xWa8!sKDOojGEu@AyXmKnvxi{w>nDj1{=#UMs0#=k9+taNE=%s6IZOT zAJ1Y-0fL|8h#;e=h(IBjmq!;Ade=NG96si^4(*sKcC?#*`KsFBJJA-r+Nt|_uA@E= z=vq{WDQ7pjmChxDbul(mg7Qbeoq2Mu(erT`Vt*;aRCdd({eUs<3Ozmlp3-54B0-JD!Nm zP2k5B7|_Fq>P%XVzKEJ<&!3l<+bb^yrA)qksq9mi;zsRjVYGb}geq{it2c$Sb-kHy zUUBBPuQKs!VD0KH&y&$`O=lX8P%Wjuu z?-u8Bh67tN0x9X~$$a!as?0&otI>mfb>JWML!42V?f6zZSdo^!s?5v26P$eN3uHH# zX|r&e>OXtoWJRP!zMJ+J~H9UGoiOyjg%ru2#KMlDwEwl7mE)D|1tq1sjLL z1ZHd5i{0LWNc03HAKV#~tk7W&u47}ja4%PxNARXP?niABmGlM^PuZ=C31@$XGiOc{ zt=-NZHmZd+DXMjN%Qz;Vm*DH)#7Sa@`4k`+`>ZLbHUz24;vc``=r@}%H1^d;vulwdXa5j2ijIM3@+{=IdHuJ zwL=3E;}QIo;E=17J+ketawyk@@2*n#-(K1N?Un7{UfKTbmF?4bWs~|s_P_hBRndK$ z91ZYZTV8}eGRgaRqe_)1=`mcZF zpdB9}oWtYsP*CzhmCN%E2k(=6@vIaeT_xa{_G3e-dlX{uH>4DQrg-o7@f0?w$|?P| z?_Kyd5hhJvEJB&8^JS`G`!MljqVppAI{sP>g}%UuM}10X)1p}5Q3Jhv|4cvdc7cEP zLG6wJx{_S^=2Ip$)P_3~Hy2Pj=eJf?IPkI?=!)$DdSs*9>L+pUy&7mgt7A}0e%TMs zn4@N+)oh%tIRMCyTwiWcySjc!ARSvQHrfBN<8-6;xvLOSMZUqh#tejpH)z z<{Tj5HKN+x$PZE+@e~75496ftpTr}uG8mYK)#io{_xpX?o)!MBD|-+oj^+c?6J0f) zB!dau$Wl-*h%~4UE`ua~ujDRr5{9K;x$w7|^5zST2z7QvgJUU}d5zAvN)Ql`71njd zKr9drj%(SZTC2zk`;-pW7hd-^fD-6n@Du{Ppino?zXW~%<`1Ww|cS!mi)w2Eo#mfmx`#@^8cBmq9oT&oUC-j$(9c|T!{QxtG8GY%tsiE*v(_Pw zrrNu2Q$*ZMrg^Jav!lR46Jt@sB2>Z{Vn1U2#jgm{ulUAEN3%C?3Toup0sPU}w&oB- z6IDMOnO2FXte=@CnWB3NXFpOXRZ>rXAOj^eoLx?h7h3$zlyi_Lb|G+?Gy_pbF$nNh zN%mv!Q_w^mp#~~B(<%-0LnTnEZyuQw+0L-91~3!ApN;%AZD?N(5cUhBer@Qdp{h

ZifozB-zvt+2x{S(r9$MnA`w8p_cq&+AZ`g0#6=zk)qod^g2enNwj za-yBfYtZoB91V(>1K~T27vi>>;>3*7oT%^AP{5iFTG{uz`0^P^TiP;I`pdwU>qm%v zGV{HkbgLhDg#=qUDJHk=Zd2dtS_u!AP1vy#Qo4iWZDrnRV&m)e-F}FGsOe#g- zt?(V1CdX`h(?S)`&a5!EDATza>D-KTUPd}kOP6uWlwxBeUE)THc-ABiX)15WFx#xH z6?H-Lb0uw0h}!XBhHqgJ<)!1baz${Nc^kwOGx~{+t7!6AM|o^%eMaZ)wov-ER2q*2 zJ}JSp5{lEghhaAw`U9?pKSzA)%ZhLPV~Vd#SIbCO`w(I-f@&9+d;zMRC;jLjV&v?h z=0zNrxMd*y31U7tL$fCVzg#!mxUESvbfLIri><`+CZfAoTytcm^oeNOd2J2N;tyhO zWN6EdG66x3C(w^XV(^0QsI=Q@&Z}Kbi-TlWT#tB$p>mGG6Wy;=tcim+7k}0bs#`Qs zn&dLxOyU)7ASd3oCj3sMX^#|kz%DYmcrU!S51!dTNFja7oQ~+25z3(gJ0sn6bZE`u zQ{!@37+D$}k>{lW`d51!lSHGdOlf4HZ#R`rb)Jx;Xx zw8(Hri6!Lsh2>pYg!WdKqtLFJKRm|eGX56XQX&PBJO(uHg&(s<8y}!X3I|p&&>Y#r zt60%Gl{XAJEddvFK1S;d@>^$Mwa#Gq){zj!tE`bQTad1iX2O7NF(d~M)slJb#PMbA z-4pIVZsRseZ-b&j!Ld1q`2-JFCD>U&u(J|DyElM>)fU9vI;mx;ME~ny^w|B42w(bGQIYu^M+^?&~$*eXK1{wFAe(iXCWP6{1HzyV)S4U zM}g4z=%kj?Nif;z#6Lc!#r<@w#aA?C2RvrC^|CET>1Jeyo8N#6Fr-tBLVvaPY$hUttLpQ$f81QCKl+c2H3=IaoKn{)L-1#yZ z^=5cSy2%8~@A!gJpETe8f-x12vF6JJE@`UbRm8NfH?`ZU8tuGIS6`4_E`N;%AoS;_(gN*EH9*q;7i+(*3$&jF z{QXoKa?6`jm4yufd!>1~v)Vxc#tX_OUpyP2{ZGQFYbMJn7-3}M3uY*Ja!V=k=9xbr zrdHLCXqRouW3B2aD9uO6P#; z712A6acN=eDWqj6D$(KW&dF3)#f%F8_+vJ{fpfPyV3~$bEZ<}{?nzosPY7@&KE=fk znXgGT^nvD3Q{UL_Ixh5%Y%p&8(|$Avoq`A~m#uRbyM59ZA?NzDB;=`pMr`zQvEALQ zGZ)#YFxUM!jbKopEi)|d;SYA-WtXw1uPNWbT7HqVp^p1oZPd3f=(3g zGR&2pPQ_Q2^TckyfD2WRR^!MHf=h4Xef5U;X`BFv#D_BRp_%y5I290yJ2G*{Ox!V$ zW+JgK6Z>Xj1w_kTYx~-f!wcB-`<4a1x(}oQJ~|zBA-0T zbaeK#2TJwqFYJ5AV@ZlN$2-yo_<(HLb3RA7*Fd9>sS>n9AFaZ-AuVlT`Fke?BN zst*szA_m_<`Q0P&Q#PquV#m%f1a(He>Kx8siHv?m;|i~@yJC^>7tb6t0>=HiMiWu{!JnYF5i)YmHj-!dgM%a; z-YjFcK`)b(Qec6(600lW^(o0yp>_a`sRdzs7*7=ty8tc49krbb-{Yp+HeuJqsNMp1 zcb$5rVZtITI;-4F=vme$;scdX2S%(tF_w_ZwgoYtBYlwn?_ni`IL2 zyjjGd>v@gF+O_b3PX^L#Fdseo&jLQye&@HUZo}s?dw#FhtIaR2q?A%hD`hr^pm_~! z2pyfnhG>m!26T;yBK&~2CY10Aj0f}aGitt07*FLxO!E~M#=PvJ`(9<(#?rGpngjQY z`k_}@Gz3F(JWzF4FP#&3PMNenA@#;R?k zj}61mE9;@fGfP%un-4qj_R&y)NdwzxIlbjm&8;Vr9cQfr(}ka>p0{O9+gc?Q^^)^` zjoNi>n|pH&n{#a&|2;3#J!)qEWL)7ZnmhRr!u$^3wTv>QE=!Gpm{et-#tf+-T$CJ? zG#4S~YD02AI&_|h34_ba-i<8vV&r%6$svEa|pZb|=v=Mhg^cLD#La5JCbpx6%ft|BgddIv0eYIk zW`ag)R*lGse}?Va#{U}OVaU{)b=49gA~VBL-#?15grKw4)Js4^aib}AM5|+QJRZQJ zOqSGWG&`PN&oSKtQA@SD1`p#&w~zMu*V^rx*X?RClQ0kk85v>{K$L}cySe4-F`+LR zX!SbXmd-$ooi19t-l_!#?-VIo&+FCUzv;*@GZOUCFSBtJb0>Dgz||s^__v|igPM#9 z!{g&<#A4&t+j@9>bfzStlZ@LS8Vc^3ZTznu9HxWE!J(2^H*6;o*Mps8XA;rC?s)hg z88JZdS30K$s~FkjxPp$SvRyr|)k$*Ay8SrvS<8s9Lq8hDo$+K$;*bB85q;3rs)UxN z@ld9z)L=_>v@Yj?51K+na67cB_+J$!<-3)L3I(2ph<`&74|+W%kfPBH8vXGoJPX28 zsWOxBsp_m|yCc;jUYGhKme6j{=r+1q#35F`jsrxtRCF?)oN>!0q~$2z%$Zt_XRcluNlGYx2qvYtQC`;MfFRk*>&{@ zr6HiYRiz;~Dp3($wd46_q#Av#t!~&e<1`hq)oN!%g;`P4FdPV)oocrpgnDe!PVk>F zsq~N(Ku-^lOoNIHYDtTZC=f@h>b*ooCxa4}2xDrHR#j7`=+J96G?oy}W;al6!tvS+ zr9_8gl;-aEjfUzPjys-Bj?s$LTD!JY4LU}g)(5q2r?%yqv6`aZ>NHznXht97)+ibA zJ(#+T1iD79w*ps9DICo@Sq$7Qx6zVgXcz?}ZA7?jx4orWDjH3@uqq$&+Nq~RV+hN~ zv&lG?%coG)W!&xhaWoR)9a+lAKk?s=6Ga=q;x&mnlS=_vFpMZzhf&g?*HC>-bFI)| z)v6vCO#BY^W2Y5*vPZPJ*KZ`rDU=(c*Q@IhqFVzWx=t2(><>a+DTiU$Qj$WEasb2B z+iqzQdWZNu$QNpndUwELqpD`ZWB=Gc^P!=Rxe0rLY{KKv@Ai*py&gB9-)XCe$&A!- zt5K7ZuXIGW+LcmxJeXle27zATa{G#3u%YJP2i;R;S)@Ybr`AH@{Wg@>J+3P-XP$ ze!VFR*EL?)>NK{J@VE~Oh}BO+^@>_*`_+c$1uArKLX#4-Bm7r}8VWO%4Xh90rr$`W z97BmhV=6^&s8AzfBo(Bu23<-8z>-}?Y5KO_Y&382~Z%gzp1G}wdB%6;^Fv6 zZq(E)uT2+KBS;NBpC$)+Zu-0C z^J&sv9toX9d93u|J8!Zw6z3niw`=3p3CB zXPETYUmc&2ZuD{2H2kiaXfki)eOZxLBrIg~i@c!X^PACub`gq_alxUfMX*tcDO)aWq3W(u#MJAH5|4qZXu&u}uqV<%ZGU&H#H7$}#yJ@IuoE!r|)$hdZS;<*Y}N<0%~ zh-O6I4Wk&nHVPMp#>Mf-`I<}I)Y}q6q=iq*&Q2-+=hyGnjPos^7?uyW3QS zJ`35`qcE(9hU3s2BAHQxMI6+6jQ>P@|0)`wlo%`@jbSeiixhkT7pjKA0YfdLogcF2Z9a0(kxc+JLUVH@E7Z2Q&I+V*jSxAD^P>oFJTr-D#Q2E&FlVhah_KQ|5D1 zkfpL)uHMzGy4j=8!r-&1vypB+4PR=FDzJeK-#zaY)+_5p=PPtUj^W1eA|Q>cP_k%s z2U`!_I)ju61A)hW9P=|jYO`d(={y>PJeR{<7QdD(+9H}r4fW~?K|ADQxmcGOd_!fG z+?BTiSWD-gvtC7i3te)giyw*ZKgPv56el`^m3@Ss$Tj^!eCUYWv<M5zn=C z4(Xc2Elid!A0@bD`DRUVMngxnN{Sof{a9eNN8;PKpou{sED4#STT6|@!8{7$Wh_m zHafP^*hIHBziPpmlVFMZ9AKP{@uO8ezn~8%e}qwHwW+C^Wvi4(ht3$(#)XZS-CQPTU6>7 z<7EMFt&8!N=2e-fD-x2Hfrh$a%s1M;1q~X*a8K+LZ^~sVX&GyY0xPq@czhH)gXjq7 zZ?q6N1BytnfN9>y>Ew;$cVM|j+e|`zMg(xK=!=-Nu}*9H`syo5t|G@&C43ill^t5~ zB09rVE!7cL3WOaz36sUu1gi_WKB>Q`FK9vGb%)JQ?-Wzezc z^*m>ShS6m5{98Ow9Na5 zFg#}1nRsd@cWZLXiLgBRcu)0O*$HUPa5|nq*&y<>sW`u28$)PfNPOaJL0Q=MGlIAA zNrDtGwssdz1#nu~CRI9 zhj9tR@GsJQfNkBpq8Z5AQ(wcZ46c zgQREYmgZkkaU@>+qrOzx_*Q0N(S5z>STB08T1{~-zM|qTP}7sk6n(O4O;7wQDsJ_f z!VJ8yY}3^9cIxOv@};d^#9Nc>l%Acklb5n)r}VcocYw0WR%)p^SxeuO8gyIu-bxN` zmujfy=hRShtG;T@>sMBDSn|@T$m%U&=3J#^%$%!=l$rYji&*VTZs=7-@>bgatp36> z<88$;{wrH;b5myKn-qR2L`i6Uo}gOQszSNd;Z%6cpq}2y4vfyIuFELNxS;~?C2U{^h! zOx3FKmgb;iI1Xk5!2_&n`7s{x#xXGFFs~9EGgQCW6vvf&PakfI!=|?|6F(%1;sFO{ zy`@(Ff&(s-j;7ZohwI1yM^yZwIz;7=LSm>2B5WM<&bd4|y+0YB#(2?=)sN}S^fVd; z&mD z+#k;d0Uh|kS|9DEAwA9RU*dm2vU1vwK+~T37*97doiq6c4)bDm82N7o}@fiGbPRm(jSvdxLw2IGoZ|&M3Lx8JEY$xrC;D=%aQaNmf7Br$X`P8iVh@cqEKGmH;K7O_8r3<&0+OK`DW#KO5n-th> zD~%1G&f(UQny)!>%Zc>?B9zlVj-2CJXMo0xQCc;VVj`nMo&teK9=g2QAN8Wc!nz?m z>qYB)r$#afke8jpkP?2<1C3L)yuZ!ZQWQ#uqa^*kSrCDeR-O3uAf>6 zVwMz{#7x1+AeByvoSP}dU)2isNs8@y5lNy)U7PmDCh>^>7aPef=Eov?Io8fJE|dHKwV84jvpFe%{t{WZ;k6eW3>Wtsv1!`}C2UWMwui=?4GZ{pS*6IrT ztxK!Y!fRV*RSF@s&|GN9K23BVD@7+{bgDK3MY2l|Vbi6F-{LwDlb9SL{8hQK2_FvngV}gq9tH*hTng{&+IR!?CYK>2wAck7sy? z-i1XNDqno2G{VzjY%m^4PanUM!7#e;X)W9GMG{XQKX~-)=DQ#2+B>xE|#J_L%L7f~2@$4(&};rb7L{OyQiCKOQ_ zh0`Le2)iL2qk2`hNtE_Z{AfVWFU^K2csL2s z^O8T3vP;|72q6~nl&wAR+Rb?^tuOK7LrB+jP8aYd>?QXy-p$G)rr2z8)(DB>FmxN6 zPi7;3Qho`YFeyvM$^udVP0fV=whMg}%Ti@Bj$*aGKk!F~GtgkW>+1*3`&cM>v?U>9 zSj-Dz?dUuj9S)+nUnJ=v9T>$_Uut=!?X5BklA2Vpf5)eO;rD&yjIji|F=Vu ze0(EmQo<&YHzwQ8x`)S&moW zf0k;@W$OPBLFlgV9*#txXu~~OH69OUFjXd`AK`2o3cw2KRNS8g;XAelG)?Q4^>u;u z#W<;Getfwpb&W>bhlQHBLqidzt<@MoKbT!j5AhNeO;RZ1G&oF6C73thRTdhZvCOo8 zz}YC2Z%?x_Q7?@Hld+S+t}0#j7U?;mnDH+C*O$kg0~)A%o5c)E$I9UZwF)%b3hz zcY(V?L(eEa*4MYKtAOljRXUiZk-6>cuit<4V7=t5!@mb+5*{^Fn^^N%kKK%D`5@5G z8%)>f@{kiHf_7{yC+m5h)YY{*p7}wh3jHWNeg5p#cLF!~`o*JfAN`vjGMt|4Fi*;d z2KxBIp?W}=+bl=vx3YMk8C|TnUd!7AoRq278D+DXr?M47bT5s79o0LKz+cc){s_$j_){LUOUU8*Q#q|aS?tk)i%_p$Y~TmPUhnr zZs!-i0Tqvy>k*0hPqTTRC8?;#EIGX%`P_T@=*yGNiwdTqf&GD|Mc4oO&;R!S{I~zG zURwX_zx*fh@z4K}KmPR}|4~N$7ZLIg|ARg<+YvJUdztK?M8^O1-$lrO{&(s_m5AS5 zD0$xTyB}|NXE3b6t)x3|m>^)0uLmo>mMWL-b#M_x#1Hn*p$R0I>A4 z=(F6j(6hwP5qFk#7IYS9CE`lHzeM3CK!Mn}DY@2|?6!MR~xWtL&DYRIHk#!75U z5pVe$+VQ_wHvBni@^r;HdM{&s%mW(2Fr9s)}Y7M#F#eL1o8SEa< zaBBl)i?3I+FczPG3WJgQ@v1+Y$nS3^k@$LvK85i6AiESX?NU*q98riUK#&$x1<5>W zPtn!~(qd9fi3u?sCc{)xM54oJ3f0ETHJiNLt;1A%2LIU{4mX3q5)-*ErV}l5FvF%+ z97o!(+O@MU@r09M8C`!Akk;i@2ExSg7D|Dz)v*!YG(jvW>8vv;{TM*saEl966+nme zr1#%HzypC__02sW9#7Ok4jwSdX`x~hAajvl5o17ipar(G7bn zh~a$K80HSrO1wtWIBi)J=Ui-~zq#TN|Aj<+(_gp>pCHrKf_G<{Iu z9mj38TI%Or$8%lRE|7r)#H4zEvHA1+>d)t!CGAFoZnLs^5p9WO?4(5OMTiHdCt-3v z$LFRn-Bq9k#hEec>Fi_U;%cX!noP~wF$VI9`qVhU50v=oYCe0}W-EM6gvg%q z@EETzQ=O+@C17>vZe2i1BPGn~l247=$p2h$bZQ->N!P9HnSaOBFkhvb zz^Z|C8sjSq=L!ZmefL*L10=Zh7xDAPRMWiM0~Xs{2iyOx^|!*~7=QKy-Tjq83v z?UJvX=Ih2Q)k^vvK3gyG-uEh|)|ALlDs|*Ae_VZ1if`z@d#YEYkRD$5Ko>c%W^_%3 zrqy5A6VgKNnuI^LDwCj-jQaCfzknW-ih?V=k*&v!M!F)hi!v?LTxq5CFr4D!VS#2( z3n(ZefrKc~Fg?3+U6tsk#cC@{-K2Sz=68Uc8dA&Yp5?WU-J_P?(K~qIiB(!GVXGFu z61MxF{P=9|#cMv0eYp42%YC9(PKQ?yv;(9Z#bHrL4{EiYl&shp=ZQ`7bJ7UuLdZL6fmpv9qsi#d5Keh?Ju=)=_v zhW|hB{RyO}Kn6;;iX~?~ShqGYQb-8BMrX~kR!qgH$+*`;qp2BEG97>aFi$AU7Q2+T zm~t%R!m^yK-Sr0J@uVQi+62BA90w#2Gyy%NS>;oiP_n^t0*-sd69iLzJX&Rvkdq3h zqJ3!%_od#_txlptZGN3=Q5|i1u}NX+&XN_R+21bk3Qt?GoX4XpTU0KwXk6j4<63uG z7u#xG`3cOYaNa@_Qz95x6|45Y$Me8Dci>+S4Hs*86sV)YMh$&0d+qdUUn^ks{V1=1 zP_zFw7lZS+3`z4`dZ)13nvt%gmtQa%lR~m|$jL|R3FnUVubw+g=&z8_#={A+t6|&; z5uFS_Jkcj@%Z8uj!z8!l)VE+-y8qx2zC;Q~r)Yv;G#-yWfXGQJ<(9~a;ERh~E`eN; zOXtX%r?h6(TKlRc3Kwmwh!d+VT>D#7hIyq)!y>IgADWoN`QSw{Yia4{;1)ILh>U~J zf<1qwfLP070C#R(1t1dh#`pvi^N#5;W=6Z&03drTr*{;z^d`a;Cdc1`DF48YOpodZ zlMs88?LF{w72GWNIWo8GV0;^x!mR6yxg&taZ)yM#7wQ2UFlY$v+aO0m(+$OWF^Acq z1AHAzokH(qb@?k9l2+1WD@!QyF$Lme5{)Cfw8y(u&5Av+SuM zEn9m*fR_5BaZreh!alvxiw}H!aE?ob(KvZ9d_kErBu2eQ%LKBClZTwmAhXPGZ3D9B z-Z@K=;6#apKOfN}?DeyCst-5O`jCH#E?7V1pZsKQJ>XyFvN}WhXUBAOwr~V2oZ``&E(2qIQ>Ds)PLT~f5l%kbTyvCX;xI6 z%qFxh#f6{{p870>rY1iZ@!6JNpWJdCGH;KPq{f!GJLg3QdX|di!|9&i zou;6J<6h=foJ|ELXV~sI(KI$LkhgOfeBh7nhiSZ6YBQZDBT0*h?zSsNy*-{x$nv({ z9H}DGsI)mO+Bk zVqrged~i<>*&MQEmW(&COb}C1E-Pj7IE&K#-~akQ@BQn4{&)BG|N77W_OJi)pZ@yK z|M6e{@gM*CFaPCV|KWf9^`HO!zy8BN{q=wS_k(-?=fC|2lT7NR*9ydt68rhFOzcF4 zNtj!-g-WdSbVc%AyOndO39B%)xFfAjm}Qva5UdP2FcTY-*~ZU{T92tf2I24w53a_& z47?s8+vyAdbfeH2bNT8-Q*rba6}PqRT`U1$(Vu|?Dv`Jcirqgf~^ukpELGzH-^XE@o(J^gx#0wJHOM!pl-dh#Ze*t@f#G{X?T>u4ft=+ zAUazOrsFo6zNF(;+syz2+l?;8NlJd5f?dDP;Te$9G^i%|6lfEbnCA>xfDbM0|$ z>TR#5(dl-Xj_bFRS_I6VANXxcRExmuf8XcIwL2VK=SFJ!jV&b>EC8;XEdhZp0Z55!*Tznl zJV*iHe%}hbrr!TyC+UBx1$UT_eJ?1qxni>4+leG`xT^~Q{bgDK(vn;V0ch9wPrbdR z3jpw+NI=s2L8FuOrzHZuB?3&SDG12kcdJ2Djj>LnRnjPRJRT`h2B7b`^?dFv+5c`Q z5zD&ST)k`==%5T}{Z9j5wq{dynfU8TDcCZkpo>zVNk9YoO^|4XLY!C#BqbQ14NV9F z(ecp6T{ZG$OGqj3eW76L+N6!@ZgOsFYTq>Dp0(RNu<(6yu>Xo?XlM5xi|CW6VGza>?Y5Q1Ko5Rjfu z>&rSK}$|V5)zvRiooI6eZcSFku-o(2+`|qbUK|?`a_-cH0y0y>#*CZg&gWPT>j|RxzD>{jTLrKW&Ill zUftu5dNQa&kadx+C5j4s7MC#S)?54$)|fS5g5_QnI$e_Jd4la;U9jD2)Rj|F~3AVTDbxya{6l`y`gn(@Mg5|Alt(}kv1>3EvV7uiBVQbX| z+pVT(=~hdy3`#WVkycl*-3kTU?Wz!vwkOzb*F~?jn}X$btC92w=sl6HE7)#_f^EMl z*!DfqYkpnyn%~sMh~MJj*aPLuZ2MiowjYYt=~P8A9gl}%uT!rlJpyZQZtYG>u-y?e zdau(JYIEF&Uf;JIsgC1kH!Xmp{|xBdO~0KdO}~j)oN8tzSXMG*zi^7#)dDk@`bNf z(zEbOXl?isY8$>nX5X#4RpuYQJQh3ns@IYYSk-OTW!jc36*OBze05n~;7iN}Zq=(c zwDLi_iL_o_*2HVdns`Eq!;&qcz3ctdd;ILMeH32Or($?xVQR`Y$)})5YT;;C` zjSgR3S(92QYXZuyDZV^e6VP@+lD{tWI(!Mm4qv{kNxds;0yvQM_UvQI!4ws2*oc|_n#T3p#YpFE`Fcv=NL zpS+-hP;rmWr=s#KRNcKlRHv8f=9hzn8F>BeKa=Nke6}KL9Of%}0%-SKBd)G_MZCcw z`L;P1MW$Y=@$Ct@z!aANc{~ZL1V!ifzc-&=YYFe}(qa?S7~ywz*=B(blf$RPs@!4* zDlTz~u=Y|dFVS*C90ehpZlKc2NO~;|zxbm9(rL9an`VB+%(QpOt2b863`cL@UUtp+ zTz{FWiPwB)-SBy|mshcebfcOW6gx{*#wlQE!Z!W_W@|a!00fs}m2m1QMr&pd=+c^g zr?jmJSB6!!ZEJ|x23xji%-Q~_>_IRwq~G+=`5@1EP9y2IUz3Kf&`W_^MypiBb*u4~VK=vS z`i+#u&vsq}z368@u@`7Fi_?W|MnfRCpo|wC>NUr_OxD{D`K}{3i+tr_OIPwB!gx0$ z;kf9nO%T(nWR~*%OCbxHD@teU7L%>Hi{HXXO5-Z0gz>B(^3}pILItufen!~PICbjyU_F^*qT-Jk^G?- z>ZuxSn?FlAE@v;Zq)M-5OeLMHSFd!*aWNYoiUqSGOPRk(Ufzw)A8b6 zlDv2n5dG}!4DWhy&l059R8rSlThU!X2eG){%m#y>G+e8_9pbfGlK!cVGB&nJ23g{* zXs+qBwHEXvx+7c@?%me5-CCoxX83Yj+um}?U7>g5uJF@#SNH&3<#bo@P^h(1fe2F> z@BQgHP@2V~aEkp@@n=Qno3JyXXNq3ct$rc?3G=-US}iFY4TfRjfk;#`992%Eqv$vc zBEK@89B$&TP0s#WW?#FzN@{ddloSXnwy_vUlL-C&!FP8y@P)%4d>rvK8bI_Ynhl*t z>?@IS7gD?qCzWnoiJ%$7V7A#GL#Is8aoBi}45o5tJU-fF(*ZGdRl@v*vSV$Erawih z?)AD;G>W_qZ;D2ND>+ll$+@~OMT3y-N|7Sh6Nh(sjugc}5MC6$wzD@o#OFX>tL{8_ zzw&LJWEO%G@DJfc*qPX`RZGq)|8E?8 zSPzexJYUYi<09&bOGbA^myC-j>rNEi3pr8DWB5z+p_o>EH!c)!TqxeSQ2g9oDC*N` zh6lyHr|6Xf{yoU|OSixNsz07hG2svX_?WzbeCOj57{C57j{GBX^D*vF)YCBTM-!_^ z$TGR5MB>qLbSy}X+55;3k@JV~VFdcqKN(N+xmAu$fMr2a zvMZPstV&MPds3R9zJ3JBTb$C!-WZH^#G z>z1`k7~K7c{i_?fQdX*pnl*qg*s^YxQQdFQ@GJXAQ>T-}r&^%Fs*2-H3lr$&>!GHt zGR&pumQommCGwDk*K+bxv+OEux?19<8B#4+`S>KAeC&~R)x;aZ71{c{a=~1})Mu9I zwa?GK=LHO?Etu78pGmsG9{n6>U$+IqJ|0b1iUlJ9&R1>?u>htGS=}64GBIAUMak<_ ze7Ww)=Hvbbk(Uyz3z?0~n^C`1TanjdCNk3wlC+eJOLky@(r#?* zIOmI2?THybwfNW6WD!xaRa;j|Fg3+C8>V4%irjSSNRR3)4*fNx!&TT_oGZ*9+3aFh z;*z;VFu{gXtu&ws^cKn7jTtK&$YB27fc9?Uy2hJ3OxdmJWG9s7wrNI&N*#5%s5!rh2 z1|o3-k+^|KeC7}ddw$J8N&NT#ue{;kxhRRpUAjAe-s=qr*&u<*1R3xrUAjx(JDx-X z4xxzeXQR-@AbdNaKuAoGM*MntEP`H!N7FGr3`01=P<%WLyQHX=z(piX3Kj)-f;W>h z`~%DgRsd1GDu|@U_OvfGe~X zaBl4|ZZCZkEn~@cY(hdTH)c3D2(^@)tvrHL9F52 zD#J_;_=fWQ6NKPhT7WNy!m|YU28DMuD7?9^W=vy1EBI?pyRgS{q#Yy|OK4INdawt< z3Qpw_oXQi4@*#Y%G5?@gy@gW$5#f4o0~`9r$hV>iz0(_~n6yqlb`R)mV#8X%HwZ58 zrdr>K-+*}d16|xm`gkGCj>@Zfxi~v4*aq5p%K_~OM+mG)rk!nPA^z@}ey682IAM>} zFJ;utt8U}D{w$hy@Np=Ixe&HD>h{McXY04lnQ8{^Xg;t{A$6dvloYN4@2lUy`#x=W z-yR5P_dLBG8^^GZ2A~9ufZS(R@VU(=a}Q1@4gGVbKw+ zWC@J+T@*0j?v>vUV?X9-3i&BK0xqXEBJgQ==yxJUvPJ%1BC;v;Z8++T866lhIPg1v z$k4-QA*eH9Ug>Z)43_`~J`DvQM}kGcpvhbYV}dEckzhw~BX|*v%mWEN>dyksdpH_1 z3h^kG-;XD3un8#6h|9eR{r&?qWV&)GDBz>M04*L0!h)v8WI}KO2JlgzNiiiR#B`Vp zQ~BadBh8!bZqR=>){#~O9A3XT-55x^W&=sr*TpyBw;LNttAXD>h-}_~-)_t#{T9^U zjkTmt0jhCn`MQB>+!##ygbXGvlxH1;F}(l?V|rsV>GQUklyQYVA6*fu47+LZS_NIv zxItHZ+USb!!p;QL%?E*2NVhW8YWs@^R>*dYPNIQz4}td!0ik+P97q~dmXc0SDpXtE1egJM6dVc$1$zc>jBJPnD}oEbf?z7b%7E%kWC%+7rB9Y0qK|$69PK$&x1bw=D07<|5NU~cY|=aZiIt=Li9TG;%4U> z`+ou&ZW?9_gf0r7cb~srqSM8RraGFI@2)n~yQ_334#xqfzYY7b4LWLUu6M+Y{d)m~Ih(@J_L~sqI;7~j! znG^_bm61*jjjG&QW2eUbK{)jL)DrW`X)jq$4a)J_Tn=yBv6L=8IGE%WlSXo>`{9FP z@v5;`U+6;NO95Uj#9e&_Qr5hjc_xr7?zpq#-_lz0#!i!MrwOyZ0wLHIct7JT0TuB& zh{Sjh#lxt(4oYpE@A1}gk+=^3HIY*L>p|Fyx{>hTJ_!$J13sICY{vsoTI&bvS+Nd=6QbkE|t$+aMgt+Um?u&i(BDCb0J3E+aRssUWM^g+{g|196=#A5MM&# zgm^U=&Hl+a3KUH~SSUHlHAD%=A^U@H{5T;)+cZJyBOUHqs)GY$CNcG|6a zyIH9c8obel0o-u$mtooOw2#nQGRC*N;xU*#M#bxbj6teHz_F-1sq-_J3Ep$I@X$Y# zy;L6kge7CHp_7$j=9y1Emzp8LoZ{T#6~NG+BJg__D?z||!UE@XJUL>d*JwN{N3hE} z3{eHCWT-FwlGBm35{3H+mhTXbTgikEz23oLb514N=;ryT_dciIwZ_USc=zTF-u=_Y zyFZQxF#B|G0PmLtyvv4!^4Hxa1K-y#hJ24E{;1pc2|J21uTbn#rYD=2L^mP$T18ck z`^N?}{?gPgjGY%vvMhMsPM$)~iv-sSpSQ}q2K>BL;wk|8+^j1j=q*YXgkHohfuWb9 zLi!MHV#+h8>3KO0gmVf`Yz4OKt$M9}NeF#TDVM^~e^~r{4#!sopwA(H6$ttq(w8<6 zn9uSThM~_=dp98Z8xZ{si2gGN(VNp~28#YWLW_U5z%t;h?@uNSNPp?~_zvlX--&)+ zhs9diKRxvaW)N<9BKFHW^aI~Wl>~`YCg%Qy|JLsa-1pDxeup9VFMP~265*26!~P8E z{2i1Uu<<_;@?G@yEd(rKNO0B{wGtI@#a~ab>WaS}hrd;v39ckZqVT^Hf4`dxzxPjv z)FgeM%m~Wgur(R^XQLztwkohK9r*C!Q;}vz-~H4GLbnf>XypYmrXTH4(oWv8?jxw>W8%fxL`PZ zmhcYP{@ix5FdopE)n=Uy|5ckccNqaF=K(GaBYmLl3$9nvgn`TV+8NLYf!^43P+*D{ z1n3%J74puhAg^JI%K{!Ek#pCUpH(0aTQ`u0PaE<9=L&W$_7C z>J&VI<4tseKRYC59sSR6$O0{Jvg-mLaVH#V9~R1x z&G1zr8M3Kg1&|?|@}+SMxeR|{Foq2Ec!OfNK{4E*7(R0pgE6mWfEXUoee}cmAOC8B zjc@y5?~LDz00b|Y=cjCM5DF0mXmA3cDo8E>5WJi*DW=4Pm=2R+Di?$i5Q5;7H20S~ zx80x!KB7az3>Su`k3&2HGYkPP@`zH9o(%aGsd@=0f>U-LzkKernpO8BO4JP~Ap?{k z^=UpVfpzi~!xHNFek&82!0w|yJ?D2ay zcnvKRx7{o&GoVhh-prTFI~isPH+Gfr+f0iW+T>qrHYy%n)QcN_7$(hPG5=n^R;@Jg z@LFB%Z-}dXY&n=08eYB9xVkI(`9tv|-pF6NbLlS4zSZYTeQRUVfmA-WGqml_Jg0z# z4)%cORb1i454zUAO*eC>?(bUZ!VJm*V=$=ybMF5`)4O1Z(CfOG>D^lPhRgCu$fWK% zXuku65pu$xMkXqNxH7XR@);H{<-hPkC<6PIcs_FAEvMeKq}Y(AK=zIlLh0_8;iTxop&bf z$Uxgp^2kBSA}J_HBb^S?-AI=-NT<|0^ZotTdhe|@>&%^d&pl_Kz4vGD&)Ljye@PZ; zIqlRt|Mx1nX_5@_oTXvr2jSwR}p0s4fAdeQ;bF&Si2ANmi z_!suOJ+4|yQdgrPlZRt8IHvl4;3kNa`0GUPdq zwn$2esNv5D)z6`B)~&QAYu*BMjHLgTRBw1SY5fH%sDy63X>_kUR70PLZ-!?wna1huM>TN4-4Y`iyIg3cHACP5y9H*@)pLG6_N}2KD zjS!jszMbh-W0S0j?AiM}u?^VML=k@^%vyDihdcVM->^?tvA-ZrjNGvAk8H7!>-|Q` z*ZgtXw{WV>`tGx1f$(SUrA;6ID0#P5Nex?_?^thUGaPJkZ(K=BLXXC{jm?3q=E^Gg+ zuPCTZy@AFB9}WI{b>=N>t96=<(zc1FNQ_)^$7{?|d6amYusK^QY^qr&WHB=!-J{QvUUdH1P2l zkMQjyF2c!o&(zjKh<-mQ_f53#=Go1eXHP!ZB>ga_>^mv3Z8qAaLC8>k9~qT#~QEAzSdKRQg_uSz~`xNJVQ6zNnUm{uz$ZT#Q3yrDXxM0g@g)Jp)mK8 zT57<{jZnW&>b4gJHrICUlOHWzxx28@G66e=B;x7a4u7(;!m-S|tv|a;eFJ`OBe>R>7~wWA%N|-tP0nMh-uPK< z*mUbpqUi>{oo)yBI9)%7eFBxA+N$vYv`Mh#pC(%0V zxH2A0A`K*LiM$M$%wRb0;tzz=EiIpBbNSyD{vgK4f!#g)R9&6R7f;haZm3l-!8Ts= zeHWfvegwDe^~O*foNRL)YsG>0RU>=}W{$GsSQV!O|B+bK^bYrjwQV=BSTKfnR+1NCeF& zAb)s2P&_vgRLY86@}~OH&=OlCiTLyI=M(TaBkrej!IOE_-wOwqHkG2WXoF_`O&h@}rr}6^*?IwU1i`ZGTr{!K8h+g7!Rd{tnB;AL@yTCwU-#gA@tn>&yqFaV5OPNhmasM)Ml_(Vw`}V zgU(OO^rc7>J+I1>&vOd`PA)W}V$lN(;aLNNv^3Ed{CHm>fvaBxcDB}|yt&JW{4;c+ z{1@a5A%by3xw`l<`?wArYH-Cm@yeXyE&M2_r#olQxwQY}#3Azl*#7kTc7=0&kOT{MsX?U8X z>fK;lo$p_i^i#OiKgNH^%;QJdZoleLcW=KFWH*yE3ja=^cuyp}<@}m=_8q*h^YfXL zB`s|!;l;=IcZVaMTKrAH9hbFD`BO(fwdm`+g|qQK$lX%5@mviz_NR4@qB!}=-q0RV zMg-M)Yp<5S@axas`r)~^6gYSW7_UlCm-n}DUu!c;zpgo5I&Nt+e0`C;fkNSJc^gfK za9}T%ebk`c3s>^DH6Q3?7gwQCud;~hpS=IsvLm`tF?}GqG@3xZNXbVq*<#i|ZDMBn zmrwpbGM5a>j+PQpoebW*cMWfgC)l)3@zn4h$w2QOe)^u}b`9-|FmutAIOYAE_r2aZ zU(o7(RT3Q(*DzM_pAa>(1%8t~O9SF}UIu%``Xg5lES~NV%Kf5AZFbztyHqTfe-?kp zWw*J16ex;Ac9{&?=eRXC=99VYskCF6dY~L-Tl;$Ubc#PtMhNp>-@xAr-696J zs=ipUt8JC6VCdd&bapI_#o_knxiS$#C~<^D^*#1Kr)Byuhd8X$eH2??rD30&s~c_D@Z%E-%VO(gQCz0VJbqZcJyD+ISF4Y+ z5nrwA4HKLwP( zPkj1rke?X;UKgt5<$V5Rp;_;90|h^|K~=lzpyy*R739|cGb1sdbagC>6^U#&7O zzG``+WS;Y-jwcX_@TwL7U+omVCz|^l3+GY6XC15`YV>;T<7X)*na_PpjoY3W+&?Rj zpSa~?WK|JhV5VYHzAhT8f2gunN9ABCYGi)5toY?=6+NNHBMXPyWcTaxw$kmX@make ztpt6JZ!l4YCmFHp+i`nsyQ2$p)0@-++n;KY31pZLyN6eD^>O6(l!aDT5(Q;{+hI$I zO{AxqN(rCPmsq=#Zv8&dlu?0RW8cq5$fDPNA_=D=zm9v#^xV6(<+VIPwK`u~UgY(A zU(xkWg|@%W1&fS&k(ZB(!VjoZshvCj#U=}832K@Nb@fNKwFb^$3+@`e9Dbs)p^(CJ z6jq_;0X~?QxnGI_L*Vc@t5`KS!W-H3@jV}&3Z<2@E2Z%nXo%?A&*&1qz97R6h7b4 za9B5q9rN-PP#?F@>W%v#B#pgU&=9B4?7>UQuXu4nj_ew>es8Rl9LE~Z z+O3VGTgp{EUSxAca_jO(+CCTy`!`EVm2q^K5J@qssqq0H@|)m^N5Rn-tv}P^jny9=vjJ1LOSo;tSOJt_qsIxT?N4%f;JJ=hva}TjSmam}?_dn7$41JWFHKI;R z!`&oe{>p7BsU1F7m+n|GVkk-*)l+cU*`?9o&{8(hoI0TA(YM@Q=^C=~G(b?oWKhjf zBF$tU1I1|9d0MFvpJ9WTYtz_-1VG5)?jFHE{&IcFDoqNH>iDJ!uY}RrsfD*ZL7&GjBfPmZiMWh0R~7?D38t z+@e_38yEzB&qLip>a~T{Yp?>8B)yXu?yRxbZlPZ}N*eZ8r+I%TUMt>J@Tl?9FVqYF z|4pe{ffexK!yyj&Lvq>p`oos8-F}jeT1i=YFO2}7O}EFg>!#D;PgjPyS&yu>c{7;?%S1m15kud_*_DlilUCc6dHW<~X~4fasd|=zGSDe=*^9{Xk-nn^ypQ zXZD=bTXG@%CsqL5q(Ni9)>O4XX4bEm(6jU%{!)DjL-6vBKb^?t$lvyWnh<}zbtf^y z;sw?9|1Gu*oS~WX&tOmic4@#0*hceFPI_hVu&wP}PIT5*7RNG7eEq_(o&CiU_Y##F z=9NPCWqrp@kzyCc1Prz`Q%4|M^*x0z$?pXJDa^U$MEua|CoaW^y8 zau&xUMB*329-Gjc9Oc3BG14uGZO?(DI*IuDpBmP?nZ#f+WQTz_r?GYeLqiYovhbv5 z*0i3gJzt)a=qt`4;84ee+$VT9ZPXxVc~0o>S;B+L zmj|(iOeJ4ohTHzRwP+s4rjVx#iB#2HICD?jx7-&JQ@GF3V(~;Qu{UomAlDg4PO%<@;!Fm=dSIV?!%i?*e{L`uGae*Rk(0he_s5qw`AAP zGJ?_1M|1w;I~Rqsr^fYxE5`LbhxUq7JG*gx|1QSV>whl4{At%hIxHTj%A_S!^<$Ca zAdqvC{+r_US@!ZmKuX~LHf!U;AKCI3J3G0P*o@LLaTG%xfl2W3QSna7G;`B#l6Px% z6&h2_wx>ytprpAG+~he4TBk!*FP>DIIvG{gaoe6|+-tgylDKs{w{6YNc>jE{?dBrT ze30?Z&C-SYLH^m+*2ap3#AdszUp1eN=zZ=!b;UY7v-14%yS1L;8mAfG#a<{V>yca? zO791~SlH!r`tG>X;TR|_e#X(`RBc_Yi&&| zi~^QT!jDRRZyDcM*OvAC&PY;<$e1W^sIl{Z@urODoj8kAK+G(I9Z{g6t9yn>1DB)s zgVtg#`r`BnkIg-&9?Ff^sqjk+na-EP^T9cD^Kk)zs{foVD6b#i79f^E!`rkz)%)JziT` z({|SCFs^;3-xl=DyC@WKD=JxP%Gu{Y#js!6s3}y5+iI3q`6XBKf|6;IXLpWz*{1(N z`(ZKbwqCp2Rqf|6>K#wBjzjfdHS!T$AhrBGm_M=`BoAv1iYk#a;TkeI|3&Vf7%Cjj zZT308b>0*jGm^p`7kB+B+Wr1NALQI9In5jm^<4F=>%42DKeg>SS)y2uCpu!pLHOft zWUb!W;MtR=`L$QtvQv%tw|Nk{n-vdwi=4^>yMu^(d}O5bZnbZ1Y;(R+()^ZiHS{zt zZ3M|k5uo}ptin0X9{M;Yx6nu%S^d68{=u%-uaZ-oyDySV3{3|cAF@do>(yrGi}>jH zA0(bt(J{_Q-Dzzk!9OnzQ3%jf{k;*IEnctv9P4N5$()v7#HY7I*D*>F4u1Dr-WtUR z-`L6$T|6@g(^YeB(+Xtt8(H3-ubJL2|OPG zlC(P_4v{U*L`L<*=Ff@l zmY1E~p+j>SeXLuqKtuJCT6A?2mn_U(7e)YQaeehlGi0s-EvsM@3-+pVzScBj| z8&Y~A-%}aXpZ~oK8PU2aJ#;!!Sn13j!R94q$LwwA_^w$dFL0x zOOg@_Z&k|oATBwezsbT~Dp5EJ+t`0eMmwByW!EfZyR}vh|1rmw++Ghs=v8oace~?7 zQ{H|{sEm4HT3OE>p~y%3aSwU5(P1lM$aM38i1VCD)|}Vw-(gaD+`pX0n3sy8>3Dsk zu`iVFXXYDJ=5zlJb&^V;TfN<2%SEX!{U~Pi-~=W%H?p!>G&1df*3~dU{nuR%)6+QGU1=d3!^gRc-80t1 z4UXH*FUnpI7*Z2gHwKor-ne;{rQZ-;FF4i|hnX$zuoPdKZ2TDdOZYbCw036H$(3uW zKzK-a+hwfx@~!8RL-u!_r1_gKIUa5Os$>3ar@5$CVX~+eBKO|GfWN9KB_7GmP36`B z5w$!ElYx9GCapEj4(vp#)CujFqrq3?urucj=u$tZ;YRz4T zQOP{D2*j$DJUkK|Z6ucsRBZG*JrE_oFge^eyuZ~Lelyn+xVv~$`T8u%xW4)4P072s zq=o%Puba90K-JxAm(C{tll^Mn)4!+7v(D)gJN_4^O;`7uuDn>pPSdYm4_vFHUojB; zX|%YRE4i5-cRw}1BKcJih&xnwx-oxoe;fBYJQC8Uoj(8JEOq4m!0oSE>fIZOl)*Y|Y6;_?3TE1;YI=~D0@%H&o`@ed<&bH0wi?6q22 zvgnXM2^+40YHNli8cBME-m!G{MS)Ff1N}IMBc!2Lwe*_pxHng+5@=8QUCUNycR7#T zN1}Kd-^YqH)++Ms-!|CIKUY&O8uLOL>b`XQyzrLtO?7N3c>F6~d1v77GAi7!1#Euv zJLPnFcQ3!t6iDE-7~&7AH+1@*8RH_xw&6NA8!e<`3uuG^qqwm zX#M3zWK{;4DX~@<1gyD)>OZ|{w=F@lY zDgNV@)-`0g{F;!j!4aTVJE-JeQsC=e)@t&oK(Y2p-d}M#+;F1}=M~Y>i_M}@0x^6u z<^1fy#9fP(4_x`e%K7^@I%i|ul6Qt*9`*0PF|EwH3HVWyoa3q+e*M-+_rirz4 zl?^XlcC_QMZ*mF_ADVlVQgiLHJ=$fa4`8td=7Ty$5z&tR;=_l$Ae z>^kl5cs~}bpJ019ys`1cgVir@8`*jWg$4~CIH)v!3++_ye)ZilY4MKp*Vlm~f?VVE zL=S?D&yL1izC505!Rq-ld+d0v{Z+7x=hIqEiajy9rF6WU-DjDE9PPh;S~Afwu10O}j>zB?B+&6$keydV=N|hT zC;pNvvo@WiF*Nv|4z2WRsVEq-d6Kj=R?;zYCjmY6%Lc-+F7IsQLc*a}#Q%|Az+?#V8rY z)5hsM=AwZ5*q8n<^!cXUd>hgW+huW_mWq?JkZ}raQ^Izy)*=LvIbn@{2Gc*M3#+2m zvnyGz`4rz5hS9M1dCV~Gv+&{e-jcoi+KkuLrA;D|*6|6a51Un4ZT4|Uh-5#)vC;Td=DOD7%^|+RFY4Tsa&rBH+%8O14T>#>{q|X3xW2g? zxHZ{MAH7Az^Q-XhNA8yV=QsTXiPrf>m3l)Dtb}jaWPd6{zK;g#oxY_m-VMt4cyDeN z<7^4p8ZnZxaD{X=7&iGJj`hP6eQx^Y%pSt)3+uvFn+nWY*@W@^l?xehS7^#?wJfI# zJlpazS=`^nu+zI#THbg`&|1g#DwB{yKHPfE5cQX!Lxrn(X6junYkP@5WscqMrjT0T z&%}u;suu~<<1pIsd$l(YKZ+(z`t_&V#A8*a8kHgQOMF(1j`pHbcyd@xb;-*W>Mj(F zdVK8@qt_~(*;me4BRHrL%d*$Hrh2O6IH5m;5NJr2bEY+K9d6)x+jY<9kS0<@NNL&F zvvg&Hm@f_ysU{2$K5e;MYdo}PQY$r9-yLxq7|MHjN(&3R0~He)+_#py^InOtmJK!XO@`7-~Y7OF{wHBD6^k{)5#7jjgZCj10-2Al;MKr-zc! z>D^A3L*&Q97bf@;RwjbvdY_8NvMto3IuoxF{!D2`{PBfl5vf7ad5{Q{SFAGu$|IHu zALUV@hlFgULJHj!O8fErp{4zi4wxpwLqQ9^BVNV>*%5z5s75~+cLrlwS0lsuy}HZ} z2cx^!9Hl^H;Ytu+oCUm48D^+=F)o5aycl=2wuue0S{ndIpv6V^;Glu5%?v{Iv-pug z`JGgIa{3hb?3vu2*f1T+4pb{tKXRAHH9lfv&%p%k2F;TDKc5 zXqWyOB6aj>4I8$8Z@>%g2X%>UWrlcj55-WUe9R%MJ}k*=Z-V3q^I26POFPP>%waX; z&e+U5=JZ%(5%o!DFr?QM0wFi!FG+!_xri<3+)tBhf*kr$_a1&9fh?r%PQpO*2DU)& zQ4A4VyI7#Vii1c&UHVDT;j;3lUQqm$}G(%(ibM%{BnA-Q16>-Km%*iCTYAv33EbHjui9NjPx5+CF5!gnGK zCOc`a6@#p)b>O4iUaezvs|h8|k&cxDnxdE2ZY|?M+Phi{@M~pq+pC4dvQwa2lP8KH zInrfW++?`JS`W-2sTxmxADFuE#cgoCYOZY!Nmpx-gAAvit(S-XahBIwQa!+ir@Oz! zNOhY<58EROqNhwIKlS`ADXM}K%oS+{Ju)WC9*A!x-NVl0q@R8^PU`LZ#%j7(24+AN z`?m&G$cw1?ZQo{1;8H>w3d2L&Jd{TwS|J%estW|A4I{xFRF*!R2zj;l5QX1EN1@Pl zJR2mLIIKyI{XME~f)XKT23!;O>Fp*+0e<)#AH*9r<47#qvQPu-l?tX=knrtNl&wGG zfO+#C!P6lH1h5^^Ck^7T8E5zcL*Ef8njC>m_MWm12JOVRky}QbG4sH7?X%vGkiTYT zC&ng2#@E20>*{Dptvh&@{_;qClvi;}cQ7;3(suEE9Wk^C!pHJ$@h_HCkPh?E5%P7i zO)(P!6_~SchT=!#hZvS*avs59NU|@}Go7Sz)kE8e2uG+kGu&9vd(AqG6|!qzmP2JV zBd^J#`xiRsm~KOmIW5IW0nSfMq2wS9+1Hfd*fkc4hqm*Ohs1GS;UESb%@+ui#HCrz z*50Ipn1-tB#OQ$n%NqA-8`6hA77ltW;b%@q(BsT|!qJk$rI21-cp*PRp>oHH#TMV6 z+FF~35bFMUR~)u3@@N>s#JYO{MuK=O;sOstza)4vFb!ku#Ai7OKzPVUxebzIi%XNX z&b?!RMl>=hZht3*<`JfFz|r;Su+EWuLuMSY^(yo}HuFIc*4)rXejKo5pD9Mf*^8AH zEXw(_LT5ZF=y)|;hgN<8Uv4=BGD{U2iy~1_i10&B!qOq5*st)A0MV85gdXyA6j1(L z&Y%fgyw>z_A1E^tC}3n0%MZH8=k5sIixrL`K-CdR@A0*c$3a+`thdw_@Z^@CN5Ppr zxqQ`(yF?e5iiEK?2W~BMZ3fu@G<7_+N7MPS8AplxukA z3${moz8afyvns@OG2?YWA!H)Z2&uc&a2V9w5?MkIwLnqR2>(_z8{E`|uxeif$VE71 z;~9a&!$)5>BAHKgDezH&!aw8<=n- zxFiThKL25%S2_l?sl?*!~!8**)nqEnm1vAVWylJDx?hc%@gzVy%c9OTE zQ1vk&&&p}r6L`b23O4Y_b!cjtdGO)ZgXEGhMnt4y5ImHHCK!z^sbh+=s)BuZKyzUT8segW^lq0yw49`Z=20^L*K?g(Fnz1UHl z^+*7!Hq-=Ex*}xgsC9wK1G%maK#0;0+p^BL9{ETF*)^pR#~XCyi%x}0Y1DzYBmO8U zdBQ!6LC3HkE>)p&V{|IK5BG@*2=jy5(t(oX5rwG^rdTYcu8*RsP@IstT2k+|U)|~e zZkfaeS}*`y7QDJX8@AjZL(PNgkg`+Db@n}={{ie>so&(59vYCiQ_Gd*F*_Kl^Rj$5nVL6^IVmqLmS>I!8a6((>Y&1BrK)+835Z2x1UUdSChz8ty zobv4G&ES8(C@~AivRnmoFdxVe@hHC|dCVz)2XcL$&V%M51Ve_WB|x}aK>Kl4hgxPk z75-n#j)(MNqEm-ONd1+SM}V_ga`7WrCY&eArxhk7@IVJ60+iQLCXjB! z7fdJ+lpkZc^`B-)PvR;Z-LPSm*NZXqBjn9gaOzzJ+4Qs50D! z^Epd|U#LGj)SDVyfW*B6D}wB@(n#V}oQGG(X9`pSX}^e3pt>VUlh_deK!Sy7@FsxW zRY@T4CaWiirc`{)NK{=!**o^Z6Q+NNvUgVd>@oP5x2IS5sM-WH_27?=HQb3fO>)~j z?u2t5;^sjb5gnL-a2U}CW+YlH!uI;DjRk}-#tQ59d*Or9ATqgdcF>-|23c~jumy1J zX$x>wVQhCCg-oH*SWgg;g&a2E0?~M>?jVWLq@WQGqC5>Df0%oWB_Mk> z7qZwo-v|aJ^*?-i{b1oM8;V%#>GhXcc0>^62b2e*DBXu135Q7$OVJtVRPi$>$P{J@ zM;nJDyeGFINmQ@237Y4f>=KE2{RKMCaqbzZHNnm9(2nyQ>e)qY~#b3d19dgp+GIX z2Nijx*e>9QY;<=n7Lys195WT(MV&`MF5MRM*Z?t>q>hy^uUEokOgBLGiQx%_c$$y4T+_qx`j5lB8Iosxqjv zlN7Qm)oWJK2F1K>6JZ;diKvi47c#=nqxw8FKfVJJHym2w-iGY@O~~WHpmSf5S6~h# zRBErkV@4S=cb;4?^(5{bCC5B|bXFPymX3TaTY)VVgnZg;tlH};N0sVJSc&(MK@vEg)Q8G-OWVR&g<;zyucIhdPe}@fl=naI(s~9nxurss(3I zGeh|lM`(RjBo*I_PIHLl9S|ct=zvBrR)T)xhUHB|9#d+Nl9Pe3`uZgyWLE)*KIq8e z=K)`@LN-YR%N=rt{_H1MEU`%_!UdUmu>@n0dgNnDJgia2i0^M94FrPvq;kuOn)-0$ zIkH~@#HFHMdCXFpR<#k~3`I1|CoJ@yaO4HjQ)iRZ-Q+1QFvBnn2t{>wMP-rlXdA)`m9$WM09TXBF`g$7ihyJ??BI}n=x*O^3p{Bz}u)|U=J36mpRQkA^%)O zsahGR^1ly&hD7+my%;tihDD<5Z2Xf5<`Y3v%*-^NI#aD#)7JkjPH;OjN5vHCZo>Om zpD-znlgkZ|F2PHW3QDEwHVjt$`r(pw$`5ZGC}F%$OG1h#JFG(4KO(d*}R^U zg5JyoI}*Wgh!;b6C!)0~Hm>YbAc!}I@0g)L3?xEe*Z!X?-1{R4ne;W=2u!*id$Wrs z-jpm2`M2$9g(4dDvcx)`d>PlV&Cbm3jtxV?lG1k3wt&l{yoiCG7t*jK^9I_@aVF#^ zZ{P}+xL?1*>iXU=jCw5=XP^J3!sNUB<9EBih#!P4s0;6H2@K0{!LH6 zmlf`@SE+l`I@DjLO(*31sYP@$yuPL|PRRRHd+K<82?7iBr{Lx#r~M2a{&2JAgoU>?l){!Cz)aE8%SAg(`{uIe@t zFfD(eHW<{PdOI9Ye7|kB|9W-E#4}R>DwbDpOyf_uOb33F$R`;<^R(G^?E*N3H%y0C z<|HoXHa(Py0!`eVu7iXDnBIZRVY~b$1@T;QIAu_Gi|AixIXkpf2F389%L9@HQNkQy z$TJLMDolpvlk|NI-hgX@b|@Xd7b2qbBymby8q5+3_#_Hom75K%w}OkOr-BIu?0_1O z?xoRoIuVNTh(mBP1bgq zc)&|+nAA~DQ6R-bcCEMB@PgGwu#y;v^i(02QHwva|KjVZL^rYn8^pZ>eE@x_hhM10 zssnA4;WlW1i2>_*K@PB9aTPA3uuZ;wTf9&nGW*eze}fa~3JzN^1Mml01nu)%c?45L zU<1cKq52Pi+93~@r8FqsycE0P|Fpyoy&(feG_r+@03AtbkSRgH!fU1x3eX*qM?RP> z8>{w~nkq^;of(EUQ(edhj`Y++1I-*e#&VI-sp6o$0`JwjT2Zv~9=Y-Av+V+JGRi>?MeWJGmjx)FE@? z$@wtc$NHG-LxO~S-}2FK>iJw2iwR7Dg^b3?K>Cf8s6om6m;h;bAtS1D0R5&1bogPD zp-uQ-lIN>OzX3~tU<>#hY~v~j=#zq#aSWi_ghB2syD|qxGF$j%OI_nKiOmO8#fWI` zf}cnTvM_=~M&*N{;9Y>8fh-*wfCF#~Rstj0sYAC2Q+m7n#&$>_)}56B>C*i(ZaJs+ zq6nHC(0BnK97ZsfOlNRUY!M%fF|S3B(pxM=?gesob z!XFnHu5l1DS^D`PX2+;B*P%xVI>JC$sFH#T=)a1lifCO7Wk%J<0#{vd0W!#-g_Sb_ z*#{6-VLGEmZ+8)JK}EG(xjY!m<$L>;4BKDhvrQq`6QoQOu}@iv&a#Es3+%7c-#UN3zlzO zF#nuT83o%=##Wio$pjD&x)F;%Fwk>SOqK!}H!lis0oCpx`WonWN9DqEv!r@w*PL4@MC|hABu$!2isNaDbKk>?X# z+KH`ugP`D~Lo3+e2I>-^Wq+bm{ePFkJ4brC0Ji-j{0I{;yQaA|0iPeJU1Js3RAe3 z8ZK%XS@3Lt&wn5)bOc*I;tloy_Y?72~lT+VMg zJShzSA9aM4+u65Bsshv_u`Cb39>{3;bmpkX(uh1quLdkl%ADyoX>4z&Rq^d|e&{L9Cg8_2@pyk!W!tflka2 zKqmw7aGh!va026T$XtqFNMJi45P{VJCK1Efc5{};Ea0l1B^)t;<491+)o-%;?VVGAe zh2W?%;V%6&w>;3qU@$E!Q;TFrj~z1DpFJpP1dD_L>?XjORV~cjbK)=y$fig$#vuSc zEt$IP#6ejw!Y>$D6@WCC;;gp_6?>EQPNy1Ai)-%{65IuUt^Q2{r(18SlIAmyghjs(=v&5`#Fxm=^-($509tKn&sl7g+wa z45}}so#lPzXmU`4^Io$LcZ%2-J_ zv>y!=gFG41b?*R3D}_lek|et6@N`ra@I-^^oFFq0!s5ao<5z^Z0EjW3#5d64f_Uo# ze6JORr8CncP#2Cehmwo}xPSJ+Vft>wdUC|$>z6Fe#`H{E=GH2V6%#oZ(nx^!V1Y0} z3d)xeAbhFFe36>;VgsA^|3cY+9fB~^?hSMRPfW%60lXd6z4sreE-?K;4r&5(0yndp z{%=Pvev4m+8rtCIFlgxu0}ui^1|QU)P!qTl8b1!z0V4m4@|exLI4Hc@se?^gf*pk= zlR8Lop#3ijBujlCs04Hq=YR;X_g(t>pK=ThZWYNvbwprl1gL=nw1P*RXoG41V%L-c z7z*>}3>L7cAdpo{Mm;!ilBKheap`_aIv`#weNe#k;a|oFY_T)gD;AW$LcL<2*_%M} zMM6Pj++=O#!WQ8I5s1xXI`9hu5I!Bik1bFBBg6H1zr!orT!1VkTPxL1}G_lD>={?ppvf%%ntSgz_(I)Fd0jN z1QS6pJ;-|B;{ioTR3iK}x2dO1hi}bT4F9vT7*08SeKlK%6Iho=R(TW8H>X)b)pO2n z;zB|+Y&#%fp3c8UAY=I15AwUv$^G4nbZ^l$wQBbw+m#but<2LU`Kl#$08U;A*fyZqwf*F7am-h0)K^o*?4#nWQrf(JgN zZl(-3bRQh&_&AO1YEgZE|2vhC>`JGus*)w~`6s7)wh|;Y*;)Z*{>S}BGb4G&nfW=+ zwjqZ>wiKHtX$9cB=1i)tU!8N)GyF&DpR0HAWzqIf4^w%K$L|!(8ymCF7=#+|eKc*( zdm%HjB=kU9D5|g_KPsm6Yi~}Iej~A=#pjN5ry#!#$L8`mOTnvWzG;1o@d{hF#1-5O z=#5t{Tzj6U#SG~alDp?t+IgHv9+mK2e@Wdvvf=wzKd;};__ir;RXou^EYWvlq>U0y z!ab=gn)R0Z8*WN`_6zRM<;9*cm-&=!b(<=So8^u2Ei254n#Ehg)vHG({c=C~eM)ju zBdFEWi@1K+*ciF=Z`XRr{1cycS}*?Ty14o6gT2u_+jKIPcUufWLC^j9+S0mcs_eH* zg3g zRa~O2s=v4Bk%NYcP2x8bSxtg8#aoYscQuLHI+Er+LUkFoqW-P-+tqQrB|h}^ZS+%H zy}e1DzQRx~^IJ+$W;nJ;oI|meG5*=Vgmdc(qc8IZlxaiRymGAH-L}?r@w2-0!%YRh z7r!rxX+3$B*R8)hF;;PBY1JQTtr&iHfWI(DK32Fdk-PVI*VnK13vqRH_o(Tfmo8p^ zy2OibvNaeh{`Z3YvU4+KHP4hyrusC28h7pL0S`~H5gB(nmbqTBcK*ibivgLb21O?G zXpYI$lFv1?c1%xCA1E72P5$PVXv}2N7Q`mJ_r!6J?mOpmu^(0t(KBW)HZtWUrq_1A zvTJ^`D*7w;jQv2>7EHTOX620<(y5U&g^{m!b6pz+5MZ3l>me*&` zB0`Yl#Xw@@dOmB;jKgq98u54T+qq|NN}At`1`vBUi%!$%k8X9?tfsNFo8k5p`pt&> zdC0jJH)%y1$f|tCG9BKZ{j?ds7Av1~s8G!1_*D0Ntnb#)Re5oFJmJ{Dv%9G@77?Wu zqbjA{7TO`F^FmWnF?;MC-NJkdj3*~3i%~mrN)dwE@yWiz)oL%jjsEi zV=_1@inl=>bE>&-_&L;1+q|AEs!i<1qfG_++m1-)Nv(X|d(--(#TXG|zYJm@)zXI6 zPUJ(EKB~%BABl~_ZnO%n9E#hzYAlqxK2kidV@oh7b`A7br&_Vjd3zblk=^t4x`;Ju zHQ#8{=I}cOf6tV@1clkS;r-_)FVlW6`ZHd8@5N<3kf@S8^0;AJ zCHCNTFq+##c`!xtYr1XCeV1qEK@;C5=WHzF@ax!wi#X)Z^TSlaj2+;^N^O;0bZVa7|qbTO?={K^@{*BH~+4kc+;ZTMlY(i zu0$2?CRbrDJA37(>PPePi}Ei|CR@K~QEa0ZW#zx?4z1Lw`V((j>rUJ@f18)Qb7$Ue z)3ClbD;@Z>vRvP^2T^X@F2qpUaTju(hwM3+RvEc(Ipu!*6CT~RAGuW9i>_H~r1Hj8 z&Cb>tMU|T@FZkI;0yiuVyo z$eS2i&0GH*Na*DgvxEV@X)2&UYm$w?J$}SyYn6kTe{trXL@!|cUbWqZr%mFx0fy`7i@^ZnO+hzGDDlOWKJaPW~-h+VUq)mbyRiyzLW2%v@Si# zh`}MW;YhoPaA@C+~=*$UcJWjY@woQ4VpBgPlW?NPD{p>MONLjS1q<2 zPxJB7kyKXxezRSBJ$7{M=Dl9zZhLt1N^S?wR^DdKejo95>@GGo{sm7|5RLKMzWK{x zLnxfAg^DWVZ&io6N$Bai%3n6s$x8^`aA7((jb^90mCWW4pHu5I{6VsLNaEC6x9-WE zgeU3gPwb+)&74^G+qOAtbHUAnq&J`b*1XBr2*#ChLnCVRGZ$N|+?QejHXlt+sdPG7 zrn4JMatL~`HT>Hw%O=;O(+kpcEg`q-7l8&T28B5z7SpdEZM6pA0&UZOJtz?eBhpgK zo9e_@!}5!m{Dr>^hc8x7B*x2^-kQlOz4xmPCI%_Qk2XyOpr$evSR9N-MTb`R-*gOO zkGlHj^x5fbbhWS^Z71iAFJ@F%?b&A)-`YmKi$YuX@Q&V8b^Uy3zHH?Uchmb--cXwx zihwYPpI;#d()+wNk|ob*PLsvWtxRoNqSAR@r_ssJ@Wtv*mMP{&)V%0t4wF9Q=sS+{ zNrzoT5Tz$`^U)sZBKo~FEl7AZmnf!{E^4RPAM^bO{(}Qa84k_%>X-+aN;1=R< z-~&;`0V0(84y%sh6vg~vx*QLA14Cb+e-71Yj9KoZ;;IjiRUq}`?W?JIvf#0>&@Qz$%9;!JJlx5=3*gp*HR+2)_i(ZIr$)k!*Ls? zyL8OK@{6qGC7;fQl6j!wEzkR7Kd)ORmg(F)CcU_z5k8zwIt$(y(te2kl$qW6_ zngFSd1+2=NzPuuKdb}5I^!slvg$F8>U}IUVd0ve*&NiCs@>W8Lm)uk;@o<~YQj0xO zQpL_vJHf@Kysy?nquG2RRayU1U*I+r+$)c~Rf8ZsT`Z|{)y{+ab6tPyT5qQXYvFw> zWS1yuklcpRI@lmsg^Ja}e>M`$k{RXc3JD~ts`7Wq_HKTSy=qrd=epLX<$hY%+)Uc;U`Wx&pII*8k;!LA zeHzAC-1qBRw4%F9Pgj(1X%O{vYkQV+3ysDB7TX(9HV)HTAG#FXA`B~izb2DShF@!` z*5S9A!rwT8>}`z8N^ky}#%0$ykgZI%G-@yz@X&E-Wn*aj5H0dPAO z)TTJPRf76KNT*JJwpHZb!<6HISRYQNA`N_)cw4Ef1v=$>sYdV4uQ(oXg`lmKs&WjW zoIq)hB&^7kJbt%z@ZDuhInJjuPA5siWs>zW&Ht{v)dpdYTZEXl2%>T9{hv}YwUoWQ ziWqtZHdPxJQEa)tEfU(_c}+ErCEj9@XK zD=iXG)#7(nyx9K!gC_6m^I^V59u}bwL-Aw2Xgt(6yJ>jm8%>?E)9;nv^oHM5F@cs` z4X<~pD=0_sRqDB1TTjj=@x&e+RI3TQ1LmXw#-@a91+%TQUen`q~!N+w{AVQt)|-q2!+ z&-HSU%vagTEW2)b-=p$o_@-}}4OF(Yr9rewM_=lcOH@NQw<$gF_Aq z-Sk(z_R2&`*_bmDpH&q=bLzCxSTjTY-W9bNDVN;B^Odzwx4pQnvZnf*H1a8@?zXzw z>fo5hiX{|1Ye*|+#Q$NzgG{=UA*xcrdkCZFeH`arTeW`qiVAX$Ib)R#AANS3&FAUt z=3TFJxS!NAN9U8H*QhUZe>>} z6?sG?*X597J0!rKijdZOGAYEOQTLSs0Fc*?wW+R(zfk(~;cPmet5AyO>X6uc_=?kF z-yB-cIXxgUy1byFDSy`$-@emB=e+1QQg=<|YHNa$ZZT>Zw$(B;T5l@#=D9HU#e>Fo z8jg^rPl;;zyh6Q%=&9z73$1X7LCn}a)GB{E#2`lZMXM5g(`d;Rn*e$WqK29n-4}N~ z0Jg(T`LF%h*sTmb@NlC8%xQi;P6R2Bu52(gzNKh@?IKxLB>Gut zZC!WHx)?{BoU~TCdTwPbtyvsc%%pjJh|ZjJNp$ifb#_I{P^!roVfqjn(?py5hUzX> zQ6io2`B8bm^CI9<1v->}_^d5#rB}^esiyZEvvMMYtCn+m=9iz<$AZ+_o_nZu@vDRZ zzppy`lQO6Bt@SpL&O07hTP2^X&#i5I zSS|0*JDpln%xdLhag0q_UYnSAk)8e|(VVp%ElqY{B{O!;2f9mlpy-+L&b!rhV_u7C zb_0jgtQr1HV4T=NRPtvW>a)@=?3;f(H=R zbo!|A*idnRzd66MnlAO3{>r@%jfeW*{lWhB!~H9d^jBY|@l1bfTJv%izg1p=HA|g! z-QaLHh~Z)5bclvUi^XBEmOJYVdTSR?!`h;0b88;|{*KIf#WB?<nu&}Eas_2{S3RW=-@gX!%2fd4wktH=)-fAaa3 z1wK1SGB+TR_imtwwHL-F3zdlty9h_ zUL&Ymz2av5y>i9fQY$Wk!V%zFYpahW=Vyjjl+y=?Sv*ULE_jGGO}4eV^7E-w;Lz&) zTXDgfl;)bvTnki(oZ&Dl)931(JaL6>+fGYr%vKU!4Iis&_-;0v70&+VwIHp1HwZR}=g zHs{LvrLNbB_Ju#~xjb7N&|6UAf4OFav2jGkyHwaSm40ocs#x4;`wEw^Nn8BTozAh5G-!w60-8a*_N@N7m;(I)!TsNXfT(V zHx)v+f6KpC3y!CJwH1C*Q=vKu*c_qVP~$Vsmr%Rr2w&c!UJ{=T=|r5W5y-l#woPf= zrp~9MNwr3d0X}29eVvO;9pWuXgFdRxKddlE>i>9+f~;QZvRP8A`P!kBvw|QlS@)tXOwn#_gM%jW=cvLk)7XHCSu6!zy$Ht*6dOf?T?$P{*AHOLo zZqGkmx_NJwrNg;38=YS)_7~IraduW%D=X9bq4>>8nkJ{C(>biHK-=b5?Xbt#q{*oB zuMZ#dji&T(#obkm8-7epwEXCo*~v_QewxlsFZjbTZJ@{U4Sx7~Ims$*(syJ0CYLAk zr)RX5gBIdHzB^q^)yHqAKj&XR%1-5TD}5La{)~X}i2U7!D6^=)X$W>ygJP zX3E=29yV%yvF^USyXK5vHO;-9(`!3TN5A9qZVg%Oe>JDwbf{ZBkg=YBz>%0g)}7x@ z8^R3?V~O=ImS5PFy6P*(w#AK;J9X$W`tHbZ?KHdVTGO4U`p(=Z&%U$b(01OhxW3Ob zK2`oy&o}Sw?rOWn^HK;c$<~WXuy#4dmX)WQTklH;mUSpdp}TjR(*3uq zS9g(>{w-+Ra&r3(ZrIE7H!4k6F9OX+6MXmqX2rd;eElkp#uHuPNh6L~Bo`N#ee09s z`C>MmOfN_5WH{D8%s=T{PLepKCNEWpkXQ9@$q#!+c}^$u_A@$9fq&+nPfr}VJDa;f8m!N3jp>=x?Y<8d4Is^^Bx0`?$e*TJXyWoa#hL(<$A zdqfD$WP$4sg59N?UaKG8W9sQUOAYtl-^;!Hiu3K*gP_vK6TWKgl?ZPjyL@}R;|&5{EqRsWh{iVgl%G|xftHKMd1z1pf}l~; z92KgDM)V3*V=f8TY;WFT((>Q#w0j@Ew_UV3$H9qzyOxT^s_s(y&B5SQ1>eN-)s(jU zUAz9n)6s;TX-z*p%cv)ZEv3fe(Y)bzK2OL^S(hXWCw%&9vX7HjQ&#&oWA+bN^Ymx7 zGn_6L`%{vXL$fsL0GIbd6YFv`oZ#`(i*$0H@soY)1h+k9oQPt=*;dc9Nj5X1-KdJZ zATwk!y3G34d}_T~US6?uI>%4@as|sZy#XKM%M4L1v5WsW*MIbcv@fj6w|g|dm(SuV zX{YDjLEiuMbMS|C2Y^()U=lT23^Fl}U{-%0Adei^q6Y-euOXSNZhmrHRg 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 Um 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 z⁡&BDB)_w{*6m4&!{;aAAJGNEf41{CGHDWoL6b zhzt>HEor?PEerkmk{FnI{g}?l{M!<%w)sV4m9@HBQ>|xM%Sa`)j#@#jnpR6|6s^ph zR(mn#?tl0K317ePdlt(9J0g}untVA-zRZ#@|0AJ=(XA~RS}$kY!I!1x{BiK*i@}#~ z{XE$yKf_77)%VlW0k%W{QhML@-t+whUyvQ%^(rS05u-IK&tYTzny+a`MA?3Qc%I

XF99V)!0;b7>QYw8|>JZT`up` zFhB(bHu)$z<|}HgeBejy!S7Mddy7#k4uh$yB+I&7Q3ji_NS|85z<7d6%#(qwKU6d0 z3{i()iWaA9<6OB!SDZT+MOv-@G(3)!-c|2YqR9yQs*n;?N5~T`iN&R2#l>kc)vq0a z96NP^wj6bqV~yI}2u(I^6ahyszg&aQSEgj7>P$1f|KScl=Gb+t6Jp>yOZ z1RcHb8qs-?r1{j&9|21@d5o*C6QPmVQZmfJB)7}~VIv(|Xtj*btQi|n(XrY7+q=W| z&d0;u-gifbJM_<;&by=byMDXB)#*I==OPb)Fxl>uB zqwLk(6Nl-Lrn2zKG@T$+iHTqfuU8gQ*z{Akc_iYOa9&^=R2<+R()p0Xa^nq7dicvX zr4lW4@gZBlScfw}ULK~45+tv*Uc$ou85MJKx~ZY5&y*JVj0M{zN#|VE^pa0*p6Jn% znz*_b<7_A*;fRh0i@868bIoZ^V)Dh)PrdtlZAe2p8DT(n+glAWC7qnzQP z-Hd=OB0Br&R04b1Y0~FL^h-L=WNkTYBXGbdUA7Nfa5Q<7arc5227ek${|(JX+LZM!};oqe1dKc`vJEB}h- z2<4l!Co(yr4boUE@45c(U1ae0nPz>jVK%94urs8E@g6JVeNZo<;#G;sb$JcdOpui@ zwmJITH_w3(U=xuXV1F|-FEgS}BsQ5zW@68oXCsGgRV~{ha!o+vIz(u0<6)46gqfqL zane;i#=S%oJkJ&jVptF1ZsI+J3Sc{`AF_4e{Q%D9AfO`+LWZy%lm#B@rmCJ{j|*y| zI64yNst5wg+K@|A*hWp)#PQ|`5X<+A(0mJ&yJ~4!6Uq3DoKH_cjL)NSf!Il(IO`$< zlZWQh^g?MJNO0G-5C90J8r0 z&b@ZwZtC+&a|%_gY+F;JyD9_Eu9gVct&c5qQxBqH>&h1HghxH;^%9dogAr>&uQQ5; z5!y%YoMPhO8vN3}CFhD2imVH+lQrtzqVSH;O2s=54KoRU3|KueyJlta6ya2qo8wTY zJ1?kplE<$k{6(r}1GY?DY3s>wZPBXV6VDN0>OD_`vof2W(~!0481udyNq9Dqb>6Ed zR~T1=gH*{>gaaJ2Xm`jA+7<){wKIl?)SE2Ix0yeBypgs|m|ZZe_BdZK1Zx;|!&}r0 z6hK_DI)}QEsZd|#P7ZDVekH86tNTV`B+Z||s<8lFB36RQow=TzHW{P2dQ(sCs7 zSA3MbX5Xw0S{Q2?=xD)zrD(PhiH(kY5r~$gnjt(nZrJ{6SsM2~TO@5Gkx5~{#k$!a z)$7eS`~i*Lufjo|1FsnOR=_X&j1udf4tsN2ooT=^Yh_fHYNYZ(b+H{+Bf8nh0m8or zk=B~aRNtD9&$D0uYcEz=)$}!DL;d?IUHWM!Qy9{J%>k_Nt<|}?;`Z7D^=mdb3O}C=|#FmaF!K| zsmW^5=UmK2wy0}geq47jQFps)hk&k~;1UCGyZrB-{JGoj+sJxCxPQr6{c&=o%STfO zd9r7I%~`WjiG01Pl)2ti<~k^I9hSM?Smt^|ndK;(Wld%BM_VR8xiTeZQIjw5t@Bs7e$2!wq+nbqOM&5dWwP%si;H9d2NB2G9c#I=GK0;3NJED|MEByVGR z4CGZiaOq`M)&r8Hmv#nKWMEsFekvG^ToLo|g$SZq7R8Zt>F$~R#Sv;0Z(NCxIjB-F zT1$e*ke-*Ug3<@`9Xc4FWy{k-&c|4veCFia}N6hY2 ztM&yI8VljzYA&?7)*7)24!~KH3!lkEwFvUi^L1Ic4Un$nMpZ^f+GF2_G}&ORb$#!r zt7V~H@Ao(?(em`SY*BC|o%-ix!5^EZflJ)rokoc`!I_{b8hV?msjSVkcfaxD*uq-W zzv^Hk&a9Y`xmeZ5?ptkI%@-@;y4l&B_SbQ7Cf*GTcs87+2p}ah$*4a>;(e`GIn};q zD)wAOT~EgVq1l2ToUN+7t50!sF0K-i-u(oB&x&!@FrJ+3i|Y^uCA}eaJtCowpUaT= z#gW91-z@J(CtutT)V14Cs?LQ;HVJ1IPeDjIDaQCs~k8FpbOr^b03q{Uo=-6K#@r@iw-GCyi5tI8mgU0}m08sCTuPfwh zN0=~mM@*XiSBE=Ceq5xln>>jZYO}+}_Z0$h=XQbhtEb;>NRRovD(mU@jvAfkVWeOW z-|a(KvT8LO9PYDq=3}B)RX4wi0QM^hV0ZVEt*u|1xE9el{1r+XX(WDcnFicJ%?|hI z#n<%v*Q5QLAQ$^%+Zcn9N*yG?5k>K^+g;1gUHbW({Mz*=Lr;QD$sP1%1++x1(5n1>oF7~14mq{b$O9-sXiy45Z< z5#GQo$|fcv#4k5<8cDRiNuuAX%&2y9az=2^Gc2lb+3K;&O9c&B{jFKL1B0+zIYxxV zL{Acw#GL|t+q~+z;)|M5Mw^lo&xGzTpRFpIR{GYDz_`0FBLB_PdA5j)f0XP}P|-Ej zel*Q`LmCfo)GrjEI@gwYc};oi8wr_GY!qaYXU)UQHyPKCgg2Dzt8Z%w)?NZ{GL@&) z^iA_f5_nTcUR*bOEZykD;jf+offL_k)^N)ByzyGhsWx|tNz%|Q`B^&I*e#O4>lS%& zUAI`e(Qe_du3IGWO}d3sUfV64YIC=kBn{mnc0{g*@@%cpR*O`P_sr<_k@G&A0D40TKynr~LRL zE+JG3@U(iIt!oQXf7Ke{QE!c-Bl#H6h;{0a_S$PwMAj>(=#i8ZS`>?HG;V`NWnS7uj^$ zsm8ZOe+ISeOK}oxn~Sj#xHqPiQtM$Eq8TEBpTa^%lHaPFPa=E4BD=^JtWRjSI1j-6 zU|Y+71E>E=LbG|Yov-=5DFX~~**F=0Hzh1iPRficp}!iyJiUyx6z~_3F1ncF=AmYk zA?e;qte>FE4m}!`FknhBmP^M43aZHaL$4|oDaxw}W&Xky5mDqknUz@4Qk1b6g`&Q! zsp(_2h@BRiX4lombLq8hylJlnPV+ZNf9115b_@d(c}!=aLGq&URvBj{-p1p%#EiXj z%^h=}Bm_3;Djh|!Pu4K6YGq>B=(96yVd)Gg-6ya$!-hL4G#Vg>xh-%vgBNU$#+&<@ zDI=8<#Qo})v&RK~JH#89BB+5d8>F!-7Ptu8Ji;Jymi23B2i#Hq)5w-z<^PT z-tT~ip3-6{CbWUATUbslrru(O4Ob3Jtle6NZ)-YJp(>@TC4QeN#V2m;`&H1;3;^86 z>%KzPG4d2lB$2(BoMnrNn#MY*E@+_U=O!r)SAFv}X8b&c?T<)xYNB4&LtCsfV=fcW z>x=kETUT4nSmbXP*t6KD9@Mx=P!eKhCxf~!Y@~A|`I3I?q&li-qhb{?4WY&JO8TJP zPyxu&+Ne&qA&qvUO$RWDpioWF*)Zmnq)nr55G$zH#yKN#;bLtjN-CM@is)b_Ilw7A zIR_TCm#}GGw#vkThB+*5E->Cc{)6zNU%2<8$uMe8Puh}TZTpnv>W-$U#oG`?v& z-Q>GYWkt3+(fx<>di{}b1tK@UCWh%nI{%Mfz{sRxof~Md{3bRH5}f`nGO^TQm^ui@ zyN?rFe-_|mv@T8+FU@7oIktG2sP=%zktE>^D0aoH-pm^^vCd7}y@|x7$ex=@i19vi zW9~+;so%=cw0ECz72uf6k#zW#{hfO9C#EEQtuf@01#q~QE4!qYUlGL(i!}Ip6;#F5 zw^k#+`q$RUPi$-Dh;OJ|EK%6MtohGr7G3V*sDnU#yYx4*3#tv6_u!o>y|>W3wPMp} z?Gso>39OaCI>2z}X@F}()Kl!NP*?s{E5_p}FgR-Qg`OFztPXSLeWL1YFkR}0RTW}Q zimxxKb(!Z`56=BkpD!ZJPd`UkXsDUh6-1{oduJJS6ACr5^<3B4T6?S2%O!@_a<-<| zul031n)0TxejSJLTh++U{Zu!s%m#~Zf0~`-m*B$%R;0%X*gzu>_$tSG5i4omAeW^3 z7yL5DMNN8|0Q$3UTuWoZmDS-$V8vRVzD=;-oYz-2F`Wm}iHE`4qeOizYu0Iw5bnk8 zk<4{YgOy7xsca6vJp0S+hgGYS#FJ2hDJR(fRI;xYZ^j$Ra)M8v2y`eu0q3UOYH~V- zzWYwgn-b-wjZ*Wn#8bb|Fk21@WUEEp!9rqruz$rN2k7MZo2}nk)yw(HT1TGiRyS)Y z#2GuR#UXOTOD`VdI&v!mGVx29FlJuaw;lM%54=_nOW`Lq!g+*10|d2ffHz8ib%VP8 zEKw3~QdfzvSgk7)_=LJPq`$i9#5Gp)dM;qRm3#)oaCvV-{PEd$0S9vtO)zaY&gKz& zx|OgPi^_e)>2wrzlFesuM=q%O0d%dOwxUa@MxOAz$xEFok|d z9njyZ3_YNF;|wAg^W!R~Z&w=rg|l(RajnuM_cgXO;4x89%}9{yNx5q9i@#PLgU(Y}D!2s%bDAZ*diG0=5rinFs~ z_Ig1K{jwd8tPpfew=%ljYx20c*^SQFTK0(4gcBg#OSH1w&~8F=>KwkMH0;0`=T5yy zOU6B-zq8g7mwMSEi!nLv03(mjq%-twlZi-mj?lsiJHwN1nPkJ{z~R>nkeM2RAF-Py zib<&#i#At-XsFG&u9`O!0z5|9;Qzzi_SSWxx+N3c;k{DKUhH0N-soMrn{4+swIAlS zVt285r?#FOCHWO47 ztqqfg0St%h4YP(8F*ATu;)-%B@&bWZvTe!LXuo65Bwnnj%6J3)GRs(|wLmulB@%5lb~>5$Ip%*Dzj;I>RoIb}P*D`S^#anW?rajWU@nV+>g z)kgYh_F`#vy;*pc&%~#|251n{BB$vov&Y2Fg9barrc zXwZhGaoq7eS{J4gp$)xrw~bLyyZ$;6Yw&-4E!fo|pzt3N4~Wh65J!eO5#PZfv;*gg zZY8Y*afXpR(xcUTWSekQ#P_ufDQXH-p7r4o%u4)w=Tr(F!y8 z2eV49j_=L7BXb+`6DA-M=*UFcGsAy(0eUS0C2ep;p*wX77)KOg!D z!jNl_iXyDUmWJSe{u?9r)C-x6`)mk(md;(gzhj6c4rw{xw~8QF{)XbCM%4Q86$?SW z<}Cuw7^!;GRFp%@Gwi5AB^Z#=G)`OJXx-!LCTh6~p-%K_s!j`axkwi@*X*3hE{P$A zbAf9{GdvdsNvf_n5aD4%z2e)%ArPp`PXLXqv?C@v_(_7WhcD6@ykQZOEg#XuXY^~C z|DHeGGCLE1ZwMOOvLVS&G31xnbLrBc_1f?#=@iEfIwG`|id);{m^GU-z-^TP^@sWj z)PlOCLv&abhu0z`+Y;_vX_z!FK&eS2xj9J}qOmb3?b{aEJZN0Cw$w{Sz7&G=6AJ&+ zr2Vr0Ltj6ckR=MT%uW%;Db0B?oN@10LbUkIWH#?=<-1BaK+GLNJw2QE>4ztQ>rO!L z`KR~gxe8*E#w;)IJEA@7*F%%Km+T&Shb>O@td#f`xcjtBjlXz-fy0y}ZJ5Y+k*JN^ z+eXa6WD6945}A|dpuuMH=H|s|CXq`uZeq!#Z&i)cUZ-BWB~}0(z`Q1QbgSt53(w@% z_!psCxlO&^wZuEH#S5ap(g)sssVMG=E)^20HecEkb#>Y^KBhDU^Uy#xAt)kF(#1(& zQyX?k*WPTq=tgJ#3Jb4~&0HGLj1h%hlR^ILL-aESAsvrhFlQv`3Nj`;dGRWNl7$V< zp)F9ouBTwd5xb!lGWQSZGh)UZ*{Gd1FMTN~qXt=Q#?ZBnN0k;lQ%waHfHCW+ah#k3 zTN$n$`dD)L96y@crmEon=ISXQ7B-A1HH@XI#x^JtAfG4f^#vXt1n^=-aZc-;($h&B zG+%KrAUp|77U4cFzPx)SO89H41^>ut4)qzZGPzTt|n+HJjLEo z|FXpB1cTd{@X)hF4=_m!c`a; z#~g&1J@K-V+FZ&jhX*Y+#U@oRN`$MQG?Gd>TbsE#%-G$Y<;7wqQ6ZPpbqJ;0l_&@_ zMpQUNta3HSVQid9@!As(9kjHZ#vl+x&6@*UY8!hhdaNtEK^v<6rq!d&M$A~_VhU_& z#6E%=>oAWTkU|)=h~0sOe)Vy@U8NlW11|p~)}O>^ATh`o0&-NLRUw_UaA69KKiJ($ zgk?krqFHtZl{0guVaE5U455IyP<7Z!MKoR77&pK~Z89E9FCR)Q2g-3gtC`RR@P2v& zg_QZ&aPQqt)S%yH@VNXp>f6WPT1^%m7X3rU{m@c6s={zOQ?)p}rnb!0eG36p>0kMD z6G%;-Jk*i4llTYd;B6~zVHZ?ivK)nimcujARHlrhn?Z+0gk+l9x^!)YJ0c6=1n?=g zAWmk|r~*|4{M&=wZ@%gJ@do&z30(j7;O^b8y%hW}z5MpuZY>aBHxgO9d%GG?07*H- z!8e~7;(*a-eVBi))Nwk`*+I>4DUzY!IK}}X^O<>cT#Pnq|GPfA@8+6}hi%Wad$ zM%^$-P7mjKr84@#tYWA8`H&qL9I1PL{@_!+1r3?1pBywP$Ou(Lnmg*LGs%<-_rq z)n?Xt-g{+F!{!|TwjSxQdTbsHandQEo_^S0&pO6VJYvZ!nxGr&s5`@ zazyeHE+7(8J!6kaqn7@WRU8ZB{Gn!!iP}ZN4cu;y2xZA{5I%`LonY}V{x5fub_x(3 zcu7f|)nk*dGti=dnv?3iJ*#qw)bFh@7JF+Tqjtp~_Xd=}zPhqRl5(DnfQh|<%UNR|*kGiQcI&_u#n73CZhP(SOP6tyWq``0edQ@Vl*9g^W!wtHwI*s)TDrHHz zT5)VW2NoA;7CV5W_+e4_9TdF2(!u|wSh3}lgx1Y4zt=jE;AxkioMfW^;Nr@@TE45k zW<2H?gJaIYq4-!CffEJmV2j0=q4uDbRrfn27-wOMzKMKkbx`Fp6%S5cDu-z|8FrJ= zQCCr)l8bZ(?IcHV?3oY?$xxDyHLzpYF}oP=F$^f;lb}6>!iUxSdr5i%qa@WNk2_L~ z%yFYtPN3LaUf{SX79+#1?TTcmRk&Fl`j@ChcJUuKsfA9{>a^hT%U%enY{N5@{7wP=eyX6_@ z=RUFeIrGZx0}|t#wLnr~Vd&@#MAwR_Nx7eFbv(2+2x9wAPwMHvkfmEuk(%(Gx@Ki| zFpC}N)z>P!LJKP;$OzftYfBH0$J=^EGR#iX^SltzydK**Rlg2v!s%y##;4^?Q|yN2e!qQq8-z!KJHTVB4J9$rSUp> z4+PEW=si*GVmKs_p)r=1)1x+y209CEb%=w$?w5)`63y2#N1Pu;$kmN9mZVz#GkQT z@OxGv69eEYpfiJUtLk*U8Cq~e^bk?6SpxGVzUEY{Y{Y#vx2&6JZ0yQl`MUUE#ma>> zZuh)UUn?n1lRZ|*w+aA?{r-Z3L$w340On*Wg1c)-v^+Cl)nt4MNo1*#cs0vDgUYK} z<`a^Ed7cU+uSB+&cMzb>Gkd52$gZ)2Aa&DWh^>Lz(m?ad6=qc{R!8T)K^y(t`+n?R zxC?$B>BCm*sB%Z*8-vQ)bDK_98>F=r#LGJ-69&=1X@c+;P*gxWEhEB)c=Y~4WxP4SDmw8dixT#xyn*HDGy?uKdM{+Ov zKR?CDNfv+%f|8u%+>k5l(vrQa6I=4NY)_<@+~ zH0AZRt=E!^(?1a+W%oST$&SYHnK#pUwVs8spF&mSxyCLGtfKdgp6-yjX$RW@JZ$Y| zkSoM64Sp?klCv9DPs1CbZ%HK}VdGL``7C5`H+~oAxL&p^ zxB>E2M9}+>?dMr}jgQf$M*dH={pZgINjf}meXqz&+It2Hj$PG4- z2jdq>@S+mCfYvee)gHU;dgmke%IFqy7l7(`FO7OWh8wy?{c?#|Y+ZZc6=deBzY%Y> zyjrxYr`B-A6$U>0^~V3l;t?G~@3$}0o2p2-FI_xSwf5D$(|z%<>@6;s$X^(9RJY?W z-%#}C=kruqjn0I9T+E3uPhFSM$deCoy_fTru$Yv@_6JreDO@Odm1dO0Q7@CVYU?Gr zjS```cd6`lYI<_Y*&ny71Di?+JDq`s(}bukpaV;qAuhN#K_(~h;B$vDq$FF0T9c@8 zA=?`ySYfv554T%;9d8g4G^n~GCERsWGc%1hH|D|;*_2?p|g55fil}tuLW)TxdCAKM*{pP8iiP zBzw>0w}E+HH3=UQGA5A3!MI%Qvz>dNsnk4fZIbikm64L_O~geg4w}OL2gmz)lN5a? z3EGMZb2xcIrPHx<&I^deAaJ6Due8OuSsH7wTI!)#Uf7)s5?yVAbG1hMz-W>|PAxWt zy=`9L<$oJK5aoXWRv0-Kk>I$CTSx3plLj&{;;Utl&Llx=0lton~mYl3|=00NOoyE(XNT+yHNHBvOOpG^?&C)?~l3`~O^DQfv zooAx!dW!&^FioA;O2^U)<-nxoRq`W}Ze2Hbt6c9ynziFJm3UPrSE+y2epC8+oPPWl z^CPhU^~=BfqxprO#y{Kt;?X~*+@&(F+T>{P1Rewb>z*D1lP}!I^Z%E4?DS@D@`ZlR zH{mF5G2eMh7riLkKSP&xN~+&>5khF*-@mO-W6uENh~S%)Q(+>~%-5ITU9pb=5+E3F zg#T|{t*b<-U+8x;rY-yrs2F+7ycu6qvohgS*5ZR(G#s7d7H4`syspy4T>rYtOy`9d zs{I;{bMJWY%0wIjAY^$+@Oo`>WD~6g@p}*6_Q3bkJ4c+j<5cz<;vt z_8(#x65i5~t-3Ol08d0&0gn`o2dMX;<-bsxkmNrKc}$i!&Yr#fFX~H2zM%YVxVgYbVL_f$GtQyNZW(1gZ54qn z8IesjN2r+kNm#-K>Q#@$U8gOl6BFd^AyZM7uP6f^LSgBX^W4CoAnMb||6m@z=#%^M zWvNL%j)lD%flm9k(nq~qA=c0Px7s~hW~Hc!WU4>IA8m=P=&|7Pj$J?KkKV92N^OvX zEn-`?SlJ@yDQRO?x0HbeYc%j+q8vpFYht3MnTDW%b8O>HMe&V1HvGrFcbMo>iVi7@ zE9RpB(NlMZ)S)BB3FIc#>H6F#+~}4Ntz_xxpL%DTl~9(ur#7Dcx#Atvk#>4lM5Ly~ zS|R=3D?ayR=iVujPt~n^`iR&3B=cia0|q?m5l}!T52JB%?g!7CyzimRE*lZ~Ok=yH zN#-CEQsvn5IQXC?l%Sdt??pXEz?`+dlhNeXaM9f)=@x*3(;}G=egBc8&&5w^Re;MnXGX^(OB83 zN#nQOc%bz9yJ~jg;!QSq(${^kqo8g>oY6Fut#n#OH5E131#BM-Du-)agL`WGhrErF z`Az)tYycyTi2GDDszX6Xh6ep-b9aP_HMoC@5yNm?kkMbumSZKK7X7}UfAFKN4?q<| zG4X{Gb4-rr=KG5I=G@-x!vfHu6N5R+f|+T7yd`135|>HgSVLe=kUL{D-(~R)3AuIU z$a^5V?L1~9U*4w{ObdE3gY2J}>HhS9_sHd`h zu9YIVWa%QKcj{BWXEdgsL(9yW*x^ocSS+huvR0Z46#(V+oc2-I62L|}z8b+4F2J*L zc}`hGUE`}e4whtAtnstyNjHgoVFR>&=*FdZ)hyqOk=nIfhcpcLC#NTNWP1)gim%Sq zuYNjh>Vqctjqbu(aD9t!-V7kPwm^3f?rk_OXLEFVg=>TyIe?){*(08T9+I5^Y`3)>&x^l2}j5@r4%rN zA61uRO)iiPRb-N+lN_>!CQJCV2uUqwY~75G1_)pbksWy&jJ ztdMMm9N(BR#S}wgMnl|bTp52DTOLk124O~Da${e%blmXZV)wKlwxAmUW3YefONCxY z`fdQXf9V|9_aLe{5Oy$Wo=ZFa(r78FUb#sGfMY<^Vfv6j|5an=n2SP>ha8!logzo| z@zJB>QDeXeAvl_*PzXQO{5 zzpAo8ri6;9QbZKh0D+rx)DP|gj%lpP)^NpF_p&Md=aqcVZty<=qFI>aKi5ilowLTm zyUAT+CyU!Sxc*y28_|f==~H8op?bym3#koI8o7#+4SQS`ib{5oGEV}&It32&gK3~2 zDn1m5MgM!qQ6MaF?w(PS*U9vTMaW%AEDMQmEO~piCWeRr0d{}5=P1O}$#-&butkBr z#=e=BtNw@Eq0dv*T%F^9r$2iDJ3z$0Pq3#{EAH}q8|{+Z;>f_xLm>oSjWz2y=nE$9 z^u}}GHFw2x1a`rA=qZF=p?+wApcFzx4V;g$4Q}Y*t3xA+BO4Un0D~8lR>ySYjWqS1 zwW*HprJ2pjKxe|8<@r=C`DKaBA(4D?K8>@DCM!P;f40!z&;}2u(|&JsKHcT=WC6^o0N5f=+r13pbq0wKEVUg?btQoJ{joooVf=|&ORr$E? zynG4h?RaR}-^2lgoRGsGgF|BctgV zDk#jqcFDsB!yHL~TE8c&Q}lW%$ce;w;K!QD(V|%j1!7WGiuEezSG8&u`^BU5H$scf zek9w@*|fP*U0l`_)spL>w`lOBwJXnvs)EuitKLpmI+xq5Agp(8n{%4mM25Nb*g8Y> z<|5XIwq3c5u zgj{hXC98L$u1+a6PpU1l^PkH4z{z?9Y-Ia+6LIXmncpWy@BtBZU$Rj<6lzedg$x96yJi#GMJFNH>)-Fl4h^ZL&Ayy9pJS zY;Lw_gFgQ}Us_)-zJ!(8sQcuP^7$MY$0?(AL&7b`=dyqBMX!tVNj1FXrLGIh$>2hm zDWv&h@A0EY|KO5H+W++~{p+T?y3cc4qUyzUFMUzycP0>lPNgcZPHn79i0E$OgxP10 zEPn9q)Rv@?FJbeq-z$M$ams!GKKc!Wf5HJ|Q!-4*Fmwa55IvM^iEgeWV3Iu$skC(H zHu#2LoY^Wc(JFPb^c*V5$?ue0yS6mW6YNtFYfeRj*94dYiD*bS7^e?gN=~Pn2O2^Md1n07}gRy*Pd8o$C zirLFa8yLtO{|;Oa-+4RZoqQO5u;{kIpfzzH1_9t|J>}Ph2`K)GX8SBBl0bJ@)KxE; z&D0n~d|O5A;TWh`y5N?HOkoU3BJ{+0{K#1d}*7XEf zZ??(a;9gnvG)oUR?%s#qb)gN6#Y5%@9@)1Vl`_i&4(WUN0Q*43U5j0TT{-*K&XBMv z=$G%)BnSwBHd@q z&%~yUA;(x>)oqxzkb^=22s$Ol0Js~7Nsw=5zn_kGN%LNSNyKjjuKR%GFSF1%c(-Cw z*mHKX@V3%#MzWfbn& zQiNcG#It-Dyt6+mdc6W@OD-IO;|SGOztBs4aNC5}h!+ydE;GZOq!uyU*}#vlP`e*sA+r>0ZL{9#+zQaJ?*Vt-!k$nr(9wpkdx5W7* z6Y1z{a-(cj)H_4tCo4p#gU*V2P8 zaimyJYQf0822Jdhep%YRtHAN(e?9ug4k_2!+Til}rdhrWNOHJ=f$a!^`CN62hJ%Cr zF$Z}2tJQeRAL3?#MPAA$o3{ULZ1G7ga z0P-yZxC9+3_%^JR6k*fLkUwYxES*q7RL9m4vq(NRg(>Nk{sY`-;5KBPW7}qWS@nY$ zDX(Ihja9RHbx6{Z_)^C@(z$S{+d-I?F{tVKTW8RNu388RaLEN$8nXL=qkZy(tZJPgp_xz~oQAYwXLE7jOn<@o(MvQU9mPtOq% zq#Gqmhc{I3v@Db;xYTB@Q`1n-Hlyb}CbM(D3LTEwL|i2&+APXn*43L$Bg9Mal$@uY z>dfX0t=E@=O0+}bUA>%%IaBp`WimdzP7-Iw*CO!l&_8?c?=Pxqf%kX2DUsGdX|4W9 zkHudW7t88wXngPB`LS$H$!s;A)(hlU`tgTv+vrW4oDPj2Z;yU)jTNqc2p-9QT+-_f z{c8lD3Z%}&pYm9whS3WXN{aKuv>CJMjSA_^hkw_j2caOrWUrTi8`4YUjLGrQtA~hm z$N#sd)87Sok`2*OjJtIvF7&;NXpk^Osqd;Vm5NMHY6$pB_9lw7D(R_^*rE4p+skDo zkow}v9Z*iH6OUeD-s0IEsS-LtERISxk%Dw26;cN)A=h<1&IAoQhbc$K4II<7G3Q{-36q z<;zT(wQA$}RB1UK4P7)>Z|g_MDLS}m3E*Z$B>F_ z26S8Pc&A9!`#;sPVUHE(A`Cu=-!|gEblIoIy)&%DPBl+6zq@ToNp8v_^h~F=u0#JE zE@I*(IV8Vu3J|(0J^xz!>8}8*jL(vTkozkqRZewik1gfBLR(Lnpgh|owJ;hxfhCU* zf{*9ZFDA*~t0wic5}r<*Yx~8*vkPJ3aGM0?i%ogUF|ebBq!T~(M|~TN z62p67BWyo>;^iR4j#H4&FROVC7j~oQnGlAO5!`gt*sN(OB$rM(i7Tf!PLQRk%!M5z z!-g1c>(ZWy!lfvaE5uTL4b`{@KL#D@Zn9W^Z{vmcDIPa^3yWjcB*ILJr9!DpsMWv( zq}x!8$T%EC-`c46F5`4)>+oMP^2Qy(ig=#cK-?fsG&~}DSQIFlQ`iov*jn5HUE~2j z5hKf4N5>ZRAw+ez2o2#EgOT810Z1aSjaUGiL;nSt{@k#-c4u3sHV%&opBL!Y55}oj z46PKtVU2CsEzV5F-KxK;S*YosD{<&jaQy2^qh8iad5ym$Jz!0ieC8+tDg+}9({|`Y z0Ecr6!6CoJ6>cqt7a-=#>w31H3D`fpJs?B%RZ9+V-@xBG8DM>OBU#-0(w_tS<(Q!O zQa9X_x9AI2MX=yP))pfvdF;s2fPC{Dcm~So6Wm3!&>Io1OpZ`b+czuQ)3{76? z+(~`TZEtd)OEwhMj1#d2^;}x|dQQ@zb~u~sjWn^m>SnJOc-$c0P>H-%yb@WnG)>Wa z(R?B~3J~KbNgv({l8c+mjh}UG*0wID5tAWCM$k7tMNu&QlA+Laz_kGz8`?@PRn$!WT$OoLZVAs&AC;(w&I_L#p6ej-&l03(NmWs(@=6I zGI8qZ!_!wg=jom^E|PSo+rW5g)E|9uN`f$l^mDRjO&v@;ykPOPzIr1@ky&&P1Ttuz41^|!*b=|81hU&6d3mFGrc=Cail@<;QO3 zkEs2yjbQ4AC2VN!kLlLB8rw)g2;Jr8J1J;AuYXxr!KxamP#Dbj0<3C|Dva(*U8i*p)aw_8M?^ASrwo*rl0LauPWa^3o=T}u z9g#)kLO6Pob{1)r{HdYPK+>A7E0gH-uF|GVi@B)Y1Pcx%xR1RKhaJ0MSCz(57g;2P zc>J%+m#NE$f1!}KpkZ@}fE`UZpv`6(5uqNUP@Rf~8|Tls=ddsnw}H z;aWISMiuwg93WkCP`tYmsU+8}4!P!>riAh3^nhHVLcqP^@&4o7>cuDa4}b8MqW?fY z)H^4hoHYGqHy_Q)hq(`&&+bOV`?LApMGU{UI21{Wr^oP!n#B^*R7KQkL{Os<7y|*z z)C90I!J`0ddPMnVwdb%1Tf}CjSWW8zgGgHkKHc3DKO6j(&e9vcEkt)kY#NV0{`Q-$ z?%pFh_o?&P;omOjm0T_MX8fC8ExIPR|2;C@_=a)poRT95{$Vvl_6`~baZ-$8VKoX^ z_Yr`jt?0a03yNX}L}IJR-9gp+z z!w1NJRDAu*S`pW@V$90L&FZ2NVUlp;cAQ)os`HLViNKn+i!3|_UNA(k6Y@95L<_}p zQp1*)Rl72#hY22gM%&#-x`2~FDzr`~5=glmmAUHki>8sNR^BPB2n$>s@Fur#xiD58 zjQ+ebu%`=RH-yx3j{k&R)Bw33i`mEd7(yPx7=7NBG(G zXC%0M#^I-M0sbu0I*abt0FuQ;$Bj|!9*!M%jr^1}g;KN1(@N*Ht|l8+j5~UY6>&3$ zT7xp3`og=9)OsF7$q`P^7H z90Dt9%*q?t4-qejPauUjUkyl^E}z&@UY~lFN`|lthwc9;97(Ph+a1Ed6j#+;gAYE( zA#li5H`&u2#*fCq-T5q#$P}p;`}VgO_;8GHFxVu<6lFVyiA2yXb{|Ws+=}4#*e8Ov zXT=D$y|xAsDjri_*{zHZnMH~}zRvzN7p4@4@7cVfC6pIG{QG|yL0SrZ zBZJqiAF_QmlC%Rk+f@!W2-rinWzBf+X9aTNYkYzG9%8>EyQ^dPBa4*Q2~vL$Ch252 zNWjCm=OSxLUTR6nDNRV4^y`6FPIy#M&e0W&TNQSQt}MAR6{!(oHr??{KjF#R${nr^ z!?dpTli+7pQE`qIBpjqBU9XNF9S4D6r|Wt;5lQ#5TDF10Y62u^eXX$7Wp6P%bcCKu zb&nq_W}f^#$XS>y!`zDo|JWP6KYG|cguMzK@Q@?kuek6zMS2V87W>GC8OhZc%_#ak zF{7vq&nUU6+T`Kc^7QHE8vD*NIfrE5>Fd@HF;tTumn%p3Qxy0JjzEuHjavQv1j+$O z^pPurp@#LJpql{be*dx^nU8#~?2DMjLb<5Q2?abWC7+wzVP(%R z+?;U?i6X!0$hltNqymyQ48*4@v$Pk!@&g6Xaq9;Cx90!P}`(*t9)#-cZ{zU?S2zN5<07Y*v}0 zQBc6juhp`l$S*-KxVmVJiG@^Bng3*K8yNgH8Rap^in&ip zTN>jwxD;DgC+9-bH<)*21vjwbLx)VY=9=`=Jg{oJS*K;I_9EqsYWiX{0ZuIv>ZSch z2{;nOKsP#^#AmPm>_VH$7DJNvSGIaQML!1_R2Nwp8oZjr9m8v#KGL-5^U5TMa`} zU#bKD`s^j8ohBfNm)d5PntfvOnfZ*`^=Zkj0qGtFA2;K;XxQ(gVQz8*ZJqZeiLEI< zxo&T@F%Ubj>o4CywjCbGSBPMH>JN*uDWrSZW*ej_vm8!Gxus8R<1jabJM5mfB^!p3 z4XsV>hrHW2FC%Qv2tvxjnGd4WT*N90`CyfOCsJ};1XZY1h5nLUqstMc*1Js?k z{wGqC+8=sC!_d5vv>_G`kJ?vFyf*)@6F8p!UJ{3%mf^YoBXRtX#PQ!z;^?^f?6ZerAa&3P?(ZN0zlIV~m_`ikdKsASP#s3i-l464| z9ayO$5GS?~8}xI|gdgr4bBUW^)R=QVnH7j^Hrl!Lt+CNrdyPOOPbM0LC~m-*Y@`Y` zBerSRn^T;^F{Q~Q^?dZ34n1~!vY#ILPC3WN#ka<+#7)_di@?Qq;tF5+xQY!z7hu++ zc%@^Xtmys9p*}Yb_P|NdXbPIK<*73n5v7}P3+j*r!S`|f)yamMij6ju=RQixvm;=9 zDc6mX;!L6g_5efpy!OpAZEqjQa`2xQmLWwYgAWILdWn169j`@kxSy2^i^7245_r>z z?0{U<;xA+XC1g&{K1?RoVM{Wo^Wp5z8z+DKO|^P3xO*gtn>D#_!bzf_84A!8;Ju-f zu@tbVPDHncL}ibIHj31|>*#_YF${9ok9<(VXq>*mB3TjQD+Tki8Q%+wqmy!3P7gCjT4D12Mn)KN z-UND80o2p>fu)_h2mJ=Ps?=bRyoYk2X)s|$Ggr%oU;{as&-p~>QR2k|%HW-9k&z zkrM$caxwMjI|%e~Hq~i5LH~S9vxky73ls||`>8{T#syLfwhRkditjblK%0(PZ;d(E zNCn54HjvPi^O!npfZntwjUy-_7wa2UpS(dWaeoA1$0x@QV7rahBWo7%!14mw3(mf5 zpJ`9z*qnHwP7(q6`$}cFkcm1Oi+syhxjGe$>Iy7wJk1?sBzqZm%SH*&#}SOul2a%f zY1yLQC>+Hl95G0eXrZ@*4h~7a=mBT^{i2^X2in&Oo}6^H-w;!ukD=1QU&~eOs86g! z`{UQn)&KDx_msAU?&?X^j@1oKlnz-`BejF2(yx3sm=t52tWEp>yMr0EiUeWoq<>V) z7lu1*f`chOe_D8m8ZPZv|8&jfEl$i(RXcj*Xv@OkA>Fu*#HmO&OAGg8s2g}5U84@i zOMy)wm8j9f>Uo5%;J8>gpD6#stXAqn#ITKH1ZP;2?C5ION5$8p^U)A46&LE}#bK;W zz{kGy6QPV?MUEa1izmb43$+VJyI%~8-6!P1dpy{p#^ApyFAvtO+tC86+1Z>cuLX^f zgONiD(Ei!Ws8m8RXGv)F1{f4-Q$rmZhf0cTQ!2gk^{}`eY-kK&5ocOW>~1dKR!e>T zJS^UaO%{p;Ja}6CO#kowU_%E-(#UaFN2U;Ub#y%}ZidCL$9_LWpFp6B8~T60Zr$t9 zHWvQNMLsgRWiLR`{2MB$AS1$5`h#gT<0!e)ik+f?PvR zWIF2v2`Zk274{R@K#u0)xa>trKZ_U#sJEc;%$db*3C<{>iK;W#F<4Sv*8)!vI%ePSHxE?cXIeC4yrZF9A zsjpZ`2TWq@X$2Qqh(o0X#||jWA8JHed`JZ24bm~e&<9Ia&&SjCq@wt7%F%T`Z`61n zc<}l@F&aF)0S-wFH75+3N!f&M9(Rx~oK4C3bOC$pnM*Vx89643dmS_Xevrr^-gXK_ zv;+XD9lh*i4sm!q!}lbZd$% zPt6~JrJ3_(42?P2TS0h87nEg9?KVdIAhoE$=<=G7-faDZ=+z_te>?w2!y^8?inSlj zp`Yr;5B~GDqGg37P5atyn#EGbL7JpU=dF$altnOmu6{q2tYT_It{SD+-WW84H|oTd zE8^OZ_gzu_4RFSb-->it7W0}3*$iI1{?6cAi&s1=BoZ3}!}w*~_H98y8)(d;elWaw z(MM$SNl(W#-^@;%Y42nJ5a=iZ?BOjvAE70Vi>8+g;`2BQrt#FPpPHa~_mgKFw9{o1 zF|j+&GwGCU0DS^EhqtWdN*P_U80DEv$#Cp1_NxyPvtF7tRa$Ys-c6xJ{WlT?jKAosxoD_Yv zlJu{~Cqw-A$q9{2M`_wnso4PUAx?xg>*Ni|m6UA4#2*Vx7-<6r#mg}V*hmnPQ=6t} zFB)?2QnwFm00jD=5g+J5u`@*KBO5eXmjmXfOvj3>}lh&KGJ1|n%v$3a2?Dtn}3t<;dXinjX2 z5Fk`^FbH2&s^W`Xr5a$rWo z^|@@S|1d21rVp=?9@RW!sRbIuFb0%@%s!=P7P(gJS~@Pwmx!WenlnRWcP-=-6X1+T+V(@WiOYqZqt)y9gc~q z4cWBBJcs1ldZqsoA)vboiN8@5FE{Xi-SoC`A{5N8r)NVsfmbhVzLt*ED0`gIK&{`t zWui!tU6*i-vafYipYi+~;DWR}PVV3Wv>c*Z`Qbrt(NjlNiN(s9vZ|I=MnMXLl9;BrypNR{zKq9i{Aw`6MVjc z3m^bTkP$`=Z$T*&ueD_@Xx;H97a`HaJ2wHUqNp3fja4z~wN(|XKxiZ5)~oOPTtd;@ zy8c>?O^GpnI$8H;gG}HK&Zjd&Sw>YFVsJy5U=&G_0GSG^4i17EZ{P(z2ULOm#(z^n zH$4Q02HXbd7Cl_8;N~l6B)-=#uONC-3jAN39_>~|$i%=}jBJmp@*vyniMq4$`rC?P;Q;%h{_5*77|$KueC)fEfa>7((rLfKg(P^aBZ70H zyc50S-q6e+hAQ1J{)qN9%o7$X5qjn0FPYU>;xDg#rY*hxZvI87$E%<1$=!iO?XNgQ zD51mfkcQGlV(A5JPa4^3$wz{qrCSGhl@VgQsg9d< zC|+XR9W_IlXIp3x@3k39U!j!K6M*RNgu^>I;YjJBq?Clc^00W(sG&ccH>-zYSm0NG z*6v_cAh~!?MzV`p_FBnwODLwT$z}XdkAf5dU}N!ELpQC)W*=idzAs}(b`ooZvDUPH zbzYqC5Kb5q?F6#Z$spA(PkCRS;S5NN*h$(8;Ej*Ra z^?N3tbv-#gN%fCAoagj`rUL`it+wryln`$@Q%iJHEXXeim-LC=?31Eejs2VWT}*oJ z9jI?;FUzeyh&WyKyogfZ-u-e-+&K1@<4n0YQNc02^{%bFX79kqI2qrb1}WeUyh8FS z?PiX1yv@wViTArBvOpTpO^@Em7e%_ZH1Eo*?-5r8iO8*yl8$U$BN2OC^o2UMhl z7(`Z;_%)h6)(HU?7$k@KO#G{{#5j+#eB_mK%O;V?Ktfvsg9GauG{&~?d73S1HmBq4 z;@}s3Vp&@C*GC5ych2T5USBZziqXP_ciMxYzxai8Der;4UM0}Bq94m^%5fUJewT3S zt7ePU4XX$?n;JLb$LyAmNPE#zR4Tr}`D`sYq@y@*On^xgrQJ6cYgO2be`yXe@_u<; zPa-Mm8kwGyG;~dGdXpz}^(U9~v|*mSdGzCI_T^7LL!Fgxo~~=hqiqdDKBgHn<=(f4 z|Ni>Nw@5>Et#eR~Or_pI)Zm>P%Qd8U#y9E^!5qM05ngUWlW~0wCTR}3+PoGJ+s$0A zCH7#4@^SB%{BS9G4^x&;y$1K2N~Q@a}YVX7vA7LnGNs%fC8C!SgJRj-r-U=YLbpDs5R_ zx(JX|v6Mf6O!*IWjkG1+u#9s}GoA2RKdsJ4saK4Ekux=;a*|Fxwd2LZ2E{S}yuA>7 z)Sua)HExy!wk6P8{Csv*3f!qQ1q4#|vloYSSBbW+39DuJN&~B1MLl1_il(}02(cM2 zWulG4?}DUE|5!{KIQ_fYT4jFuH5HTt@hA*ueGGKiXYk2;+< z$Ude+8u!HxSE!6xV?AKu<|VO-5ec0K`B`-sZTgnGK#lcozP@6*;TV>7ks&eXwQ4;@NMI9)as|t35!R$ViEP zGFncp8BD-0v%IF>oC-vMz=@edu7Np-)1gS}WY?_fISgd7u+UI1i9_(ia~&AHNcD<; z`NrD>$=mGmL0D_1lfRTfF*fb^zbP_j6OjLi_m#$QB+u7!B^tdF73vww^@?~94x%K_ z<{bHg)vbL>7M{8HjHk+;EvxERIOJ&ULCVs_%!voiHj zJUHeqx&*UhaN^6_e_B;j-1_G2ymaf0SFU?CU@S-Bwcy?e!Tm_Wag9Vf46Q)UKSZ9F zoJ7fWu#ub)wMfsariorjNu^h`ghy2|h0T<%jsz`j8&4XSOSH>mv#pOF5s$sB2hn)z zWiuzYn&}OPmuf2_gz4J&)9|aixG_+S{j^y{1Lp91Zo&Iz-5QJwhx=Ivq~|g_w=P;K zo{gF7?<663(?#q%9yj!&;S?)q^qKw#KO5{Tb`jU33upP<5{0gtz~qSxpj5@Y zNb;trUhHigbT&0-2>A*BeR7PVbP`g zVNqYJvF5w;NYE>hT5Kd27Bi#vg()bvQ9+Yxhp7ri{N~(-R24OV<6sRW@tq(kq)b10 zj`Vg^Lwu{rah(i3&D>aILYE``v_dxzIv#36jj*Mb zP7=2eCT*8pQ@3e|Lp8i=&X97>K8*P1bd^=Jc)k3pS*;r4=Y8D*sIOV{@Nnz>dWy2W z1XYunuZw=W(DArrv!p?|LwcsBKe|w?Nd4#Pp!2v|w)wf!b8i?dhWS!F%w{dj9ENAb z<6_Sl>c0K=Aal?+VcMw!oSXF(&-&sHvsSG|^Hsmyccyx9`}$vlyRkE^Ly!Y1QW^Jm zI{RPLL?pzk`dUh`KL<%Lb3nftWjkA~;i8=A>xkV8X~3OB+dpd6fN zBsi%7NB|4?eQ%IGYEX=w;#XQ&RTE6)y(MTX`?OERjlW>5{*elH-3lNrJWVg=~Nmd>L42=i6#==%@Irty$~r6=9H1KAzF+ceZIb-bI1Rp z$6)%);a9<*DB(4992tX5r}pi)X67A7eA*RcFQR$jbhhte>d@M0xiZy+2yE(bQ2%7$ zSc>Qt=M(fTWbSNpbZd^YWY#g4+>X2u<7ElROM*lWKMioQCY^cvRM{S>7WztWS0! zKBV}Wv0HQyq7H^>Y)~0e#j`0E6lSv&w+7+n^?Trjbhpto@3OdvjbwWP!A-(#3Z+Y;dsA*6EEO z4>`uju~FSsJ>AP_jSt1W23c%LxIC*l2RC;!1oj(20hJIY$^S%6VU%m^Ep0rxlw1HN zl^R#lCp}yk+YsrG>`@G7m|ROhk%V+BK_&E@A+e5RQCd$m7*?)@Y16>lM%~5}$jukx zozr@;(i}=M%S~x-=bpQHyOUx(rQ~blnGuk%IQFP1QAjd`2a*+iZ=E~HB)7R2k1NRx z%ps*75CNOul$b&R(%0CX8{9R|+$Xc6yts&;j<*o};5l-n+qkKHKRQ@RAob$tvK z%CxJ!IGMS*2Bn#sZJN2>*vz%MkLt5JKr70P$`;-HV2vgcmq7Ed%cc&4rr-o z(v;8>NdWlocE$+T)0v%PuMt{LVRF~KjEWamx-pe*dUrKB7*|I2hK8$y>+ek2-InC^ z8RkDqRCFsHJsK8|kNs-50W5-ZchMUZ{tAQc!+?D6mJ5>c`jz(iKf~Z5eP8}N47@Y; z<-fxK@N{283z*+cG{SxmjPR;q>AinMD2Jw)$#gJq;twSl>N#VM5#P{33XV4b0Y*sj z3b=-G%n0SeWz0etCUoA|)^|G6!9s5Zt(+uc@<7(n1?¬B7&c?F`Of)k-l$!lFYA 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

`4qxis})QXNM|&2mX(MY4bBy9yJBCP!%&7%lraR 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 A761SM literal 0 HcmV?d00001 diff --git a/static/babybuddy/js/graph.455350929c2f.js.gz b/static/babybuddy/js/graph.455350929c2f.js.gz deleted file mode 100644 index 3c37ceaae1d431d7c81b84e85cf32e70a40a61f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749718 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

1uY~ zk&JLctjX1f3|lKa_@~LI75}9>2A`IM1}_`FMfh^fUvktQ+gk$HM^`Be9E6TasVHNqdTt{gBsI3xBSG{Oer%7;K6f3Ku z^+7aB&#}Jmld-)C~Fw~Z1dZ#cxODHWP01eF_EB}Z`0#sHk>}EEYxve zXYvZB%S(2#-iJ~cn#xVW`ScOK zZ~gO6z^8FyS?GkVq_w9lC#svY1(dc;hZbfB^!9E46y)aHw17k2Q z8(yv0fkLf3x^MQth$?I|jQgn!lbqz!j2y%nc#xkZ8TR%-G$HAx+EzpiH?AN9X-m-% zG1U|bswD=-O_TMyZLCw(>&-Tbo(6SPleNhO9*x*T5PyT%LdU=+s4_(g+TQvJ?vz!R zp%U`1S*IHqn4zlXL&o(SHUoeZWcU{J=^z z`DB3j2I|q>dxO5|hPJJ4dvlVcC(_D<97B#KmitGdzEG=-!$15MN zqu`Ng!}NHH7Tm2ECK|qtf&atTDDc&buDgQEa=m;y&Ce>;VH3U%EBMS6{5r_?`g~nQ z)Luufo_8s&i;48J?5;byFZ59H%K+i2r(Xfb!5+Mmp3%m;eJ6%rX3AiZEl}xC^9gd- zSvD999p;DxtLnNDlCEOYe2`E5QH!^|WeKmocfPam9F^y%I{3v`85U6OwWeBWs5UoL zD=pRLi>bEW-s#qpNYWH-iAYm6F0M+nIvTZnihkGm$tT)(s}RlJ@6%J3aVWbjUDgqT zQWWT!rb@)7gpj5J-cENefD@$Cyi#*c@mLgJ);8T2;02UO^dK1p_RVvxF2w33rn!Y~ zI6(%;h^Cbiqk9+yXW-vg(2Tl>g>AT@d$CcYVqd*gE~;BG z70uC_BP0-O>Zn^%5QFvTpjMq<31h9z2DI!Y!FL?R(eCZMod6)0OeRU$@DJlxz{~6$ zt`Qo@6qlHp3g;{1U{vnw;o$6aB3Ey}0v0dp0~9Ux3RF0bM09Q;C+$Ae-S%x7%>3Qo zrfEjKJGxRA{Q9p>%PXS2c#?X3y2f0UHPn)7_2IRf>FaTsDlfUrR(S|-`a z!vdi$_8XeC{W`t2F1;`*6=4-wy|xvSciQFyN-pZk+(veCIyGNh+I*sN4Igz8wMYk+ zcfsjdU}J}~H@R82vR5=(!Sx!u_L1Iz=rjhEz>!p%{50ud>#X3X!5SYs7~L7l9YE7i zjsxg+n(K~hQ4RL5CHC}G@uy>7F2;&;I4gOW^mD#E{nH8sXb}M_N{+51ztIyS` z6ezazuQ_9+^RA#NE>OlKuxg z_ZM>e-Vn-ok7iUoI? zWD~i|axqScCtPe-#LN_}w2PJ~-w?tKRiPLs>-H7bwIcr!1U-8x03+MMjK!;(@1cKE z!M$#KqQ!$kmL86l4nmc#E~!Y)orhHBjdKK8L*n`Jnz!Gi=SP3rZco!Sgugvf8zbc!VnDTx!Y83IRBTz0LuY&j zljQv8hU#i?V~W_8t6*EMf^8YV){O6J=)PWvF2htn+#RoCgOA?k^9pMWmBmd7A1~&| zfta@}#A4_CjiPL;#Z&qkl?Qqam8sc*x6q2b_XqB(YiXfd4j<(xtPb6)67npk0zsZE zLEl5)h0a;UAj6_)j_Wm$bn*f*x>k$B@3&6wOaFJvu z&;v);asV#fh!#zKk%Zt6mJ)%CW!1||_sKq>c}R~|8(&y1>!3>?x@;aUB)Csm->IW| zQ)KF+U!{9Y@5asX0@a}hT2??&CoMyuHDlq9#(JxgeU=X}TWJMe_NCX%r8jc+0?IXc zH(rf*W1n|d;Jiv-7xdKc=L*&1Zebx?FSLsW8(27R-0GK>_j+I3_bXQG_4;yw3(lpt zVbM#FTup*{>1w;px_zV*=ieR#WIU6`1UEnT8T+#=1+8Y2H^0JydN z-;L34MN_kv&Z8hda|`=g!KS~Rhhg!_wMlYvQf-%ZO(|?r^msAk4^TxuNri#qEhfL5 zjmJ=NVY}0(4H-G>oMa;v(Hytr79>ADF6`4ANcnS*z~*8q7vXLDhqQFI_3GPX&c-rp zHg?{QH-iRR6)3WUS7-xB3puIJt#JVNnyzgCQ-t+Et~**fHEUm;KevX7MKu$E=tZ?+ zGf9loE$DG#!rWeO$}EQfYPe;Od5riCZ9BPP3Ym;UAC_LzE(5UEk}gj3EYEq$Iz0`% zeO}>Bm`il?Zu`GSewILm_=l`tMm_-|>D)nGNCnI+9bBVo&m1a1U5mR8^#%HCxGWh? z|09J>8qWrHrGPrx#W3p&E5=E^8I1P9&G0f+*+n~>Wjm49d-8t*7e!;c(bm@qQ9NP zo9Uxq4o?~o^9NT71gFP1lVRc6Ygh;b-XB+8=lnOF>XY57;|d@?sk zV!jk2;7!yJLUvOOj(RJsQOfMn&5n-hc-s#1X2Ve6E7dM)LA4BTM_-qWMakGJspMSE zd~<1Ml@{Pu9L1O$XrY$UY5GP2|4hk~uU`KEjzl-xj!NqQ2RohfUeqhi_b(&lo<(xp8M#e3Tt&BL=$5 zLnpN5z?#+c(?Y4x(o@aqFw60T>MWUi_O0OT1MEOdYb+dFWQ;ildx}*7?1-L`TG}8~ z`5f#(osXdb+Bm`DBcJ?{jT-dQC(V%Th+q3sAFJRDwPAzU?xw}PNp5Nv>B7xAR;mSw zAbmZO__~dnzZsGl(wh#CVvVMzuPEP>UW_hexMG9J7NUFrZ(U0eyk?dej)-ni^VT+s z9D`}eyef);yMv}N#%aF9YG&K4^w>6i&t*<~$2ll6!V6zYu5=dpfU2}m9aN{HD`|tP zo~bNX6ukm<`xp)p6xzbroa(;H%adCwo8@o%oE*O)(KWkel>`n5=vougW$SiBg!@>gKN-_ zEEmAgZ-;(7u9>Y-nvDTQ}Eh7$z@2@TeoN;mJWz7b-Z_scR=y%WuVO}zeZB2KtauwyN~ZE zE8L-s-^B$yJ;`7 z5~0vrACY?;{vk#EoQ${pms9!g`8o?m1~p$JE=XU>Dy<*X%Ffca$J%>eCA4J%Mej}D zrlTKU(*1OH%nw)b%3kQsfnAsG+g`#p|sv&bGc7y!zt1gD<{6_~K>z zi>JS=>!%)N-5FIuZzGOv#Hakp%jX?L(ly=!{etoFYUvx!sM#vRau#0gS`hQw-#vure*rZ-F5{d5-zfd70Z+SXNFL)-7E zlR?^Y|0QiXrH)cQZ54Eowx{`QvNB~k!ogX3k&kFN1RXHxIrW`xHSTu~>&7B57(4sv zUbJPZZmQT){QEX#f38ugt-EHJz5{v%2MGx&hX}vJh3mO&fafv8VR=lbAyI|l3DzNLW!)l^ ze1ij^w4$?gdYTU~JS1QGSJ;ZsX$U>9D1s`0%G~jW;qV}=#MfNg5@GNRGBh$=q1ll) zU9T&yd7yRMt6vCH)$1@K?XzUus32hjQ900a|MHKx3+sD@;f1m9iKfc*+=^6uA!&#y z#>uGu=)$-R5!g0Y!0{YGQ|@Jj@@KKgznrG@97B0WP(~I0CL&0vRiDO44j*NGM@iG-sTCC;vauIkQ1h&0;YL#& zZ|QFG7OBAyO+7XB!!l642x=2xv$#XSaX2cnC~^<>1GBSUI$75N-n@bu*75A&#+#xd zg%5EkcGITVy}lJ205DDmjs%q3NU5L#R=0FBEVq;lt_q1w67`!DW`;=ZUF*FJ%u`Kr z!%aAPipr`dU&Ba$Be0~k@*ph7oginjn_{5EB9HHwy6cnZ4rKtFH3R2BdTG+${%h7X zB^!PUZdiUfYL?Q=aWgJU2bPyY;=6LIe$l+Cn;z~o`YhArn}xH4M3=*^YG!5*cREGa3xw~#~V7GLq746}lnEvjhyDi)Z z;jg_`^d7kpuI1<>3%D^bLY-J{;O8j zs$GY0dW!ZN=3Q+~a<`h$0Go;Yt2 z_k+c|ZYt~)Ds@tt2X~&PAF3TgUAr#T!-@4OI=QGHw8x%VP8+?>X2WULAhTfmi>JZs z19~d(e%k6#YJ;K7f(Ku`Tw3~NsNfe*4!-z)g@)xu-V}|#7%wd$U}V%&_w zI%d4XFPn7@)=YoMxvB*C@zujm69Q1dC&&S6{@S7dN?%(VKv`EHP{Jq3gazdvtVD+u zB|{DKg=URDUvXxRG6UVr?6K{)YM4|$NuwV<1IYR5aeRSSt8s z*?dw&4d4$zs~~G=9zA-wAKicPBDXCnn9NaO+o;#F2Ml9&_Cs0gJ?Da z`b6J9c@?Ql1Qh?hOw;IeIvp1W+uM`mynT{QPiMVZkxu&jW+7}J&$bJ~a!g2W3-WBA zC6G1Qe){C$qh~K45fU0*m_fVkZu{ z0QYP#_iT{G&EYM4r*8v$h+H_>fZcb6n^fHx>)KQ<7=1%yv*9v29%(ag8|0w8!nh5? zpax&Ifc&XKT1W5|5Ul7l&(WCX+k%eDc_{z|#pC;EJ9%j50Z<8jr49+9-ps zGBTi~({H~;Hqmqt(GzWFh2N_7nN}@&#i{h#8lv_#D=0()KGTqA1H6BP^PbY$Dvzra zkWMaCW}WN=kR{vP6JpP)Z;qn^AD?p!PXH%$-!KihwWAFs>@OK_+s<2q2W1TD1z6|? zMJY=s)A=)AhjsVp?UETN{AVxKLjse>Bau%4Ns&meS^941b%!n*bDuyO&(b&0Ci<=G z{6m?6R;42jxQOYLqOP?ep$T1iuWWledU8x)S%KG-rl+9$o~6mC;GgGdG)h4jfCSMG zA%Lg>1j|t$_9f`8BsEN-fSOkyDipVywMtflsx(gsIv$+5&yNwL(UcD!T*~QKz>Zzl zXkLuat%io*!nkt_p9jamM-I^C6?brwVaeVkKL=U+Uv!z;PItas9guG-;~+Arhq9i3 zkbJ^tW}SLLApCmCfDbt1`x&oe&wKFkkuHllRkSMrP=^cgUuo|@vZ)VusAk$Te*8@J z2UMeDo}i*PR-7vasq_~he!cW&x`OrQyGq3wzXqI#_mb(=qVu#Do#&Ge&;eLcqftJ^ zV7E^m#T|v`e{rTfePgUBO|b2@ZQHhO+qP}nwr$(CZF`@yZS$V*-j_F-sajRlzb2Wa zGhJ)d;M2GbORx0a(Ro1WXsuR@AZdW=A5;IN*z!@Jj$6Ry6B1vKtbq^CCqPVNALLOc zgc@{;z`F!FTYeOY67_XC?wgjsiCs!SkH~A)_avsiyj=2R#82E@{IZL0Q>=$PqXXUq zO7|ZUFO0ZpI?jYC0BQghtGDxee{Z90YfQMQp%jSP-H+iGT@&PzZ8U0BjkZL7+$3XV zw2cYLsHDv-@+CmNxq*En9-w@g(UqOK=NHiQn4v+HP@L2MCbT~eTm#rLv9UoYsqd=suQ>De zi(%wKxg@&)b>Ex>+z2Hu^;;~QCE~|?hl>j|k!NQgJwoe6&%AAF{!yAd^cF1c%Yu}F z!H20NQ0tchB%#*tG{Xg)^zTUOD`I3tir-=xTA1&kLj*h;=f zFHosMVm!NS6j2@jt`Umk2RdV2OJUa~g+zbO!-NAtedCf~RQAVMPps1GkqM_aezM*$ z2rr1AEi`DzzQ2(UFrenl!W>{JmyDb(cLo1wc_L-#U{5x+ELs?{5he>JS9HB1L}AWi2KxwhHI@vt|LZSJ_COBF0xYRIjw+IWJ9+csZi>aFf`=%h;E|@IQl0}-sM(o&dD=TEjP&W65>RiL$)HPV|8RQt1dk`OgM&alC{U06{x5@YM zI$aia+`*Ehu0uK{mSTr28i;C29hML@? zUPw?DJJh-7!iRBQ;K{)wR=eGA_sH>+gHqIyVw9I@oFnkm4RuS#7{gHAnkqpNN~z2h zO7$zUwniGtfc(-IZ8Wcq9~&9PfwVM!An#1GU=(I@e?eAYo+EQNc^>g(UMf;A<-qjUtam?$G9<)KU+&f8NSbv_OcgUeHA8 z4kSp@NAcB8^Gz*4x0F^{LX%3HV&+UvOX9v50yER|1C0vU>tk_aMqr#m`nzN;JqFqo zqs}kzct2kzoBcgr%E$Tne7{c4m&G^4W+eG}K3>J)^%bSoSxsQ#Lk+ArUU;uK@UVHZ zWD2$~>mM=sDxgKzYn+={*Pl>RN5eQ@5-eLj*U{MG%tip!>W}o z_>nTj8%8VQ#w7HVyrrc&C%BDSV-lBY+|@d#p`1@qk?eeyT_sZ4gRZd57t<_}+f4+!piVaYT(BkZR?XtZms`fGVGxwmAGoCqzCjMNvT!SH zJ9X!WwrY8OmL?vX*A=ikdw3C)rZb^c1~mGuSd$#NPku^I3pbiM^C}Y5$uadkwN$}5 zUuN7i)tV6DOLn}$71dHSqF~mjzPmRdHV3QvxP()HSZPxlgriEUbXegCLK=BWtxe=< z4S~zUuK`OhHL%W*mN`uf{a&$WaG=;5~gW8yL~|1OZ! zp>Q{_T`^)>D{F-Ycwblj#mBvU)PgOHN^GxjQr6j#Eq(yuwB{B+jVE7)BFc_qf zpa_LM48At$`ic{mFeVU}%p3#5lVb%TGcm-4;!Q5ISG{$iGpG<40v*eTF7q0Dy9H1y zQHXl&jq8OcAQGXZ!X)LAj|xjeHJ)PS^`~`QiM(Uj?YxpYD@SYg<(C7i?}$l7owM?s zGFNO@5Xzf4U9_EsPOL_ruGP7-TB`(I7i+JEtd_BAN#Olu;9( zSOzt#RKUOT2&p0{;O7|kSN$N&xuqAei_=+|td$UxvstRv=x!~E(h+}j4R6+DP=QnU zJh%kNse=^8XiHR!7jI(X)%-;s|CPn9zp#g1MG%wjk>Je3^w;-Gr3$_>S&{$8ih1K| z8IYbWT$3X_JQdK8OByCG%tpO0>$$~>@m01FWNHjjsB2qPTMAbf8Mrda^hZ3t8$b>wcY8kPTl*A(1TRvC#VbW z$~v|aP4zsW22E28tuMPyJGqxKZ%uhop%mNOifQr0LBm{W!U2nDnw5>u-#g+~i5DZV z=){By&z0k5RxG+vnt zk>R@O+iL|=cLv)$NStzEL8?3xDKon$X#fvd&5>BU0MmOx!6k-Xp=4kuj#1t*=>0Jq zSF2rpEr-hMeW6eY_rpji%8!x)_xNj}g{+%e_hH|c)$UG!)Zf$AFVC|~NU>g0VRsG9v# zn6|;1+a^3jv*1@cv|1W;$R$ptq1PgFc4l)UAw5WC-djHxvcW%){4h|w*3+jEs>|S% zG#+~`DYmDl?HCJ{gQb#IW_pr7d=?{st34$?P}*f0SBQ%auX_Vk4$-DYnKbhw+%R+j z4t>b=9HEp-sH^+ouJus)soZx9d9}VL3VGGB5Qu3HlJGHwx9Os{T|_Op#tcec%ZbA` z`*9W=@bgs%A6O%qQ_Tbkb(~nlqi&=9ZX)|w?jn9*XJmS^lPD`t?KWLhjO8irpy(8I zP7dm36+tMh)YqkY#-(EEWI4JlMPVmbkqop{JQ+hLZ=x|Q$p@%1w>6UZ2tpr3>r7Kf z&WSURk+_MPsmt#yZgTUMi4!8!ZdgOUn?^e;M#wmjRe0~HIi49BHo?{0BLt3()w=8g zRGd8@=CKZZ?AUUrG#S_9T>I@3XILXGyXxLm>V72{Wa2wc!`2wQoK!pk>VO{u2Owa} z_;GbV#7Y{)yGa`Jg#>KJG%99@F@e`AyR~?XV|=iY*xji}qG`n*aH;z&pl&MSJCI9t z@E1qdD>n+vEu{#b>)xIIn*8LCB&JgWj8uCMh0k0dzo1)CUBfW z#3d;uKIWW&J`|+FOIc^kn-4F3b+pu#ns8F6Q_FaUo=p7#)hUNmXA>-{=vlDI)AETi zlnaSFC2(ZYOcGOa^1m5O50sju6hz-O4mPNQRbyb*unO>oR0C~KG7sM{$$iHr8i=PS zY!x>8n4H;7;&YrZVoDVD!(8Xnp!HNl^#|q}5c96i%=_)3wiYo*u-!{;+_>l2XR?R$ zVM6K!2;CGDgqA&(a&N@`Ow`X4GhDWt1G3S!^E2ie{d37fT+mh6-d%*w{PF`W-<+5C zuy6hR5?BG4B za&lqw?ASuq+3hxzvYIjkUv6u)3nEOCS+G1|i>sJP>Kmi^YOms1*NEYVYo2_7tkBy) zzNvLfSpvW8`8 zrCs)JwDcx=4jy)Btktp2YY~xTYS`n9n3V@L8Tm&kKGNG2uCaj;ZcBQ0?aubIF_n&} zk2%JRfa!2h4aIJkAiX1at=A)!A0srQqxr*ehYJ{`s_4AR-m|N9RjI5=vDo}xs+4_W zq%X!ki%4I zx%4-(@F73iR~Qv_q{{UUuSG8mTn^7dIP~SgN8rAGb#QC)4MxNOUK*T zF7P4UHU6@J3Z7|s^aDoUj!CebSmBivTMEOijtIRNWff2sX1f7P*bU34u=v_eH}(wPgJgo7=LuBJ$X%L9y~CYfa=YBNn8imVyps$q3WP=p z2T2((%0B93vl7zmt#&AA)_Dq2GtA(%h6I0?aD|2GimMlIo>8wI9}NA1(%ajw{4+XD z*$7*RrJit!ZDtz+F6x&VE%@jc6dbaAW*izG5XDGnGMXI%vC6-%G)A?pot3u=eFe2i z*fwNz-)yV2-r&&H6@zwo0g=ABBaGs-3oBM9#J&%00)|Ov_98pjlc25GRaeh(XvYJ< z)#*huu}+jVvakpq{oQHzx=zinf^0)wYRycITi zlcEx9d~zqQK#DZ&6T+$+w`zUDRkgM?po(>@Ruya0we%IZV<6%#Z0aF!n~_9`iDu$O zj|4NaWm~FjZ>@NfjG2+KvoZ~e)J@R5-+s?;IeV2M$j$7MmM5OHHr(9hE9OpxeA5?~ z!Q$EUM&Em-1GW7dr%YTh^%yRouBTFk4_LF4N>sd`E_J6Yxer`2@!1d%T=i%ml}TGm zld7&fRBM{Xljrq*sPEXXJiZWQgRw@OxiwRjxzN=fnzTI)j@-uGVC>aNP(?}g*YtiUymoNf6Tk;a3*^Y6x@`N zTa4?Fqv8r?ct~>~NhgU;*d}-hfDF#6=i7oIl<$o*8HBB!yWs#kmffT`tG2<7?h_Wv zxB0y#OM1iaB^)K?t@inR-m1P^Db0<3%y1wP=CoIa>Oa=1%&#q-PrU0Fa>B9Kf=_Vv z4}i6Yw`1H{I9kSLGH^xg5QL7v6UDHvsIM2vHR(6G3~$Aomd4n_%P3P0$FhyDshrNj z%va-xp}CA7s?uBD2G#+KVFHSrz&mFND5^a$`>oF8;XE;3!q;BATM9p$Y?xG~#~ZLM zlBzS_K2kdQ=NARMM=S*m?r- zfLx|IXHK&=4TRus2ATCLx0x$FVs!bT&Zd4Lxfi##Zo5eos#oD zfB4?V2jv4yW)q~08SOB$WI#PnunqhEE?4|4XD6~}dEh?g5u!V)LV&`ybfjG8T=cdQ zzy3ZadX{?_j#_CDi)Ur&n-i>1^z!Zk*Jie`Wa9!gCEB^DBUCEoTC{G)kyt*z94mRD zsx7#(uCbbk*!A>aDa%U)kh{91V{gognC{Yrizj+XqFn3HYS-So`5E%QGsnify1*rc z$hi5Uz=b`&ECmBYN&tnq=9-g35;1mfBLuY6<`g?=JpL}qB_a2KtiT-}|72rh^TnZt zOOT&z9e)e!3?en?9&iU~urm)bL;?yLyWj{S4wOz)f?P*$QTkGP{apmWYn?%nI=lH` zFmQvjRwskKsYz1Az%RccXQ?$3Pr`E3VO_5LiC3@gA@`Vg73!AHLbFX%mx>EwF(}Zh zBuTrar`cEw3%wMDfHY)64`V2*BdP{qLd#Y!;MC!D-BJbm&H-taRSI{S&2SOg9xX&r9?u#OrNQxgVa=ZMK&2ifXK~Y8GVFdmsM5%Z5WzsE z(Q)ve)`y4Vx&EbLEnebZ0AKsph(yo0QBj?y3b$=7OFEjPCdTD{X;=cj-D>=?px_cn z7CR5PKj!APMP*ZjyMhW<7fFfw3o3sYA(8|z&BFttiAKQ<)D$PMidK@Hr3UgIo#w*x zr|?cJ{c+{2YO_czeSkRi8GwJr=SV3(75WN=ORP6!%N{|hYDpSBqS}4CcZI4zX!|3J zDvHK{T$hjxuWrQXMwdjig=!UqU%?$CI*PP12}7)MP4C30n3se{3Xcomu(7)B*5h7% zRy>Zf@_cvTLAWWz+tqWpS&i9kTSVDfC1Y#SMXZ8S6ozs#Wo8=kwaP6Dz2ZA(i4C7M z#yO*r+>ie0otq7pDGw%9}bn*ddzQw*g!*+l3c7r&D* zZqsBS(S3>_Fx~Q;D9A0Q$b$T7RQ=X#7{`nY*9Oqu&bi3BO|4OHy3iTEe08iUp6~aJ zAu!>>Bl3WK=2MshOid*U`l@dL+VM9C@I)t0Q0CL`@bkJshc~!p3@?kjA}@4!{^NCZ zOn*c8I+PR-+fy-;TM?4Qc;7&<7`G8pEDRDPjkl!+E%67~%ii)e3da^$S0UhB;F|7g z7Tua*kax)2B}`(0A|Ol`_bRB!Rg# z=Q52>naw({xQu&u4#>MQF`-GTq7iIsLXZzoEV8prpe%|i@0bq#vTlx%LD3?shbt$+FJ=4ew=7ePV`))s`T5q@|y(u@stI)$MoGD6>6-hSK zI%vEs)jEVt%4HyVNhHfs%}skSyJ_xQM%-M(OBtpG?&^nFc~0{}8+M?U=V!)j zgXUsl%do#Ik#mm#l0t2^8uExwq5?HNN`m>aChYzDsvV@a*}V+Pjhz8x9d&~H;>rmj zo0Amz31HY!G^W~V^%RwTxQmN>wdl4zLYLAk@f>i9M2JTM{jk8-3Fbg}B;?C(+Hz{V zMz1iy(tqI9y8cK3NOjpHc{BWob3>s1lu+_(UG#>HjcGr}jEXg@=E7WtWv&<7yNn5* zJoZ3~O@aruck3`bx~wkgEi!%i}`2El~V6mJ#T zm=QIapoHLHZb23AE5sxM`*|XnUolq|BC^{iMJ4qi7Rv+BJ?>>kK1s|tycuM~@bU1- zlAWEzif@`}6dK3Os=*sNpw+AD2d|vqayBaFmZPDDn~xuviq?4!!*3h!=F;qlt<5C(1ooK%*2Nro<60H&f)xhAzt(gHR|yj7j}sV*xI3 zlT?~6sFJpKGLzJMezAQK#jztButfC@aXfb15H))}>GF3phx2rIL(Qv=5n}etGsnnP zZoV5bUCoD`TuX-C4t{P%I_~gDmvsY()JIe0A|}%%DoDkS8GD_GNaUM5Qke{Wp82qy zmm^8&Q#GO@y=uBUh_wJ>)>0(OB)f2JB(mocPn?ZBahL7ue(aX+b3b|ituO^+iR|2= z`!lX%7w_lX>H9HzdNbjqOXrUM*sXIT{Vy~UDwzg7)=1kqOkyl-DOT7mgjY>V*i5?d0?;9&E7|S->uVIYUs__+O{H) zRJW`re&7y#;VSBtE9kAe(Kko@(N4ViwYnZ9;&Ya}dqRBH|@xPEp>(7bqmCSA&_ z_d<8jkA;>oS_#c5%}XaVZ8h1Q&_vV{b6BHUNz643MJE%#YUnwKGFQpO{hHQJA~@9Y zd?-bvQs}89G9UgjQ!4+I5SLEnW0vT=Usb2nc;RjLY#FXqrQfihE>6cEIKa zi=BYHfm^Oc)Re3J(&O*4;O}+Fi*wP{gxE7Mxe9wW}57QDk=S+P;l1|l#8j0pyJr~kTp;`>=QHVq*y2pvm_a2>> zPNj&>*RL3fuCv|?UIoQ~P1p`1>sf6Tsmjs!u%GmDYC&}qN;p>1_ zJTe%$y<$EGlKuqcQ&NrTi|V?C`$hk9TQW}p0GPk51nk%n+kb$K)lu%3_VPFMC-M*l zMrgAFaCfY`%Qtsz9y*szb-AX0jL(C92{Me0ae6cj&bDa$0w#=;Ielt9gy2YTKa7gK z_$Mnxmu}0F-gsB}u!TbS54;jf)ZpB1Gb2iVe_z7!&{rNJclfqSe&0l@pzmR~G zO#kA8Ugfw63rz*RsN&p|<@*)5An~-h!uaMS8&x*4inci7smkcX4 z{Zq~NZcBrh`jA&faoFrM7i$e;{%39C05!c83ZpoDwtmP{!$Xl8 z{PCZurp^_ihsD<4YX>bI#wcGGnt-@UlR&k#-nK9AP5A{tpUMg4qFRN6d`0kKG96Ty z(=AyEELuU8{CX;06~;6SDIE;8--)S2)}zVO9_4Ny_Y+_+~r$>f8avI%K(rNR7H|0+HACt9c^t;>~d~UpE?a6j5 z;2XVcKz}_)WUJ!{u5AUGpLh4Ike{ntq2Ge8rR^+4QwR=d|cZ z-tTVH+2DIJcYlJ|v3uSL%tZEA38CaY@8lG9N)4;;Rzmyg3E$GN_7#q|EqzJ{l)(-B zD$X0-ug~v4mdnR4_bt78evoD3*MEhUi~AkCAnJ4t{YLgUkB8nBJ;G!BH=Z{7U!LAh z|E;C(U;YQ=S$O^4*K_ekRn_1bJ%y&l|58nd^Yb3<+j{ME{&~tkUEa)O&HX0EUF7aS zX~i@o-S9;c!qz=SCy81bbNyPX{Y+42%Wrx`K{49!Z5(657Ou3giI?ZU1}PAvaF=H$dnB=~;1SlCvt5O1piDLzD^^MlL(=q3`bX&0<%AdRo z!?n!WD(|K4TCIq)cN*vYvPe>%XLp_NW%Jl$cR*l|9D!iqs_Xb3Q-2*Tl(H9Za+e$R zE>hXpbK(8P>9x|Nyhk#g$GGJ^kw1@8{fpGKkZg~soL$P?KJWZnPp$T?pg)fdd_FY} z3;x2V?VX)WA!Zl7>$Gblv)K9G;lk`36CmN~1(WNOTVXI!#5@Px4w_tLjpZvtuH23% zrSyK$lmc9^gc5QWS-J#zQp7go`m3{@nh)&jsSEwh z1@J9R`$P|D!INDDU{n-XD7p_!*Ah=N1Jj1aG1OZ&aeG;4H_|nsyZ>+1U=(nJ8vJn?V@%VYtB-b`g&!1adcKDtPe# zgSz9A#f}o(K!m{-bp4GviaS`!5L=|z=)d04oh**eb6N!p_CB07pfH1?7BMs?{bNhI zjAd-9RraPQ9p({OC)=1eR^j)6jMCiLcDtX$n4AmVaEM-IXgmE0!KJ}fIrQ(>IycAw z^YaHG@R23(OWaTn_!lyO=hxtOq50z&btS!wteQT+Y?@U+=xHuBOs*PBy!M#_TIyYQ z$Uf;;U%)>4-Dgp>*jS>je*v9~P_VxOVA5o%RNU?fbm|W3WHaL$BR03{%or*8nA{O4 z`P9)4YE6(o=c2_k?{Nn!KT@|uHX<)rNAV0$adLh46 zBQUNsM)I;<(Qry?hSRU;3}z5Hs^V$PBG*;#%T`<6VR{7vor5Uvz@sCe(oxZL9Vk>H z2tm7@GTpz;)_mvQdxeQ6;^G4U;b_&SXPz>h=sSPV8X>&tvGQe8QIzRai(|}C%iTtN z;xgtDA32TqZj-i69v7&nPFCz7<=$LvI7o*i{M@hINnM(cU;HR8Q%Dq7)snj8lCbuX z?g^LX6LmyBI*ZgII~<{qqQk7}EJXWia)L^Zu(;*~w3SjJ)QKvkLZ}l}Ow)5D(G#kk zBvidhsOkl)nxy`_nIxz#H}>!8(cZ_7qD|M1Jg+EqO6}?UBGNr;+*{NCT++8< z+B4!U!>HxTBx^k||2mT5jibR=P$@?-nO4L^RXP$*=|nK07cxoL5qrA9uVB^v1+S(h zQX_oR!$mwUJ$%ebyN*2)s{#HRL&j~YhUSJ-h?j+UDo6otwLxUV`>+wU5bganOzgG5 z-x^<6yT`?VqT+AhrJ77w3- z-<}B6`^%<;?pASs9n#*syS?H6*657gbsPy96wm5Yb7%~U@2wPa(2dnsefZB@LShE( zFWzxu`H2tTQg}UctrY8?C0;z>{hZL<9?Rc6;PQWrpmO!NkHX#RHx9ekEgp8a4eM{g z8M{F58k1Ly?ozwGPgA>b-sm*WJNm@R8B4$oZ*muHcNcAYr)uD-A71BHyZO9U;qGfU z9zSPKU3%6f2lDi2meeHc^j_EOhkopS>4>SnIAiJ#&zri?@~1DNe*a%$HzglB_NcW- zCk*+zSV*{Glr$7s+P(@9<+-h)joPczrqGEcXQ#m)Xmu-luO(cF{j5w$ku%dEJIcWC z*DdIVvDb1Txpa)ztkQb;=J^IO;<2GY0Rh0jLWN_FKW$O|+$1UdV z{EtI`TlKQZ3c;4G_%8L_%CUtutLt#`^IKW@`Cmtx;Ys`4>AD+@w(i$TvW-QvsXxRPgQ;)?# z5tqn1>ILLVDdeWblrJY0x@hH5dTX-aLe~?$K@4k^3%BtzeI&NdGd?Ez#>04Ty)I**;H_YjkUwWh$;KC;3ieuDNhO<6*?Jj6)us+3KE;?Ec6M)csI*;q< zcY%xCyepi_AquPBAXlo}xv&tZZec0IhcZ4ZVEpG&FB`&EgbgKlQU2Gdn#Lght0=;k z{&QH0p@b^@dO|)qaLRtgnzRLECb11cP0(q`HD?N)I;udZxK!-bQVB%Q6gE4MqoiCa zKO%B6L^4-lM~IbGUAYPnL@fHFg?GXki_gUHxN3HxwRmHaV0Ws1C|Bq!h z6v6x<`|0oEL4O(t_+Mt*p#0CxQK7#`zjOor)erVj-`u~08AAUbr2cDC1+2RmSa&AS zZWOG_dlrS~A_|X#nZCfy>T@c>dr#{ly66gGZ)HZDml1sRhJj1*!L`RqLsR~CvO<7$ zgw37&wIi`=aB{kJHr2@P-e9|$2|x>C%Ocv3IMHuXFB96D6w_WhTxVCRzcXcv?Ce8y3Z*ZWta^@>q4vq#IelrB zHaeU>u(NsSeMz0Uc7qKF4@hd<#RVo{fQT;c&L@b|)7Qr7{c(;iUT3F?t0@nZV8#O{ zn)SeoXbAux%9q5sreZvr|K?5Y`&)Wj{p3sk9VgZQSdJ(zBzl9r{)ean=`~i{0Z}FJ zbL_nvqN>ODm`)c&bz~@F*iV6!CWhlGTyiXKT^-!F*c<8?zV-wp%Qdj&;Hi0dZPEOJm7y(`aGD-1Q+TD!lwE zeZj)w%U&$^58D3+%}o>iTHJf7lR>f9WhcPCXr8{~`8p-f zZp+&>dHzDengy~K?3g^lrTohW{mXkRSnxvkK%SC8D;}C^{CmFeZiTOP=}|lwb0bjI z?(+l11Q-*eBVKgMX#yQ#@g8swoUt!xO8 zVqsAvCIYh;#i)#L>$#;byDkU(&yCIrX&dV*>D)e% zZaebn{xBBr?IiFx^R_!Wi|;zc^_}H|#rMlhtY@c$fkh{XtO&Y*Zd6@l#720VYQAy8 z<>I8C=P70ebwNn$VcDUjJSCrEF$>l<8A;!4Ch12dxo*j0_fgFv*|Xft*h3u}z`uHGnX3nX7xq@% zcd)Q5pB{eY>EdQ3VtwGTHb2-Q)fwtmc3qyx;AFfGFwau9tyFt^h>ot8B1B+v|Qc>d~ z$LLJ3MN0hAAF<@erK5W5bbnoAFxN{43gi*}>Y)vyZnsUFVq|w?uPjvA_eCc!0kz8K zO^XCP^J137(ahZj3`qds6)a zYq&%GU2v_>Ww3Y{O)PWc8eZIlOS}c_!C$7_6c9mz_l&ctn`YaawP?t_^_;X=eR{)Y zM!6^;;L6sH1%0`tb3v1?WtB?*L|a+%<`gCR`&&}O_w;^-!mUYzJBSyA<#J3Krec?+ zjf}EUlq&J{3N*qMl!N3a7%-nyr1SZk7iz+u8IqgX4T3Cue00j1ea-tPMQSeZthj=Fc&W2S-xa!0nD0l*_jpze zkf)IDS&QhXLHb?(?7v9gL6m=>-yPGi@`Aw4X)y(CL)RD@d1Bb zofV{!Ir@tUz|f4S!(4Px)rP;lhj)QXX}OEQAB$$a7XkbWq3saAd94`IVri}VB{SI0 zN4x9$`^=LF1Mh>6HVEIu(x1l)rGB`8W-+R53aG8!?fWBN?WrhQP=IJvZ7%VaZq=8F z<`c-E5u~gUxvGUBs%>&~(FsxJC?yZ$)>@QK7sQP_%+h?JBZDtCRp$&`@<`_mJg{Pi zVpNiaCI+wO%S@eTl?f1TnFr$I$j071i>GroStLr3AV0Sv*9S7)w$xlpqEsotit;ee zuJggl!OnB5=M&IIX@7f?O_)jvOFsg43Ud68pB$>YqgOd3-ES6hEY-?Y!NEmkYA;%Z zlXm>OR7Sb2RdN7qeNd$s>^00l9U`QLqilP_#6he% z7P=6JF$Ea&^JS*Thk5cFwyzlY7gZ~^rRDQov(1tRF?Qmx{zS+mGuswb*Fpd%+u7Eh zAGd5XkO{#bM>bZ5A^+2t7^59H31-|?BfRBh)e7p!u^}^Dww68K9bfALnw*slK4}wW ziYd(*m3fG(8&lfI{yvmT0%?+HWO)2AGH=V<&Nj1CmvA!kSjgU5d4p-|p4S{HJtas?=3WySjzt0spGjcO@VL0TJhTbAms zv}AwYu3ZUWr;RJxcPQ+}9o_AIA+6};R#!zde2r!TXkETdS~SRzgJO5U_=9p-VW_(3 zl>@uX7?YG*pwUyRH^;H^G$_J_id?&O3M#1hiJWPFcU)2HQZ8l9rUjSY7E^_WK;uWj z0rDbCWdP-B|83A8ywdGGD!T$KWU@#mmH4_rc)_@cyo~6b8N4rYi8>xK!i7kh-$B5Y zYPBt<$T2@>W*(JUMARK%Sh(#5x#EyRFl*@DgzjDpk7;A$aBpEes6OA`=j(@%ONzfB zlZvXyBr)cq*pQA=fb!R;BXWr+cvm4YHwLMo6Oth*mz1265Q>6fP*3PMfVRbz`^Lrn z+nG!Vj%ozhj_-kymK4f=o^5PZZ%Zb*I6jG`x`T{iuTDp;xP5lam8ZA27NRa_{UDPn zMywkb)_|QGGz>c}i|pLzU(2u&ok0KdLdaW&cEG>hKhlNWdyE%_WEgo$xlCjWphb?1 zwpF8U3#CP-c@=n>>OMI2E({L%Y{>RDAYTO%$%7!q^L@SFz(SlQP?;98;NWc4e+zYJ0HokXoF_>l?YRw z?JHx^zX9Tmm&9`8&4vEPY#j6|d&aEDbg*kTAd*o|EB-K``lmZw%2?HwnM7u70Aj@4 z>UUYZcAAuAh!JWy2ggOR0!2x&kXKW+GN4@x!?NF!Y+;_op7AItlOj7&OR>sLeR!a& z_`u4t*ll4_ry2Shd3udz=6Z^#w$nF8Yd)lHT1HkGT#4!FuSG! zHj%R$1YiWNGDq9+J8dm{u-DSQF2%*d5lH^(aS@%BmLM#$(j;if82VECf-L{_Ed-sH zV&19ou^N5aA-DS5nmNmJb_4MVJR=oJhJO*sGuW7YLqe_1|r4 zMsv=pJD=8t&=?(mSJdN+eoBWE!JDRWK|b)Y%O z-w{=2E@>1heToZ38%U{?^QZYRAWh;LF-1lbv}mA5=o@g#0dqx}4Z}mY9c_iU3Gs@n z8L*Ed;dOPI2nlpU{$w~_%}RtPl|w2@jp|0xN_#LXt|KCIu_DL+Zdc9!Au{ubR!wS3 z$Fwy`DVtp+F1$zs(55I&$K-GOB2JC=F)yzZs}`}{!(<8`s}dzEAmt9wXLTC2lr4AN zL5dl$x!w9wy(fl28^Kf$y^A?OW!sU(v9J~ztoSIOj!RgHyUFFwfmd_wON`ZLWLqAO7R11zpQpvJFdpgh^7nzQZ*~^E3c%+Hg*q#4B&Kxfdxj2hqMjSI zTZ{@V_*O#GerMhbIA;y~!cB_z43ps!_J7}fkVqZZe>O-HVQMpYFi`?*WsYwWF8F_8^ACjzPBNGmb(57+XT-|@? zYoh_p(eZ^#2~(TPR~#$sGG+n)n7~CeWW)oe6HBDyp=09C?6 zak2nh!b5ek0z*Pmc`}oPhWlgy_XLAe5G3d%JE)MO07!i;kOD{vsJPhyECDEi)NWWx zT@&~BtQ>oN8_GOyKcQ)`GyqSVvtz-x>=uj4-4~W~RhGuYlpmUHf>o;Rlg!I17B)zO zQkp;Z3LUMnz`D(OqujgY@mTk|u9v34!;OF$oTUhNSUu1f2S^BM@Edzz(^eJXT+yla z7&L^dUu$ckBv!9kFB|Ih`aE8rcjNeae7}IkP@N@VF6mTSAvjd2!^Pq~@VFtkXSAMw z$|)q*a)e!X%4RqUk8~@SnQ&If7Ib1A0JI5nd`f{xCAx(spWE^fB$jjKjaTgZeJdkh ztLw|UX+TWFXo7!YQrenc--YHtHvm5mt7oVL%ZKTMIY3Rm%dVM%_$|$gUue`yET6qg@5}*3hQE7$Qmw8fW1Xguvf6!p4r5-U zO57Fu`biAPnq#Q+y1Vug2hyv(Q<^jczn^VZ|-nF{IwSL2Xr!z(CWdTJ%s;b{{5TZ%Wi8;EQuw`pZz!U zSHbLtB`Gn4q(L?~9U7zCGrryU>?Tv1*-es4q*a=#Rm#Y6*q^`g1SwOM6!I$XoYVcQ zZ#l&&GUmT)CME{MfY0Vqq7cs};#T$>_PI%?S7vQmq<3Z|y7{^7XO0a#-!^kGEFhQQ z>X~go&tBQCsgN=3R`xNMfaOOHB8!gM%c5VKc5$0Iq^A)wft`)=6^6jx#%Z!y_R%*i z;r%m);E`Rxf*?d38{lveto_*nnom{Rc5y9)Vr6XXjt%F5eC3lZFw5a}yXyLn@uM*N zl3&D1=&uu?037{MXRhm`aQYbalJpmS`i~!Uzv?;ce+g*05$GR>#6M`?2eDzzy=0j~ zMO#-|=Lzwk(YoZ6iRG8vz0+u*f_Mr7u;>3g*PCJH@U*%4nhc-H0Ul(wW57G*%0A^_jkS;*9F{E!5i)gCgSdVX( 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ν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 z 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 kH6Fk+}K5jfQsaO2+N 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

JC=q09BMC&}qTt?6o5@HaNX3ZA zWL!-PdPPy9UAYzkoF3{1w{DMoZp8YCvZAZsBkI(1GdG1~&#S{p0`MQZD_`vni>s%4 z%U$ihYG1pIE8%Uz)vmH!qaeBOz>OscX>!Hj_ax21XUkT|+>7+LLRT@V_3_8KUOXMZ z2$|O4-k3U3cb+QeFmi7D-`~Cddc*)$^%?b-)-rzlbdVvqt6eI4^)$i~2V4FA)wi;b z+CGz;y+3Ux<1d8J-4D4>O;BpTVH?4-u$;9W1VFKl{ZXUl<3ri+Lq0-=1y`b!CY>LLfc`9##N5haL2e@rrcs^%C2&F>_LPD8d_^msbMZ za>-uu_<_r2{)uBWVV#k;D@|C+i-TFupDzhJm$q;Zn4WBjF*Rh{rjq^h*)!Wz*4fal zr30Mf$(C$?8CN1z!$D8!R-#*;Xl#UE+~E<9M1a{!+%VP7O_|5c5)Q;w6rm1QV6xlx z^+|^bgxDoGx%g8~yppqKj8nFn z4l&^ZjoI-%57f4?Q&-MGxWh*uED3V>9ziFD%YT<5pPnM&u8(z23L zIp!>k?4vWm6MP7eJNx2`Vh~t4!iDDA15ti~a7+r+ya-%r) zUuJ_vfY4cr`{!Ztj{_Soi*V&$iq{e{)58_S^)G`6O*3}G`%awTCe3+$N+UXUw0=C4 z#L~6L2yR7jz2k?9$ejon3Ll3wrS~JB3k~av6Lfa%ekt5hGhpZFEF5KX#0BJO5^^FS|&4_r} zeZE2gEN|qf$yE$gLE-Ab@^bB?Ts$YTQQma(SgzTHn?#idmR#vqE;ma|F<-+N!Y&uv z<_`j3<`bGczLzstwjq7?EuzXbMO;T{#fs2d*W z+{|Okb;-R~QVt4}V|t|#wZ~+KvpEV^VHK>ToIqTdSLM5PhpnDwOK)m)hcs`Q4>$@G zPfx0=6yyxZzNTtf(Uq#OSGH-N=GWCXxO#2Bwp^qplLLL?x1D9Rp-CBbJzpJswL&|| z8}n06oK;ZtJJL?NCT~MML^aeUSFcq`d>b8F$=U!;*I8|;@y4Srcq3(3blgr=B$!}e zOWIrl;-TzItRAaf>a~6GT2};e?3zlxyuV?xBCpM*%3Q}}YE4X?DIMzEuUF|-sC9M* zyA-?4mAhY|;N43-as;@EYP4EC>OfA~3=3sbb%~(nt?)n+4PGph1Yvi%Xxnb;xJxpU zYp)SXqJ2QFI@XWnlAt5Ru2|xhpTLw6flZE$MhQbo3c5Kx_~sS#GpcSDhP;gcI;+}Ad9-1kr$4fKyo&7SSG+LHx zoPRFoJgjEMxJmuCs*2GL`tg=ajDBPf{mX`67S9^-!!KTc`&+N89SJLo@eHd~JjN0l z1^AfP0)O#fjzxPVXMH0TURDTJXp_hS+CJnA8ya%Cl_0u@S{gckxHtue(Vf1aB5;kf zR%GkX>t7OJ3;l^)Gg}`hQbB@-thlM-kMMIpF0(ortvShYgAR|iWh)}Pm~SkM8u@UW zXV=JqQno&VB#BWllf{D}KSbR}^*c0?)0yc#6zv=eXX;+84u9!v`gt^v#a`kp^kX+` z+IbP;*2#~f^rcHXhu1pqoH~?D52XPAh@wY{B%}cU=uAYy^C8BBXX;(+P}fr7^Rlp-vIZL%yU0K`!nD45|1@*DDW zgo*1Yf&wIo9S;AeaE{cQZUM-M6rhq9T#kq(AdhfG{3PO><8Jj`2fI3>*25GK$`}hx z>$IwR>rO%ReJLM0M>_J6KM1g^qm?gh_{nGz#Ocv75?@Zq*Mbng6<1VYf{%~jE%Om2 z&TM&iQ}nosN`b}Ie3K)*5%tf8R}^{U{FDM(Vl{^tpYp!{GRIQp>owtqg~0(Mv{q;Q)EpR7b3XWD(_fmKUZ1dlB8m znMMqETFHH*ax3FRZQ1(ra=DN&?w}s6s?(|h9cMo_mQ5u?Zrp@_6^$egRl>}E>4Tmk zeKlxw=({{r-yS4WfO+}W^*;*oh~DoFCxl?n$%(*f|WAEF`Ey zH9S2}R+W#|d^!GY`wDVJhAQ zcRp#5_h41{Sc21%jo>S)%h>|Rii_&Jnb(;hzWWC9y^jya?y$b#mSZycT4W6g=rmI2 z>+7l2xanm-*w%wQ(#21F)$$V(pGu?ddgZ6?Hb^c5AD&S?p0!Ht_a&}O)}E9aA10XJriAGveUpN4%!cLC4s zgr0<(;U1?Cjbm`qlu9(9Al4Mrr<=2Wz6>))@fwtW72Z}92+E8|^X5^|pH+dW9l@#g zE`-&%bR)j?XN<@LF$5b=>Z$1tU0kTbUhhl7;hYlLIk&zkYmpg-NSKCKo0%E&%=COW zdt{n5T>Rvgr_Rh~D7RIJra^kVc0q`mCG0;eoOlQVq-BxI`C$^FE4qih&<7G4?tEQ4 z(d}whR002g6pHTfs|k1}T1_x;VOLIB$N?Iy3ZL%e zYxWd#&}f7eM2sMy8&Yh#&a#?;3lb5QYaIq{=Uum?1qY$feK>(Vy(WvuDy-n(lS9Jl zL##9Et3*ZCc0sJaVfIOGazyd@hdmng!$lSa-vi?Iv*QX&G4~VfRNwy=ze%u*Q zuQG6N7(egsH$JSTMP01m3X)jBm+TH1IL=rfNz(ZJcUjKn~-H7cLSc`qIMa1HRGqu4z~yzZ^1t36H7I@C)O_Fnv8sCMuk z-H$TyDBz=N`u(eyt;Xqsh^545?PnJZNjAsOXzoKtI$g-g z4$RZq+&r{r3g)SFoeY#GvTz0LDB9o2lY?ldoOwm|S<#QVgJFfa>ZaA0l|C}e8MD^Qr(?8KAI5CD(}s@ zqPG9Kyeq?zavQ5-;iFCU;Sq5^>^9nH7d>>x#MAb|2l|>>Q@_lBt2t4~5Ux0F5R&Ou zon!t0-Kh==O)C(ROzn|=wx8@cDk8nj-6_(0_du1I+JH|k!9V?b+NR`gY>W6O@h%f{ zUq2Q-96GbgHZ!sh13AO?#w@pe?{0>A^kG)k<%(#KiF1M~@cpzl8dG00nnP*&XsCu1 zX&t=gIWc7ue1AO-H)2YaGi|16lv+rTpM27pwRw(vHYIVLM(Ih+=V)ER{o^M(Cz_?Z zVOGM$W&YOLEq#S6lFbEZ}WW&fz$n#qAZ6|994QN zr&DAjdS%rpIL~)H440&PMNd=5Tg3%>_fFGI^Bvs!XOHz5TRv8 zdu-si#a86-#17TE_mO|E_(eF!>s93}iiIb9xRjlii+Wt5a_*n!Tr_(yK%Nr)>IRW@+v= z|8(%@&x@Zg>*>zVW_wZi;4QokDFB2rK~mJ=sCdO0SKD-=-K27Cw*+7K*-@#K(oqEq zg?@zVgii4?g%j>rRWPbvmddY`Sf(YizEuSRUl*Ie-se*t51pG^Bf)ZyL2{3g>e8{s z!1kheZl*&z5fL01FOhfZpat+n1{Z_3auypywsyy;Nn}lgIC&PivPBh7gCj)O?>t<> z2CvHwR1z6Y#9Eu{d}$eAxI`CV5qYDp18J{M*kV~{1Vp=d)OStq#J?n`)T zJ$)&Tl0)%?q?EWNC+uNw0JA>wn}hHbyP{xVB1eJV|3qlrwHEUIMdb|bcoE&enevCdv*>t%edw=m)y;_ z+Fo`0Wj%d|_@&N8aapWhx%=Y7%;ZucI$tC*klL*;O3NUynUI*Evj9pnk==|i%P&jV7`q z1=6akWveQd{2GU&TnwRvf3oswH1DD|Z{5-J4Js3F>DJ)6kGXQCss>_y(0zqfBiJ z%qwvo@CgZNcd~Pm$?%oX>SI7tynD>d?G%0q#C#CliM)42#MKTu*&nu`U0FV!-=yIwC%E%+9Vx()`K}TzVt#WJMVNTK_Y;>FYC}(mK&2gp0Br)DZ z#*<9cVTbmZx9<$n?CTpC<`T5Tq?>~W?6#bNe9bP@aqI}}WjqMx+-HpqZZzAAV7r=Y z*;WfEM?{78+(x#^pO&>5BV~ivLB07{J|1xt)k}I&-pUw-FLoKra{5Zf>StP8Z}LkE zx!t9C2XN#rsXZsIg`C zg^P_` z{kJRQ8g$a(blB-q2N2`c9qFd&%8}rFBqEg*5*JkTLSyw4+_R}xcTSH3RtU=BD?p~7 zvZQk%0ZAsN=VIvhES!4j<7t;V^Q0?#=xO&%^|dq0s->Mx%m+o;>A4KLW@nbPm?q-M zZNCtol+Wx^iqxSay``Ov+Pqv`Qi=3=u?*TL6A&0#=pQt*dMWUOP16JW0953%hlyV< zuELQKC;{1AGreN6<7}dXI%o(%g|M>sf_fiRYsNysQ-I200Pl%E6h_NPI~TA%(l-~n zH|wV5l~bgb*O~5tJNNZfHeUvPCCr+uVm2#obObJe{FJL1b4}(bUT_U&=Y{Aiyqs#0 z;o;K&C!x&-aUc7Ns~$5r)q9^<8{~* z7@G4b15B&!_rH)4H~R<>43gc{=J{V;C1G798ElxUu-|~%)S}Z*7;{N-Gssv$&=rMx zts!?NsoK{w&5rpMOf`o>%3@TH?&m$7@hOFW)+OzVMuXFwnPy|}+q z2UC!0yn-H}f(IHDElqFitREACuS|1%z6O*Ao1(~NT@cPWPqC!VEd|4&u9YV?ojf!M z2HG8;V4FqRYC6`*DueVgM7%!*Eim5hj_-P;HYuou+S}t|l^fVzHHwmz1X`0zv8?@6*>e%bt(@0&rIU)`qT72OZ;P9oowdQ3E zsj#9AIh`v}$2pXnm=r?nyOOFX{Ak6g)CsZJC9_no1Sm~94;4rA(8YabX5%`shi$?t zb!1Va@I}VtRt+QGoZ+E?44>jUH5pCV96phg>+r@7`I!?Wigd-?mJLT<*Q&11Pnn{f z(4!{9!1+{W^(cS0ygpHr)f-BB5h88cgN|VcVgzoum1x#z{GOb*q>vManE7UCnPOyfocFtG(v2v>Ng_TT)Zi zjd&o8=T-kKNUG#{0NgHzMSh5jr(7+TO{$8p+%|w4VJNy6b!YZ!rmIXRUAV%>JvYs| z(9I^RaizK5$g-Gs!E)663LCUi;rES-DINI^h@jUFE7H^-1lCxesLM4;$t^h1nm{BZ zh)%Q+CQYh$qXxUW(Fi3QCK@az>i2M~k$Xd|BMvrL|3aQKxOL+|J2k#G#^mfrO^t`v&yPGT z=PSUwrFoSa$8exIZP~h&ac5r(rrp-yk2-63ntWGF?P=P{2i*<{Vd-h9U!p zrO?m%jo9nAOT9`BmRr0X`AZsi&B&=>Z95N|t3?+__Rn}pf0U!(cm12YI5Y(Z$%G_n zxAUas;Ga%uPnK0= zI=Ypfg`pC5D3MFIYO2|ncw!eGZ8vr6y^xY>o7VXt!%RGFL;<%onfsG)PHe2v24WPs z(cz_HYToD-be!UxV?FXzv3DTQq|!3GnfY8%@yT`|^#rF6YTg5S?SY=>Xe1n3B_b&? zC%lz;pA3kwnU5%&?4ag4P&s&e&Ou07g~#c7a1h9Bulg)WE%f~(Y+S^f2}y4IA=lt* z7Ust9+w?MeQ_J$;u+nlIV0m{Bb5iZDH?7SPr8U$tfc70LS9wkfb%tF_Iv);R(@e|a zaP|%;k3JQoKjmo&D`y93ImQHCOG*F;8p23W$`s7xG|#TGagsx6M`t4&lTwN%8`+X} zB9w$`s}@v@>>8X7C%HsG{O^CqIYiinMpdE?{y)iqCK)gBCY!HjG~IOSZO!M?A6B`Zkt}d1cKZ$Nvea%*BI#-R9OBSBUzf6e2ZMIz3d^5D} z%4O2QC@q zJJxBgx`yI&+MVl^LqGUT!;8@0jy|VwljW1*W;jNgikay$GncW++TV$s8n;9(wNPw+ z4ApCq#>T4>mkcu(O1g|ZcIbM8L!8zr2tc4{6(~%mVtT43Rc^}6uy3)NlJQub(R@h| zpAhFo@36ed#%U8dY3OXPo!Dz+Tw$wX^AVE}tLyBFgt|!5EWTpmb98Js66Fel8b!4~ zPOB;rPeQ0q(uJbL(O%7uDmb6P!_~1?(a{_@;1I8wd zi|=@T^`sFC+WFr9JzN&zu+{I3g8kkE+!m~#ZESyMyW8j`tcmJ~$K-bT0Bd(ryki}L z>2aN#kIOHbfh0k1tv5JM3vG^BdPOrj^cjOmii4q%f#*q{Ow*|QsOFmpIGZQK;W3DT zMPv!7@J;qFZ4gyNzLYyDRykVFmL88upqkpBSt}B=s=o9gNFapjrd%-2gbw3dKT=S@ z#-l|IoOzL!<5Z`vf)_K%_CZZ-mF;iSYO_3K%K3s&t!%#qfT@APY#_+B9yF807KfFX zDB7T!%BM6JHDoAX;LU!S$MflZ6jRjLXXItWey5Z{5btB?)sOF>)#;(fH2D+s(QAm+4% zH9Le!C|2 z&i235;d847+OoKL!*jt?LaT7oHhh^?$^0^#uAo^0H%9_W>ALn=B~hv5mF$zFBN9Ns zpao+RfDShZJe7O^uXXaF78k7`89ShzHWaR>+s!II_R&b}mg@RpHOJ(@rs?zpI|P7o zc&$X;q}!YFu!r2HA~8aTqTYtWY7iQXtic{BH$+z{E|T@+Po!ce1!+W8w_Ygjsms-N z>ueAE3C1Wy7_52M>WA0wZvpykXB*j$y39%Urk9F=3)d(JHc?@}nq((krZ2`Nk24W-H^;JY|!M-Fh^7}w&c?4*| z)%3b^FY-8(EpkZapcMCc(>k}&*tVS*>_{;LH*@hUZg@Q7f9Du_s(q^Zd0=W#c{Z zYwio~;jce%9>eq3v}8~f3GUL?FPfr>U58+_)P&}aOLCz)cy zmpTidl8xbp7y))P+fYh0)K9{oucl~Is(W#wq4g;AH!tQ=A_^Nc0hZ_Pll_hN-Zr<~ z<^#3)P}ysqUb&-dRLjyJviNm%S*FRyd%FLDEl_oS*V#jl@aKPS?GHmYea1MFuN&mA zUpvp+&vm0e-vf8r6;qk1(W-&ACV&Y?CE1C}W?tcLn;=_fl4?zCL9=4+li$^SS>vvl z8%a+R-vU?LqU05+I2OT9Jd(n{*aP3(Gfp0eYuo_rba*BHs!JA|KC?OuI z9yx(`%*V;d?l?@+)C>WAGI2^XqZH{Q1K)eu=67}a-XKA|AJ(hO3bY(ot?LswBd3^& zBy8$3W!%-y^oG@*rppTLQb3cAJgm()?2}V<8{O3!HY~g?Ww4e=|EVp{xVCWteljeZ zT96B~f)_(JKG>zyk&_h7M3=P*C^JEo6qH&bohb#@QXSf*1Hlag>l$k6)s+BG<)%~z zE`@uJ7mHZW!OpRVnGesjIqLALrsp#Hu)3-&1}7h6h3SW|=l^$xHBN|o)3oomjBC_d z&q3$s0d6lFfOl>ZtJh;5wN5514GzBT1H4z8!7Nrpk6BZ))N+5B-57BFw1IR|OLasJ zyg+%E_8F1Dxxj2_(F?sq42xz+XqHz9j)t9#FPyUjTs2VNq^JpOR8(uc6#Q89MSU{tAfBsMGde%UKVDood&gqCSfCU>zWIIH5R?C=cO+yjha-@{YH+z)O&MXRH@;CXoG*l z^YaZmiKhQpQ7&Y))4u6ODm1DS8$Lh)Yvh#+!~CKE&PYaTry2G+IiaSv3kIHy)!DsF z;hRp*!P>Q3F0`LDOO~6^XNrE9uy*?!#{*OX@G;Qb+o zY{1;I&eGY04l#MXt*yH5hFekBerzZ-oY#ekMHT5FV^Dr|cdtrPF6mmt5nDzf^Ve80 zPpszu5Y(@lP+a1$yN%OL8>vwAoy7(F(Df{^_e4xDD=tqi)Bw$_ff?`!y|1g~o3x{o z!;|@$liyKI@wOBxV3Dv@mj*0_Gve&*qGBi~C+{YV23IU#^1a%gi_7SPhuI24V?r`0&bEA6Zcc zKHMqX7=#TbQmW5Y&Q5JQ8bSLaD-so@N0gX-oKc`f!k)%LpSq38(g%*oudY)0kS@Ta zPE?Iag-{Mf2<@1|a1=GW22)Ju zy2BZ?BB9LA_0@A%qti7sDJmw6wF^l9tZ`~;)`F;^fEDq^ezxFSe_$?Lc(GTGR4}UP zZ+~XJ;?L^Tgof*%<61>zOwi`)pFM`j1_a8IMwF_)Vo#keA&z33D$~U*8N)wSh}_Qu zPS+vw&s|NIg%dhlx(97lETl}t0(-@cFRxp6bRUg^cSxc2{$3xoDJc1AU`X% zW}9ND?VzL-Wv85#9^F6l>v0S4TP<)40uYCQC{joI9Noi#seNF&GcXnEsdw`F`JL=Z zbDpB~CC#HzIQ<{fkXn6Rvx+p-);Zu!6dA&MViEwR(!-c`>|X`NwY{1us_pp|I-U(o zz>arwg)j|Gj&y+mXA2LZz^0!yq7}PV5%W!@ZepW1bRL7%>IY29{d5vU*5bCL8lBoe zUmB=V8+9{YQj^=WyZXxidy}E}t8xk*OoU=^UMobIE}?K2d z&@YF$EYNMxgY8HOap1<@T{D0)JF@Q;#X)xp(ogs%o>_b~)^&BJ6rZIDmf+;f9ZX=`(^*(Qy|>nd=QDgDawx{ZDpYd5ATqY zYZLN`{+c$;wym`s?Aht$TQ$K8yW1phEuamMU z!J@9}@f^%%y)NBhyQV<5Po8i+wNE1JZwX%tLA+=E7KhA!^ty`hz;|p!ARW77CGStV zPOci zd>q_26l$rcQB64 zSBjfjEnIAGvAZ3;JQ_(z&Wc@DO&Q!b+>MEoG_=s4rng3YCbwpiuPLBUmynd3>NXn} zsz$gyuBucJgER&iBex<1NZs3u1k6NUTl4A6JxI~r;O?gB%-u|O{diY>zB}tj2!+$e z)?3SK$Ui6>JBd`uyK2L!-ENtg4PWB3Vv=4arFU8aW~f#{)0}D2fnIDwI!u?Fhq^2l ztxf6~rGbB06EXvJ(o$=LmTlidiUGe10+%Jc0S81Sf;849LjJr9H{42Y$sqAVk=}f08LZSLN^1%CB54v zpOaugVoby=TZAp)d(%*S7tm+zhb1xueT23eg;cTaKvePASfrL;Ih@O>`YV2BHq?AM zo#D%tx+i5ag{triD#xd>>IpOLM)kM4R<%6N=E)RLe;C28VG#!=j5a`**0g_AqL)ejXhcvGrerv^oEMxvnTeO#$J$PO1a*?AM(LHd*Xi8*q3QqY~K%6 z_?~^xUo^I_*o9neBPHl>-wpfCJ$n;;*t|`$^d6feOYgfyvJD4kS*GbcS=?iT@CWzZ zAkJ5feW_OYt{5N=^HnzBJ^1!zUl(`B^H^pJT_RA?CGjPEnOnZbuDzRwN^>** zZGAvrZQcWo7dAD!;lln2WAJWNYW8bg*k4wC?m8;@Qj>%QAq2p@rtnOd2`Kr0% ze-_33{uP_Ank%NW606zDqEUjW8CehdQF59RFHEw0MUQA6FO6)Ce zBQHs@XI{%_!f?4Otv&CuS(T4_Wx|bhil%hmzA}z<&#Y6OeeL>9KmqUk+~094IpJt8 zs)YXzD={V9pSBRkC~h6m@$KfCu660nSwylbNu1Hm}x_W{?mO)i%sw7FQ*|T^q`vzVgRU7_qS7S zwV3cq^B>Ne^XV%4V4GLJUQN{A(cS3p2PJi1Y(aVwl>14yr;BmBeYat92Y*R%#I!91e~TJ`8Z{$w7hEA$-J-}99cXi@z4+#kB% z9vj)`F)U*0?H~UfeQSECiu@^F0htKS$#q_BDU|zDv>fZs)cZfX@9BTP8GS3Gm4}dr z9xIL{8L#n<2U=2aY>6i{^v9`Mf^)dApm%?Gf=7a6ir-K1n~`8S%{o2(4?IOH=L`*o zXMZrys`0hrZt)BY^jNV2O3+`zM2=@_iYDJ;Wd`3|DMo5HtHf^?3pDuVI;nPvj(;=y z{eRq@4OGRWQ={5EpD4cQALj!_g;%q5AbYLVHIdBD)4eB8cc1P(-5ZDp zz@T%OkB6$v0TLLX3?+vG<2X@|)eG|6s)|)PhC42!L%t!ipfp69aRic-8RY|pwuj6}`P%8o3S6vi{oU~SP#mA>J!1}5 zf=&w779hH6-oet6rkS6hX+&V54g`00EOi7> zchvRFfx+SxJ1=zq)M{ApLMWXx#c6N1I&0zeYE8g_T>Im2=(~8q_uf z;b?BJu}#yi)3)E-Ns`TetELqF|JOEkn^h;-a+dzfTcTT4aj(D0V(G?yo1wAf{hJJo zoBEfJh{VReiSX%Yi0RoSPnS0$87uQ|-^Yt@L_-l|J5%d2>$ z8u>1$bI(4QXSx47xmCZ1zi%M^)wnEXv;V2Y?RbM%vt$bAdZ$S|Qr$bXN_~i))7iIV zVw|Q0{+TC>%i^|sWrYZ~R z-DWn6MA-3lQo3g*FP_g5bggB+)ot;T0e8OI`W=(}&@jb{@4grFIms&6BHpqi%$J-y zR=tTTtdRsrq2@v1S}k78iq+(+Ej8-J!X4%>uyV)C)g&vvTJ7RH^nA5ksypbU_&^?5 z+po&$*>?3FOeSBu(qFxGh;t|op*!a)k64D=zT(e!4J4NL(2AR`{z(&ki6kC{c!BC%H(F&tI9D@B+6-OVkmXW>W_r+R*q}loRcvoc8oF(A3+e;)C5oY68{)nxFQWb|nj6!p^YdM6&IcN*YIk5iio|l> z?d)*LP+K-|<`HHA*4Pe3V{3G2;b)`T6S)#hWh3WrTC=;sXVMe@@!wHTjLr2yRQfQl z@VI+jN7E0hAd0=oE`t)Y?2?R%ge#U*si*673$j5WF|T!%_=v5h8$M-Y(|NsyE6$hG z`Z1M>d}~1THuYPVi_{TO^4bbq69??fLD_u@ykgHbTeDGNBQ=f=CN)d6PM6d!eRWW# z2{|=KyY1R<9>aAi(tWN*$#UCPqlyOAP(4uWf(8ZSx3(c$(txOo2e^H(?-Y2MrVE@P zw~RdFVjei0j`VY%>0$&FcvPZy6P;m&3)kN8Cpjgnde1?uy0rh03o5$HO}$Mi&KBjo zXENl&fclULvH;3>3^6KUJ$7o{-0KR-A*`EdT>)eo=!_Wqa(lZ6dSsrHMaS(TK2`Re_LS1%4uUcIDJlXQV_ zQix*w{-<{@Uwt@!arEI8Rf)Pz{Z0=e-5W%DF>u;CbBwvQDexccy9MjBP=9DY@Wy6; z*aDHkg^$=?);U@&7ptYDs9t$cW$ctpc1ay5E|I(%)Ruz6cVQ8$>J^Q z}IMb8fHnM|LFShc)O^s{%Qjk)X0QngqD+o)%bo((#C+93dw z+}c^(G1xNvo39+ZWHf?amcn9EeoV`u+7{&h_psKRQ(%o}SL%GeK_AY{X5em$gur_( z%OwaHu*TwmQC~!$QjCGnPH4tJIKg|I+>hkI0f5nLOcf5Vu;QaR!4q4`C*%IRE|MaAgyJP!!ZE)vSn^HK4q29FPi zJ>_Y;Nf5M5cpOWlIv=Y0j|4&vxGHjUV09y7WPGtK0NAy3l2-m=nF;hUYt(i~%%(as zom6d8?gXkrQf`~gM&QKmA=Bxo;`=YU`s`M&=r@7IGO(v4YQ;mzJqO*ao63=*!srCj zEUS{#0K>s1r2yyBWXHHJdl4K7cQsa`IZda2LAkgR1FldxgLD!BSk{VG&SkEsdjm7? zgN}dN1|2)yE+58c?^#e9_&Wl@X+MMitNo!$bh{BoiTV*?i8Rd%bw)%vx#sFr7Ycxu zYpjY%6J#pY$$>oR6&FL}z#T`=8OZnUr~s)Up1db)%7F2r_6RPzBm=6{6P8+p%gG4KNhOQygeg5xBG;5z@yHSNVg;T zM??xa)R+c}1t5Z?fA%P?umv#S$Nldc*aG#hcVfgu!Ga1utVr=L`HC6r*=v!I&Q)o$ zVsO9?4k=iSO5ZB>G+k$DnUv$}wRfDHwQvuWYC%t?bPy^|HT#Z2(+BkRc&XPJU}V&N zNdc*nRnMwWC<fzbIJ?&K+&=(ur3W9fW zE~-o0#zjcYB-x1(-yIG_;}_P(sN<)cVR{pv_eRtlH>G@{{|bx#yO!>J#xmxgyqCKCk7ks7FT1<-ersX7;GFC*A|2Avvh3^r+A z^u4YS^8=1%l~vd7Q8r+@A3=XSoM?YTMeZ@WdJgktK^mD}aPZWA?sh{+4c8cDzZ~1I zGVp`T@;&&kWES!j$lwm-D_#DS_g!{&R?8c4U~2&<;{1Bl(O-Gytc*4vpX}x|a&&js zw6{HUESf7cAZ-lR>Cz;I$8&nyjF8`8HgjnSaO>mn(SAmp#{Rk%K?kN9G|tOrpg?q#B39D^S7{_kqJaxP$f^Y5Jnp++Bly zmMgH2+|J1(5A;{IXqX6`3btYVdJXGL;H<G=!e1DYn;DYS${z`uf&FJr_=iS^hA=kU}h=A87BRWn(xcF4R?g>AJId8 z&@=AgIEPp7NNVy1XTJ)VKQ<|I%(G3fQyoR(1wFhVqe7p>fr5@bN8mS ztbo5?&h-^(OWUR8N7bn_Luw7fW1=3DH#K5dil?9CE< zR1@!z@5>?lw=j9S zmKvdmc@X!Ir*sBmeR=?5>P+}7@WAPJ826>=eR%7HX~fKu06v`Zkm@xNv~I}{sy09N zN~Z^XvEhjN`fG>kSG6XlghQI9ygoQpI@1dq`Kz>cm7^^)vB6dTCN}lKwE5qw`6IC; z%l(S`uAE_>hS&9-=g+@dny<`hysOiV@EWYxV}br=j|+AKjFFCclw`~UQZcWSh=3x@ zH&cSdwI|ID5!kSeGPXaNS3pTo4JjKbz(S!>UxNX`RyYRh?cjgAWfwD{)#~3%j3{ zHD2za7K>a1@;q6NueHO99JC9#9bM>;(rM?y(dVes30A5PrsaZB4Ae8RL(4ahO+1Ub z1u=z2wy<+){5zdRw0B0!2dAn|U;Nbv*JcAHTN4?Ex_avvuLgbzCw3+7q4ZvZOx#57 zYG>ETlv>;w$~J(p&FCuJUiRES!W5|4kNdvzp!%3CL|T#T zn8_tlYADv`2HK1@+Ympcg4d}<8;h63-}z21tR7;9ID-Kwb5mLx^NJ$quHG!BkFxg= z@`=b?!A5%p{{iAN)HOfs9F5hbtEQ8b@Dfi>PFE+cc zf<=&=v2}B(r_LmEXr$F z)TY+X`i|#nxTm7?{IqeR8z=l}f73uiJrzyTDSdp#|2&N}CL5{g!~K{UxLrRMS>|@T znlo#h1P$35Mn>+lk{-!-95i;wgqd>><*B(fIia}DA-+S}X-WbODQ#pRA{a?H(;NrGle?eJ-R}3%sH{rQYq;6qn;@CyZ7iR9fyhIo2Dr;+94G>@b+4 zFc#4X3-%jvVuow$8Dam7E*ho;EuRdU>uyuWIu>tFBry?5lE$vnMQh!d7_F}%W_Ndd z=|+qRge2fZKfxLKc^DY$1vB=LRnym{Iw|V#{ad5qZmA*SCg9}RELXYK^6pCHLTFAP zQ3kG8T5=JuOLnESHVfat9qZq~_nh9^mDkw}fx@*ui?xpdblWqoqKY!AO# zrASQ~^~^Gz7NySFswTuW_l?s-CMAPTH!qGB$v9i8>%H$q&T;NGdn5`j=JMsZT$<`7 zkS3BTH&u+1EPd{`l;RSUBPQrV^T>WAfT0b|6ABTyoc&FOW{Kis!|@wAk&t-b7mD$% zHjI}_rjrGg4Owwnz+hLmZ<}xzyV)Az2C|y&xX~l2somz!!x0G$R<{{zaBoWF1_m;1 zKq>bLSz(DN6Jral(`5YP&}7zU+8!frb7Tl8ez8^40irZ#!&;?8if(M8#2Fe%2wQqrVot_&HQ`R9F1o&!l6oOTXE1kWeZ9ld zgJ!+5lRka597dX{4ZEQVyKg2XtWj!;M-dD(u<(n{*$fE}y{)VdK$@wL^jT`QK|U}7weZ>&wb zA*!jeb;G}!t}CKIb=AMqQcS_9^M-7xUJQ$iaxvz^5IH7Lqh|Rk^*``sN|!6EiIx%X zNw<8PRvrIc6Q<*HkEk}EKc7Q{e19(oXX2YH3TSZaVL3r3Wb1tI={Y+iudLtReS43_ z`wf~}uYue9j24w*hviO)Y{`HALFwE?X0X3joNWu=?C9FZt}>&nGW`K zlNVOyIAB#no>ukbfq6t-i4j~)uW#jC`;|25^JHU%q=lO~z4gy?LkL7f_u6Xqsz<5* zY96iLavS5QT@$R0(wHcOM(90tnY#JEEuC;9!)O61;aHqZHxFRo8{YO?m4TlFK$3$t z7Q8lkgZEKW$HjqY>MA*x^2a=Ep#|HIYq9RB4{E;5Y*0pUpG5(CA{SacI{jlPQEYk9 z1)Nyjy6Qi1rmXcP&tte*-QjKev_8a7QLBNoW0S~^Y^eV9)7hZ&Ddf(g0psz_yRGEd zuwm=KIc|us`09SHLGILdU;xb5_XO2w$EsjV^lW$~S;O3ZHheDqA}aD%Hc1`ilMhM+ zH}yM>gF`oAJ(X92HTT)oy18F|hnkzz_@1U@@-aOw$K*vA18%6T=LT@o8un5HUQ}0! z!fDs;qK1&r)>!Ny%Ay5r;d9KLr!mI4!J!Z8P%jjkw;!=KK+fWq-Fmbq+M)u|OeCgj zL-h$Kk49n$%1GI*$}ty+wr1fq5JZNuz#)q+^?pNiV?&I0^TbHm|1;g**%Y1`-3QWj z?r?}>QBgW5URQq7-DzA^DbR4C*HJnAz`F=3i4ueG?B45iJV@g4+S)=bVTdG-*YOQQ zJ%s)uQlX;z5p)U1e6Om_1k5)MyHE3KrKFtyIzD9BW*=+nK@Z-!L3da`KtN26kpR<#52@^*M_&`wR$W99 zCB--Cpu*17^-7Ha-EqQJg=_Q}Zr_jlc=_x*wM%187ScF4u4R&s)8Y!8<*VC8QE)q>$h#2kl9Fn)8R(8u zeq)=!l?Ai~t713;{%f1TIUmZX+-Cg|sfR?;#5QGG>T|~=U8ECec}cx8-WxX^ zX$Z9a&FI@bH_d1b#T#iwpERT#4I!&h_CFfS`nc36`}?iam4=B(2@U>F{}yQQF*x`} zoOc2YSHrp&%sYK`^6KsTHwP!L4%Hv;4&J^Z{DpMBfSWPc3aDpv^ZNOLCv4`8+0<$x z(N2@}6U*4(wRRfz^USp0(B4kaj$&lS`jrD$rd!eAK$BE4>V!v>dl6tdo(~#U{)9jn z!Sk@^Jt|u;Mab${Wf}mICyOyynYqVB0hj?@k(xf@`*T1UsCBreLq-r8prQ=Ft7xXT zAeqTM`#&^#o*vss0w8%&Cmb_TT^Oam6Zz=x1UKq2uZt3_0SQ+HSA&60$#SwWY4B}m35OxkRw2(ODP1+-k3b;TH6oYC3=Jx2MoqpCesq1Yx9G>0j#m&^lNygXYP{AkwQjiQr8F$7(G0^~frkKd11Ap78 zQ}-!@L@-{DXA&I@Z+zen>R78Qu?`_VzIm^FRy&K_G*!c|DL+$CcWk6?>6T)Vqs3ysEU#j3=dFtILvbcW;+==m;u+Rc&YiB4IQlTzt1e zYWryAlPZ!y)yxA5mW_Wh(J+$>AnZ#)T=m0&{e9#f3U@oyK<;0tdvF}@y2J!&$o-}}RI3shKA<--@dKfOVwsArL ze^$OZ$*_B74}nSaul9ksVfFVz02E$%HS6NIWGDQ5X-+O2Veh=j@n+o_Wo-iPJMkJu zL!C<;__A0{ul14C(ARp0>TKSO#G&e`<5H=InMTm4ufy-6i@3kV5{8cbdM1Zv*2GuM zR8AIw>}*5MCN=bvqnAe`SaX*|bJg7^8j?xDqop9_c~%*?9dA~?59^aiBQ~%T00G;L zQP20Cqmn~#E|Y8~Q9r63+_ANa4#??URdR?K&p&q7*jToIV!}6-SNokCdZ7qzo(1vQ z6639ygleoPOJzor%VMgonc9}Ae}0*$@6zR1T`A;@ za9!LGWDz;kaY*?0or9dF_9m@YI7eD|GTW1dor2Pd=&Jp;0Oy~>1L7Ym#hQaN(JT$j z-OHBw6MMUzGoZJ#=gG1tI=h{3Upg7bYa!AyM6>!&U#iKu ziXt)0!Yt_Bz29nS)g)_V{@ST+YeV1Y+L}U*etzTcK%=brA9JAB*slqevG7F zP%Rh@@2K+vjB6@vUbVX1wfbm@l)W%dE@&fx?M|l5v;*Rp*@-bZ7P=Rx;uGPCff-84 zwZpsxUIyGAOijdjUl?cc3vk(GisZ8I%j^>Yq-!?`HFXKYxD{#-=o%k1a8YABP`SX< zvf}`J>f7?4b12BWeE$3TC96%L@$cWca6RVcwS_EKJf$?lb zIRwt(^#4#1iuqzm@V5y45kO|$6V-FI&Sgg1LicKsr2$N{yDeSL$5}0w4D_^kY>>S< zOnG~sSf+?#DlNB9j$r!7X-+!*Uw-NIbQ8p@=-2w;S>J+HKB#5eqTsZCU$+#*!LZM@ zMU2h0{lVcF@a5fp-J#W*=nGjqRE`GLoxAQJUq+A zJ%^6sCg}fv{fv?D=ZW@9OLI7bg9~-k*KHGRQD=Z4X0%KoGuG)j-{@KFYRGwSI(2nD zuNBc(IGmR%UPaSYm}3Rza}$QwgL`dk__ACBoU7b!%_4C^B_OoJi1dd!?MYvutD8lF#| zWI~b>KIj|8agJw6r55BH)`pTcHpJq>Ix(H+MH%wg&Pf5JAKnE5y0Z_&#{i%gG36hB zAJh7IlU#K46pT7LBa^-+?0x1V24)l8elP4$%?4crGH`ed_hV=&9#WYPacHsCa-LfU z=SD6N48|YhQh;_K*MYQoLSbyg64tHN*~3;;?8w<|2F7*@JH+FVeK6|q2yOxE4_uq| zxW%219r>Ui{RQU&3!L~=zcXhTB3x+=m}!ud`J82NiC0n?;0#fkxeUSy)U!EF)#)cD zE$RbcW?HNSG{vcg@NoY#^z1Yo?HPd%*FFe$n)}&)6P%Q{)7qdlU$Xc~Y*gZGI(II~ zkW!Jg!)(S5V?&X@Nsuo>d$`Pt32tLyN@=+W=>$lYC{ZHi{jl>RNlwOmLFh`UZN78QqE)8{1^yRxFyWfNJf;fZRJsCqcpzqYXj2&VVJhv!3E)0(F z^?0+Ej6@7AW6yS$bHXCkvy+eph07eY(15PyL0k4@Z1qGMR9G6-{mjHDA4a;#NV5HI_9(D!@o54$UWyh~g^j86}1%4slD< znt6`J9-O2V65T-$qJ{aMqKh(KnOvS$^t87d{x_14B1%ZIR(l%y*JMr$DH3HPL5&gT zqhR{#WbLk51y^jLeM3J-`j3H|2G<;ck@w40teF!NTYL}6B-cuX^#bl$HflwT>4DEw zjKB8cR;%TU>!cJzsDq4T_-T4RR%H(0y~M>im0i~d6oVq;CMok?_cDQzeY%>blI+Lt z#i)ZU5l$S*T{u9*9;xvlhg8rlWW4JdDH?qL%teIUlKCaVclU{`3ix2aWQ`|EB zy>!}{PPD^VOdVj#9@n)2l9kd5(7w*rI5OxyTtqz)Fh@tA0jPsjd3+H|=gu8iOh=~y zG+{G?nBbeV%Ni6}f??;Ns#bH>rqIk&^doBo2$b`}7iTZpti*KZ6TruS@BcOHCDg_I z(*pP2(dEwrwg&KTn3Gk1>N*NrlXx!EmD(S54v^0(@2u!^8k6D@9;yL9>_{>zoiS8c zTr1a;i^GMMX@bL**1qgN#d4t03MDImH*oE!jN&)vC$isT1L zfJ><8*0ThjSKOyUaQ}oe&OEdFMVV4?+XdlaV#cs#F4Q)dks`lJC7HZe8NrJ3ASTE}W~l>>gc`Y`3->IW%@W%ufx?H$oU858Cwkz~hk-uJe&SWo-NPJ- z4M5%lKgxJbed{oJde-;Mx-LkaG&ek_2m3mr?!|RF{-}up`7Yr-V0NyqwESY6@T?9> ze|}^zoFV;u%8C^Mf0tSpLP60mrCijQmJ6ZFS*a^S4m*iWMzk)F0y`A=%I)Vv?8tAbfzp`m&kgqX?er=w73?1f1bR$Z3>w4gO;%ERG2D=o z?@D({D={D9N_oiVQWbAmPRUx#`HF*CZFa=*Z<#=V*q_X7Sl%8+_UH&9n&T8FpiZAKCF8x+5=kuhcFKR!fNCT|9esJ61zi)C_ zJcf&qu3w4x(;Tw#i-O{;mi3;=^T(#B`BqV4`m9W{e7ULBu`Q`9NOMJG#_2(=o}lKT z6toMQZ~lgg@fVZgV6`kh02^l0)TnZVA=B*-ov&nWkN^6^`N^xlotz)Md-3DZhx6l; zgAXSi(s!sDy8F>WZx3I-d_$oT^K3Gir47Yiy?co=z)4iCX||bVk7I}a^Pj{TlM=t z?c2SY#?s<`Me}!<-k_QP)H8xw6%%b=s^8z4m-R-B6WywjS9AfHUFDf9owM+mB&*TD zMeeCMEE_%zQ-W04KRqWRWO!8K!@>!uyL|)Q&@-YYL%7nbhLLl6zya+0ZdxQk%wbPs z0BFJqanQL<)Xqr^!)u#gB#J|rWS@p4W%uk9-DH#H^{CUsK(HR^?Q+Or?-juD)l9n@ z9JQ}85K>3GUz}ej)&ES(;=fUwe#_@*NGuC_V#|)?Tp+S=_Odh#jO)lq+~F4 z<9@YX{YcdX-QqTy`o(XhV-n0s{|JI8A_KcaY`NX))3ht^;0Mx^y9wOavFg>JHrzqI zAz56v^Xl{G$@t@x!K$$noUdp(&o8HRDcUGgreC=G-m0F_rPrHk;9R-YRHyS~D$li` zi<#is)@3?QR%`^D zQ_KZ>K(ioEm6MWaRhl#gE3oDQS1*)TLv{=Q4DNK_0Ki%zn-X7K#dFOA;|AuA1d;mbmVuGf6c=& zk)U?c>T&YdV$n4%m^O#!#nlyj{CA03?aI)i9t8D|9=Xp%d;f?kdQ_|E&c|nnj(WzU zzQL$#18y8|eXPXFw~h8b9lzI+>U;Bf z2zJXUXRGVZxXh}>2M{@Rn33bOiAZc6g6 zv5wlBUi6>o=B5@mY+RN-6>L?=vsfH`}0kxhg<_Ds#sG8=#NycR%L0pZJ6md=Za zQtVb`Kkd=e{`d6BKh^a~19j`V&M2;v#^TL9Dt9R+YdYF!sQQY?=zgu9x6~o0CY*bj zd3BRJRKgGSXm79%-cysshDYz;9~~c_ygENVeEI5BdZ_ryk+@>}r`e06z^YuDTbtr} z^ybB_JlJvk0gRbYF(e4n#Rlh%XES)KZIhOk4LE%1x+8M(J@al7zN3$sFLqzCADY`O zrxs2&MeGGfYG9iXm*Hb@(jz+@bzf491q5TsV?~Me$|<~+XT@A&RbHlfdX>rXg4>Na zg=HoS7K||S?4Lv#`vYP!Vi7wW;4HVj1(39`55+q*!q-Ll99n{&S$EPhXgvL1BTL1p z&ecZS;zK|lG=JCB1eI*4hCc2)VV3&9sy*Xz^%%2z1!!p?5I(5fsZ*(YZZkN(g!KWd^$JWONpaP{q=`v#`x!&$V@n42 zKv>(9vUn{iXcrb6yPHFf%8d1L8uOlUUMp#1u6ojIMC%I5cbsGw`mRIJKR_``*x-I*9tNqNkSucxRfJ1W`c3Xfi|IQMfoHY{!(2Ux!2x;w zq;u-eDD*3gH+8JKrDPdXSc%0@kt)%+dpYe!s^(q{87<~{s?Lz}_4BE8X`suEud~?% ze@UL>usV;-vX_yZrv8@6mF#S=Ak(7(4AJ|By+-h<&Wv-jr{S{1x(hbiA%IQbP4(NQ zZD{wNi>(o#Bnh4l_u$N%+`C=69KAa=5pUR>SgK^XV~kepC_>)~5P?A|Ci@xFkCywj zmil@62F-gi|D~4pN#aLDb+0~;ns$fvtL?1#kY0bNPFkv1Qr^W*ed5X9!?rehpN6V# zvt`fSJPpM>d{wwt^d5rLG-S93vWloi~V^Px-eSm9B^td@)A+d7c zc7UHWerM#@r@*?=--b{74c%jo=PH}c22G4gq5}Ygv=G<%RCS5Bc-fvX3_JCGEvB%N7jugJ5a^n~DhZC2zJx4=;ufV_W z6Iw~`g_FM}iq~FQN{05R!$QxZyEPz)bR|dye}p%XB!YGk0_;>X(g7F3u7P9g*SgHS8Nr zT<;6LwXB5eF$%UlI2J{E)yns@ep#=--iN!!iN;4im9ub~ZL4B-t4ScFdt&B7&J_no z^w2t-5J}91{~*2X*Kj?G&dU#f$5F2LhT}m^UbtPIRt(W~gxtgue^}*22`?2;z~=GI z?$4692co2v1P$mys=vKSudw;}#|La{{p;_~i{%pG{qpmqSlE*QM2NrR`G2#%jI^ir zfmJoE{kqn+F8Nz}uy%W}9rUTUj;Q^+Z$T@a znE-Vh;Mp2~{ph@U}urj6HSnzpr*IJ#t~nQQ&h^@j`_S(|~}HaB4FHPehoe{~-5 zOm1j{2C`K<-jF`&M{NUvWJ2SB`fY*6a{VuwtpPmWawbA(RFOqTZZYszS|50qtrIVY@5B9hBENeVxum9v#C5Ab66wUr!ODXKJ}HD{mp?>Utibr75HN}ZP7!u zFR)CEF+MBuDU#rjv5z7h=BawT<{|?f9Smp)=;0BjZ=7|dx)a3)xmB{C^n^6by*W8i z48f$T?ycDAnQP}8+*1cVge%nyG+7`45Y7PXBcQNh3z&ukL4acH6%$Q8Pi8mCx^io) z7UcSvjF%FfN{k%XHEqK5v+{V;)cK|JH~hExnfL3_F8${{!|FW=p2SN%-HE06p^E^g z5xnEuy}_P;bl6Az7&${RIY;FQ3;;d&5@>NTV&ddqJ(iZMCtNY#ZF%O}Zrfem?TWtzOu)>2>fT z)@|=zj#yCG#{-%#D$$L9j!U8CTeA5^*dj`OP&fWbDk*gXv&{$x+o*xVN+`O~n3x~{ zQ2;D|Nc#S7w1w&$euZO}FU$2PtV;cNO0ZO_`Agvr*kco6OU2?WOwMFj1StI)tH;^%Rs&eQ?}YUx)>YvwF)Yx~RGSt{c^n(nfKud4^WQM$^cYowahr`gEIX z7Yl7TmVwW_Y#ylUqq&ab<8Bx-Pe***)J1hgT4v1~Y+rL>?khF$e(S*Pg+_#ZTXh62 z!i~81wCg|k%Yip1-#2Mo@RqGRBSlZ9mq|}iTl`I+1wL3u%F%A93OIU7L ziB80wd&?+v&aKQ5?-Zaem*_w{n#Y>G~AozFeQ`4jiX)d#r;kU6lH=^hW*km(Kc0{drS){_mIiqetQO>0g%Xdta98mdnx?Z`!UQm#nih zU-TYY2RDSrpL-gY-mZOM& zs;}q9Z^Z{FxczFE$GY|MSl|2dShrjr>n$&jb?fEPC~CJ~9_#S(z)Y>}<*~ls<*^Pf zk9GX=Sl{RJSnJEf3dqi2`&#gIUwm-w8@u>-%3G>y4Mk`d3^Y>+tee%jMyW znVgCti@gw4ZsmA@Zs8y4`b9U;K#2N*eMu^YJk0E$T6jm+@4Jo?M(}-Bm-^+q*gmR1 zmVLzek0>TwqHy6z0C$&!x!b~V-Ro%ReR35fhrI9c<;%hrCPN&~!~&{Wxc zzV_VWIEoGss*IYoBT0EP#uI=i?PW?{3&zom<98b-8WBgws(U=q>W_iz1@+maZZFcx z=_MEf888z4&Su~5)I2Rc<;w%t0rI9F_{STUpEA|+iP1ew5c$tM31kIRhiT2$8e7H2 zx3ZYN8^86L7y3-$uBO*D-$uCPRgzkP85d0U_xjJ2^J5XeB+1|O8e*DvMctq%kn0}D z9o5iFq=J%mo90X{a#2p$Cs3UK#uO%H^d}sutR`?;FmMLdC_TR=FDSw}oUL`8J?mm^ z@MrXA*8+A(s%&-?(T1loou!|We2Hl4zH#8D&}-Eh$>QJ?v#zPOO6zQeSvr)Ekmh7&!4|JB|p0T`i3y>xuHk30aWC96=#=I)7+V+6}1-;T#?!qQ4fk(bw5SuGifNgd7$)5VKUkHY&YQ?=dz znzj;L00R#!*%y`?H86jAq>M_9J*UZ&0dAA32ovE%V1He$nt^J&q7D+`AH!8vLQDcm z)yOhNXq90cWu<^D%xho$_$JXjXEfIFUAGN3O&G=p-mJr*+Y1=$UTI@{& zQZ@A(LY1fyJ&=ZIr9Iky(TI`n&hlWF3_5qMltQN8OQAt6yw_gh%U00%I?% zaI4)SHDa%&)jnJzi+c1N)T>&K@^CF+4`dOxVkKyx_t z$=w}opcXLK(#l8JSOT!u?7)kJuU7YFap zkAFOTeFAw*HPTeOt=zY`VL#C;=_rB;yOBGFBCjZ#E9&mxZJ>3qf!a4w*ocI8?dm8m z-MvS4Jo}NVV|%J`U&Z&91U>FXo^9yH-G;3fzdE+sfAM=M9`J2=OUBeE6@WBLwe@|J z=a%{u5efGo*9m>YmsLsRE`}m#zuIq{K>sSe-^9_qOeZjypOa$II28J5i}MzrrMDDy zfA7lGD#j}JW^1zcS)YP(olvxXGv|X`f~0^ZzDNIZoJ%Gd2mHSv&mBLGCUXKY98OZ# z(#A`U$?Hi9ddwuh-NWk%;@b%XDv}?H3hZ%OuUH{TwyLu%4fSs+>V|C{r>R7qncyFR zW>h=jg>=%31%z;sAz{iiDJQ_eh44c8VaC@4?10pO$%Fvoi41w+eI67&fOS`(B%FCg zk}D9(7i0=XzxQF%u~f8ZP?|81wBcG`;EiAjD4_Qqvac+bP09p zS@2N}Ll>`yS2;2A^tbA1R96`Q!`PT>H*md7Ar*W`r!zX!^~h{iP_kCmywmtLK%IM` zF(0_C&^?rxfvUUxdn!HmT|z@D-RDW!01DFD57O%bGA8KBJvzccoMSee z_4;grpKt`0k+KP1YrJd3)>4@O<>W&u_KpU^IdjCtnS*g*e%1q@WH@Fz zNFC1J$Z*DFL<^JU+MnV#v|L{>zwvecqGcv!_J`CAFVYoKrdtV?_pPxgsk0d%pKkDK zHzU*GD)s@&4jIGihccV^=jQ7istvFa_ntqCp7h0Ph(@T2h(gDU*YQ%Iw<6;3oW8yd zBYylE6u}$nk{%V;5BsK~+PvPMz9jRsOulg5j4F1V=ILQAlF0|$<#kCWb?QNs>O}5{(8e4AX$eyJuqUoT=DS{i#1wF9_ zBw$^z*m>f&u(3SBxMpF}#9pSjy-PL}k@dkkj7S_jhsbcM5U@ZJQVgG!YBS-lu9Zk# z#Rz}vXKsG2`+l3v6;Z09JcSz4+ob&HsLsojpa2m_Aekv^*i3w5FB#9yH5qNs7$63r z(^Fz6uWg^q0*Y;)?P7CGoD{B5PBa>BAjRS-ISA&X`mf3OI@yzE{HL2 zaepmseJ}zt{hLsYVALsmlV58w<1&?ggba<#ZN@Xy^F|=ol}=<%xJ9}%$eKwRT*V(*l`+^E z3>Gb^TBft%@r%RbV%bS{P!)_`cs{A#4 z@+h7;Gx5xwY(jYks-=>eaWG?7eZRrXY!B#;=V=S42f|XwJ33%VmA=q-$BM ze5uF2F-eQ4HFS9&tH{l8J=ASKleQ`E1*C&<90cbkIYYg>WW zjk8V_F4ZC$+~R)jGn?9+yb$)X-!Xr-o$8=_dg%A)+Nu5q{V`|o zOFI@}buBLH0W9q<2x|i!-yTmgxpiG?bUQDLJoU00-q)Dkh(|`gGHx@cjEYyo?u-_y zC+>-X(+b*Guw9*Lv<1STgV&1JFe%5_B-qCRou~-QyjPr>4Xdn@OYEt%X-KTAU(A2R5hs-*$Tq`n`X5+)f15a> zpP*@C^ce>b*mjUt{0>mEBe*@%iBa6|dT8hvWrrbYB}%tUrg~a{YNj@1N$G88l)Mjt z4ZI)F&-d!G!fS>IQ=Gn)H(ZG{mxR4!3fQGNxk+tiMICd>1tUi)&YZ-WAz{y0( zIst7|^2;ns%kMW!jLv9c(q=GflD`Ux-@ur3o;fa&ed$#=|Dis~o64`Mi2m|EZdQWuLAm#L zypr=YU)}%PCX0rXu^~k7|7P@L@ArdmqDcMf-P1pY?*wOGz57G$JBIB4X7qG#PhQn9 z^YN1F^m0c;(-5fFPoFrcB_i=!-;BO}!adVD z8Pt=fs@UXPRsIRGTKsYE-y*9;EUiUrzKN`QKT{KX#L2Q4(8haab6XsbuhV(rRYlXU zm~gzfM;Z)`&T?Qp2BYPzL!rq+Ve_blozN+QbWwOIDu&=Hn??$c=>@VSm{K;kA+I!r zdYqVCpBh@trYl4?EjO``z?hOzkpcuCYFsZnO862JqsWCTopO&eADhe4dJiM18?Cmq zTA4ekFlo9J&Bqly&Pp)ACF(Pg#fr|as84nQhtX7tzq~wptK?shvgI#2`yuyoL>#ys z-lZgEbf&^&qLVlgaizj^k*be|+emCfR#>emd8m)N;{zX@GfxKi@gb-us#|V29PZSe_Z*7r z`t98$vybFd^_O&A@iY$n4=6P)8EOs*K{CrH1WcyA&qDVz{+KkrL~zGNsyHiMwL0?w z!-6nwRk|C%AK}@FxvOomMIxN1rV&3T=7INBf9pyDdye-R`@(rs5(1C90gj#XznE}p?d(9KsPLxK`S(pA}I zHp`a82rJP|vEdNJ4NbUAuai$1Qd4IkQo=)yz=B4I=@Nt1X>Cq1a~KGY)pCpJ4U5j| z`V4zFuz-}Lz|oomuTHMVV6vA;wVs>0=)1*A@O%9(_7pFuC<|v4=8Ba7Lb-y4==3$w zQ9=sqQ`0;x5zdxScq0+;rOe-qX1*$BpF|tWivtbmbSC{A==xY~%DrK;tyYb7gc;eL zq=27Pvp?({E(L2IN-i`op~}sKbsj>O{t%0&sVYwhsI>m@dNtJwx?8L?!Qp31_-aqp z#bD_xyXZrW7w%od+*w{lt%XBUqQ%sK^cgqjo0@r6z2n2-)asNs9)F?H)g0mh6?adr zdGaRB2mYbvpX#}93aEA0?@}#FZl0D?TWS4+8WD&(q{{HYSTqd2<{w<^sQYoPn^0j} zvWz|NRvgn~hf~S@aT|$}V5f%%5L6W7PXG48`ua`E^ZS$i@N2cG_|7BYE<9kvQ2Dd4 zpRHd8raHZ&VkWxwP2)9rnst8Xbm}bFxu@A#gE8Q)wUf4Ys;jp8jlGTBg`pUAS3i2_ z<<{N2YsqU++q&UikK5ZHwC(rCz1Peg1VcVO8?>B#Y24RK9bX$39`tINDLMGaL(UB+pnJ!q1ujAw8vvrgL-DB${*LsAUd*?qOG+uq- z{uV+I7UQ0%8vMAt?8@dpV)Zn-WC*?|fc4U8hy20%1BMN`l59~Ldy}ZXA{j)~P3fn7 zEp>SkE#P@EHei($?wm}Ke6)gS-6LWOKeB+T2I=abZkR*YGyX3qPEZj}BTwUbY^Z8@ z`I!$D6}6RczbLh9Pxqop;@blbOct$IT9s@(d`^kGT;Rvw~@<@GcIaj0(R&p* zf_CEq2?FcWcQT0AR*$gZ)W5^?ypWTP3+eVuG0zYc*LYwH*XU&9URBx8roN)QG&Lhk76R z&);Ghalh?5thG8x(rQSZ>{+`F>;~`&UUe6LYKtG{KUf`_4{4@Ca?G z_)r2{7TV50M-@D(u&}pF+2!K$!Iw~5m1LF3md1e-IrH!v4wT%rVe7PEIu3KDe$Tev zzRgQ<|1;%wq5W8Vr6Zwf8`Bw~U*rv5(bI<-W~4yCLgS#0}v zXZ#1X8;NxuJV_;=Hyl|rHCg!>{twHWG!;WF1r3VF7kTMCbUaiBoit-qR0jFc0j}C- z)MQXEr6TP}NVmj8Cn6Z;-}F6?R-Mdx+;l(m8niP^t?K;Oe(PbY!_MKARxFd>7Twxfm*jdD>Ge{a zW1zB)eT3*zMO+aLr)g%;ct6sueJ7W9an(r)h?j>~apD+pol+|@qLy|$pS43L z9FleG@+tW!_qubnAyg6gqOWprXI+A2(SPLy(*(+!V`aYK7$*KEU9_IFz_d>3loF(sERMeQ~R3a65V}wM^>@Q% zy@74KOye>0bsx?Bok&2uTa1I^gV`aJen;pv_s_UYZlvbdMQMO?E6@qPglb819o3yG z6iOPbXC02Olk#BM+v}6ks(apzSjaAaCbeFFgMN3Df-Jlt!{~mG3Ekh>-~~WK-X!yD zjT<$`MiciUr@1q?c$+ajrrg_9vC-qTRerZ=oVJxM#_DXMQ}ZFhleY<1Bz;xOHWRal zskcSH7)uZ7RISf;!%qI9jhsQ!IlAg~wduOcCXC%DU$CPabk_cUi5o9sOVFsu*=A0H zX>W!Bh&N%Vq+ku=_8d7^CPp$cwcmZIPeuKXm^Hg}HS~$U=o;9=a9E9-)5SPG)z!G} zAsgp;7Pyn?N@@s01s|{9yBP8y+=&seojSI?*B1yZC2jI3xRK{m^cp&QYJQ zNsGgmtC!IGa}xK)t@o1-jCQ94LCo0!3h5l zF~NNSi&L|XeTsOp#r={oD8+}V4=gpOVekUUtI%nvza>-CsIlFO4wGiXV}qK@g*_Za z`yE#d_qXQ2V|(WlyR1aHz$P!mPvU}joouyiU)FXsXH8>OI_Ogv4kzN%FmZR{5o1uV z&1!4FYtd!e7xQG%L(o^U3=^XSLs!S#M7~DAjmol#YpU&iRhDErKTTO(qt4yx6$_in zoq%(y>AstX1n-B~uJtq|#5DTJ9MsnU_&;&AiPub}Kt?Eduj{W9p=^X%NrcV4SLLEV z*`|7Z?nWUQq0xqfu-?8v6*;t*v5v?%2=%t9r}HR!=DJL)$w+U?H@habN>iJ=#Q~qD z9pd4dIyNBA6pWYcm*K@od*9}08l7$7XTEf@?PAmPCd+MSIN>NQidRQc0K&dljSa9B zr5)=wQ7mepm8X*~9v5@N+S_?=o5iLMr?hz7<6)<^&ubfnnXRVk7+7&&B@0O^=u~7m zwx&unJ_g3pFjw2H-4_qwOJ>rtNPHf0PsI9yEi4>plpcMB^_R7$ojPaqDoO&0Xyn)| z*5kDzvl`n1t=~JlVZ+KhbHtNJ-}8LX1>#!v@Q$o{0>$G2;Dq=jfUfy{6Do}hIid>w z;Sc5+V;$hxAI&p89eDaDLaur8Z-HDB0j|lacdL1-p124uS4p+p&8nQ=5MyKDWENQj z>m^xaF6PV@&@_#JIrJ8Q6^v}a>XPculj3kb zZ7QtZFNu~#dDX2D$4$WxZhSQ_o7G_`<`a2R}!(;anA zy9+iF{=7)(-<$Lj$;`VLi24U?=kCvy>cE*}Si733w)ji)kdGn%rj%^)-l)!80`twh znrHc_^CVsmr`q}o6;PTm6~m-6{s^GUd=hUU$=BVmHWKUNH4>IOcz*yj z$7{SS3gCNgS1W@iJ~S{$OSLCe3sF;k=a&u}f7Ks9p1ggd&iSXi&UC_NU<8PZC-(!K8s#`m)TvkU6n)(jGHvLwJ!efn9 zZl0Mi+0|I1VIhGR{~eU@jIjDejbEBh#Ln(Q7kQaeq^FVaQ|Wv^((j1n-VCK5ABDE( zH;llCUUvr@TGO)Xa8AfHN9AAPgU}137i7ac=&?(GF8e}NiEeAZ1>(L>QA7=uC@%k~ z**#$R2wLnC5$uwJf%p>6QwjShInueV^s&#G_Br26-a%7=muBy}EN&>0=@o?jUiU{X z498AxSAe|K!Chpxsldck!>9=->D=lE$BXXKkzOS=L7F~*9m`S2V=!A z&I$maDk4l;VaCY^LS8j4QvzV)z-MxVB1yLBygYhq2_$|013Eb=#w+-S4Hs0>YNbz~pCtcsap$-B{#vy@Vqc6Wcjx3{;rl|rV)%VM$~CJVT@y?}RT zPk-)=m`Ri-TkJN5+0nQt!5u(1iAUXDEAF1Cn@8HzNun*_?nS4Dq24d_Z5O zxU-pF_~%}j{JYL^o`F6dOv-fCiIJwkGxhSjHZ=D4BWpT z%=6k_b;2JrWV@@;I1ppWg<~Pflt>7~o*Gzxx;)9|shVD0V&Hb;C6c|F9=Nxz>!lN9 zU~~v_u7s6)_i>;KkymHLwyMMtSVbXxnQje)E)SS+_Ul$0LzE)}anFJKjiuAEkMv#) za;E5kgDqbzdNDPf2(-h+s#L6~v$%Bxc9(jUDFQQU)XP^Kg(^*bU%?J$CAcPc9=wEO zG-pEt1NdL+i95|CS9H1`6(2|1cJ(*2hpLBGur(rVtekrPU&lx9hAe?( zSL+_0Mk+P491l=)ueK%&ne0Z{cuftpdJY9u=);rdP_TNUfIXMRP2W7DdQP z?Y*cq=%4yqt*qdG>+eMeLI2d>a`#6%QCI!zPty_pXAtwqNve-l-9%^=v^I$*wXttJ z;7cHeE?JjQcIBtkD@IrDrMlv7l5!IL24HXMwq#_#Iz8mB@ipr2iN5!9h)6bb zkNL00@G|JhwXykPT9vaC)&<~v^wiJLhS_#@WLDKz2Bkpn`op&eKfF5s>BF1z_a9!p zKKz@QXj>1Gt!}>+i0QsprnzX4@z4@+Hw1#FVBj)G@hR85NbD`Rkl1s%{9~_7?|I@4 z?T9Q(f4{a3c&$wxDVeHe{Pb(zt~-Y(>8#VNR44v{TKV7Xz3FlrNtQ17pHC6WzF7by z5Cov5GC@%qWl~wizS=setYz42We^C0Apr;!0wBT4lGz=zd55uim-#pUXWrpH$(+sI zk9&9kpen2F-sw)O63Os=JAV8u-#Of*1PB1=Lpd;{JnZ@@Mv#k1eLsl=!ub6WeV6<1 ztHGmhA6W%KI?quz@VNbzFAB$wk-nh+A5~wl5$JwLSo%8v-G2eX{2dVY#pnd%@n|Cy zFY)aHCA=f;SsF=k$o79Q0LQ6vT~{#DB99IIw#4U%gWFdnti}`Oz9(A!M>#54MzX;W z6R3OOW$|2>@|lFbV@VN7kE$+9Lu0dS+p=FI)*pdtaMy>!)uMzR5KBw78nb3oE$aq8 zvjWpr$#x8Ez90%$sbgDXre2v#v>ULsvePBICyHA)nv+Px*cC=AwAF>f2D;%!Y_*t1 zmJb^&M`$zXYXhrq*qeDG#(JU}z~BTF;9xegwb>-GYuV%^#zUQ=w;?>Yn?M0?X2#^9 zV2Us)#^cO9%Q5~Jad-rTJwwN`7D?_agxlWWRx+!vGjsci@h5S}HUxXiNUx1>-FhK} z`6gOYu7q+zJbX7=4aFC_TAA-8SXc1=5%GhgCaqBWfUa?JUC*3W!Pu@3U(C;%ASQOs;Q?*sQN7eLz=FZ6qGAvSL#>$=dY9C5G6Oo@sJfer5@t%vLQCo=zzeKxa0P4JWX|nsJ%eO!e;BW?K-#hWVBryQdcz|f&_k` z<6ye(J|EU(=MCsKmnsmOqUAf zLWZg+Bv0MfU2s_E>@eVUuAS83vD!@T{MyzCB9xAC6jr)Ilyt$?j&1=_A|;LuHGaNv ze~QSISH>72KGNqiZywH*=h2q86;re;8ANON<#S{*QFb;O3DqLD+tg~vl8&7tG)pop zV~%CPfa5gk4zwzySsEU?GAFI-vP8yg$%)=HZU4mkUusB9)Cs1>?Z_!m-$qP1LPHz7 zTP|~xg+Ixd+vY+vhnUA?xTUshs_oV24M91v8rH{%&P`(n4>rwSY^X8MCc%}knJJ!GiV zGB}og$-G4LCL{3)>cMHkKv9Ce8J7GWLx>uqkx0>@O%IC-`gXLNlvv?{PiB=V2=AFm z=Bjx6qbN9wfU^RBgkCtCjMS&P_I~Ll*2Q;q(BR} z#rt)k(q~N6X69`;t49S(MZ_kG?7F$fj( z?XGY&)>nsSo$`oM1;$(P~C*7tw1<#FkHZMsY(;S2FB>w0rnDz)KwY(5*Y zGf|r}au8}EpT2ze@4oAI+4BFut$vp+e%JkdXC&0{E@Una13lb{Nx^I2L%`?qPSQ^W zzWvX-=MiuOQhkNca-Kz5JNYoLMp>B@#hhaX3m?uSxVb`gF&dYVD0z_%KZ#x~UxZZ* zi^U=<=LJFNbMRcHbz_}elR+~tZj%r6p|vSmi_afzlJ0P2?qpy{8U6%}^T)_T`vbjR zs!tb}&Ra`*8JG1$nBy}pa9+zKZxRC8wF}y=V;HE#kCt>u(;M?c4?gN?I;>~ADr2)a z81QRVuIkS5$Erm3Zs$0Zz2c7DLSWQ;;-fj>xYO&O6d&eyHGm6G2?qWwl2NwI7Qkm^ zqF2tB$qlMaZx+Q&Y@bn=L&s^$X5TK!+;!W2Z0#hSW5JAi?N5!8!|kx zq|kCKv_f#*xUcfDHpI#f9E^;~khEI;v`9H8EW6y>6DT;cFmD*^2@#tsTxqN6V<-L+ z<29D3OIIK;+r+#I877brix6C_Q~1Y=P>&fAbxO^fq@BC!UpFaMjXpM3?v?GVQLvrr z!MuoRV~tMIm5s=tY|G{90*%*Vv@ftl(X)D{`{MK}rZ%#GJ8y?$Xzhr~v7zCub#C65 zswT5PL&-fEot1m+88piJ({e06IN}jZM0Vg%s`-eZeO0(SU>9HJYkz6jng9>H=oat< zV`2W-Xh|spOJWQ(#JWUDX$?ui8i5ISftadQ`cteLuy8w6N$;HSG&IIzq+MAyTT4De z#A50OIcK6t8dixtP-B-RkYd=*6r;Lczz``+lK6Owm$_xwrD5@Wr+ed9n0q!i3Z}Yl z!2ihMvaMvzXqi}S9j-LBsbjpZ5(^&Rw_=ni(s!>_zCWX_nyW3Of-q?r(!eM`^BlDd zW_-zjI@YMpRM35?6Z`EAVw8_)6qv{t;mGg4++CacZ?CcHB%b+%vO1-K@|9}!zBHO> z)&i^huMO-tU&B!LUmLBUYy$(ju@%g+2-9q7yj`exm_zKU3|e!iVUy3vnYsxx*Yc*u zK4^B`Qq9U(VKtlKtXM2Du4RxktAs^!AGnM-bm=*tg$o9hGA}N#-^5_;x*>O6NZaFJ zTG2|47Z9N*Bpx620LG;kw6$r%eZ{TU{4b%MCfoIxjyFyiMpj{=DdOBt8a`$bW;c0k zh6s8d-ep=nTyqoxZE>Taw8i!m%O&iT;!367+Jby5au_5FzvFkAPPfk5XT2q=ze5S%vX%Ybde*$PE(+L$ugg#%?nDmMEr=aW2$ z;wF|2uXDJ_P9(A_&`0-4fgiZ!eB>;so2oc)L)-;=_wui2E*&L&eN6ob99!bG)($1-CJZV2>V-j;RWX5W? z%og;i*=U}n`+q%u&?1u=I}WckwTSuXHF|8Z$w-IrfSXc#?KX8i8rbqQ>GUg{Z@0tp zc$WToY|Cvw!EVOyxkyt4tRS8Ak9$ZWEG>;ZHOYWw!#mR$xtxW@$M|prUT)58tpHVp z48L>$f8YxZU0%CPXN-1wA8pl5bga3KjaBZY{ds5S zyPa_M$V2Yoe?$+tijxd4;gl%-&OmU20}ZDy7^df`E;6%a;SmAM!_qd+_p^7 z^EjXxj|`UP4!w%B4F?N7jX8`JI#Om4NIIJ-+7k>QKU^&^e%#*=tX8d@@U9iS*J_c5 z!`=ct=T#oVqH|q(-0jws``lL76MFF0cc41nN)Na-AL=C5octi8zC0ZEzw=bU9$lJx zi&@s#K2ceUK+J=?`x3~$8?G+$;eI~br;uuKZ-Xk_>I68hbP=)mZTw}G#w>xkomc{N zKlT}jL$sQFF`Q)40u!Lp@g~sMKl&Xg+%Q@hk8eNTH5_71l9|n#f$rCiwXQxIZe1}R zaZM@?x-N;vU6Uw7uWko7_L?*vd`)5*-C}n5byf2C>k7&Q)Fjgk)TQwh)TG+w-#88R z$r}!p+6tTIV?*6$OKh8!`W&(~w#8*zFuixVnXqIQNDU+K8 zg5oiR%QXFjlEy$*je>`Km>mE3XL16yac-AU+*ovFN3QBE8r_pSI1Fha<~bttcOLQD zUMKkrY(OK_VBtBHZ|0q>W5eWfbu6lp>Iz;GO7OrATHAW~cEtd-6wox%ITAZ-SAL8J zYeoC9-ce1l-ciC%y+aH=s#;J7jV6kH>-RZCgK@fdm;tH7e5cqG&_xqgAUeyYItn<9 zX4Is8+*q$fJ20366ko!WKFHScTPG1WUtGtA5%hL!ji>pHM1hi>B!mPUhI>C7BaI?~ z7AmMX)IFjVjPjDdc1*|Fvjhzwttay@hD5mj8?kwUeyW8LK@Z`P0xOHUKt!vcfyq$~ zcfUVnw%!wToHnlD=;<=BNeRy@)Oj*<%WB$C+cZ)FwE&eOYVQO^>`r!tnrTTu3zMS6 zIIKYd0yy537v0XyI3+tQ&^#?mmfuHay)4iQ2_d23ZBzjHDi#JI19xGG#mN7gK)ccf zM_oypS!djFF<)^v$@xJ4U$`D%V&#l%f`Q-;k(kDYDYSm(iWarKWACFsliv<*bVh*g zxL7A_92DMCz<4b#(3ydATBUKmS*BDWCZ$Cu1FL+T3ux0lo+yIAFTbI#am zDw|mq{>>HYftW(JotG+7SdJaE$ghzTBwx>uXoEn3mTYSsAB;XiTzq2H3Xfvo;T2?; zsci>S-SPvlZo%m=Dl8t>J08)0MH_Uf6;`<&QdNvCw%JTg3LlyWMO5Nk<(FNUmdF25 zA0LpVfQ6r09(zEaHkov;H8`Wq|@K|C10-W4!DElpkDdJM9 z`qax4N(>($w(8==Ixq2KsWN_;6>`_nI~qAtZ1cu=GRuit0{%F%%6MbQ*^7(%E}L>&J43j~iYW)e{1uwhRl|EQ-6cv7)&BNVw3nMF(X{3vdI3R3 z|B-ZtR!|q2Hv~lDf^>Kv6=WoJg+RL&+e_4|4&saKW)#|EN%9%#uR`-uXkk*+)bKjJ z#qd2NC^h5S%q*B3SIgzR92^{s^X1hFjR2-}M^0|#N9SXCke4M;uY=w<-#(H+NE5hf zveCTA;fmO0j_UisxD9pfbtYXQ?p%(+I{CSlV3m86`a!o(A*sV#h7 zq*Q=ZqDF8D$Ldo)*BNW}iBYP0`qX+ks2B1IM>$C^vdO?)#2xodC^=l;=~Pd{viOv3 z(5_Xe0gn*;_iv$Fp}(XE9<=lXjA>@&B(f6%fn?ul)F*045Jm{Z$QVatDhc5I|OP(cNte0N(6rZL!<4P;YeKHkjA6t=sRmY=*nkg_Yqm&HO z)*bVgT9CXvT{6x9j1+!pQ2TZr4-G5Ad0*$F5rG^vru17hH)nlGfwADlHL7F^c0+f= zcIfK;AQ++QoXR8vNi#zuue`2mW0u|g0cIwUwOUM`(vwQv0nzkY%KJi5YVl>c%%}Ls zY$r6Q*x7ah-NRqJEg;Jpt~Mgb0#ipXU3e_Q4LiG)$%1b;=`C4M@qFA+P-CB=upKZW zBi>xi>tvrXDU*Z5w4L17geY{el}?jKj;4EJMeXX)gSKl?MIOkP^!!Gp1p1Z`koGzq z0yB<1ENwV5WTgo$_d2YB<2X-Y4uE;SLB87|nZhlCmjTi~4Ea1QN-MyF&Sha$H(3KU zj~J0HTW3Sms*ys99KZjXEecd0Vz6i|-0?~iR6^6t&a>n?ilA9Hd6Ljh_GJRSIjeVX z_FDyN_Jz%EZ#A5%8SFyXX`k??sb8E6Xys6^WQ`JGK5G__6jX8|uzYbrDx(o%MA*)v z;?%@5q3IV&8gRy@nlGGPqdXwb3Oq=#Q39v^oz9V5MRmtUJVsPi_Y-qLeff^sKT5(| z?(f|#59+F{op#%qNrNd5!EroR{;_21(=kOJv9T zm3I60wSW8N?R#cZ-~8u0ZF_+EZ4b2{-hDWI@x#j~o&Sihh#yRxtwpw^0DYhHw z`efw4-wtpSeaJ^Pgbi>kKLFoF-cFRgW51Z_F)V1X>E=VdW(I0_v04^Crn50@G5wba zN`bR^myUjz4cxC{&R?j4>JPDk&u62T>m}Zca1iugBHJafESJOo+r%nILlWI5u}%5D zm`o_zObR>lLnehpkrF^dp^In2Ku|cJSey;nrgIjLVl^v_m4*!%>z6kL!91r+ulaQ%bwPSZg5YItG}V3`u-U18LjDc{&=f;FBXnBU5|}lgXzq$V~aD1Zs`i z92S5wl6VgoWccUt*QUO7glod3KgT91T}x-l>IoN2CMg(wb>ISIKLYwvHn$n(+^qBH0fZ9#DjWx+oJP){cO+Q^rU zGPy#Y6_X2E1*~Wan?Ry5Ikwgd$=7imB^$?dLhl+@Kon$|XNHFrF0YE!_zD`$C>)XV z;5A3$B3s^IY-p)9hfhs>$*h)T4wnNST9-t2XE!D$c|M&NB`HulWcj6?B<(S5jz=hF z@_Y>2h`grW+F((>aRqh*V-f zJB$9LY6AofPI>yI<+JWN!XSBlp2~Es{T!ZMP>)3*!2qf@K{Q5e5=Dz#cPqJAWa+0v zt<>dCSsNDq(ssSfsSh609`?kau`le289etST{rnl+s#JM6DJs5|Hv+H&KONeS7}*7 zIniP^7Rm9}B_u_bY5|HOAi-1m#rWEPwhG8uwvU1d1X5VaO^fbR@cI_NJhrH%OIHLQ zS3nhz`=$JJb86JH~fN+L=66I~^h z9c1ypqU_~JXC<8a0%bA{MP`cGn`{hZ^g65NhQyg9sv;<1oN>z^wBQdWXH?7@OC*lP zjkzc}gzIQE%p6t^e0rMnx?dZ?64#>7-swE$Ca|dk$g3#e^dcj)&aOvb=1bap^dp~P z7W$ii8O`DU*KrfhZ6}lJ)`URY=>?dCm9rIrC8SPjvJrwxj;=X%zQhBR>~jy~cf7>D z!?Revq9&Sj=1hjRD^~?OhkBp+w9&RWw{yMk?v5r^+j5`yl+Ty(Sk+L;GqZFX;K`vE z2MOoJwb=x8DeK5{KVQ}(E6X~YY1@!dvPma)#Fx-x_ zjs^p=*GO5gC>~!Tvkc{YomhbrL;-`%md}lq;Lz~2XV4;Cqrd^5?e~ClJSTR2Rjxea zMOBx%Y2f`egZ`Q*pc9sTx3No?1>F<)Lala3v%l2#j);81nZfd-tW;(kb%f6ylR2=o zyw%~Wsp+g*3UCCFo>5k@td9D3Lm51RWo(=;e_w%UEqf5ZV%N?n<5@ zI6291l1}Gv#DM_d9L9=wJCBoTmcrEXm5bd%AC^maU0!JdGt3b4q!XPd+8nH7l!-b> znmyR>mc4{#+GaZCK*s=N)na)wjw@#xA*T-W2kxN5?EvA9Hwll6-X8YwLu+(&TWv=W zV6)P3ZJlrNdC)adEmH8jVwoM5-g4xTB+}*mtmfEO$~Kg7^`yA0in1!b;qbPprh1)R!pn$J2Nccjdv=XGg6@#kiD zzO9uU_$rzxW5&}Oux9j8YmD`#-iu89)`hEBso7Ew!cwXW4sI^=Au)m+d0vSybvT3#JO8dOaMX> z&RXUe#fkW+#0!M17w~sz3$8E{z~NPib+B78>_H>BMIqv2`E%2d=9jlha*WS(PcoLy=fr|^JKe`9u2*km_mG|quL{zG$!l7D zp!j7@GP0+rL1&o{KamCPykK}520(0Cp!f#xT=@uX)9w*oJfy1%Y$JECXfH(N4h1?J z#2+4yd{3SC>ZZJ-yk{qwk5A=&io>F;dn9oTL@j@1F^W6E_l!O&*gl;Pxo=D-C1D$! z&?LUXi7wyHUfB6>noXyrQhM`PE(YsryCj9OI4Y2&?voyG!FC`hfgiBZgsV)j%i$2X zoPHhb1>GnWK7yF@n+$vdmKJ*ut>H{ul!8w5Z|Q-Yug$MjK8jqBF^BihkABQD*3 zSQ?fwaxZp9euO2DI>| z0~U(#{mVbSfA``T7WJXV8{B1gcvzAnU+}d939+m7cbt1YQN$GufvzLgw3G3X`PdW< z&lUx06A4;@bS2nYLd}(iL<IiS7H=0FaIP9o>z=%*Nwm|3W=R-_JcNQu09Dz z#*#Z5_u((EB(CHOeD#)R`g4v4qJfExb21%m#e+l-i}Hn`YUxGUq+j4;6WVFjlz~@v zwG4bTWnzzGROpdK9jOb8byjX#2AYo!?AMp+@TzHTO_m#En9I(^#U{ZecKil<-A5g$ z9Q+3fmg?N(qfHSCvE)^}!Ho0eFqWwl+mQpW1fsGe>o#^lnD z<%5KbLsJbja3GrmJ)eQPMRII=mq>^}to2Naz_TP0zfGy33Av!-Y-uBV^!)Nt<2sQiHh_rfdafXp4hOMOwxIoy_OZS`fpeOmKTgVbiRLa zPmq!2M?P?(>x-WJ}3BaE{tpO7>tTXU_OQTFSsNBV6# zka1DGAYfbeQyw>EHY|*!NAwK@=*LqAd-_LQ(`bK8qNmm-k$2x$a_?}0`d>m0`o9J} zfXmkmmD`o9Ko_%#N$`HudDymH;Nl0&ZPOaQ>H3`OnTO>w}MKWgh0m@D{n zihdJTgc(?f_$DD8WAvdaLwGFrmkDH;45G$liaEqxyin#L)ewl3V-l0Id{`(Ui+=a1 zfwPqz#kR3XbV?wiOQEJv*#IswwB98-D-4W4gV3Z8lLR3ykS?7VV-u1G_&pL|r<;sy z%oEPiW&}5!xZnMBB1&?vQp`;D!%7W6-_D56FFAw{&s^hNP2C%( zrf4FLzRt>oylNw^8$m+>Io1-p>1UMN|J-Klx0_6~&bM&<$(_xavfNM1{eUL2gt>{c zQ6gfG*b<;*a+F|Dn8~ddQ;}?1@ENqc5)13}0$(tucA*c|zW@+mcL-Bm0(EzjNSa1r*vrRPuhS4$^a8U6ySATw(CQX7xL)um5<5^23j`|bbARB(ugt9TZ-4qN-Q3~v9 zI$31t=r&obW?~b~l?_{Uz^+o=b(&Am+?>(cJoM0Ox|*BZ5Son0Z`6ery{pB@y6KFV zk_Y=(&Y^wIx7Q-3{Y};)k)jN*=Lh@qN=@_0s%+D5Qw+({rcUz5YxB{^KP@vH{4(>D zK;+tr5`#7cHD17PuoPxzY4?K>2BvEY3{{H|YLr3=F zY4=w771fge)gLR+2zs^Pnqi>Zs1$apT za_s=780e279YR{Z62#=M9Bnwzk!2l;ChY*zON|4I3M&4)n0p)!>)e2bw4!|J?&6@p z{U5vFx&J!_D2XEppHfT~;n}OuN7+nSv}BY`{z4(U!P#KJK8KdT^4|CThDK^FUln8K zQ&h=ftPGc7T^TfzBaa=0z45oS=~eKxI*1%-2&@JC08K!$zZj7%{)p`0aR=m%?Bs^- zP?l@w+z{%eUkryp08nNITQN{jv2C#l=|mYqrlvAR-?}`a4r}I6N5znmO(>|1v;6#T zf9tl$FfRGL#f-|pI>ainwQTH;>dm#^UdWvq!tPvF?BuaPgw4==tW;ZQ;QnS}giC8b zX+4H%i?ZFhF)lUmTi@K+b^XBXmZWr3$u%p5b@{r^+Wed$sKL?-e;)<snCze#>?hZ8myU@-Mb;W}^%DeqisHlNnILe0i&^a#@4F z?@~P2VI&RVLD><^m1-9{SFwvR&tmMV#H>{}7;?vDfpbwV@v&@t(Ju1|GMC8N8t)3c z=*pN;{WWxrMvc+a*?eCn;rcM1{~1pP<$r1%e_LjTuD4kH{bS}RGLU`Mvwz5V+zuGA zqU6kxUe!gu#rjpy9}!H+GxZn4XYtRrGX1dR>)mL2^Gb_7`;uP#4#y7qHFu(Zp|9KR~K zEtru_ZOB4Hu9~_HEDG9Wr4u&Sv<|Ff3IpsbF`-Bb#j{t~y>gz;!iva-fruFf`NnuO z1Z$Fx+sSZ}&yhQZLyQbMC3YA&fSmfP;5b4C>FCdj**G4satzMgt=5kID) zyi?-a%h{JR&lGP)+jWn^wp3H&q8JI6L6wD#ZW5joNznY6KKDB{2>q&UFe20rdBctE zIlI{(@bP(hnGZ4M4F>lh_|P$IR=9MESw5uK7DlLYU+8sU10P>y!%rCACA%@EjOo%n zLPb%Ml8Zc$#PTM~<~9!U)q*4gcs(;_nd5z5tEGYkebPpX8i&TmymEgy(&*=$WbAGO z`JWw`0{i=Zfq1l4Uw-f79^3i%xU+!-s!1XdR)Za5WIcp?LqEw=M8CXDnXLtIhRX8o z;^kjf?yaBazLK;wDVwe-O6!ErZESrU3`{w=ni^x9AOW(eKwFJP_VjMMp+l~_e!A!guOI%*tqCYQ^Typ8Eb&g z@tk9{^!oI4%`vGgJPyZS!(Aisad=OW>^8l;#GBaaAk3!WAWLyk^CFwDcK!Co4CO6m=dvGlmw<3bO%*QAugAUzmB`@9_M_RioZWw<8!2`L0pUvw2 zjH)cu%^@*ulIiTYFw(tD8Kg^K39LwTVcd$*h?$4MA{!NCAkWb+3^s)*qs9M(WM<2o zLcmF;n6rf0C@=B-w8*k#xIl!!96i*gtI0B*WyPul{^HUg@lh}%GRn@J=b72k*6TDa z?OQBOeugRiIg;ZdM_0I?aW+iq%=xHt7X>QZwV5V5osmCqg83Z@`~L!!7VK$ZLRP(p zTZy{3pPZ;zUba#;RGyjJtxY6Fq@V8@)NsOQ$W}m^mthrHE!@-DBqL`KkMQ~8xH}Nu z@T6-Kub2$1UX*734uU($AdR@k1L9Pg{8U3_V4!hVwxZBClAN^Sq>jqAU_i}l@eiiq zll}KKDemDK=cypE-nFxt{@dS@d*+X7s3UJoLC7NfFMy+P{%VzunFXN^s*XMNI_7oD z^|I12osrOV1Ay95CV{OM=azIW9|3q3Q1z6dPQ2V47U@UTz8;|;PJV znXbq0;UxaF%qL~EwgbrV0V6_uSYaL;Z8cv`vM9p3h09-37E|E+Vp1$N<{x4Xll^#+ z-sI%GRbODlc@$`1HA2$?^NAn)$V^NrfzN)=*50}ReJ2M6wDgXM#pZ@&v#g8GP zynNQk^RaC5+0}OPCR!VR){XwlPcMFa|1#FDr0Aw=GP@Mrfx4P)ita`fPTzdL1Ma?S zK3=1Iw;BKV^5uUGGvPOz;rPX$!*uw>$-jT`>IY7jj0Y&ym4d&2`%`7?_)YgQ(mk7e z`ttiQ89s3`WqNV^;q><> zKfF(lB2{&4vK;Fd?>6PO$wIPD-n{&9`tHT|CvSciFQ9YCq`iCh_VnaEd_6gS8875z zIgGik}-vgN9DR;WixaG(<;uV>Vz^XdfYKsGP)38~Dxoo=_=J9I1_?7DO|VtYW(ZkMBl zPDsDRDeQ~NzoO6TeN*qDW=tIzgUJbnsG@d|0@Xd>lsy4du&(q3Yrt$WWAqyv9X>N8 zP`HGNBsmI7wcu&KMw=73(Qommy$Abn;S9{B!KnCXiy|j zcuJ6fNdozyf3k$@CJ`VFVOg}Xp$iNOW$-_pKLA-lHQ`A!F@U1h@J=2;Vm^^yN~{FZ z?ov6DzoZ)R;T^RG9*BCtvd6q+z`Shq+;rjXi~tD#f`O9A z`ig{0qx_PlR%8-C64btY4KZt=43 z5YN*eg≀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

c*HUD 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 z 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¥^U+qkb66Df{MDVKc^RIHC`0+WgqY8{UWc4kGaiR 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 G0Wkoo9R&OU diff --git a/static/babybuddy/js/graph.js b/static/babybuddy/js/graph.js index 07da5dcb..4a156db9 100644 --- a/static/babybuddy/js/graph.js +++ b/static/babybuddy/js/graph.js @@ -1,6 +1,6 @@ /** -* plotly.js (cartesian) v1.58.4 -* Copyright 2012-2020, Plotly, Inc. +* plotly.js (cartesian) v2.0.0 +* Copyright 2012-2021, Plotly, Inc. * All rights reserved. * Licensed under the MIT license */ @@ -72,3694 +72,126 @@ for(var selector in rules) { Lib.addStyleRule(fullSelector, rules[selector]); } -},{"../src/lib":233}],2:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/lib":285}],2:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/transforms/aggregate'); + +},{"../src/transforms/aggregate":541}],3:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/bar'); -},{"../src/traces/bar":344}],3:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/bar":391}],4:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/box'); -},{"../src/traces/box":359}],4:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/traces/box":406}],5:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/components/calendars'); + +},{"../src/components/calendars":153}],6:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/contour'); -},{"../src/traces/contour":379}],5:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/contour":426}],7:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/core'); -},{"../src/core":214}],6:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/core":267}],8:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/transforms/filter'); + +},{"../src/transforms/filter":542}],9:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = _dereq_('../src/transforms/groupby'); + +},{"../src/transforms/groupby":543}],10:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/heatmap'); -},{"../src/traces/heatmap":395}],7:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/heatmap":442}],11:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram'); -},{"../src/traces/histogram":413}],8:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/histogram":460}],12:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2d'); -},{"../src/traces/histogram2d":419}],9:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/histogram2d":466}],13:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/histogram2dcontour'); -},{"../src/traces/histogram2dcontour":423}],10:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/histogram2dcontour":470}],14:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/image'); -},{"../src/traces/image":431}],11:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/image":478}],15:[function(_dereq_,module,exports){ 'use strict'; var Plotly = _dereq_('./core'); Plotly.register([ + // traces _dereq_('./bar'), _dereq_('./box'), _dereq_('./heatmap'), _dereq_('./histogram'), _dereq_('./histogram2d'), _dereq_('./histogram2dcontour'), - _dereq_('./image'), - _dereq_('./pie'), _dereq_('./contour'), _dereq_('./scatterternary'), - _dereq_('./violin') + _dereq_('./violin'), + _dereq_('./image'), + _dereq_('./pie'), + + // transforms + _dereq_('./aggregate'), + _dereq_('./filter'), + _dereq_('./groupby'), + _dereq_('./sort'), + + // components + _dereq_('./calendars'), ]); module.exports = Plotly; -},{"./bar":2,"./box":3,"./contour":4,"./core":5,"./heatmap":6,"./histogram":7,"./histogram2d":8,"./histogram2dcontour":9,"./image":10,"./pie":12,"./scatterternary":13,"./violin":14}],12:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./aggregate":2,"./bar":3,"./box":4,"./calendars":5,"./contour":6,"./core":7,"./filter":8,"./groupby":9,"./heatmap":10,"./histogram":11,"./histogram2d":12,"./histogram2dcontour":13,"./image":14,"./pie":16,"./scatterternary":17,"./sort":18,"./violin":19}],16:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/pie'); -},{"../src/traces/pie":440}],13:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../src/traces/pie":487}],17:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/scatterternary'); -},{"../src/traces/scatterternary":481}],14:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../src/traces/scatterternary":528}],18:[function(_dereq_,module,exports){ +'use strict'; +module.exports = _dereq_('../src/transforms/sort'); + +},{"../src/transforms/sort":545}],19:[function(_dereq_,module,exports){ 'use strict'; module.exports = _dereq_('../src/traces/violin'); -},{"../src/traces/violin":489}],15:[function(_dereq_,module,exports){ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -// Support decoding URL-safe base64 strings, as Node.js does. -// See: https://en.wikipedia.org/wiki/Base64#URL_applications -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function getLens (b64) { - var len = b64.length - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // Trim off extra bytes after placeholder bytes are found - // See: https://github.com/beatgammit/base64-js/issues/42 - var validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - - var placeHoldersLen = validLen === len - ? 0 - : 4 - (validLen % 4) - - return [validLen, placeHoldersLen] -} - -// base64 is 4/3 + up to two characters of the original data -function byteLength (b64) { - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function _byteLength (b64, validLen, placeHoldersLen) { - return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen -} - -function toByteArray (b64) { - var tmp - var lens = getLens(b64) - var validLen = lens[0] - var placeHoldersLen = lens[1] - - var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - - var curByte = 0 - - // if there are placeholders, only get up to the last complete 4 chars - var len = placeHoldersLen > 0 - ? validLen - 4 - : validLen - - var i - for (i = 0; i < len; i += 4) { - tmp = - (revLookup[b64.charCodeAt(i)] << 18) | - (revLookup[b64.charCodeAt(i + 1)] << 12) | - (revLookup[b64.charCodeAt(i + 2)] << 6) | - revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = (tmp >> 16) & 0xFF - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 2) { - tmp = - (revLookup[b64.charCodeAt(i)] << 2) | - (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[curByte++] = tmp & 0xFF - } - - if (placeHoldersLen === 1) { - tmp = - (revLookup[b64.charCodeAt(i)] << 10) | - (revLookup[b64.charCodeAt(i + 1)] << 4) | - (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[curByte++] = (tmp >> 8) & 0xFF - arr[curByte++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + - lookup[num >> 12 & 0x3F] + - lookup[num >> 6 & 0x3F] + - lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = - ((uint8[i] << 16) & 0xFF0000) + - ((uint8[i + 1] << 8) & 0xFF00) + - (uint8[i + 2] & 0xFF) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk( - uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) - )) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push( - lookup[tmp >> 2] + - lookup[(tmp << 4) & 0x3F] + - '==' - ) - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push( - lookup[tmp >> 10] + - lookup[(tmp >> 4) & 0x3F] + - lookup[(tmp << 2) & 0x3F] + - '=' - ) - } - - return parts.join('') -} - -},{}],16:[function(_dereq_,module,exports){ - -},{}],17:[function(_dereq_,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -'use strict'; - -var R = typeof Reflect === 'object' ? Reflect : null -var ReflectApply = R && typeof R.apply === 'function' - ? R.apply - : function ReflectApply(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - } - -var ReflectOwnKeys -if (R && typeof R.ownKeys === 'function') { - ReflectOwnKeys = R.ownKeys -} else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target) - .concat(Object.getOwnPropertySymbols(target)); - }; -} else { - ReflectOwnKeys = function ReflectOwnKeys(target) { - return Object.getOwnPropertyNames(target); - }; -} - -function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); -} - -var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { - return value !== value; -} - -function EventEmitter() { - EventEmitter.init.call(this); -} -module.exports = EventEmitter; -module.exports.once = once; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._eventsCount = 0; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -var defaultMaxListeners = 10; - -function checkListener(listener) { - if (typeof listener !== 'function') { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } -} - -Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); - } - defaultMaxListeners = arg; - } -}); - -EventEmitter.init = function() { - - if (this._events === undefined || - this._events === Object.getPrototypeOf(this)._events) { - this._events = Object.create(null); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; -}; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); - } - this._maxListeners = n; - return this; -}; - -function _getMaxListeners(that) { - if (that._maxListeners === undefined) - return EventEmitter.defaultMaxListeners; - return that._maxListeners; -} - -EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); -}; - -EventEmitter.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = (type === 'error'); - - var events = this._events; - if (events !== undefined) - doError = (doError && events.error === undefined); - else if (!doError) - return false; - - // If there is no 'error' event listener then throw. - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - // Note: The comments on the `throw` lines are intentional, they show - // up in Node's output if this results in an unhandled exception. - throw er; // Unhandled 'error' event - } - // At least give some kind of context to the user - var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); - err.context = er; - throw err; // Unhandled 'error' event - } - - var handler = events[type]; - - if (handler === undefined) - return false; - - if (typeof handler === 'function') { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - - return true; -}; - -function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - checkListener(listener); - - events = target._events; - if (events === undefined) { - events = target._events = Object.create(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener !== undefined) { - target.emit('newListener', type, - listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; - } - existing = events[type]; - } - - if (existing === undefined) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = - prepend ? [listener, existing] : [existing, listener]; - // If we've already got an array, just append. - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - - // Check for listener leak - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - // No error code for this since it is a Warning - // eslint-disable-next-line no-restricted-syntax - var w = new Error('Possible EventEmitter memory leak detected. ' + - existing.length + ' ' + String(type) + ' listeners ' + - 'added. Use emitter.setMaxListeners() to ' + - 'increase limit'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - - return target; -} - -EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.prependListener = - function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - -function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } -} - -function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; -} - -EventEmitter.prototype.once = function once(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; -}; - -EventEmitter.prototype.prependOnceListener = - function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - -// Emits a 'removeListener' event if and only if the listener was removed. -EventEmitter.prototype.removeListener = - function removeListener(type, listener) { - var list, events, position, i, originalListener; - - checkListener(listener); - - events = this._events; - if (events === undefined) - return this; - - list = events[type]; - if (list === undefined) - return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else { - delete events[type]; - if (events.removeListener) - this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) - return this; - - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - - if (list.length === 1) - events[type] = list[0]; - - if (events.removeListener !== undefined) - this.emit('removeListener', type, originalListener || listener); - } - - return this; - }; - -EventEmitter.prototype.off = EventEmitter.prototype.removeListener; - -EventEmitter.prototype.removeAllListeners = - function removeAllListeners(type) { - var listeners, events, i; - - events = this._events; - if (events === undefined) - return this; - - // not listening for removeListener, no need to emit - if (events.removeListener === undefined) { - if (arguments.length === 0) { - this._events = Object.create(null); - this._eventsCount = 0; - } else if (events[type] !== undefined) { - if (--this._eventsCount === 0) - this._events = Object.create(null); - else - delete events[type]; - } - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = Object.keys(events); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = Object.create(null); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners !== undefined) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - - return this; - }; - -function _listeners(target, type, unwrap) { - var events = target._events; - - if (events === undefined) - return []; - - var evlistener = events[type]; - if (evlistener === undefined) - return []; - - if (typeof evlistener === 'function') - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - - return unwrap ? - unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); -} - -EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); -}; - -EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); -}; - -EventEmitter.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } -}; - -EventEmitter.prototype.listenerCount = listenerCount; -function listenerCount(type) { - var events = this._events; - - if (events !== undefined) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener !== undefined) { - return evlistener.length; - } - } - - return 0; -} - -EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; -}; - -function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; -} - -function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); -} - -function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; -} - -function once(emitter, name) { - return new Promise(function (resolve, reject) { - function eventListener() { - if (errorListener !== undefined) { - emitter.removeListener('error', errorListener); - } - resolve([].slice.call(arguments)); - }; - var errorListener; - - // Adding an error listener is not optional because - // if an error is thrown on an event emitter we cannot - // guarantee that the actual event we are waiting will - // be fired. The result could be a silent way to create - // memory or file descriptor leaks, which is something - // we should avoid. - if (name !== 'error') { - errorListener = function errorListener(err) { - emitter.removeListener(name, eventListener); - reject(err); - }; - - emitter.once('error', errorListener); - } - - emitter.once(name, eventListener); - }); -} - -},{}],18:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = _dereq_('base64-js') -var ieee754 = _dereq_('ieee754') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -var K_MAX_LENGTH = 0x7fffffff -exports.kMaxLength = K_MAX_LENGTH - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Print warning and recommend using `buffer` v4.x which has an Object - * implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * We report that the browser does not support typed arrays if the are not subclassable - * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` - * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support - * for __proto__ and has a buggy typed array implementation. - */ -Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() - -if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && - typeof console.error === 'function') { - console.error( - 'This browser lacks typed array (Uint8Array) support which is required by ' + - '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' - ) -} - -function typedArraySupport () { - // Can typed array instances can be augmented? - try { - var arr = new Uint8Array(1) - arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } - return arr.foo() === 42 - } catch (e) { - return false - } -} - -Object.defineProperty(Buffer.prototype, 'parent', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.buffer - } -}) - -Object.defineProperty(Buffer.prototype, 'offset', { - enumerable: true, - get: function () { - if (!Buffer.isBuffer(this)) return undefined - return this.byteOffset - } -}) - -function createBuffer (length) { - if (length > K_MAX_LENGTH) { - throw new RangeError('The value "' + length + '" is invalid for option "size"') - } - // Return an augmented `Uint8Array` instance - var buf = new Uint8Array(length) - buf.__proto__ = Buffer.prototype - return buf -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new TypeError( - 'The "string" argument must be of type string. Received type number' - ) - } - return allocUnsafe(arg) - } - return from(arg, encodingOrOffset, length) -} - -// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 -if (typeof Symbol !== 'undefined' && Symbol.species != null && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true, - enumerable: false, - writable: false - }) -} - -Buffer.poolSize = 8192 // not used by this implementation - -function from (value, encodingOrOffset, length) { - if (typeof value === 'string') { - return fromString(value, encodingOrOffset) - } - - if (ArrayBuffer.isView(value)) { - return fromArrayLike(value) - } - - if (value == null) { - throw TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) - } - - if (isInstance(value, ArrayBuffer) || - (value && isInstance(value.buffer, ArrayBuffer))) { - return fromArrayBuffer(value, encodingOrOffset, length) - } - - if (typeof value === 'number') { - throw new TypeError( - 'The "value" argument must not be of type number. Received type number' - ) - } - - var valueOf = value.valueOf && value.valueOf() - if (valueOf != null && valueOf !== value) { - return Buffer.from(valueOf, encodingOrOffset, length) - } - - var b = fromObject(value) - if (b) return b - - if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && - typeof value[Symbol.toPrimitive] === 'function') { - return Buffer.from( - value[Symbol.toPrimitive]('string'), encodingOrOffset, length - ) - } - - throw new TypeError( - 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + - 'or Array-like Object. Received type ' + (typeof value) - ) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(value, encodingOrOffset, length) -} - -// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: -// https://github.com/feross/buffer/pull/148 -Buffer.prototype.__proto__ = Uint8Array.prototype -Buffer.__proto__ = Uint8Array - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be of type number') - } else if (size < 0) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } -} - -function alloc (size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(size).fill(fill, encoding) - : createBuffer(size).fill(fill) - } - return createBuffer(size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(size, fill, encoding) -} - -function allocUnsafe (size) { - assertSize(size) - return createBuffer(size < 0 ? 0 : checked(size) | 0) -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(size) -} - -function fromString (string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - - var length = byteLength(string, encoding) | 0 - var buf = createBuffer(length) - - var actual = buf.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - buf = buf.slice(0, actual) - } - - return buf -} - -function fromArrayLike (array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - var buf = createBuffer(length) - for (var i = 0; i < length; i += 1) { - buf[i] = array[i] & 255 - } - return buf -} - -function fromArrayBuffer (array, byteOffset, length) { - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('"offset" is outside of buffer bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('"length" is outside of buffer bounds') - } - - var buf - if (byteOffset === undefined && length === undefined) { - buf = new Uint8Array(array) - } else if (length === undefined) { - buf = new Uint8Array(array, byteOffset) - } else { - buf = new Uint8Array(array, byteOffset, length) - } - - // Return an augmented `Uint8Array` instance - buf.__proto__ = Buffer.prototype - return buf -} - -function fromObject (obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - var buf = createBuffer(len) - - if (buf.length === 0) { - return buf - } - - obj.copy(buf, 0, 0, len) - return buf - } - - if (obj.length !== undefined) { - if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { - return createBuffer(0) - } - return fromArrayLike(obj) - } - - if (obj.type === 'Buffer' && Array.isArray(obj.data)) { - return fromArrayLike(obj.data) - } -} - -function checked (length) { - // Note: cannot use `length < K_MAX_LENGTH` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= K_MAX_LENGTH) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return b != null && b._isBuffer === true && - b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false -} - -Buffer.compare = function compare (a, b) { - if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) - if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError( - 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' - ) - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!Array.isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (isInstance(buf, Uint8Array)) { - buf = Buffer.from(buf) - } - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - throw new TypeError( - 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + - 'Received type ' + typeof string - ) - } - - var len = string.length - var mustMatch = (arguments.length > 2 && arguments[2] === true) - if (!mustMatch && len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) { - return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 - } - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) -// to detect a Buffer instance. It's not possible to use `instanceof Buffer` -// reliably in a browserify context because there could be multiple different -// copies of the 'buffer' package in use. This method works even for Buffer -// instances that were created from another copy of the `buffer` package. -// See: https://github.com/feross/buffer/issues/154 -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.toLocaleString = Buffer.prototype.toString - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() - if (this.length > max) str += ' ... ' - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (isInstance(target, Uint8Array)) { - target = Buffer.from(target, target.offset, target.byteLength) - } - if (!Buffer.isBuffer(target)) { - throw new TypeError( - 'The "target" argument must be one of type Buffer or Uint8Array. ' + - 'Received type ' + (typeof target) - ) - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (numberIsNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - var strLen = string.length - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (numberIsNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset >>> 0 - if (isFinite(length)) { - length = length >>> 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf = this.subarray(start, end) - // Return an augmented `Uint8Array` instance - newBuf.__proto__ = Buffer.prototype - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - offset = offset >>> 0 - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - byteLength = byteLength >>> 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - var limit = Math.pow(2, (8 * byteLength) - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - value = +value - offset = offset >>> 0 - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('Index out of range') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - - if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { - // Use built-in when available, missing from IE11 - this.copyWithin(targetStart, start, end) - } else if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (var i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, end), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if ((encoding === 'utf8' && code < 128) || - encoding === 'latin1') { - // Fast path: If `val` fits into a single byte, use that numeric value. - val = code - } - } - } else if (typeof val === 'number') { - val = val & 255 - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : Buffer.from(val, encoding) - var len = bytes.length - if (len === 0) { - throw new TypeError('The value "' + val + - '" is invalid for argument "value"') - } - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node takes equal signs as end of the Base64 encoding - str = str.split('=')[0] - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = str.trim().replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass -// the `instanceof` check but they should be treated as of that type. -// See: https://github.com/feross/buffer/issues/166 -function isInstance (obj, type) { - return obj instanceof type || - (obj != null && obj.constructor != null && obj.constructor.name != null && - obj.constructor.name === type.name) -} -function numberIsNaN (obj) { - // For IE11 support - return obj !== obj // eslint-disable-line no-self-compare -} - -}).call(this)}).call(this,_dereq_("buffer").Buffer) -},{"base64-js":15,"buffer":18,"ieee754":56}],19:[function(_dereq_,module,exports){ -// https://d3js.org/d3-time-format/ v2.2.3 Copyright 2019 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, _dereq_('d3-time')) : -typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) : -(global = global || self, factory(global.d3 = global.d3 || {}, global.d3)); -}(this, function (exports, d3Time) { 'use strict'; - -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date.setFullYear(d.y); - return date; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} - -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date.setUTCFullYear(d.y); - return date; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} - -function newDate(y, m, d) { - return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; -} - -function formatLocale(locale) { - var locale_dateTime = locale.dateTime, - locale_date = locale.date, - locale_time = locale.time, - locale_periods = locale.periods, - locale_weekdays = locale.days, - locale_shortWeekdays = locale.shortDays, - locale_months = locale.months, - locale_shortMonths = locale.shortMonths; - - var periodRe = formatRe(locale_periods), - periodLookup = formatLookup(locale_periods), - weekdayRe = formatRe(locale_weekdays), - weekdayLookup = formatLookup(locale_weekdays), - shortWeekdayRe = formatRe(locale_shortWeekdays), - shortWeekdayLookup = formatLookup(locale_shortWeekdays), - monthRe = formatRe(locale_months), - monthLookup = formatLookup(locale_months), - shortMonthRe = formatRe(locale_shortMonths), - shortMonthLookup = formatLookup(locale_shortMonths); - - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - - // These recursive directive definitions must be deferred. - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - - function newFormat(specifier, formats) { - return function(date) { - var string = [], - i = -1, - j = 0, - n = specifier.length, - c, - pad, - format; - - if (!(date instanceof Date)) date = new Date(+date); - - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); - else pad = c === "e" ? " " : "0"; - if (format = formats[c]) c = format(date, pad); - string.push(c); - j = i + 1; - } - } - - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, undefined, 1), - i = parseSpecifier(d, specifier, string += "", 0), - week, day; - if (i != string.length) return null; - - // If a UNIX timestamp is specified, return it. - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); - - // If this is utcParse, never use the local timezone. - if (Z && !("Z" in d)) d.Z = 0; - - // The am-pm flag is 0 for AM, and 1 for PM. - if ("p" in d) d.H = d.H % 12 + d.p * 12; - - // If the month was not specified, inherit from the quarter. - if (d.m === undefined) d.m = "q" in d ? d.q : 0; - - // Convert day-of-week and week-of-year to day-of-year. - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); - week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week); - week = d3Time.utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); - week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week); - week = d3Time.timeDay.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; - } - - // If a time zone is specified, all fields are interpreted as UTC and then - // offset according to the specified time zone. - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - - // Otherwise, all fields are in local time. - return localDate(d); - }; - } - - function parseSpecifier(d, specifier, string, j) { - var i = 0, - n = specifier.length, - m = string.length, - c, - parse; - - while (i < n) { - if (j >= m) return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || ((j = parse(d, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - - return j; - } - - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { return specifier; }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { return specifier; }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { return specifier; }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { return specifier; }; - return p; - } - }; -} - -var pads = {"-": "", "_": " ", "0": "0"}, - numberRe = /^\s*\d+/, // note: ignores next directive - percentRe = /^%/, - requoteRe = /[\\^$*+?|[\]().{}]/g; - -function pad(value, fill, width) { - var sign = value < 0 ? "-" : "", - string = (sign ? -value : value) + "", - length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); -} - -function requote(s) { - return s.replace(requoteRe, "\\$&"); -} - -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} - -function formatLookup(names) { - var map = {}, i = -1, n = names.length; - while (++i < n) map[names[i].toLowerCase()] = i; - return map; -} - -function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} - -function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} - -function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} - -function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; -} - -function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} - -function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} - -function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} - -function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} - -function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} - -function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} - -function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} - -function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} - -function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} - -function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; -} - -function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} - -function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} - -function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} - -function formatDayOfMonth(d, p) { - return pad(d.getDate(), p, 2); -} - -function formatHour24(d, p) { - return pad(d.getHours(), p, 2); -} - -function formatHour12(d, p) { - return pad(d.getHours() % 12 || 12, p, 2); -} - -function formatDayOfYear(d, p) { - return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3); -} - -function formatMilliseconds(d, p) { - return pad(d.getMilliseconds(), p, 3); -} - -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} - -function formatMonthNumber(d, p) { - return pad(d.getMonth() + 1, p, 2); -} - -function formatMinutes(d, p) { - return pad(d.getMinutes(), p, 2); -} - -function formatSeconds(d, p) { - return pad(d.getSeconds(), p, 2); -} - -function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; -} - -function formatWeekNumberSunday(d, p) { - return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2); -} - -function formatWeekNumberISO(d, p) { - var day = d.getDay(); - d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d); - return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2); -} - -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} - -function formatWeekNumberMonday(d, p) { - return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2); -} - -function formatYear(d, p) { - return pad(d.getFullYear() % 100, p, 2); -} - -function formatFullYear(d, p) { - return pad(d.getFullYear() % 10000, p, 4); -} - -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) - + pad(z / 60 | 0, "0", 2) - + pad(z % 60, "0", 2); -} - -function formatUTCDayOfMonth(d, p) { - return pad(d.getUTCDate(), p, 2); -} - -function formatUTCHour24(d, p) { - return pad(d.getUTCHours(), p, 2); -} - -function formatUTCHour12(d, p) { - return pad(d.getUTCHours() % 12 || 12, p, 2); -} - -function formatUTCDayOfYear(d, p) { - return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3); -} - -function formatUTCMilliseconds(d, p) { - return pad(d.getUTCMilliseconds(), p, 3); -} - -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} - -function formatUTCMonthNumber(d, p) { - return pad(d.getUTCMonth() + 1, p, 2); -} - -function formatUTCMinutes(d, p) { - return pad(d.getUTCMinutes(), p, 2); -} - -function formatUTCSeconds(d, p) { - return pad(d.getUTCSeconds(), p, 2); -} - -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} - -function formatUTCWeekNumberSunday(d, p) { - return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2); -} - -function formatUTCWeekNumberISO(d, p) { - var day = d.getUTCDay(); - d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d); - return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2); -} - -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} - -function formatUTCWeekNumberMonday(d, p) { - return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2); -} - -function formatUTCYear(d, p) { - return pad(d.getUTCFullYear() % 100, p, 2); -} - -function formatUTCFullYear(d, p) { - return pad(d.getUTCFullYear() % 10000, p, 4); -} - -function formatUTCZone() { - return "+0000"; -} - -function formatLiteralPercent() { - return "%"; -} - -function formatUnixTimestamp(d) { - return +d; -} - -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1000); -} - -var locale; - -defaultLocale({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); - -function defaultLocale(definition) { - locale = formatLocale(definition); - exports.timeFormat = locale.format; - exports.timeParse = locale.parse; - exports.utcFormat = locale.utcFormat; - exports.utcParse = locale.utcParse; - return locale; -} - -var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; - -function formatIsoNative(date) { - return date.toISOString(); -} - -var formatIso = Date.prototype.toISOString - ? formatIsoNative - : exports.utcFormat(isoSpecifier); - -function parseIsoNative(string) { - var date = new Date(string); - return isNaN(date) ? null : date; -} - -var parseIso = +new Date("2000-01-01T00:00:00.000Z") - ? parseIsoNative - : exports.utcParse(isoSpecifier); - -exports.isoFormat = formatIso; -exports.isoParse = parseIso; -exports.timeFormatDefaultLocale = defaultLocale; -exports.timeFormatLocale = formatLocale; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); - -},{"d3-time":20}],20:[function(_dereq_,module,exports){ -// https://d3js.org/d3-time/ v1.1.0 Copyright 2019 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : -typeof define === 'function' && define.amd ? define(['exports'], factory) : -(global = global || self, factory(global.d3 = global.d3 || {})); -}(this, function (exports) { 'use strict'; - -var t0 = new Date, - t1 = new Date; - -function newInterval(floori, offseti, count, field) { - - function interval(date) { - return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; - } - - interval.floor = function(date) { - return floori(date = new Date(+date)), date; - }; - - interval.ceil = function(date) { - return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; - }; - - interval.round = function(date) { - var d0 = interval(date), - d1 = interval.ceil(date); - return date - d0 < d1 - date ? d0 : d1; - }; - - interval.offset = function(date, step) { - return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; - }; - - interval.range = function(start, stop, step) { - var range = [], previous; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date - do range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - - interval.filter = function(test) { - return newInterval(function(date) { - if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); - }, function(date, step) { - if (date >= date) { - if (step < 0) while (++step <= 0) { - while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty - } else while (--step >= 0) { - while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty - } - } - }); - }; - - if (count) { - interval.count = function(start, end) { - t0.setTime(+start), t1.setTime(+end); - floori(t0), floori(t1); - return Math.floor(count(t0, t1)); - }; - - interval.every = function(step) { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null - : !(step > 1) ? interval - : interval.filter(field - ? function(d) { return field(d) % step === 0; } - : function(d) { return interval.count(0, d) % step === 0; }); - }; - } - - return interval; -} - -var millisecond = newInterval(function() { - // noop -}, function(date, step) { - date.setTime(+date + step); -}, function(start, end) { - return end - start; -}); - -// An optimized implementation for this simple case. -millisecond.every = function(k) { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) return null; - if (!(k > 1)) return millisecond; - return newInterval(function(date) { - date.setTime(Math.floor(date / k) * k); - }, function(date, step) { - date.setTime(+date + step * k); - }, function(start, end) { - return (end - start) / k; - }); -}; -var milliseconds = millisecond.range; - -var durationSecond = 1e3; -var durationMinute = 6e4; -var durationHour = 36e5; -var durationDay = 864e5; -var durationWeek = 6048e5; - -var second = newInterval(function(date) { - date.setTime(date - date.getMilliseconds()); -}, function(date, step) { - date.setTime(+date + step * durationSecond); -}, function(start, end) { - return (end - start) / durationSecond; -}, function(date) { - return date.getUTCSeconds(); -}); -var seconds = second.range; - -var minute = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getMinutes(); -}); -var minutes = minute.range; - -var hour = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getHours(); -}); -var hours = hour.range; - -var day = newInterval(function(date) { - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setDate(date.getDate() + step); -}, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; -}, function(date) { - return date.getDate() - 1; -}); -var days = day.range; - -function weekday(i) { - return newInterval(function(date) { - date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setDate(date.getDate() + step * 7); - }, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} - -var sunday = weekday(0); -var monday = weekday(1); -var tuesday = weekday(2); -var wednesday = weekday(3); -var thursday = weekday(4); -var friday = weekday(5); -var saturday = weekday(6); - -var sundays = sunday.range; -var mondays = monday.range; -var tuesdays = tuesday.range; -var wednesdays = wednesday.range; -var thursdays = thursday.range; -var fridays = friday.range; -var saturdays = saturday.range; - -var month = newInterval(function(date) { - date.setDate(1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setMonth(date.getMonth() + step); -}, function(start, end) { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; -}, function(date) { - return date.getMonth(); -}); -var months = month.range; - -var year = newInterval(function(date) { - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setFullYear(date.getFullYear() + step); -}, function(start, end) { - return end.getFullYear() - start.getFullYear(); -}, function(date) { - return date.getFullYear(); -}); - -// An optimized implementation for this simple case. -year.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setFullYear(Math.floor(date.getFullYear() / k) * k); - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setFullYear(date.getFullYear() + step * k); - }); -}; -var years = year.range; - -var utcMinute = newInterval(function(date) { - date.setUTCSeconds(0, 0); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getUTCMinutes(); -}); -var utcMinutes = utcMinute.range; - -var utcHour = newInterval(function(date) { - date.setUTCMinutes(0, 0, 0); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getUTCHours(); -}); -var utcHours = utcHour.range; - -var utcDay = newInterval(function(date) { - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCDate(date.getUTCDate() + step); -}, function(start, end) { - return (end - start) / durationDay; -}, function(date) { - return date.getUTCDate() - 1; -}); -var utcDays = utcDay.range; - -function utcWeekday(i) { - return newInterval(function(date) { - date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCDate(date.getUTCDate() + step * 7); - }, function(start, end) { - return (end - start) / durationWeek; - }); -} - -var utcSunday = utcWeekday(0); -var utcMonday = utcWeekday(1); -var utcTuesday = utcWeekday(2); -var utcWednesday = utcWeekday(3); -var utcThursday = utcWeekday(4); -var utcFriday = utcWeekday(5); -var utcSaturday = utcWeekday(6); - -var utcSundays = utcSunday.range; -var utcMondays = utcMonday.range; -var utcTuesdays = utcTuesday.range; -var utcWednesdays = utcWednesday.range; -var utcThursdays = utcThursday.range; -var utcFridays = utcFriday.range; -var utcSaturdays = utcSaturday.range; - -var utcMonth = newInterval(function(date) { - date.setUTCDate(1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCMonth(date.getUTCMonth() + step); -}, function(start, end) { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; -}, function(date) { - return date.getUTCMonth(); -}); -var utcMonths = utcMonth.range; - -var utcYear = newInterval(function(date) { - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step); -}, function(start, end) { - return end.getUTCFullYear() - start.getUTCFullYear(); -}, function(date) { - return date.getUTCFullYear(); -}); - -// An optimized implementation for this simple case. -utcYear.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step * k); - }); -}; -var utcYears = utcYear.range; - -exports.timeDay = day; -exports.timeDays = days; -exports.timeFriday = friday; -exports.timeFridays = fridays; -exports.timeHour = hour; -exports.timeHours = hours; -exports.timeInterval = newInterval; -exports.timeMillisecond = millisecond; -exports.timeMilliseconds = milliseconds; -exports.timeMinute = minute; -exports.timeMinutes = minutes; -exports.timeMonday = monday; -exports.timeMondays = mondays; -exports.timeMonth = month; -exports.timeMonths = months; -exports.timeSaturday = saturday; -exports.timeSaturdays = saturdays; -exports.timeSecond = second; -exports.timeSeconds = seconds; -exports.timeSunday = sunday; -exports.timeSundays = sundays; -exports.timeThursday = thursday; -exports.timeThursdays = thursdays; -exports.timeTuesday = tuesday; -exports.timeTuesdays = tuesdays; -exports.timeWednesday = wednesday; -exports.timeWednesdays = wednesdays; -exports.timeWeek = sunday; -exports.timeWeeks = sundays; -exports.timeYear = year; -exports.timeYears = years; -exports.utcDay = utcDay; -exports.utcDays = utcDays; -exports.utcFriday = utcFriday; -exports.utcFridays = utcFridays; -exports.utcHour = utcHour; -exports.utcHours = utcHours; -exports.utcMillisecond = millisecond; -exports.utcMilliseconds = milliseconds; -exports.utcMinute = utcMinute; -exports.utcMinutes = utcMinutes; -exports.utcMonday = utcMonday; -exports.utcMondays = utcMondays; -exports.utcMonth = utcMonth; -exports.utcMonths = utcMonths; -exports.utcSaturday = utcSaturday; -exports.utcSaturdays = utcSaturdays; -exports.utcSecond = second; -exports.utcSeconds = seconds; -exports.utcSunday = utcSunday; -exports.utcSundays = utcSundays; -exports.utcThursday = utcThursday; -exports.utcThursdays = utcThursdays; -exports.utcTuesday = utcTuesday; -exports.utcTuesdays = utcTuesdays; -exports.utcWednesday = utcWednesday; -exports.utcWednesdays = utcWednesdays; -exports.utcWeek = utcSunday; -exports.utcWeeks = utcSundays; -exports.utcYear = utcYear; -exports.utcYears = utcYears; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); - -},{}],21:[function(_dereq_,module,exports){ +},{"../src/traces/violin":536}],20:[function(_dereq_,module,exports){ !function() { var d3 = { - version: "3.5.17" + version: "3.6.0" }; var d3_arraySlice = [].slice, d3_array = function(list) { return d3_arraySlice.call(list); @@ -5796,9 +2228,14 @@ Object.defineProperty(exports, '__esModule', { value: true }); var o; return dsv.parseRows(text, function(row, i) { if (o) return o(row, i - 1); - var a = new Function("d", "return {" + row.map(function(name, i) { - return JSON.stringify(name) + ": d[" + i + "]"; - }).join(",") + "}"); + var a = function(d) { + var obj = {}; + var len = row.length; + for (var k = 0; k < len; ++k) { + obj[row[k]] = d[k]; + } + return obj; + }; o = f ? function(row, i) { return f(a(row), i); } : a; @@ -13310,1186 +9747,4639 @@ Object.defineProperty(exports, '__esModule', { value: true }); return request.responseXML; }); if (typeof define === "function" && define.amd) this.d3 = d3, define(d3); else if (typeof module === "object" && module.exports) module.exports = d3; else this.d3 = d3; -}(); -},{}],22:[function(_dereq_,module,exports){ -(function (process,global){(function (){ +}.apply(self); +},{}],21:[function(_dereq_,module,exports){ +(function (global){(function (){ +'use strict'; + +var objectAssign = _dereq_('object-assign'); + +// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js +// original notice: + /*! - * @overview es6-promise - a tiny implementation of Promises/A+. - * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) - * @license Licensed under MIT license - * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE - * @version v4.2.8+1e68dce6 + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT */ +function compare(a, b) { + if (a === b) { + return 0; + } -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.ES6Promise = factory()); -}(this, (function () { 'use strict'; + var x = a.length; + var y = b.length; -function objectOrFunction(x) { - var type = typeof x; - return x !== null && (type === 'object' || type === 'function'); + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); } -function isFunction(x) { - return typeof x === 'function'; +// based on node assert, original notice: +// NB: The URL to the CommonJS spec is kept just for tradition. +// node-assert has evolved a lot since then, both in API and behavior. + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS 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. + +var util = _dereq_('util/'); +var hasOwn = Object.prototype.hasOwnProperty; +var pSlice = Array.prototype.slice; +var functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; +}()); +function pToString (obj) { + return Object.prototype.toString.call(obj); } - - - -var _isArray = void 0; -if (Array.isArray) { - _isArray = Array.isArray; -} else { - _isArray = function (x) { - return Object.prototype.toString.call(x) === '[object Array]'; - }; +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; } +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. -var isArray = _isArray; +var assert = module.exports = ok; -var len = 0; -var vertxNext = void 0; -var customSchedulerFn = void 0; +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) -var asap = function asap(callback, arg) { - queue[len] = callback; - queue[len + 1] = arg; - len += 2; - if (len === 2) { - // If len is 2, that means that we need to schedule an async flush. - // If additional callbacks are queued before the queue is flushed, they - // will be processed by this flush that we are scheduling. - if (customSchedulerFn) { - customSchedulerFn(flush); - } else { - scheduleFlush(); +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; } } }; -function setScheduler(scheduleFn) { - customSchedulerFn = scheduleFn; +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect(self.expected), 128); } -function setAsap(asapFn) { - asap = asapFn; +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); } -var browserWindow = typeof window !== 'undefined' ? window : undefined; -var browserGlobal = browserWindow || {}; -var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; -var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; -// test for web worker but not in IE10 -var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. -// node -function useNextTick() { - // node version 0.10.x displays a deprecation warning when nextTick is used recursively - // see https://github.com/cujojs/when/issues/410 for details - return function () { - return process.nextTick(flush); +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); + } +}; + +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +assert.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } +} + + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } + + if (Error.isPrototypeOf(expected)) { + return false; + } + + return expected.call({}, actual) === true; +} + +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + actual = _tryBlock(block); + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +}; + +assert.ifError = function(err) { if (err) throw err; }; + +// Expose a strict only variant of assert +function strict(value, message) { + if (!value) fail(value, true, message, '==', strict); +} +assert.strict = objectAssign(strict, assert, { + equal: assert.strictEqual, + deepEqual: assert.deepStrictEqual, + notEqual: assert.notStrictEqual, + notDeepEqual: assert.notDeepStrictEqual +}); +assert.strict.strict = assert.strict; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"object-assign":71,"util/":24}],22:[function(_dereq_,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } } -// vertx -function useVertxTimer() { - if (typeof vertxNext !== 'undefined') { - return function () { - vertxNext(flush); +},{}],23:[function(_dereq_,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],24:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); }; } - return useSetTimeout(); -} - -function useMutationObserver() { - var iterations = 0; - var observer = new BrowserMutationObserver(flush); - var node = document.createTextNode(''); - observer.observe(node, { characterData: true }); - - return function () { - node.data = iterations = ++iterations % 2; - }; -} - -// web worker -function useMessageChannel() { - var channel = new MessageChannel(); - channel.port1.onmessage = flush; - return function () { - return channel.port2.postMessage(0); - }; -} - -function useSetTimeout() { - // Store setTimeout reference so es6-promise will be unaffected by - // other code modifying setTimeout (like sinon.useFakeTimers()) - var globalSetTimeout = setTimeout; - return function () { - return globalSetTimeout(flush, 1); - }; -} - -var queue = new Array(1000); -function flush() { - for (var i = 0; i < len; i += 2) { - var callback = queue[i]; - var arg = queue[i + 1]; - - callback(arg); - - queue[i] = undefined; - queue[i + 1] = undefined; + if (process.noDeprecation === true) { + return fn; } - len = 0; -} - -function attemptVertx() { - try { - var vertx = Function('return this')().require('vertx'); - vertxNext = vertx.runOnLoop || vertx.runOnContext; - return useVertxTimer(); - } catch (e) { - return useSetTimeout(); - } -} - -var scheduleFlush = void 0; -// Decide what async method to use to triggering processing of queued callbacks: -if (isNode) { - scheduleFlush = useNextTick(); -} else if (BrowserMutationObserver) { - scheduleFlush = useMutationObserver(); -} else if (isWorker) { - scheduleFlush = useMessageChannel(); -} else if (browserWindow === undefined && typeof _dereq_ === 'function') { - scheduleFlush = attemptVertx(); -} else { - scheduleFlush = useSetTimeout(); -} - -function then(onFulfillment, onRejection) { - var parent = this; - - var child = new this.constructor(noop); - - if (child[PROMISE_ID] === undefined) { - makePromise(child); - } - - var _state = parent._state; - - - if (_state) { - var callback = arguments[_state - 1]; - asap(function () { - return invokeCallback(_state, child, callback, parent._result); - }); - } else { - subscribe(parent, child, onFulfillment, onRejection); - } - - return child; -} - -/** - `Promise.resolve` returns a promise that will become resolved with the - passed `value`. It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - resolve(1); - }); - - promise.then(function(value){ - // value === 1 - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.resolve(1); - - promise.then(function(value){ - // value === 1 - }); - ``` - - @method resolve - @static - @param {Any} value value that the returned promise will be resolved with - Useful for tooling. - @return {Promise} a promise that will become fulfilled with the given - `value` -*/ -function resolve$1(object) { - /*jshint validthis:true */ - var Constructor = this; - - if (object && typeof object === 'object' && object.constructor === Constructor) { - return object; - } - - var promise = new Constructor(noop); - resolve(promise, object); - return promise; -} - -var PROMISE_ID = Math.random().toString(36).substring(2); - -function noop() {} - -var PENDING = void 0; -var FULFILLED = 1; -var REJECTED = 2; - -function selfFulfillment() { - return new TypeError("You cannot resolve a promise with itself"); -} - -function cannotReturnOwn() { - return new TypeError('A promises callback cannot return that same promise.'); -} - -function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { - try { - then$$1.call(value, fulfillmentHandler, rejectionHandler); - } catch (e) { - return e; - } -} - -function handleForeignThenable(promise, thenable, then$$1) { - asap(function (promise) { - var sealed = false; - var error = tryThen(then$$1, thenable, function (value) { - if (sealed) { - return; - } - sealed = true; - if (thenable !== value) { - resolve(promise, value); + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); } else { - fulfill(promise, value); + console.error(msg); } - }, function (reason) { - if (sealed) { - return; - } - sealed = true; - - reject(promise, reason); - }, 'Settle: ' + (promise._label || ' unknown promise')); - - if (!sealed && error) { - sealed = true; - reject(promise, error); + warned = true; } - }, promise); -} - -function handleOwnThenable(promise, thenable) { - if (thenable._state === FULFILLED) { - fulfill(promise, thenable._result); - } else if (thenable._state === REJECTED) { - reject(promise, thenable._result); - } else { - subscribe(thenable, undefined, function (value) { - return resolve(promise, value); - }, function (reason) { - return reject(promise, reason); - }); - } -} - -function handleMaybeThenable(promise, maybeThenable, then$$1) { - if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { - handleOwnThenable(promise, maybeThenable); - } else { - if (then$$1 === undefined) { - fulfill(promise, maybeThenable); - } else if (isFunction(then$$1)) { - handleForeignThenable(promise, maybeThenable, then$$1); - } else { - fulfill(promise, maybeThenable); - } - } -} - -function resolve(promise, value) { - if (promise === value) { - reject(promise, selfFulfillment()); - } else if (objectOrFunction(value)) { - var then$$1 = void 0; - try { - then$$1 = value.then; - } catch (error) { - reject(promise, error); - return; - } - handleMaybeThenable(promise, value, then$$1); - } else { - fulfill(promise, value); - } -} - -function publishRejection(promise) { - if (promise._onerror) { - promise._onerror(promise._result); + return fn.apply(this, arguments); } - publish(promise); -} - -function fulfill(promise, value) { - if (promise._state !== PENDING) { - return; - } - - promise._result = value; - promise._state = FULFILLED; - - if (promise._subscribers.length !== 0) { - asap(publish, promise); - } -} - -function reject(promise, reason) { - if (promise._state !== PENDING) { - return; - } - promise._state = REJECTED; - promise._result = reason; - - asap(publishRejection, promise); -} - -function subscribe(parent, child, onFulfillment, onRejection) { - var _subscribers = parent._subscribers; - var length = _subscribers.length; - - - parent._onerror = null; - - _subscribers[length] = child; - _subscribers[length + FULFILLED] = onFulfillment; - _subscribers[length + REJECTED] = onRejection; - - if (length === 0 && parent._state) { - asap(publish, parent); - } -} - -function publish(promise) { - var subscribers = promise._subscribers; - var settled = promise._state; - - if (subscribers.length === 0) { - return; - } - - var child = void 0, - callback = void 0, - detail = promise._result; - - for (var i = 0; i < subscribers.length; i += 3) { - child = subscribers[i]; - callback = subscribers[i + settled]; - - if (child) { - invokeCallback(settled, child, callback, detail); - } else { - callback(detail); - } - } - - promise._subscribers.length = 0; -} - -function invokeCallback(settled, promise, callback, detail) { - var hasCallback = isFunction(callback), - value = void 0, - error = void 0, - succeeded = true; - - if (hasCallback) { - try { - value = callback(detail); - } catch (e) { - succeeded = false; - error = e; - } - - if (promise === value) { - reject(promise, cannotReturnOwn()); - return; - } - } else { - value = detail; - } - - if (promise._state !== PENDING) { - // noop - } else if (hasCallback && succeeded) { - resolve(promise, value); - } else if (succeeded === false) { - reject(promise, error); - } else if (settled === FULFILLED) { - fulfill(promise, value); - } else if (settled === REJECTED) { - reject(promise, value); - } -} - -function initializePromise(promise, resolver) { - try { - resolver(function resolvePromise(value) { - resolve(promise, value); - }, function rejectPromise(reason) { - reject(promise, reason); - }); - } catch (e) { - reject(promise, e); - } -} - -var id = 0; -function nextId() { - return id++; -} - -function makePromise(promise) { - promise[PROMISE_ID] = id++; - promise._state = undefined; - promise._result = undefined; - promise._subscribers = []; -} - -function validationError() { - return new Error('Array Methods must be provided an Array'); -} - -var Enumerator = function () { - function Enumerator(Constructor, input) { - this._instanceConstructor = Constructor; - this.promise = new Constructor(noop); - - if (!this.promise[PROMISE_ID]) { - makePromise(this.promise); - } - - if (isArray(input)) { - this.length = input.length; - this._remaining = input.length; - - this._result = new Array(this.length); - - if (this.length === 0) { - fulfill(this.promise, this._result); - } else { - this.length = this.length || 0; - this._enumerate(input); - if (this._remaining === 0) { - fulfill(this.promise, this._result); - } - } - } else { - reject(this.promise, validationError()); - } - } - - Enumerator.prototype._enumerate = function _enumerate(input) { - for (var i = 0; this._state === PENDING && i < input.length; i++) { - this._eachEntry(input[i], i); - } - }; - - Enumerator.prototype._eachEntry = function _eachEntry(entry, i) { - var c = this._instanceConstructor; - var resolve$$1 = c.resolve; - - - if (resolve$$1 === resolve$1) { - var _then = void 0; - var error = void 0; - var didError = false; - try { - _then = entry.then; - } catch (e) { - didError = true; - error = e; - } - - if (_then === then && entry._state !== PENDING) { - this._settledAt(entry._state, i, entry._result); - } else if (typeof _then !== 'function') { - this._remaining--; - this._result[i] = entry; - } else if (c === Promise$1) { - var promise = new c(noop); - if (didError) { - reject(promise, error); - } else { - handleMaybeThenable(promise, entry, _then); - } - this._willSettleAt(promise, i); - } else { - this._willSettleAt(new c(function (resolve$$1) { - return resolve$$1(entry); - }), i); - } - } else { - this._willSettleAt(resolve$$1(entry), i); - } - }; - - Enumerator.prototype._settledAt = function _settledAt(state, i, value) { - var promise = this.promise; - - - if (promise._state === PENDING) { - this._remaining--; - - if (state === REJECTED) { - reject(promise, value); - } else { - this._result[i] = value; - } - } - - if (this._remaining === 0) { - fulfill(promise, this._result); - } - }; - - Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) { - var enumerator = this; - - subscribe(promise, undefined, function (value) { - return enumerator._settledAt(FULFILLED, i, value); - }, function (reason) { - return enumerator._settledAt(REJECTED, i, reason); - }); - }; - - return Enumerator; -}(); - -/** - `Promise.all` accepts an array of promises, and returns a new promise which - is fulfilled with an array of fulfillment values for the passed promises, or - rejected with the reason of the first passed promise to be rejected. It casts all - elements of the passed iterable to promises as it runs this algorithm. - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = resolve(2); - let promise3 = resolve(3); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // The array here would be [ 1, 2, 3 ]; - }); - ``` - - If any of the `promises` given to `all` are rejected, the first promise - that is rejected will be given as an argument to the returned promises's - rejection handler. For example: - - Example: - - ```javascript - let promise1 = resolve(1); - let promise2 = reject(new Error("2")); - let promise3 = reject(new Error("3")); - let promises = [ promise1, promise2, promise3 ]; - - Promise.all(promises).then(function(array){ - // Code here never runs because there are rejected promises! - }, function(error) { - // error.message === "2" - }); - ``` - - @method all - @static - @param {Array} entries array of promises - @param {String} label optional string for labeling the promise. - Useful for tooling. - @return {Promise} promise that is fulfilled when all `promises` have been - fulfilled, or rejected if any of them become rejected. - @static -*/ -function all(entries) { - return new Enumerator(this, entries).promise; -} - -/** - `Promise.race` returns a new promise which is settled in the same way as the - first passed promise to settle. - - Example: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 2'); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // result === 'promise 2' because it was resolved before promise1 - // was resolved. - }); - ``` - - `Promise.race` is deterministic in that only the state of the first - settled promise matters. For example, even if other promises given to the - `promises` array argument are resolved, but the first settled promise has - become rejected before the other promises became fulfilled, the returned - promise will become rejected: - - ```javascript - let promise1 = new Promise(function(resolve, reject){ - setTimeout(function(){ - resolve('promise 1'); - }, 200); - }); - - let promise2 = new Promise(function(resolve, reject){ - setTimeout(function(){ - reject(new Error('promise 2')); - }, 100); - }); - - Promise.race([promise1, promise2]).then(function(result){ - // Code here never runs - }, function(reason){ - // reason.message === 'promise 2' because promise 2 became rejected before - // promise 1 became fulfilled - }); - ``` - - An example real-world use case is implementing timeouts: - - ```javascript - Promise.race([ajax('foo.json'), timeout(5000)]) - ``` - - @method race - @static - @param {Array} promises array of promises to observe - Useful for tooling. - @return {Promise} a promise which settles in the same way as the first passed - promise to settle. -*/ -function race(entries) { - /*jshint validthis:true */ - var Constructor = this; - - if (!isArray(entries)) { - return new Constructor(function (_, reject) { - return reject(new TypeError('You must pass an array to race.')); - }); - } else { - return new Constructor(function (resolve, reject) { - var length = entries.length; - for (var i = 0; i < length; i++) { - Constructor.resolve(entries[i]).then(resolve, reject); - } - }); - } -} - -/** - `Promise.reject` returns a promise rejected with the passed `reason`. - It is shorthand for the following: - - ```javascript - let promise = new Promise(function(resolve, reject){ - reject(new Error('WHOOPS')); - }); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - Instead of writing the above, your code now simply becomes the following: - - ```javascript - let promise = Promise.reject(new Error('WHOOPS')); - - promise.then(function(value){ - // Code here doesn't run because the promise is rejected! - }, function(reason){ - // reason.message === 'WHOOPS' - }); - ``` - - @method reject - @static - @param {Any} reason value that the returned promise will be rejected with. - Useful for tooling. - @return {Promise} a promise rejected with the given `reason`. -*/ -function reject$1(reason) { - /*jshint validthis:true */ - var Constructor = this; - var promise = new Constructor(noop); - reject(promise, reason); - return promise; -} - -function needsResolver() { - throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); -} - -function needsNew() { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); -} - -/** - Promise objects represent the eventual result of an asynchronous operation. The - primary way of interacting with a promise is through its `then` method, which - registers callbacks to receive either a promise's eventual value or the reason - why the promise cannot be fulfilled. - - Terminology - ----------- - - - `promise` is an object or function with a `then` method whose behavior conforms to this specification. - - `thenable` is an object or function that defines a `then` method. - - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). - - `exception` is a value that is thrown using the throw statement. - - `reason` is a value that indicates why a promise was rejected. - - `settled` the final resting state of a promise, fulfilled or rejected. - - A promise can be in one of three states: pending, fulfilled, or rejected. - - Promises that are fulfilled have a fulfillment value and are in the fulfilled - state. Promises that are rejected have a rejection reason and are in the - rejected state. A fulfillment value is never a thenable. - - Promises can also be said to *resolve* a value. If this value is also a - promise, then the original promise's settled state will match the value's - settled state. So a promise that *resolves* a promise that rejects will - itself reject, and a promise that *resolves* a promise that fulfills will - itself fulfill. - - - Basic Usage: - ------------ - - ```js - let promise = new Promise(function(resolve, reject) { - // on success - resolve(value); - - // on failure - reject(reason); - }); - - promise.then(function(value) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Advanced Usage: - --------------- - - Promises shine when abstracting away asynchronous interactions such as - `XMLHttpRequest`s. - - ```js - function getJSON(url) { - return new Promise(function(resolve, reject){ - let xhr = new XMLHttpRequest(); - - xhr.open('GET', url); - xhr.onreadystatechange = handler; - xhr.responseType = 'json'; - xhr.setRequestHeader('Accept', 'application/json'); - xhr.send(); - - function handler() { - if (this.readyState === this.DONE) { - if (this.status === 200) { - resolve(this.response); - } else { - reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); - } - } + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); }; - }); - } - - getJSON('/posts.json').then(function(json) { - // on fulfillment - }, function(reason) { - // on rejection - }); - ``` - - Unlike callbacks, promises are great composable primitives. - - ```js - Promise.all([ - getJSON('/posts'), - getJSON('/comments') - ]).then(function(values){ - values[0] // => postsJSON - values[1] // => commentsJSON - - return values; - }); - ``` - - @class Promise - @param {Function} resolver - Useful for tooling. - @constructor -*/ - -var Promise$1 = function () { - function Promise(resolver) { - this[PROMISE_ID] = nextId(); - this._result = this._state = undefined; - this._subscribers = []; - - if (noop !== resolver) { - typeof resolver !== 'function' && needsResolver(); - this instanceof Promise ? initializePromise(this, resolver) : needsNew(); - } - } - - /** - The primary way of interacting with a promise is through its `then` method, - which registers callbacks to receive either a promise's eventual value or the - reason why the promise cannot be fulfilled. - ```js - findUser().then(function(user){ - // user is available - }, function(reason){ - // user is unavailable, and you are given the reason why - }); - ``` - Chaining - -------- - The return value of `then` is itself a promise. This second, 'downstream' - promise is resolved with the return value of the first promise's fulfillment - or rejection handler, or rejected if the handler throws an exception. - ```js - findUser().then(function (user) { - return user.name; - }, function (reason) { - return 'default name'; - }).then(function (userName) { - // If `findUser` fulfilled, `userName` will be the user's name, otherwise it - // will be `'default name'` - }); - findUser().then(function (user) { - throw new Error('Found user, but still unhappy'); - }, function (reason) { - throw new Error('`findUser` rejected and we're unhappy'); - }).then(function (value) { - // never reached - }, function (reason) { - // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. - // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. - }); - ``` - If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. - ```js - findUser().then(function (user) { - throw new PedagogicalException('Upstream error'); - }).then(function (value) { - // never reached - }).then(function (value) { - // never reached - }, function (reason) { - // The `PedgagocialException` is propagated all the way down to here - }); - ``` - Assimilation - ------------ - Sometimes the value you want to propagate to a downstream promise can only be - retrieved asynchronously. This can be achieved by returning a promise in the - fulfillment or rejection handler. The downstream promise will then be pending - until the returned promise is settled. This is called *assimilation*. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // The user's comments are now available - }); - ``` - If the assimliated promise rejects, then the downstream promise will also reject. - ```js - findUser().then(function (user) { - return findCommentsByAuthor(user); - }).then(function (comments) { - // If `findCommentsByAuthor` fulfills, we'll have the value here - }, function (reason) { - // If `findCommentsByAuthor` rejects, we'll have the reason here - }); - ``` - Simple Example - -------------- - Synchronous Example - ```javascript - let result; - try { - result = findResult(); - // success - } catch(reason) { - // failure - } - ``` - Errback Example - ```js - findResult(function(result, err){ - if (err) { - // failure } else { - // success + debugs[set] = function() {}; } - }); - ``` - Promise Example; - ```javascript - findResult().then(function(result){ - // success - }, function(reason){ - // failure - }); - ``` - Advanced Example - -------------- - Synchronous Example - ```javascript - let author, books; - try { - author = findAuthor(); - books = findBooksByAuthor(author); - // success - } catch(reason) { - // failure } - ``` - Errback Example - ```js - function foundBooks(books) { - } - function failure(reason) { - } - findAuthor(function(author, err){ - if (err) { - failure(err); - // failure - } else { - try { - findBoooksByAuthor(author, function(books, err) { - if (err) { - failure(err); - } else { - try { - foundBooks(books); - } catch(reason) { - failure(reason); - } - } - }); - } catch(error) { - failure(err); - } - // success - } - }); - ``` - Promise Example; - ```javascript - findAuthor(). - then(findBooksByAuthor). - then(function(books){ - // found books - }).catch(function(reason){ - // something went wrong - }); - ``` - @method then - @param {Function} onFulfilled - @param {Function} onRejected - Useful for tooling. - @return {Promise} - */ - - /** - `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same - as the catch block of a try/catch statement. - ```js - function findAuthor(){ - throw new Error('couldn't find that author'); - } - // synchronous - try { - findAuthor(); - } catch(reason) { - // something went wrong - } - // async with promises - findAuthor().catch(function(reason){ - // something went wrong - }); - ``` - @method catch - @param {Function} onRejection - Useful for tooling. - @return {Promise} - */ + return debugs[set]; +}; - Promise.prototype.catch = function _catch(onRejection) { - return this.then(null, onRejection); +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor }; - - /** - `finally` will be invoked regardless of the promise's fate just as native - try/catch/finally behaves - - Synchronous example: - - ```js - findAuthor() { - if (Math.random() > 0.5) { - throw new Error(); - } - return new Author(); - } - - try { - return findAuthor(); // succeed or fail - } catch(error) { - return findOtherAuther(); - } finally { - // always runs - // doesn't affect the return value - } - ``` - - Asynchronous example: - - ```js - findAuthor().catch(function(reason){ - return findOtherAuther(); - }).finally(function(){ - // author was either found, or not - }); - ``` - - @method finally - @param {Function} callback - @return {Promise} - */ + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; - Promise.prototype.finally = function _finally(callback) { - var promise = this; - var constructor = promise.constructor; +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; - if (isFunction(callback)) { - return promise.then(function (value) { - return constructor.resolve(callback()).then(function () { - return value; - }); - }, function (reason) { - return constructor.resolve(callback()).then(function () { - throw reason; - }); - }); - } +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; - return promise.then(callback, callback); - }; - return Promise; -}(); +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; -Promise$1.prototype.then = then; -Promise$1.all = all; -Promise$1.race = race; -Promise$1.resolve = resolve$1; -Promise$1.reject = reject$1; -Promise$1._setScheduler = setScheduler; -Promise$1._setAsap = setAsap; -Promise$1._asap = asap; - -/*global self*/ -function polyfill() { - var local = void 0; - - if (typeof global !== 'undefined') { - local = global; - } else if (typeof self !== 'undefined') { - local = self; + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; } else { - try { - local = Function('return this')(); - } catch (e) { - throw new Error('polyfill failed because global object is unavailable in this environment'); - } + return str; } - - var P = local.Promise; - - if (P) { - var promiseToString = null; - try { - promiseToString = Object.prototype.toString.call(P.resolve()); - } catch (e) { - // silently ignored - } - - if (promiseToString === '[object Promise]' && !P.cast) { - return; - } - } - - local.Promise = Promise$1; } -// Strange compat.. -Promise$1.polyfill = polyfill; -Promise$1.Promise = Promise$1; -return Promise$1; - -}))); +function stylizeNoColor(str, styleType) { + return str; +} +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = _dereq_('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = _dereq_('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} }).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":87}],23:[function(_dereq_,module,exports){ +},{"./support/isBuffer":23,"_process":96,"inherits":22}],25:[function(_dereq_,module,exports){ +'use strict' + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk( + uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) + )) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + +},{}],26:[function(_dereq_,module,exports){ + +},{}],27:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +'use strict'; + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function eventListener() { + if (errorListener !== undefined) { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + var errorListener; + + // Adding an error listener is not optional because + // if an error is thrown on an event emitter we cannot + // guarantee that the actual event we are waiting will + // be fired. The result could be a silent way to create + // memory or file descriptor leaks, which is something + // we should avoid. + if (name !== 'error') { + errorListener = function errorListener(err) { + emitter.removeListener(name, eventListener); + reject(err); + }; + + emitter.once('error', errorListener); + } + + emitter.once(name, eventListener); + }); +} + +},{}],28:[function(_dereq_,module,exports){ +(function (Buffer){(function (){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + +'use strict' + +var base64 = _dereq_('base64-js') +var ieee754 = _dereq_('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype +Buffer.__proto__ = Uint8Array + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this)}).call(this,_dereq_("buffer").Buffer) +},{"base64-js":25,"buffer":28,"ieee754":64}],29:[function(_dereq_,module,exports){ +// https://d3js.org/d3-time-format/ v2.2.3 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, _dereq_('d3-time')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) : +(global = global || self, factory(global.d3 = global.d3 || {}, global.d3)); +}(this, function (exports, d3Time) { 'use strict'; + +function localDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); + date.setFullYear(d.y); + return date; + } + return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); +} + +function utcDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); + date.setUTCFullYear(d.y); + return date; + } + return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); +} + +function newDate(y, m, d) { + return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; +} + +function formatLocale(locale) { + var locale_dateTime = locale.dateTime, + locale_date = locale.date, + locale_time = locale.time, + locale_periods = locale.periods, + locale_weekdays = locale.days, + locale_shortWeekdays = locale.shortDays, + locale_months = locale.months, + locale_shortMonths = locale.shortMonths; + + var periodRe = formatRe(locale_periods), + periodLookup = formatLookup(locale_periods), + weekdayRe = formatRe(locale_weekdays), + weekdayLookup = formatLookup(locale_weekdays), + shortWeekdayRe = formatRe(locale_shortWeekdays), + shortWeekdayLookup = formatLookup(locale_shortWeekdays), + monthRe = formatRe(locale_months), + monthLookup = formatLookup(locale_months), + shortMonthRe = formatRe(locale_shortMonths), + shortMonthLookup = formatLookup(locale_shortMonths); + + var formats = { + "a": formatShortWeekday, + "A": formatWeekday, + "b": formatShortMonth, + "B": formatMonth, + "c": null, + "d": formatDayOfMonth, + "e": formatDayOfMonth, + "f": formatMicroseconds, + "H": formatHour24, + "I": formatHour12, + "j": formatDayOfYear, + "L": formatMilliseconds, + "m": formatMonthNumber, + "M": formatMinutes, + "p": formatPeriod, + "q": formatQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatSeconds, + "u": formatWeekdayNumberMonday, + "U": formatWeekNumberSunday, + "V": formatWeekNumberISO, + "w": formatWeekdayNumberSunday, + "W": formatWeekNumberMonday, + "x": null, + "X": null, + "y": formatYear, + "Y": formatFullYear, + "Z": formatZone, + "%": formatLiteralPercent + }; + + var utcFormats = { + "a": formatUTCShortWeekday, + "A": formatUTCWeekday, + "b": formatUTCShortMonth, + "B": formatUTCMonth, + "c": null, + "d": formatUTCDayOfMonth, + "e": formatUTCDayOfMonth, + "f": formatUTCMicroseconds, + "H": formatUTCHour24, + "I": formatUTCHour12, + "j": formatUTCDayOfYear, + "L": formatUTCMilliseconds, + "m": formatUTCMonthNumber, + "M": formatUTCMinutes, + "p": formatUTCPeriod, + "q": formatUTCQuarter, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatUTCSeconds, + "u": formatUTCWeekdayNumberMonday, + "U": formatUTCWeekNumberSunday, + "V": formatUTCWeekNumberISO, + "w": formatUTCWeekdayNumberSunday, + "W": formatUTCWeekNumberMonday, + "x": null, + "X": null, + "y": formatUTCYear, + "Y": formatUTCFullYear, + "Z": formatUTCZone, + "%": formatLiteralPercent + }; + + var parses = { + "a": parseShortWeekday, + "A": parseWeekday, + "b": parseShortMonth, + "B": parseMonth, + "c": parseLocaleDateTime, + "d": parseDayOfMonth, + "e": parseDayOfMonth, + "f": parseMicroseconds, + "H": parseHour24, + "I": parseHour24, + "j": parseDayOfYear, + "L": parseMilliseconds, + "m": parseMonthNumber, + "M": parseMinutes, + "p": parsePeriod, + "q": parseQuarter, + "Q": parseUnixTimestamp, + "s": parseUnixTimestampSeconds, + "S": parseSeconds, + "u": parseWeekdayNumberMonday, + "U": parseWeekNumberSunday, + "V": parseWeekNumberISO, + "w": parseWeekdayNumberSunday, + "W": parseWeekNumberMonday, + "x": parseLocaleDate, + "X": parseLocaleTime, + "y": parseYear, + "Y": parseFullYear, + "Z": parseZone, + "%": parseLiteralPercent + }; + + // These recursive directive definitions must be deferred. + formats.x = newFormat(locale_date, formats); + formats.X = newFormat(locale_time, formats); + formats.c = newFormat(locale_dateTime, formats); + utcFormats.x = newFormat(locale_date, utcFormats); + utcFormats.X = newFormat(locale_time, utcFormats); + utcFormats.c = newFormat(locale_dateTime, utcFormats); + + function newFormat(specifier, formats) { + return function(date) { + var string = [], + i = -1, + j = 0, + n = specifier.length, + c, + pad, + format; + + if (!(date instanceof Date)) date = new Date(+date); + + while (++i < n) { + if (specifier.charCodeAt(i) === 37) { + string.push(specifier.slice(j, i)); + if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); + else pad = c === "e" ? " " : "0"; + if (format = formats[c]) c = format(date, pad); + string.push(c); + j = i + 1; + } + } + + string.push(specifier.slice(j, i)); + return string.join(""); + }; + } + + function newParse(specifier, Z) { + return function(string) { + var d = newDate(1900, undefined, 1), + i = parseSpecifier(d, specifier, string += "", 0), + week, day; + if (i != string.length) return null; + + // If a UNIX timestamp is specified, return it. + if ("Q" in d) return new Date(d.Q); + if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); + + // If this is utcParse, never use the local timezone. + if (Z && !("Z" in d)) d.Z = 0; + + // The am-pm flag is 0 for AM, and 1 for PM. + if ("p" in d) d.H = d.H % 12 + d.p * 12; + + // If the month was not specified, inherit from the quarter. + if (d.m === undefined) d.m = "q" in d ? d.q : 0; + + // Convert day-of-week and week-of-year to day-of-year. + if ("V" in d) { + if (d.V < 1 || d.V > 53) return null; + if (!("w" in d)) d.w = 1; + if ("Z" in d) { + week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay(); + week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week); + week = d3Time.utcDay.offset(week, (d.V - 1) * 7); + d.y = week.getUTCFullYear(); + d.m = week.getUTCMonth(); + d.d = week.getUTCDate() + (d.w + 6) % 7; + } else { + week = localDate(newDate(d.y, 0, 1)), day = week.getDay(); + week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week); + week = d3Time.timeDay.offset(week, (d.V - 1) * 7); + d.y = week.getFullYear(); + d.m = week.getMonth(); + d.d = week.getDate() + (d.w + 6) % 7; + } + } else if ("W" in d || "U" in d) { + if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; + day = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); + d.m = 0; + d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; + } + + // If a time zone is specified, all fields are interpreted as UTC and then + // offset according to the specified time zone. + if ("Z" in d) { + d.H += d.Z / 100 | 0; + d.M += d.Z % 100; + return utcDate(d); + } + + // Otherwise, all fields are in local time. + return localDate(d); + }; + } + + function parseSpecifier(d, specifier, string, j) { + var i = 0, + n = specifier.length, + m = string.length, + c, + parse; + + while (i < n) { + if (j >= m) return -1; + c = specifier.charCodeAt(i++); + if (c === 37) { + c = specifier.charAt(i++); + parse = parses[c in pads ? specifier.charAt(i++) : c]; + if (!parse || ((j = parse(d, string, j)) < 0)) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + + return j; + } + + function parsePeriod(d, string, i) { + var n = periodRe.exec(string.slice(i)); + return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortWeekday(d, string, i) { + var n = shortWeekdayRe.exec(string.slice(i)); + return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseWeekday(d, string, i) { + var n = weekdayRe.exec(string.slice(i)); + return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortMonth(d, string, i) { + var n = shortMonthRe.exec(string.slice(i)); + return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseMonth(d, string, i) { + var n = monthRe.exec(string.slice(i)); + return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseLocaleDateTime(d, string, i) { + return parseSpecifier(d, locale_dateTime, string, i); + } + + function parseLocaleDate(d, string, i) { + return parseSpecifier(d, locale_date, string, i); + } + + function parseLocaleTime(d, string, i) { + return parseSpecifier(d, locale_time, string, i); + } + + function formatShortWeekday(d) { + return locale_shortWeekdays[d.getDay()]; + } + + function formatWeekday(d) { + return locale_weekdays[d.getDay()]; + } + + function formatShortMonth(d) { + return locale_shortMonths[d.getMonth()]; + } + + function formatMonth(d) { + return locale_months[d.getMonth()]; + } + + function formatPeriod(d) { + return locale_periods[+(d.getHours() >= 12)]; + } + + function formatQuarter(d) { + return 1 + ~~(d.getMonth() / 3); + } + + function formatUTCShortWeekday(d) { + return locale_shortWeekdays[d.getUTCDay()]; + } + + function formatUTCWeekday(d) { + return locale_weekdays[d.getUTCDay()]; + } + + function formatUTCShortMonth(d) { + return locale_shortMonths[d.getUTCMonth()]; + } + + function formatUTCMonth(d) { + return locale_months[d.getUTCMonth()]; + } + + function formatUTCPeriod(d) { + return locale_periods[+(d.getUTCHours() >= 12)]; + } + + function formatUTCQuarter(d) { + return 1 + ~~(d.getUTCMonth() / 3); + } + + return { + format: function(specifier) { + var f = newFormat(specifier += "", formats); + f.toString = function() { return specifier; }; + return f; + }, + parse: function(specifier) { + var p = newParse(specifier += "", false); + p.toString = function() { return specifier; }; + return p; + }, + utcFormat: function(specifier) { + var f = newFormat(specifier += "", utcFormats); + f.toString = function() { return specifier; }; + return f; + }, + utcParse: function(specifier) { + var p = newParse(specifier += "", true); + p.toString = function() { return specifier; }; + return p; + } + }; +} + +var pads = {"-": "", "_": " ", "0": "0"}, + numberRe = /^\s*\d+/, // note: ignores next directive + percentRe = /^%/, + requoteRe = /[\\^$*+?|[\]().{}]/g; + +function pad(value, fill, width) { + var sign = value < 0 ? "-" : "", + string = (sign ? -value : value) + "", + length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); +} + +function requote(s) { + return s.replace(requoteRe, "\\$&"); +} + +function formatRe(names) { + return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); +} + +function formatLookup(names) { + var map = {}, i = -1, n = names.length; + while (++i < n) map[names[i].toLowerCase()] = i; + return map; +} + +function parseWeekdayNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.w = +n[0], i + n[0].length) : -1; +} + +function parseWeekdayNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.u = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.U = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberISO(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.V = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.W = +n[0], i + n[0].length) : -1; +} + +function parseFullYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 4)); + return n ? (d.y = +n[0], i + n[0].length) : -1; +} + +function parseYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; +} + +function parseZone(d, string, i) { + var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); + return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; +} + +function parseQuarter(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; +} + +function parseMonthNumber(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.m = n[0] - 1, i + n[0].length) : -1; +} + +function parseDayOfMonth(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.d = +n[0], i + n[0].length) : -1; +} + +function parseDayOfYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; +} + +function parseHour24(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.H = +n[0], i + n[0].length) : -1; +} + +function parseMinutes(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.M = +n[0], i + n[0].length) : -1; +} + +function parseSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.S = +n[0], i + n[0].length) : -1; +} + +function parseMilliseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.L = +n[0], i + n[0].length) : -1; +} + +function parseMicroseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 6)); + return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; +} + +function parseLiteralPercent(d, string, i) { + var n = percentRe.exec(string.slice(i, i + 1)); + return n ? i + n[0].length : -1; +} + +function parseUnixTimestamp(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = +n[0], i + n[0].length) : -1; +} + +function parseUnixTimestampSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.s = +n[0], i + n[0].length) : -1; +} + +function formatDayOfMonth(d, p) { + return pad(d.getDate(), p, 2); +} + +function formatHour24(d, p) { + return pad(d.getHours(), p, 2); +} + +function formatHour12(d, p) { + return pad(d.getHours() % 12 || 12, p, 2); +} + +function formatDayOfYear(d, p) { + return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3); +} + +function formatMilliseconds(d, p) { + return pad(d.getMilliseconds(), p, 3); +} + +function formatMicroseconds(d, p) { + return formatMilliseconds(d, p) + "000"; +} + +function formatMonthNumber(d, p) { + return pad(d.getMonth() + 1, p, 2); +} + +function formatMinutes(d, p) { + return pad(d.getMinutes(), p, 2); +} + +function formatSeconds(d, p) { + return pad(d.getSeconds(), p, 2); +} + +function formatWeekdayNumberMonday(d) { + var day = d.getDay(); + return day === 0 ? 7 : day; +} + +function formatWeekNumberSunday(d, p) { + return pad(d3Time.timeSunday.count(d3Time.timeYear(d) - 1, d), p, 2); +} + +function formatWeekNumberISO(d, p) { + var day = d.getDay(); + d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d); + return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2); +} + +function formatWeekdayNumberSunday(d) { + return d.getDay(); +} + +function formatWeekNumberMonday(d, p) { + return pad(d3Time.timeMonday.count(d3Time.timeYear(d) - 1, d), p, 2); +} + +function formatYear(d, p) { + return pad(d.getFullYear() % 100, p, 2); +} + +function formatFullYear(d, p) { + return pad(d.getFullYear() % 10000, p, 4); +} + +function formatZone(d) { + var z = d.getTimezoneOffset(); + return (z > 0 ? "-" : (z *= -1, "+")) + + pad(z / 60 | 0, "0", 2) + + pad(z % 60, "0", 2); +} + +function formatUTCDayOfMonth(d, p) { + return pad(d.getUTCDate(), p, 2); +} + +function formatUTCHour24(d, p) { + return pad(d.getUTCHours(), p, 2); +} + +function formatUTCHour12(d, p) { + return pad(d.getUTCHours() % 12 || 12, p, 2); +} + +function formatUTCDayOfYear(d, p) { + return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3); +} + +function formatUTCMilliseconds(d, p) { + return pad(d.getUTCMilliseconds(), p, 3); +} + +function formatUTCMicroseconds(d, p) { + return formatUTCMilliseconds(d, p) + "000"; +} + +function formatUTCMonthNumber(d, p) { + return pad(d.getUTCMonth() + 1, p, 2); +} + +function formatUTCMinutes(d, p) { + return pad(d.getUTCMinutes(), p, 2); +} + +function formatUTCSeconds(d, p) { + return pad(d.getUTCSeconds(), p, 2); +} + +function formatUTCWeekdayNumberMonday(d) { + var dow = d.getUTCDay(); + return dow === 0 ? 7 : dow; +} + +function formatUTCWeekNumberSunday(d, p) { + return pad(d3Time.utcSunday.count(d3Time.utcYear(d) - 1, d), p, 2); +} + +function formatUTCWeekNumberISO(d, p) { + var day = d.getUTCDay(); + d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d); + return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2); +} + +function formatUTCWeekdayNumberSunday(d) { + return d.getUTCDay(); +} + +function formatUTCWeekNumberMonday(d, p) { + return pad(d3Time.utcMonday.count(d3Time.utcYear(d) - 1, d), p, 2); +} + +function formatUTCYear(d, p) { + return pad(d.getUTCFullYear() % 100, p, 2); +} + +function formatUTCFullYear(d, p) { + return pad(d.getUTCFullYear() % 10000, p, 4); +} + +function formatUTCZone() { + return "+0000"; +} + +function formatLiteralPercent() { + return "%"; +} + +function formatUnixTimestamp(d) { + return +d; +} + +function formatUnixTimestampSeconds(d) { + return Math.floor(+d / 1000); +} + +var locale; + +defaultLocale({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] +}); + +function defaultLocale(definition) { + locale = formatLocale(definition); + exports.timeFormat = locale.format; + exports.timeParse = locale.parse; + exports.utcFormat = locale.utcFormat; + exports.utcParse = locale.utcParse; + return locale; +} + +var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; + +function formatIsoNative(date) { + return date.toISOString(); +} + +var formatIso = Date.prototype.toISOString + ? formatIsoNative + : exports.utcFormat(isoSpecifier); + +function parseIsoNative(string) { + var date = new Date(string); + return isNaN(date) ? null : date; +} + +var parseIso = +new Date("2000-01-01T00:00:00.000Z") + ? parseIsoNative + : exports.utcParse(isoSpecifier); + +exports.isoFormat = formatIso; +exports.isoParse = parseIso; +exports.timeFormatDefaultLocale = defaultLocale; +exports.timeFormatLocale = formatLocale; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); + +},{"d3-time":30}],30:[function(_dereq_,module,exports){ +// https://d3js.org/d3-time/ v1.1.0 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(global = global || self, factory(global.d3 = global.d3 || {})); +}(this, function (exports) { 'use strict'; + +var t0 = new Date, + t1 = new Date; + +function newInterval(floori, offseti, count, field) { + + function interval(date) { + return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; + } + + interval.floor = function(date) { + return floori(date = new Date(+date)), date; + }; + + interval.ceil = function(date) { + return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; + }; + + interval.round = function(date) { + var d0 = interval(date), + d1 = interval.ceil(date); + return date - d0 < d1 - date ? d0 : d1; + }; + + interval.offset = function(date, step) { + return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; + }; + + interval.range = function(start, stop, step) { + var range = [], previous; + start = interval.ceil(start); + step = step == null ? 1 : Math.floor(step); + if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date + do range.push(previous = new Date(+start)), offseti(start, step), floori(start); + while (previous < start && start < stop); + return range; + }; + + interval.filter = function(test) { + return newInterval(function(date) { + if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); + }, function(date, step) { + if (date >= date) { + if (step < 0) while (++step <= 0) { + while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty + } else while (--step >= 0) { + while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty + } + } + }); + }; + + if (count) { + interval.count = function(start, end) { + t0.setTime(+start), t1.setTime(+end); + floori(t0), floori(t1); + return Math.floor(count(t0, t1)); + }; + + interval.every = function(step) { + step = Math.floor(step); + return !isFinite(step) || !(step > 0) ? null + : !(step > 1) ? interval + : interval.filter(field + ? function(d) { return field(d) % step === 0; } + : function(d) { return interval.count(0, d) % step === 0; }); + }; + } + + return interval; +} + +var millisecond = newInterval(function() { + // noop +}, function(date, step) { + date.setTime(+date + step); +}, function(start, end) { + return end - start; +}); + +// An optimized implementation for this simple case. +millisecond.every = function(k) { + k = Math.floor(k); + if (!isFinite(k) || !(k > 0)) return null; + if (!(k > 1)) return millisecond; + return newInterval(function(date) { + date.setTime(Math.floor(date / k) * k); + }, function(date, step) { + date.setTime(+date + step * k); + }, function(start, end) { + return (end - start) / k; + }); +}; +var milliseconds = millisecond.range; + +var durationSecond = 1e3; +var durationMinute = 6e4; +var durationHour = 36e5; +var durationDay = 864e5; +var durationWeek = 6048e5; + +var second = newInterval(function(date) { + date.setTime(date - date.getMilliseconds()); +}, function(date, step) { + date.setTime(+date + step * durationSecond); +}, function(start, end) { + return (end - start) / durationSecond; +}, function(date) { + return date.getUTCSeconds(); +}); +var seconds = second.range; + +var minute = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); +}, function(date, step) { + date.setTime(+date + step * durationMinute); +}, function(start, end) { + return (end - start) / durationMinute; +}, function(date) { + return date.getMinutes(); +}); +var minutes = minute.range; + +var hour = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); +}, function(date, step) { + date.setTime(+date + step * durationHour); +}, function(start, end) { + return (end - start) / durationHour; +}, function(date) { + return date.getHours(); +}); +var hours = hour.range; + +var day = newInterval(function(date) { + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setDate(date.getDate() + step); +}, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; +}, function(date) { + return date.getDate() - 1; +}); +var days = day.range; + +function weekday(i) { + return newInterval(function(date) { + date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setDate(date.getDate() + step * 7); + }, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; + }); +} + +var sunday = weekday(0); +var monday = weekday(1); +var tuesday = weekday(2); +var wednesday = weekday(3); +var thursday = weekday(4); +var friday = weekday(5); +var saturday = weekday(6); + +var sundays = sunday.range; +var mondays = monday.range; +var tuesdays = tuesday.range; +var wednesdays = wednesday.range; +var thursdays = thursday.range; +var fridays = friday.range; +var saturdays = saturday.range; + +var month = newInterval(function(date) { + date.setDate(1); + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setMonth(date.getMonth() + step); +}, function(start, end) { + return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; +}, function(date) { + return date.getMonth(); +}); +var months = month.range; + +var year = newInterval(function(date) { + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setFullYear(date.getFullYear() + step); +}, function(start, end) { + return end.getFullYear() - start.getFullYear(); +}, function(date) { + return date.getFullYear(); +}); + +// An optimized implementation for this simple case. +year.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setFullYear(Math.floor(date.getFullYear() / k) * k); + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setFullYear(date.getFullYear() + step * k); + }); +}; +var years = year.range; + +var utcMinute = newInterval(function(date) { + date.setUTCSeconds(0, 0); +}, function(date, step) { + date.setTime(+date + step * durationMinute); +}, function(start, end) { + return (end - start) / durationMinute; +}, function(date) { + return date.getUTCMinutes(); +}); +var utcMinutes = utcMinute.range; + +var utcHour = newInterval(function(date) { + date.setUTCMinutes(0, 0, 0); +}, function(date, step) { + date.setTime(+date + step * durationHour); +}, function(start, end) { + return (end - start) / durationHour; +}, function(date) { + return date.getUTCHours(); +}); +var utcHours = utcHour.range; + +var utcDay = newInterval(function(date) { + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCDate(date.getUTCDate() + step); +}, function(start, end) { + return (end - start) / durationDay; +}, function(date) { + return date.getUTCDate() - 1; +}); +var utcDays = utcDay.range; + +function utcWeekday(i) { + return newInterval(function(date) { + date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCDate(date.getUTCDate() + step * 7); + }, function(start, end) { + return (end - start) / durationWeek; + }); +} + +var utcSunday = utcWeekday(0); +var utcMonday = utcWeekday(1); +var utcTuesday = utcWeekday(2); +var utcWednesday = utcWeekday(3); +var utcThursday = utcWeekday(4); +var utcFriday = utcWeekday(5); +var utcSaturday = utcWeekday(6); + +var utcSundays = utcSunday.range; +var utcMondays = utcMonday.range; +var utcTuesdays = utcTuesday.range; +var utcWednesdays = utcWednesday.range; +var utcThursdays = utcThursday.range; +var utcFridays = utcFriday.range; +var utcSaturdays = utcSaturday.range; + +var utcMonth = newInterval(function(date) { + date.setUTCDate(1); + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCMonth(date.getUTCMonth() + step); +}, function(start, end) { + return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; +}, function(date) { + return date.getUTCMonth(); +}); +var utcMonths = utcMonth.range; + +var utcYear = newInterval(function(date) { + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step); +}, function(start, end) { + return end.getUTCFullYear() - start.getUTCFullYear(); +}, function(date) { + return date.getUTCFullYear(); +}); + +// An optimized implementation for this simple case. +utcYear.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step * k); + }); +}; +var utcYears = utcYear.range; + +exports.timeDay = day; +exports.timeDays = days; +exports.timeFriday = friday; +exports.timeFridays = fridays; +exports.timeHour = hour; +exports.timeHours = hours; +exports.timeInterval = newInterval; +exports.timeMillisecond = millisecond; +exports.timeMilliseconds = milliseconds; +exports.timeMinute = minute; +exports.timeMinutes = minutes; +exports.timeMonday = monday; +exports.timeMondays = mondays; +exports.timeMonth = month; +exports.timeMonths = months; +exports.timeSaturday = saturday; +exports.timeSaturdays = saturdays; +exports.timeSecond = second; +exports.timeSeconds = seconds; +exports.timeSunday = sunday; +exports.timeSundays = sundays; +exports.timeThursday = thursday; +exports.timeThursdays = thursdays; +exports.timeTuesday = tuesday; +exports.timeTuesdays = tuesdays; +exports.timeWednesday = wednesday; +exports.timeWednesdays = wednesdays; +exports.timeWeek = sunday; +exports.timeWeeks = sundays; +exports.timeYear = year; +exports.timeYears = years; +exports.utcDay = utcDay; +exports.utcDays = utcDays; +exports.utcFriday = utcFriday; +exports.utcFridays = utcFridays; +exports.utcHour = utcHour; +exports.utcHours = utcHours; +exports.utcMillisecond = millisecond; +exports.utcMilliseconds = milliseconds; +exports.utcMinute = utcMinute; +exports.utcMinutes = utcMinutes; +exports.utcMonday = utcMonday; +exports.utcMondays = utcMondays; +exports.utcMonth = utcMonth; +exports.utcMonths = utcMonths; +exports.utcSaturday = utcSaturday; +exports.utcSaturdays = utcSaturdays; +exports.utcSecond = second; +exports.utcSeconds = seconds; +exports.utcSunday = utcSunday; +exports.utcSundays = utcSundays; +exports.utcThursday = utcThursday; +exports.utcThursdays = utcThursdays; +exports.utcTuesday = utcTuesday; +exports.utcTuesdays = utcTuesdays; +exports.utcWednesday = utcWednesday; +exports.utcWednesdays = utcWednesdays; +exports.utcWeek = utcSunday; +exports.utcWeeks = utcSundays; +exports.utcYear = utcYear; +exports.utcYears = utcYears; + +Object.defineProperty(exports, '__esModule', { value: true }); + +})); + +},{}],31:[function(_dereq_,module,exports){ /** * inspired by is-number * but significantly simplified and sped up by ignoring number and string constructors @@ -14515,7 +14405,7 @@ module.exports = function(n) { return n - n < 1; }; -},{"is-string-blank":75}],24:[function(_dereq_,module,exports){ +},{"is-string-blank":68}],32:[function(_dereq_,module,exports){ module.exports = adjoint; /** @@ -14549,7 +14439,7 @@ function adjoint(out, a) { out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11)); return out; }; -},{}],25:[function(_dereq_,module,exports){ +},{}],33:[function(_dereq_,module,exports){ module.exports = clone; /** @@ -14578,7 +14468,7 @@ function clone(a) { out[15] = a[15]; return out; }; -},{}],26:[function(_dereq_,module,exports){ +},{}],34:[function(_dereq_,module,exports){ module.exports = copy; /** @@ -14607,7 +14497,7 @@ function copy(out, a) { out[15] = a[15]; return out; }; -},{}],27:[function(_dereq_,module,exports){ +},{}],35:[function(_dereq_,module,exports){ module.exports = create; /** @@ -14635,7 +14525,7 @@ function create() { out[15] = 1; return out; }; -},{}],28:[function(_dereq_,module,exports){ +},{}],36:[function(_dereq_,module,exports){ module.exports = determinant; /** @@ -14666,7 +14556,7 @@ function determinant(a) { // Calculate the determinant return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; }; -},{}],29:[function(_dereq_,module,exports){ +},{}],37:[function(_dereq_,module,exports){ module.exports = fromQuat; /** @@ -14714,7 +14604,7 @@ function fromQuat(out, q) { return out; }; -},{}],30:[function(_dereq_,module,exports){ +},{}],38:[function(_dereq_,module,exports){ module.exports = fromRotation /** @@ -14769,7 +14659,7 @@ function fromRotation(out, rad, axis) { return out } -},{}],31:[function(_dereq_,module,exports){ +},{}],39:[function(_dereq_,module,exports){ module.exports = fromRotationTranslation; /** @@ -14823,7 +14713,7 @@ function fromRotationTranslation(out, q, v) { return out; }; -},{}],32:[function(_dereq_,module,exports){ +},{}],40:[function(_dereq_,module,exports){ module.exports = fromScaling /** @@ -14857,7 +14747,7 @@ function fromScaling(out, v) { return out } -},{}],33:[function(_dereq_,module,exports){ +},{}],41:[function(_dereq_,module,exports){ module.exports = fromTranslation /** @@ -14891,7 +14781,7 @@ function fromTranslation(out, v) { return out } -},{}],34:[function(_dereq_,module,exports){ +},{}],42:[function(_dereq_,module,exports){ module.exports = fromXRotation /** @@ -14928,7 +14818,7 @@ function fromXRotation(out, rad) { out[15] = 1 return out } -},{}],35:[function(_dereq_,module,exports){ +},{}],43:[function(_dereq_,module,exports){ module.exports = fromYRotation /** @@ -14965,7 +14855,7 @@ function fromYRotation(out, rad) { out[15] = 1 return out } -},{}],36:[function(_dereq_,module,exports){ +},{}],44:[function(_dereq_,module,exports){ module.exports = fromZRotation /** @@ -15002,7 +14892,7 @@ function fromZRotation(out, rad) { out[15] = 1 return out } -},{}],37:[function(_dereq_,module,exports){ +},{}],45:[function(_dereq_,module,exports){ module.exports = frustum; /** @@ -15039,7 +14929,7 @@ function frustum(out, left, right, bottom, top, near, far) { out[15] = 0; return out; }; -},{}],38:[function(_dereq_,module,exports){ +},{}],46:[function(_dereq_,module,exports){ module.exports = identity; /** @@ -15067,7 +14957,7 @@ function identity(out) { out[15] = 1; return out; }; -},{}],39:[function(_dereq_,module,exports){ +},{}],47:[function(_dereq_,module,exports){ module.exports = { create: _dereq_('./create') , clone: _dereq_('./clone') @@ -15100,7 +14990,7 @@ module.exports = { , str: _dereq_('./str') } -},{"./adjoint":24,"./clone":25,"./copy":26,"./create":27,"./determinant":28,"./fromQuat":29,"./fromRotation":30,"./fromRotationTranslation":31,"./fromScaling":32,"./fromTranslation":33,"./fromXRotation":34,"./fromYRotation":35,"./fromZRotation":36,"./frustum":37,"./identity":38,"./invert":40,"./lookAt":41,"./multiply":42,"./ortho":43,"./perspective":44,"./perspectiveFromFieldOfView":45,"./rotate":46,"./rotateX":47,"./rotateY":48,"./rotateZ":49,"./scale":50,"./str":51,"./translate":52,"./transpose":53}],40:[function(_dereq_,module,exports){ +},{"./adjoint":32,"./clone":33,"./copy":34,"./create":35,"./determinant":36,"./fromQuat":37,"./fromRotation":38,"./fromRotationTranslation":39,"./fromScaling":40,"./fromTranslation":41,"./fromXRotation":42,"./fromYRotation":43,"./fromZRotation":44,"./frustum":45,"./identity":46,"./invert":48,"./lookAt":49,"./multiply":50,"./ortho":51,"./perspective":52,"./perspectiveFromFieldOfView":53,"./rotate":54,"./rotateX":55,"./rotateY":56,"./rotateZ":57,"./scale":58,"./str":59,"./translate":60,"./transpose":61}],48:[function(_dereq_,module,exports){ module.exports = invert; /** @@ -15156,7 +15046,7 @@ function invert(out, a) { return out; }; -},{}],41:[function(_dereq_,module,exports){ +},{}],49:[function(_dereq_,module,exports){ var identity = _dereq_('./identity'); module.exports = lookAt; @@ -15247,7 +15137,7 @@ function lookAt(out, eye, center, up) { return out; }; -},{"./identity":38}],42:[function(_dereq_,module,exports){ +},{"./identity":46}],50:[function(_dereq_,module,exports){ module.exports = multiply; /** @@ -15290,7 +15180,7 @@ function multiply(out, a, b) { out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; return out; }; -},{}],43:[function(_dereq_,module,exports){ +},{}],51:[function(_dereq_,module,exports){ module.exports = ortho; /** @@ -15327,7 +15217,7 @@ function ortho(out, left, right, bottom, top, near, far) { out[15] = 1; return out; }; -},{}],44:[function(_dereq_,module,exports){ +},{}],52:[function(_dereq_,module,exports){ module.exports = perspective; /** @@ -15361,7 +15251,7 @@ function perspective(out, fovy, aspect, near, far) { out[15] = 0; return out; }; -},{}],45:[function(_dereq_,module,exports){ +},{}],53:[function(_dereq_,module,exports){ module.exports = perspectiveFromFieldOfView; /** @@ -15403,7 +15293,7 @@ function perspectiveFromFieldOfView(out, fov, near, far) { } -},{}],46:[function(_dereq_,module,exports){ +},{}],54:[function(_dereq_,module,exports){ module.exports = rotate; /** @@ -15468,7 +15358,7 @@ function rotate(out, a, rad, axis) { } return out; }; -},{}],47:[function(_dereq_,module,exports){ +},{}],55:[function(_dereq_,module,exports){ module.exports = rotateX; /** @@ -15513,7 +15403,7 @@ function rotateX(out, a, rad) { out[11] = a23 * c - a13 * s; return out; }; -},{}],48:[function(_dereq_,module,exports){ +},{}],56:[function(_dereq_,module,exports){ module.exports = rotateY; /** @@ -15558,7 +15448,7 @@ function rotateY(out, a, rad) { out[11] = a03 * s + a23 * c; return out; }; -},{}],49:[function(_dereq_,module,exports){ +},{}],57:[function(_dereq_,module,exports){ module.exports = rotateZ; /** @@ -15603,7 +15493,7 @@ function rotateZ(out, a, rad) { out[7] = a13 * c - a03 * s; return out; }; -},{}],50:[function(_dereq_,module,exports){ +},{}],58:[function(_dereq_,module,exports){ module.exports = scale; /** @@ -15635,7 +15525,7 @@ function scale(out, a, v) { out[15] = a[15]; return out; }; -},{}],51:[function(_dereq_,module,exports){ +},{}],59:[function(_dereq_,module,exports){ module.exports = str; /** @@ -15650,7 +15540,7 @@ function str(a) { a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')'; }; -},{}],52:[function(_dereq_,module,exports){ +},{}],60:[function(_dereq_,module,exports){ module.exports = translate; /** @@ -15689,7 +15579,7 @@ function translate(out, a, v) { return out; }; -},{}],53:[function(_dereq_,module,exports){ +},{}],61:[function(_dereq_,module,exports){ module.exports = transpose; /** @@ -15739,7 +15629,7 @@ function transpose(out, a) { return out; }; -},{}],54:[function(_dereq_,module,exports){ +},{}],62:[function(_dereq_,module,exports){ (function (global){(function (){ 'use strict' @@ -15756,7 +15646,7 @@ else { module.exports = hasHover }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"is-browser":73}],55:[function(_dereq_,module,exports){ +},{"is-browser":66}],63:[function(_dereq_,module,exports){ 'use strict' var isBrowser = _dereq_('is-browser') @@ -15782,7 +15672,7 @@ function detect() { module.exports = isBrowser && detect() -},{"is-browser":73}],56:[function(_dereq_,module,exports){ +},{"is-browser":66}],64:[function(_dereq_,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = (nBytes * 8) - mLen - 1 @@ -15868,987 +15758,38 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],57:[function(_dereq_,module,exports){ -'use strict'; - -var typeHandlers = _dereq_('./types'); - -module.exports = function (buffer, filepath) { - var type, result; - for (type in typeHandlers) { - result = typeHandlers[type].detect(buffer, filepath); - if (result) { - return type; - } - } -}; - -},{"./types":60}],58:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -'use strict'; - -var fs = _dereq_('fs'); -var path = _dereq_('path'); - -var typeHandlers = _dereq_('./types'); -var detector = _dereq_('./detector'); - -// Maximum buffer size, with a default of 512 kilobytes. -// TO-DO: make this adaptive based on the initial signature of the image -var MaxBufferSize = 512*1024; - -/** - * Return size information based on a buffer - * - * @param {Buffer} buffer - * @param {String} filepath - * @returns {Object} - */ -function lookup (buffer, filepath) { - // detect the file type.. don't rely on the extension - var type = detector(buffer, filepath); - - // find an appropriate handler for this file type - if (type in typeHandlers) { - var size = typeHandlers[type].calculate(buffer, filepath); - if (size !== false) { - size.type = type; - return size; - } - } - - // throw up, if we don't understand the file - throw new TypeError('unsupported file type: ' + type + ' (file: ' + filepath + ')'); -} - -/** - * Reads a file into a buffer. - * - * The callback will be called after the process has completed. The - * callback's first argument will be an error (or null). The second argument - * will be the Buffer, if the operation was successful. - * - * @param {String} filepath - * @param {Function} callback - */ -function asyncFileToBuffer (filepath, callback) { - // open the file in read only mode - fs.open(filepath, 'r', function (err, descriptor) { - if (err) { return callback(err); } - fs.fstat(descriptor, function (err, stats) { - if (err) { return callback(err); } - var size = stats.size; - if (size <= 0) { - return callback(new Error('File size is not greater than 0 —— ' + filepath)); - } - var bufferSize = Math.min(size, MaxBufferSize); - var buffer = Buffer.alloc(bufferSize); - // read first buffer block from the file, asynchronously - fs.read(descriptor, buffer, 0, bufferSize, 0, function (err) { - if (err) { return callback(err); } - // close the file, we are done - fs.close(descriptor, function (err) { - callback(err, buffer); - }); - }); - }); - }); -} - -/** - * Synchronously reads a file into a buffer, blocking the nodejs process. - * - * @param {String} filepath - * @returns {Buffer} - */ -function syncFileToBuffer (filepath) { - // read from the file, synchronously - var descriptor = fs.openSync(filepath, 'r'); - var size = fs.fstatSync(descriptor).size; - var bufferSize = Math.min(size, MaxBufferSize); - var buffer = Buffer.alloc(bufferSize); - fs.readSync(descriptor, buffer, 0, bufferSize, 0); - fs.closeSync(descriptor); - return buffer; -} - -/** - * @param {Buffer|string} input - buffer or relative/absolute path of the image file - * @param {Function=} callback - optional function for async detection - */ -module.exports = function (input, callback) { - - // Handle buffer input - if (Buffer.isBuffer(input)) { - return lookup(input); - } - - // input should be a string at this point - if (typeof input !== 'string') { - throw new TypeError('invalid invocation'); - } - - // resolve the file path - var filepath = path.resolve(input); - - if (typeof callback === 'function') { - asyncFileToBuffer(filepath, function (err, buffer) { - if (err) { return callback(err); } - - // return the dimensions - var dimensions; - try { - dimensions = lookup(buffer, filepath); - } catch (e) { - err = e; - } - callback(err, dimensions); - }); - } else { - var buffer = syncFileToBuffer(filepath); - return lookup(buffer, filepath); - } -}; - -module.exports.types = Object.keys(typeHandlers); - -}).call(this)}).call(this,_dereq_("buffer").Buffer) -},{"./detector":57,"./types":60,"buffer":18,"fs":16,"path":78}],59:[function(_dereq_,module,exports){ -'use strict'; - -// Abstract reading multi-byte unsigned integers -function readUInt (buffer, bits, offset, isBigEndian) { - offset = offset || 0; - var endian = isBigEndian ? 'BE' : 'LE'; - var method = buffer['readUInt' + bits + endian]; - return method.call(buffer, offset); -} - -module.exports = readUInt; - -},{}],60:[function(_dereq_,module,exports){ -'use strict'; - -// load all available handlers for browserify support -var typeHandlers = { - bmp: _dereq_('./types/bmp'), - cur: _dereq_('./types/cur'), - dds: _dereq_('./types/dds'), - gif: _dereq_('./types/gif'), - icns: _dereq_('./types/icns'), - ico: _dereq_('./types/ico'), - jpg: _dereq_('./types/jpg'), - png: _dereq_('./types/png'), - psd: _dereq_('./types/psd'), - svg: _dereq_('./types/svg'), - tiff: _dereq_('./types/tiff'), - webp: _dereq_('./types/webp'), -}; - -module.exports = typeHandlers; - -},{"./types/bmp":61,"./types/cur":62,"./types/dds":63,"./types/gif":64,"./types/icns":65,"./types/ico":66,"./types/jpg":67,"./types/png":68,"./types/psd":69,"./types/svg":70,"./types/tiff":71,"./types/webp":72}],61:[function(_dereq_,module,exports){ -'use strict'; - -function isBMP (buffer) { - return ('BM' === buffer.toString('ascii', 0, 2)); -} - -function calculate (buffer) { - return { - 'width': buffer.readUInt32LE(18), - 'height': Math.abs(buffer.readInt32LE(22)) - }; -} - -module.exports = { - 'detect': isBMP, - 'calculate': calculate -}; - -},{}],62:[function(_dereq_,module,exports){ -'use strict'; - -var TYPE_CURSOR = 2; - -function isCUR (buffer) { - var type; - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - type = buffer.readUInt16LE(2); - return type === TYPE_CURSOR; -} - -module.exports = { - 'detect': isCUR, - 'calculate': _dereq_('./ico').calculate -}; - -},{"./ico":66}],63:[function(_dereq_,module,exports){ -'use strict'; - -function isDDS(buffer){ - return buffer.readUInt32LE(0) === 0x20534444; -} - -function calculate(buffer){ - // read file resolution metadata - return { - 'height': buffer.readUInt32LE(12), - 'width': buffer.readUInt32LE(16) - }; -} - -module.exports = { - 'detect': isDDS, - 'calculate': calculate -}; - -},{}],64:[function(_dereq_,module,exports){ -'use strict'; - -var gifRegexp = /^GIF8[79]a/; -function isGIF (buffer) { - var signature = buffer.toString('ascii', 0, 6); - return (gifRegexp.test(signature)); -} - -function calculate(buffer) { - return { - 'width': buffer.readUInt16LE(6), - 'height': buffer.readUInt16LE(8) - }; -} - -module.exports = { - 'detect': isGIF, - 'calculate': calculate -}; - },{}],65:[function(_dereq_,module,exports){ -'use strict'; - -/** - * ICNS Header - * - * | Offset | Size | Purpose | - * | 0 | 4 | Magic literal, must be "icns" (0x69, 0x63, 0x6e, 0x73) | - * | 4 | 4 | Length of file, in bytes, msb first. | - * - **/ -var SIZE_HEADER = 4 + 4; // 8 -var FILE_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN - -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 4 | Icon type, see OSType below. | - * | 4 | 4 | Length of data, in bytes (including type and length), msb first. | - * | 8 | n | Icon data | - * - **/ -var ENTRY_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN - -function isICNS (buffer) { - return ('icns' === buffer.toString('ascii', 0, 4)); -} - -var ICON_TYPE_SIZE = { - ICON: 32, - 'ICN#': 32, - // m => 16 x 16 - 'icm#': 16, - icm4: 16, - icm8: 16, - // s => 16 x 16 - 'ics#': 16, - ics4: 16, - ics8: 16, - is32: 16, - s8mk: 16, - icp4: 16, - // l => 32 x 32 - icl4: 32, - icl8: 32, - il32: 32, - l8mk: 32, - icp5: 32, - ic11: 32, - // h => 48 x 48 - ich4: 48, - ich8: 48, - ih32: 48, - h8mk: 48, - // . => 64 x 64 - icp6: 64, - ic12: 32, - // t => 128 x 128 - it32: 128, - t8mk: 128, - ic07: 128, - // . => 256 x 256 - ic08: 256, - ic13: 256, - // . => 512 x 512 - ic09: 512, - ic14: 512, - // . => 1024 x 1024 - ic10: 1024, -}; - -function readImageHeader(buffer, imageOffset) { - var imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET; - // returns [type, length] - return [ - buffer.toString('ascii', imageOffset, imageLengthOffset), - buffer.readUInt32BE(imageLengthOffset) - ]; -} - -function getImageSize(type) { - var size = ICON_TYPE_SIZE[type]; - return { width: size, height: size, type: type }; -} - -function calculate (buffer) { - var - bufferLength = buffer.length, - imageOffset = SIZE_HEADER, - fileLength = buffer.readUInt32BE(FILE_LENGTH_OFFSET), - imageHeader, - imageSize, - result; - - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - - if (imageOffset === fileLength) { - return imageSize; - } - - result = { - width: imageSize.width, - height: imageSize.height, - images: [imageSize] +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } }; - - while (imageOffset < fileLength && imageOffset < bufferLength) { - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - result.images.push(imageSize); +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } } - - return result; } -module.exports = { - 'detect': isICNS, - 'calculate': calculate -}; - },{}],66:[function(_dereq_,module,exports){ -'use strict'; - -var TYPE_ICON = 1; - -/** - * ICON Header - * - * | Offset | Size | Purpose | - * | 0 | 2 | Reserved. Must always be 0. | - * | 2 | 2 | Image type: 1 for icon (.ICO) image, 2 for cursor (.CUR) image. Other values are invalid. | - * | 4 | 2 | Number of images in the file. | - * - **/ -var SIZE_HEADER = 2 + 2 + 2; // 6 - -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 1 | Image width in pixels. Can be any number between 0 and 255. Value 0 means width is 256 pixels. | - * | 1 | 1 | Image height in pixels. Can be any number between 0 and 255. Value 0 means height is 256 pixels. | - * | 2 | 1 | Number of colors in the color palette. Should be 0 if the image does not use a color palette. | - * | 3 | 1 | Reserved. Should be 0. | - * | 4 | 2 | ICO format: Color planes. Should be 0 or 1. | - * | | | CUR format: The horizontal coordinates of the hotspot in number of pixels from the left. | - * | 6 | 2 | ICO format: Bits per pixel. | - * | | | CUR format: The vertical coordinates of the hotspot in number of pixels from the top. | - * | 8 | 4 | The size of the image's data in bytes | - * | 12 | 4 | The offset of BMP or PNG data from the beginning of the ICO/CUR file | - * - **/ -var SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4; // 16 - -function isICO (buffer) { - var type; - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - type = buffer.readUInt16LE(2); - return type === TYPE_ICON; -} - -function getSizeFromOffset(buffer, offset) { - var value = buffer.readUInt8(offset); - return value === 0 ? 256 : value; -} - -function getImageSize(buffer, imageIndex) { - var offset = SIZE_HEADER + (imageIndex * SIZE_IMAGE_ENTRY); - return { - 'width': getSizeFromOffset(buffer, offset), - 'height': getSizeFromOffset(buffer, offset + 1) - }; -} - -function calculate (buffer) { - var - nbImages = buffer.readUInt16LE(4), - result = getImageSize(buffer, 0), - imageIndex; - - if (nbImages === 1) { - return result; - } - - result.images = [{ - width: result.width, - height: result.height - }]; - - for (imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { - result.images.push(getImageSize(buffer, imageIndex)); - } - - return result; -} - -module.exports = { - 'detect': isICO, - 'calculate': calculate -}; - -},{}],67:[function(_dereq_,module,exports){ -'use strict'; - -var readUInt = _dereq_('../readUInt'); - -// NOTE: we only support baseline and progressive JPGs here -// due to the structure of the loader class, we only get a buffer -// with a maximum size of 4096 bytes. so if the SOF marker is outside -// if this range we can't detect the file size correctly. - -function isJPG (buffer) { //, filepath - var SOIMarker = buffer.toString('hex', 0, 2); - return ('ffd8' === SOIMarker); -} - -function isEXIF (buffer) { //, filepath - var exifMarker = buffer.toString('hex', 2, 6); - return (exifMarker === '45786966'); // 'Exif' -} - -function extractSize (buffer, i) { - return { - 'height' : buffer.readUInt16BE(i), - 'width' : buffer.readUInt16BE(i + 2) - }; -} - -var APP1_DATA_SIZE_BYTES = 2; -var EXIF_HEADER_BYTES = 6; -var TIFF_BYTE_ALIGN_BYTES = 2; -var BIG_ENDIAN_BYTE_ALIGN = '4d4d'; -var LITTLE_ENDIAN_BYTE_ALIGN = '4949'; - -// Each entry is exactly 12 bytes -var IDF_ENTRY_BYTES = 12; -var NUM_DIRECTORY_ENTRIES_BYTES = 2; - -function validateExifBlock (buffer, i) { - // Skip APP1 Data Size - var exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, i); - - // Consider byte alignment - var byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); - - // Ignore Empty EXIF. Validate byte alignment - var isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; - var isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN; - - if (isBigEndian || isLittleEndian) { - return extractOrientation(exifBlock, isBigEndian); - } -} - -function extractOrientation (exifBlock, isBigEndian) { - // TODO: assert that this contains 0x002A - // var STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2; - // var TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4; - - // TODO: derive from TIFF_IMAGE_FILE_DIRECTORY_BYTES - var idfOffset = 8; - - // IDF osset works from right after the header bytes - // (so the offset includes the tiff byte align) - var offset = EXIF_HEADER_BYTES + idfOffset; - - var idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian); - - var start; - var end; - for (var directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) { - start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES); - end = start + IDF_ENTRY_BYTES; - - // Skip on corrupt EXIF blocks - if (start > exifBlock.length) { - return; - } - - var block = exifBlock.slice(start, end); - var tagNumber = readUInt(block, 16, 0, isBigEndian); - - // 0x0112 (decimal: 274) is the `orientation` tag ID - if (tagNumber === 274) { - var dataFormat = readUInt(block, 16, 2, isBigEndian); - if (dataFormat !== 3) { - return; - } - - // unsinged int has 2 bytes per component - // if there would more than 4 bytes in total it's a pointer - var numberOfComponents = readUInt(block, 32, 4, isBigEndian); - if (numberOfComponents !== 1) { - return; - } - - return readUInt(block, 16, 8, isBigEndian); - } - } -} - -function validateBuffer (buffer, i) { - // index should be within buffer limits - if (i > buffer.length) { - throw new TypeError('Corrupt JPG, exceeded buffer limits'); - } - // Every JPEG block must begin with a 0xFF - if (buffer[i] !== 0xFF) { - throw new TypeError('Invalid JPG, marker table corrupted'); - } -} - -function calculate (buffer) { - // Skip 4 chars, they are for signature - buffer = buffer.slice(4); - - var orientation; - - var i, next; - while (buffer.length) { - // read length of the next block - i = buffer.readUInt16BE(0); - - if (isEXIF(buffer)) { - orientation = validateExifBlock(buffer, i); - } - - // ensure correct format - validateBuffer(buffer, i); - - // 0xFFC0 is baseline standard(SOF) - // 0xFFC1 is baseline optimized(SOF) - // 0xFFC2 is progressive(SOF2) - next = buffer[i + 1]; - if (next === 0xC0 || next === 0xC1 || next === 0xC2) { - var size = extractSize(buffer, i + 5); - - if (!orientation) { - return size; - } - - return { - width: size.width, - height: size.height, - orientation: orientation - }; - } - - // move to the next block - buffer = buffer.slice(i + 2); - } - - throw new TypeError('Invalid JPG, no size found'); -} - -module.exports = { - 'detect': isJPG, - 'calculate': calculate -}; - -},{"../readUInt":59}],68:[function(_dereq_,module,exports){ -'use strict'; - -var pngSignature = 'PNG\r\n\x1a\n'; -var pngImageHeaderChunkName = 'IHDR'; - -// Used to detect "fried" png's: http://www.jongware.com/pngdefry.html -var pngFriedChunkName = 'CgBI'; - -function isPNG (buffer) { - if (pngSignature === buffer.toString('ascii', 1, 8)) { - var chunkName = buffer.toString('ascii', 12, 16); - if (chunkName === pngFriedChunkName) { - chunkName = buffer.toString('ascii', 28, 32); - } - if (chunkName !== pngImageHeaderChunkName) { - throw new TypeError('invalid png'); - } - return true; - } -} - -function calculate (buffer) { - if (buffer.toString('ascii', 12, 16) === pngFriedChunkName) { - return { - 'width': buffer.readUInt32BE(32), - 'height': buffer.readUInt32BE(36) - }; - } - return { - 'width': buffer.readUInt32BE(16), - 'height': buffer.readUInt32BE(20) - }; -} - -module.exports = { - 'detect': isPNG, - 'calculate': calculate -}; - -},{}],69:[function(_dereq_,module,exports){ -'use strict'; - -function isPSD (buffer) { - return ('8BPS' === buffer.toString('ascii', 0, 4)); -} - -function calculate (buffer) { - return { - 'width': buffer.readUInt32BE(18), - 'height': buffer.readUInt32BE(14) - }; -} - -module.exports = { - 'detect': isPSD, - 'calculate': calculate -}; - -},{}],70:[function(_dereq_,module,exports){ -'use strict'; - -var svgReg = /"']|"[^"]*"|'[^']*')*>/; -function isSVG (buffer) { - return svgReg.test(buffer); -} - -var extractorRegExps = { - 'root': svgReg, - 'width': /\swidth=(['"])([^%]+?)\1/, - 'height': /\sheight=(['"])([^%]+?)\1/, - 'viewbox': /\sviewBox=(['"])(.+?)\1/ -}; - -var units = { - 'cm': 96/2.54, - 'mm': 96/2.54/10, - 'm': 96/2.54*100, - 'pt': 96/72, - 'pc': 96/72/12, - 'em': 16, - 'ex': 8, -}; - -function parseLength (len) { - var m = /([0-9.]+)([a-z]*)/.exec(len); - if (!m) { - return undefined; - } - return Math.round(parseFloat(m[1]) * (units[m[2]] || 1)); -} - -function parseViewbox (viewbox) { - var bounds = viewbox.split(' '); - return { - 'width': parseLength(bounds[2]), - 'height': parseLength(bounds[3]) - }; -} - -function parseAttributes (root) { - var width = root.match(extractorRegExps.width); - var height = root.match(extractorRegExps.height); - var viewbox = root.match(extractorRegExps.viewbox); - return { - 'width': width && parseLength(width[2]), - 'height': height && parseLength(height[2]), - 'viewbox': viewbox && parseViewbox(viewbox[2]) - }; -} - -function calculateByDimensions (attrs) { - return { - 'width': attrs.width, - 'height': attrs.height - }; -} - -function calculateByViewbox (attrs) { - var ratio = attrs.viewbox.width / attrs.viewbox.height; - if (attrs.width) { - return { - 'width': attrs.width, - 'height': Math.floor(attrs.width / ratio) - }; - } - if (attrs.height) { - return { - 'width': Math.floor(attrs.height * ratio), - 'height': attrs.height - }; - } - return { - 'width': attrs.viewbox.width, - 'height': attrs.viewbox.height - }; -} - -function calculate (buffer) { - var root = buffer.toString('utf8').match(extractorRegExps.root); - if (root) { - var attrs = parseAttributes(root[0]); - if (attrs.width && attrs.height) { - return calculateByDimensions(attrs); - } - if (attrs.viewbox) { - return calculateByViewbox(attrs); - } - } - throw new TypeError('invalid svg'); -} - -module.exports = { - 'detect': isSVG, - 'calculate': calculate -}; - -},{}],71:[function(_dereq_,module,exports){ -(function (Buffer){(function (){ -'use strict'; - -// based on http://www.compix.com/fileformattif.htm -// TO-DO: support big-endian as well - -var fs = _dereq_('fs'); -var readUInt = _dereq_('../readUInt'); - -function isTIFF (buffer) { - var hex4 = buffer.toString('hex', 0, 4); - return ('49492a00' === hex4 || '4d4d002a' === hex4); -} - -// Read IFD (image-file-directory) into a buffer -function readIFD (buffer, filepath, isBigEndian) { - - var ifdOffset = readUInt(buffer, 32, 4, isBigEndian); - - // read only till the end of the file - var bufferSize = 1024; - var fileSize = fs.statSync(filepath).size; - if (ifdOffset + bufferSize > fileSize) { - bufferSize = fileSize - ifdOffset - 10; - } - - // populate the buffer - var endBuffer = Buffer.alloc(bufferSize); - var descriptor = fs.openSync(filepath, 'r'); - fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset); - - // var ifdLength = readUInt(endBuffer, 16, 0, isBigEndian); - var ifdBuffer = endBuffer.slice(2); //, 2 + 12 * ifdLength); - return ifdBuffer; -} - -// TIFF values seem to be messed up on Big-Endian, this helps -function readValue (buffer, isBigEndian) { - var low = readUInt(buffer, 16, 8, isBigEndian); - var high = readUInt(buffer, 16, 10, isBigEndian); - return (high << 16) + low; -} - -// move to the next tag -function nextTag (buffer) { - if (buffer.length > 24) { - return buffer.slice(12); - } -} - -// Extract IFD tags from TIFF metadata -/* eslint-disable complexity */ -function extractTags (buffer, isBigEndian) { - var tags = {}; - var code, type, length; - - while (buffer && buffer.length) { - code = readUInt(buffer, 16, 0, isBigEndian); - type = readUInt(buffer, 16, 2, isBigEndian); - length = readUInt(buffer, 32, 4, isBigEndian); - - // 0 means end of IFD - if (code === 0) { - break; - } else { - // 256 is width, 257 is height - // if (code === 256 || code === 257) { - if (length === 1 && (type === 3 || type === 4)) { - tags[code] = readValue(buffer, isBigEndian); - } - - // move to the next tag - buffer = nextTag(buffer); - } - } - return tags; -} -/* eslint-enable complexity */ - -// Test if the TIFF is Big Endian or Little Endian -function determineEndianness (buffer) { - var signature = buffer.toString('ascii', 0, 2); - if ('II' === signature) { - return 'LE'; - } else if ('MM' === signature) { - return 'BE'; - } -} - -function calculate (buffer, filepath) { - - if (!filepath) { - throw new TypeError('Tiff doesn\'t support buffer'); - } - - // Determine BE/LE - var isBigEndian = determineEndianness(buffer) === 'BE'; - - // read the IFD - var ifdBuffer = readIFD(buffer, filepath, isBigEndian); - - // extract the tags from the IFD - var tags = extractTags(ifdBuffer, isBigEndian); - - var width = tags[256]; - var height = tags[257]; - - if (!width || !height) { - throw new TypeError('Invalid Tiff, missing tags'); - } - - return { - 'width': width, - 'height': height - }; -} - -module.exports = { - 'detect': isTIFF, - 'calculate': calculate -}; - -}).call(this)}).call(this,_dereq_("buffer").Buffer) -},{"../readUInt":59,"buffer":18,"fs":16}],72:[function(_dereq_,module,exports){ -'use strict'; - -// based on https://developers.google.com/speed/webp/docs/riff_container - -function isWebP (buffer) { - var riffHeader = 'RIFF' === buffer.toString('ascii', 0, 4); - var webpHeader = 'WEBP' === buffer.toString('ascii', 8, 12); - var vp8Header = 'VP8' === buffer.toString('ascii', 12, 15); - return (riffHeader && webpHeader && vp8Header); -} - -/* eslint-disable complexity */ -function calculate (buffer) { - var chunkHeader = buffer.toString('ascii', 12, 16); - buffer = buffer.slice(20, 30); - - // Extended webp stream signature - if (chunkHeader === 'VP8X') { - var extendedHeader = buffer[0]; - var validStart = (extendedHeader & 0xc0) === 0; - var validEnd = (extendedHeader & 0x01) === 0; - if (validStart && validEnd) { - return calculateExtended(buffer); - } else { - return false; - } - } - - // Lossless webp stream signature - if (chunkHeader === 'VP8 ' && buffer[0] !== 0x2f) { - return calculateLossy(buffer); - } - - // Lossy webp stream signature - var signature = buffer.toString('hex', 3, 6); - if (chunkHeader === 'VP8L' && signature !== '9d012a') { - return calculateLossless(buffer); - } - - return false; -} -/* eslint-enable complexity */ - -function calculateExtended (buffer) { - return { - 'width': 1 + buffer.readUIntLE(4, 3), - 'height': 1 + buffer.readUIntLE(7, 3) - }; -} - -function calculateLossless (buffer) { - return { - 'width': 1 + (((buffer[2] & 0x3F) << 8) | buffer[1]), - 'height': 1 + (((buffer[4] & 0xF) << 10) | (buffer[3] << 2) | - ((buffer[2] & 0xC0) >> 6)) - }; -} - -function calculateLossy (buffer) { - // `& 0x3fff` returns the last 14 bits - // TO-DO: include webp scaling in the calculations - return { - 'width': buffer.readInt16LE(6) & 0x3fff, - 'height': buffer.readInt16LE(8) & 0x3fff - }; -} - -module.exports = { - 'detect': isWebP, - 'calculate': calculate -}; - -},{}],73:[function(_dereq_,module,exports){ module.exports = true; -},{}],74:[function(_dereq_,module,exports){ +},{}],67:[function(_dereq_,module,exports){ 'use strict' module.exports = isMobile @@ -16885,7 +15826,7 @@ function isMobile (opts) { return result } -},{}],75:[function(_dereq_,module,exports){ +},{}],68:[function(_dereq_,module,exports){ 'use strict'; /** @@ -16922,7 +15863,7 @@ module.exports = function(str){ return true; } -},{}],76:[function(_dereq_,module,exports){ +},{}],69:[function(_dereq_,module,exports){ var rootPosition = { left: 0, top: 0 } module.exports = mouseEventOffset @@ -16949,7 +15890,476 @@ function getBoundingClientOffset (element) { } } -},{}],77:[function(_dereq_,module,exports){ +},{}],70:[function(_dereq_,module,exports){ +(function (global,setImmediate){(function (){ +/*! Native Promise Only + v0.8.1 (c) Kyle Simpson + MIT License: http://getify.mit-license.org +*/ + +(function UMD(name,context,definition){ + // special form of UMD for polyfilling across evironments + context[name] = context[name] || definition(); + if (typeof module != "undefined" && module.exports) { module.exports = context[name]; } + else if (typeof define == "function" && define.amd) { define(function $AMD$(){ return context[name]; }); } +})("Promise",typeof global != "undefined" ? global : this,function DEF(){ + /*jshint validthis:true */ + "use strict"; + + var builtInProp, cycle, scheduling_queue, + ToString = Object.prototype.toString, + timer = (typeof setImmediate != "undefined") ? + function timer(fn) { return setImmediate(fn); } : + setTimeout + ; + + // dammit, IE8. + try { + Object.defineProperty({},"x",{}); + builtInProp = function builtInProp(obj,name,val,config) { + return Object.defineProperty(obj,name,{ + value: val, + writable: true, + configurable: config !== false + }); + }; + } + catch (err) { + builtInProp = function builtInProp(obj,name,val) { + obj[name] = val; + return obj; + }; + } + + // Note: using a queue instead of array for efficiency + scheduling_queue = (function Queue() { + var first, last, item; + + function Item(fn,self) { + this.fn = fn; + this.self = self; + this.next = void 0; + } + + return { + add: function add(fn,self) { + item = new Item(fn,self); + if (last) { + last.next = item; + } + else { + first = item; + } + last = item; + item = void 0; + }, + drain: function drain() { + var f = first; + first = last = cycle = void 0; + + while (f) { + f.fn.call(f.self); + f = f.next; + } + } + }; + })(); + + function schedule(fn,self) { + scheduling_queue.add(fn,self); + if (!cycle) { + cycle = timer(scheduling_queue.drain); + } + } + + // promise duck typing + function isThenable(o) { + var _then, o_type = typeof o; + + if (o != null && + ( + o_type == "object" || o_type == "function" + ) + ) { + _then = o.then; + } + return typeof _then == "function" ? _then : false; + } + + function notify() { + for (var i=0; i 0) { + schedule(notify,self); + } + } + } + catch (err) { + reject.call(new MakeDefWrapper(self),err); + } + } + + function reject(msg) { + var self = this; + + // already triggered? + if (self.triggered) { return; } + + self.triggered = true; + + // unwrap + if (self.def) { + self = self.def; + } + + self.msg = msg; + self.state = 2; + if (self.chain.length > 0) { + schedule(notify,self); + } + } + + function iteratePromises(Constructor,arr,resolver,rejecter) { + for (var idx=0; idx 2) { - var lastSlashIndex = res.lastIndexOf('/'); - if (lastSlashIndex !== res.length - 1) { - if (lastSlashIndex === -1) { - res = ''; - lastSegmentLength = 0; - } else { - res = res.slice(0, lastSlashIndex); - lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); - } - lastSlash = i; - dots = 0; - continue; - } - } else if (res.length === 2 || res.length === 1) { - res = ''; - lastSegmentLength = 0; - lastSlash = i; - dots = 0; - continue; - } - } - if (allowAboveRoot) { - if (res.length > 0) - res += '/..'; - else - res = '..'; - lastSegmentLength = 2; - } - } else { - if (res.length > 0) - res += '/' + path.slice(lastSlash + 1, i); - else - res = path.slice(lastSlash + 1, i); - lastSegmentLength = i - lastSlash - 1; - } - lastSlash = i; - dots = 0; - } else if (code === 46 /*.*/ && dots !== -1) { - ++dots; - } else { - dots = -1; - } - } - return res; -} - -function _format(sep, pathObject) { - var dir = pathObject.dir || pathObject.root; - var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); - if (!dir) { - return base; - } - if (dir === pathObject.root) { - return dir + base; - } - return dir + sep + base; -} - -var posix = { - // path.resolve([from ...], to) - resolve: function resolve() { - var resolvedPath = ''; - var resolvedAbsolute = false; - var cwd; - - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path; - if (i >= 0) - path = arguments[i]; - else { - if (cwd === undefined) - cwd = process.cwd(); - path = cwd; - } - - assertPath(path); - - // Skip empty entries - if (path.length === 0) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; - } - - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - - // Normalize the path - resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); - - if (resolvedAbsolute) { - if (resolvedPath.length > 0) - return '/' + resolvedPath; - else - return '/'; - } else if (resolvedPath.length > 0) { - return resolvedPath; - } else { - return '.'; - } - }, - - normalize: function normalize(path) { - assertPath(path); - - if (path.length === 0) return '.'; - - var isAbsolute = path.charCodeAt(0) === 47 /*/*/; - var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; - - // Normalize the path - path = normalizeStringPosix(path, !isAbsolute); - - if (path.length === 0 && !isAbsolute) path = '.'; - if (path.length > 0 && trailingSeparator) path += '/'; - - if (isAbsolute) return '/' + path; - return path; - }, - - isAbsolute: function isAbsolute(path) { - assertPath(path); - return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; - }, - - join: function join() { - if (arguments.length === 0) - return '.'; - var joined; - for (var i = 0; i < arguments.length; ++i) { - var arg = arguments[i]; - assertPath(arg); - if (arg.length > 0) { - if (joined === undefined) - joined = arg; - else - joined += '/' + arg; - } - } - if (joined === undefined) - return '.'; - return posix.normalize(joined); - }, - - relative: function relative(from, to) { - assertPath(from); - assertPath(to); - - if (from === to) return ''; - - from = posix.resolve(from); - to = posix.resolve(to); - - if (from === to) return ''; - - // Trim any leading backslashes - var fromStart = 1; - for (; fromStart < from.length; ++fromStart) { - if (from.charCodeAt(fromStart) !== 47 /*/*/) - break; - } - var fromEnd = from.length; - var fromLen = fromEnd - fromStart; - - // Trim any leading backslashes - var toStart = 1; - for (; toStart < to.length; ++toStart) { - if (to.charCodeAt(toStart) !== 47 /*/*/) - break; - } - var toEnd = to.length; - var toLen = toEnd - toStart; - - // Compare paths to find the longest common path from root - var length = fromLen < toLen ? fromLen : toLen; - var lastCommonSep = -1; - var i = 0; - for (; i <= length; ++i) { - if (i === length) { - if (toLen > length) { - if (to.charCodeAt(toStart + i) === 47 /*/*/) { - // We get here if `from` is the exact base path for `to`. - // For example: from='/foo/bar'; to='/foo/bar/baz' - return to.slice(toStart + i + 1); - } else if (i === 0) { - // We get here if `from` is the root - // For example: from='/'; to='/foo' - return to.slice(toStart + i); - } - } else if (fromLen > length) { - if (from.charCodeAt(fromStart + i) === 47 /*/*/) { - // We get here if `to` is the exact base path for `from`. - // For example: from='/foo/bar/baz'; to='/foo/bar' - lastCommonSep = i; - } else if (i === 0) { - // We get here if `to` is the root. - // For example: from='/foo'; to='/' - lastCommonSep = 0; - } - } - break; - } - var fromCode = from.charCodeAt(fromStart + i); - var toCode = to.charCodeAt(toStart + i); - if (fromCode !== toCode) - break; - else if (fromCode === 47 /*/*/) - lastCommonSep = i; - } - - var out = ''; - // Generate the relative path based on the path difference between `to` - // and `from` - for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { - if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { - if (out.length === 0) - out += '..'; - else - out += '/..'; - } - } - - // Lastly, append the rest of the destination (`to`) path that comes after - // the common path parts - if (out.length > 0) - return out + to.slice(toStart + lastCommonSep); - else { - toStart += lastCommonSep; - if (to.charCodeAt(toStart) === 47 /*/*/) - ++toStart; - return to.slice(toStart); - } - }, - - _makeLong: function _makeLong(path) { - return path; - }, - - dirname: function dirname(path) { - assertPath(path); - if (path.length === 0) return '.'; - var code = path.charCodeAt(0); - var hasRoot = code === 47 /*/*/; - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } - - if (end === -1) return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) return '//'; - return path.slice(0, end); - }, - - basename: function basename(path, ext) { - if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); - assertPath(path); - - var start = 0; - var end = -1; - var matchedSlash = true; - var i; - - if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { - if (ext.length === path.length && ext === path) return ''; - var extIdx = ext.length - 1; - var firstNonSlashEnd = -1; - for (i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else { - if (firstNonSlashEnd === -1) { - // We saw the first non-path separator, remember this index in case - // we need it if the extension ends up not matching - matchedSlash = false; - firstNonSlashEnd = i + 1; - } - if (extIdx >= 0) { - // Try to match the explicit extension - if (code === ext.charCodeAt(extIdx)) { - if (--extIdx === -1) { - // We matched the extension, so mark this as the end of our path - // component - end = i; - } - } else { - // Extension does not match, so our result is the entire path - // component - extIdx = -1; - end = firstNonSlashEnd; - } - } - } - } - - if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; - return path.slice(start, end); - } else { - for (i = path.length - 1; i >= 0; --i) { - if (path.charCodeAt(i) === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - start = i + 1; - break; - } - } else if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // path component - matchedSlash = false; - end = i + 1; - } - } - - if (end === -1) return ''; - return path.slice(start, end); - } - }, - - extname: function extname(path) { - assertPath(path); - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - for (var i = path.length - 1; i >= 0; --i) { - var code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) - startDot = i; - else if (preDotState !== 1) - preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - return ''; - } - return path.slice(startDot, end); - }, - - format: function format(pathObject) { - if (pathObject === null || typeof pathObject !== 'object') { - throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); - } - return _format('/', pathObject); - }, - - parse: function parse(path) { - assertPath(path); - - var ret = { root: '', dir: '', base: '', ext: '', name: '' }; - if (path.length === 0) return ret; - var code = path.charCodeAt(0); - var isAbsolute = code === 47 /*/*/; - var start; - if (isAbsolute) { - ret.root = '/'; - start = 1; - } else { - start = 0; - } - var startDot = -1; - var startPart = 0; - var end = -1; - var matchedSlash = true; - var i = path.length - 1; - - // Track the state of characters (if any) we see before our first dot and - // after any path separator we find - var preDotState = 0; - - // Get non-dir info - for (; i >= start; --i) { - code = path.charCodeAt(i); - if (code === 47 /*/*/) { - // If we reached a path separator that was not part of a set of path - // separators at the end of the string, stop now - if (!matchedSlash) { - startPart = i + 1; - break; - } - continue; - } - if (end === -1) { - // We saw the first non-path separator, mark this as the end of our - // extension - matchedSlash = false; - end = i + 1; - } - if (code === 46 /*.*/) { - // If this is our first dot, mark it as the start of our extension - if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; - } else if (startDot !== -1) { - // We saw a non-dot and non-path separator before our dot, so we should - // have a good chance at having a non-empty extension - preDotState = -1; - } - } - - if (startDot === -1 || end === -1 || - // We saw a non-dot character immediately before the dot - preDotState === 0 || - // The (right-most) trimmed path component is exactly '..' - preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { - if (end !== -1) { - if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); - } - } else { - if (startPart === 0 && isAbsolute) { - ret.name = path.slice(1, startDot); - ret.base = path.slice(1, end); - } else { - ret.name = path.slice(startPart, startDot); - ret.base = path.slice(startPart, end); - } - ret.ext = path.slice(startDot, end); - } - - if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; - - return ret; - }, - - sep: '/', - delimiter: ':', - win32: null, - posix: null -}; - -posix.posix = posix; - -module.exports = posix; - -}).call(this)}).call(this,_dereq_('_process')) -},{"_process":87}],79:[function(_dereq_,module,exports){ +},{}],73:[function(_dereq_,module,exports){ /* * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc * @license MIT @@ -17669,7 +16546,7 @@ if (typeof window === 'object') module.exports = PolyBool; -},{"./lib/build-log":80,"./lib/epsilon":81,"./lib/geojson":82,"./lib/intersecter":83,"./lib/segment-chainer":85,"./lib/segment-selector":86}],80:[function(_dereq_,module,exports){ +},{"./lib/build-log":74,"./lib/epsilon":75,"./lib/geojson":76,"./lib/intersecter":77,"./lib/segment-chainer":79,"./lib/segment-selector":80}],74:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -17784,7 +16661,7 @@ function BuildLog(){ module.exports = BuildLog; -},{}],81:[function(_dereq_,module,exports){ +},{}],75:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -17956,7 +16833,7 @@ function Epsilon(eps){ module.exports = Epsilon; -},{}],82:[function(_dereq_,module,exports){ +},{}],76:[function(_dereq_,module,exports){ // (c) Copyright 2017, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18146,7 +17023,7 @@ var GeoJSON = { module.exports = GeoJSON; -},{}],83:[function(_dereq_,module,exports){ +},{}],77:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18653,7 +17530,7 @@ function Intersecter(selfIntersection, eps, buildLog){ module.exports = Intersecter; -},{"./linked-list":84}],84:[function(_dereq_,module,exports){ +},{"./linked-list":78}],78:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18736,7 +17613,7 @@ var LinkedList = { module.exports = LinkedList; -},{}],85:[function(_dereq_,module,exports){ +},{}],79:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -18990,7 +17867,7 @@ function SegmentChainer(segments, eps, buildLog){ module.exports = SegmentChainer; -},{}],86:[function(_dereq_,module,exports){ +},{}],80:[function(_dereq_,module,exports){ // (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc // MIT License // Project Home: https://github.com/voidqk/polybooljs @@ -19158,7 +18035,1391 @@ var SegmentSelector = { module.exports = SegmentSelector; -},{}],87:[function(_dereq_,module,exports){ +},{}],81:[function(_dereq_,module,exports){ +'use strict'; + + +var Transform = _dereq_('stream').Transform; +var streamParser = _dereq_('stream-parser'); + + +function ParserStream() { + Transform.call(this, { readableObjectMode: true }); +} + +// Inherit from Transform +ParserStream.prototype = Object.create(Transform.prototype); +ParserStream.prototype.constructor = ParserStream; + +streamParser(ParserStream.prototype); + + +exports.ParserStream = ParserStream; + + +exports.sliceEq = function (src, start, dest) { + for (var i = start, j = 0; j < dest.length;) { + if (src[i++] !== dest[j++]) return false; + } + return true; +}; + +exports.str2arr = function (str, format) { + var arr = [], i = 0; + + if (format && format === 'hex') { + while (i < str.length) { + arr.push(parseInt(str.slice(i, i + 2), 16)); + i += 2; + } + } else { + for (; i < str.length; i++) { + /* eslint-disable no-bitwise */ + arr.push(str.charCodeAt(i) & 0xFF); + } + } + + return arr; +}; + +exports.readUInt16LE = function (data, offset) { + return data[offset] | (data[offset + 1] << 8); +}; + +exports.readUInt16BE = function (data, offset) { + return data[offset + 1] | (data[offset] << 8); +}; + +exports.readUInt32LE = function (data, offset) { + return data[offset] | + (data[offset + 1] << 8) | + (data[offset + 2] << 16) | + (data[offset + 3] * 0x1000000); +}; + +exports.readUInt32BE = function (data, offset) { + return data[offset + 3] | + (data[offset + 2] << 8) | + (data[offset + 1] << 16) | + (data[offset] * 0x1000000); +}; + + +function ProbeError(message, code, statusCode) { + Error.call(this); + Error.captureStackTrace(this, this.constructor); + + this.name = this.constructor.name; + + this.message = message; + if (code) this.code = code; + if (statusCode) this.statusCode = statusCode; +} + +// Inherit from Error +ProbeError.prototype = Object.create(Error.prototype); +ProbeError.prototype.constructor = ProbeError; + + +exports.ProbeError = ProbeError; + +},{"stream":98,"stream-parser":114}],82:[function(_dereq_,module,exports){ + +/* eslint-disable no-bitwise */ +/* eslint-disable consistent-return */ + +'use strict'; + +////////////////////////////////////////////////////////////////////////// +// Helpers +// +function error(message, code) { + var err = new Error(message); + err.code = code; + return err; +} + + +function utf8_decode(str) { + try { + return decodeURIComponent(escape(str)); + } catch (_) { + return str; + } +} + + +////////////////////////////////////////////////////////////////////////// +// Exif parser +// +// Input: +// - jpeg_bin: Uint8Array - jpeg file +// - exif_start: Number - start of TIFF header (after Exif\0\0) +// - exif_end: Number - end of Exif segment +// - on_entry: Number - callback +// +function ExifParser(jpeg_bin, exif_start, exif_end) { + // Uint8Array, exif without signature (which isn't included in offsets) + this.input = jpeg_bin.subarray(exif_start, exif_end); + + // offset correction for `on_entry` callback + this.start = exif_start; + + // Check TIFF header (includes byte alignment and first IFD offset) + var sig = String.fromCharCode.apply(null, this.input.subarray(0, 4)); + + if (sig !== 'II\x2A\0' && sig !== 'MM\0\x2A') { + throw error('invalid TIFF signature', 'EBADDATA'); + } + + // true if motorola (big endian) byte alignment, false if intel + this.big_endian = sig[0] === 'M'; +} + + +ExifParser.prototype.each = function (on_entry) { + // allow premature exit + this.aborted = false; + + var offset = this.read_uint32(4); + + this.ifds_to_read = [ { + id: 0, + offset: offset + } ]; + + while (this.ifds_to_read.length > 0 && !this.aborted) { + var i = this.ifds_to_read.shift(); + if (!i.offset) continue; + this.scan_ifd(i.id, i.offset, on_entry); + } +}; + + +ExifParser.prototype.read_uint16 = function (offset) { + var d = this.input; + if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA'); + + return this.big_endian ? + d[offset] * 0x100 + d[offset + 1] : + d[offset] + d[offset + 1] * 0x100; +}; + + +ExifParser.prototype.read_uint32 = function (offset) { + var d = this.input; + if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA'); + + return this.big_endian ? + d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3] : + d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000; +}; + + +ExifParser.prototype.is_subifd_link = function (ifd, tag) { + return (ifd === 0 && tag === 0x8769) || // SubIFD + (ifd === 0 && tag === 0x8825) || // GPS Info + (ifd === 0x8769 && tag === 0xA005); // Interop IFD +}; + + +// Returns byte length of a single component of a given format +// +ExifParser.prototype.exif_format_length = function (format) { + switch (format) { + case 1: // byte + case 2: // ascii + case 6: // sbyte + case 7: // undefined + return 1; + + case 3: // short + case 8: // sshort + return 2; + + case 4: // long + case 9: // slong + case 11: // float + return 4; + + case 5: // rational + case 10: // srational + case 12: // double + return 8; + + default: + // unknown type + return 0; + } +}; + + +// Reads Exif data +// +ExifParser.prototype.exif_format_read = function (format, offset) { + var v; + + switch (format) { + case 1: // byte + case 2: // ascii + v = this.input[offset]; + return v; + + case 6: // sbyte + v = this.input[offset]; + return v | (v & 0x80) * 0x1fffffe; + + case 3: // short + v = this.read_uint16(offset); + return v; + + case 8: // sshort + v = this.read_uint16(offset); + return v | (v & 0x8000) * 0x1fffe; + + case 4: // long + v = this.read_uint32(offset); + return v; + + case 9: // slong + v = this.read_uint32(offset); + return v | 0; + + case 5: // rational + case 10: // srational + case 11: // float + case 12: // double + return null; // not implemented + + case 7: // undefined + return null; // blob + + default: + // unknown type + return null; + } +}; + + +ExifParser.prototype.scan_ifd = function (ifd_no, offset, on_entry) { + var entry_count = this.read_uint16(offset); + + offset += 2; + + for (var i = 0; i < entry_count; i++) { + var tag = this.read_uint16(offset); + var format = this.read_uint16(offset + 2); + var count = this.read_uint32(offset + 4); + + var comp_length = this.exif_format_length(format); + var data_length = count * comp_length; + var data_offset = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8); + var is_subifd_link = false; + + if (data_offset + data_length > this.input.length) { + throw error('unexpected EOF', 'EBADDATA'); + } + + var value = []; + var comp_offset = data_offset; + + for (var j = 0; j < count; j++, comp_offset += comp_length) { + var item = this.exif_format_read(format, comp_offset); + if (item === null) { + value = null; + break; + } + value.push(item); + } + + if (Array.isArray(value) && format === 2) { + value = utf8_decode(String.fromCharCode.apply(null, value)); + if (value && value[value.length - 1] === '\0') value = value.slice(0, -1); + } + + if (this.is_subifd_link(ifd_no, tag)) { + if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) { + this.ifds_to_read.push({ + id: tag, + offset: value[0] + }); + is_subifd_link = true; + } + } + + var entry = { + is_big_endian: this.big_endian, + ifd: ifd_no, + tag: tag, + format: format, + count: count, + entry_offset: offset + this.start, + data_length: data_length, + data_offset: data_offset + this.start, + value: value, + is_subifd_link: is_subifd_link + }; + + if (on_entry(entry) === false) { + this.aborted = true; + return; + } + + offset += 12; + } + + if (ifd_no === 0) { + this.ifds_to_read.push({ + id: 1, + offset: this.read_uint32(offset) + }); + } +}; + + +module.exports.ExifParser = ExifParser; + +// returns orientation stored in Exif (1-8), 0 if none was found, -1 if error +module.exports.get_orientation = function (data) { + var orientation = 0; + try { + new ExifParser(data, 0, data.length).each(function (entry) { + if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) { + orientation = entry.value[0]; + return false; + } + }); + return orientation; + } catch (err) { + return -1; + } +}; + +},{}],83:[function(_dereq_,module,exports){ +// Utils used to parse miaf-based files (avif/heic/heif) +// +// ISO media file spec: +// https://web.archive.org/web/20180219054429/http://l.web.umkc.edu/lizhu/teaching/2016sp.video-communication/ref/mp4.pdf +// +// ISO image file format spec: +// https://standards.iso.org/ittf/PubliclyAvailableStandards/c066067_ISO_IEC_23008-12_2017.zip +// + +'use strict'; + +/* eslint-disable consistent-return */ +/* eslint-disable no-bitwise */ + +var readUInt16BE = _dereq_('./common').readUInt16BE; +var readUInt32BE = _dereq_('./common').readUInt32BE; + +/* + * interface Box { + * size: uint32; // if size == 0, box lasts until EOF + * boxtype: char[4]; + * largesize?: uint64; // only if size == 1 + * usertype?: char[16]; // only if boxtype == 'uuid' + * } + */ +function unbox(data, offset) { + if (data.length < 4 + offset) return null; + + var size = readUInt32BE(data, offset); + + // size includes first 4 bytes (length) + if (data.length < size + offset || size < 8) return null; + + // if size === 1, real size is following uint64 (only for big boxes, not needed) + // if size === 0, real size is until the end of the file (only for big boxes, not needed) + + return { + boxtype: String.fromCharCode.apply(null, data.slice(offset + 4, offset + 8)), + data: data.slice(offset + 8, offset + size), + end: offset + size + }; +} + + +module.exports.unbox = unbox; + + +// parses `meta` -> `iprp` -> `ipco` box, returns: +// { +// sizes: [ { width, height } ], +// transforms: [ { type, value } ] +// } +function scan_ipco(data, sandbox) { + var offset = 0; + + for (;;) { + var box = unbox(data, offset); + if (!box) break; + + switch (box.boxtype) { + case 'ispe': + sandbox.sizes.push({ + width: readUInt32BE(box.data, 4), + height: readUInt32BE(box.data, 8) + }); + break; + + case 'irot': + sandbox.transforms.push({ + type: 'irot', + value: box.data[0] & 3 + }); + break; + + case 'imir': + sandbox.transforms.push({ + type: 'imir', + value: box.data[0] & 1 + }); + break; + } + + offset = box.end; + } +} + + +function readUIntBE(data, offset, size) { + var result = 0; + + for (var i = 0; i < size; i++) { + result = result * 256 + (data[offset + i] || 0); + } + + return result; +} + + +// parses `meta` -> `iloc` box +function scan_iloc(data, sandbox) { + var offset_size = (data[4] >> 4) & 0xF; + var length_size = data[4] & 0xF; + var base_offset_size = (data[5] >> 4) & 0xF; + var item_count = readUInt16BE(data, 6); + var offset = 8; + + for (var i = 0; i < item_count; i++) { + var item_ID = readUInt16BE(data, offset); + offset += 2; + + var data_reference_index = readUInt16BE(data, offset); + offset += 2; + + var base_offset = readUIntBE(data, offset, base_offset_size); + offset += base_offset_size; + + var extent_count = readUInt16BE(data, offset); + offset += 2; + + if (data_reference_index === 0 && extent_count === 1) { + var first_extent_offset = readUIntBE(data, offset, offset_size); + var first_extent_length = readUIntBE(data, offset + offset_size, length_size); + sandbox.item_loc[item_ID] = { length: first_extent_length, offset: first_extent_offset + base_offset }; + } + + offset += extent_count * (offset_size + length_size); + } +} + + +// parses `meta` -> `iinf` box +function scan_iinf(data, sandbox) { + var item_count = readUInt16BE(data, 4); + var offset = 6; + + for (var i = 0; i < item_count; i++) { + var box = unbox(data, offset); + if (!box) break; + if (box.boxtype === 'infe') { + var item_id = readUInt16BE(box.data, 4); + var item_name = ''; + + for (var pos = 8; pos < box.data.length && box.data[pos]; pos++) { + item_name += String.fromCharCode(box.data[pos]); + } + + sandbox.item_inf[item_name] = item_id; + } + offset = box.end; + } +} + + +// parses `meta` -> `iprp` box +function scan_iprp(data, sandbox) { + var offset = 0; + + for (;;) { + var box = unbox(data, offset); + if (!box) break; + if (box.boxtype === 'ipco') scan_ipco(box.data, sandbox); + offset = box.end; + } +} + + +// parses `meta` box +function scan_meta(data, sandbox) { + var offset = 4; // version + flags + + for (;;) { + var box = unbox(data, offset); + if (!box) break; + if (box.boxtype === 'iprp') scan_iprp(box.data, sandbox); + if (box.boxtype === 'iloc') scan_iloc(box.data, sandbox); + if (box.boxtype === 'iinf') scan_iinf(box.data, sandbox); + offset = box.end; + } +} + + +// get image with largest single dimension as base +function getMaxSize(sizes) { + var maxWidthSize = sizes.reduce(function (a, b) { + return a.width > b.width || (a.width === b.width && a.height > b.height) ? a : b; + }); + + var maxHeightSize = sizes.reduce(function (a, b) { + return a.height > b.height || (a.height === b.height && a.width > b.width) ? a : b; + }); + + var maxSize; + + if (maxWidthSize.width > maxHeightSize.height || + (maxWidthSize.width === maxHeightSize.height && maxWidthSize.height > maxHeightSize.width)) { + maxSize = maxWidthSize; + } else { + maxSize = maxHeightSize; + } + + return maxSize; +} + + +module.exports.readSizeFromMeta = function (data) { + var sandbox = { + sizes: [], + transforms: [], + item_inf: {}, + item_loc: {} + }; + + scan_meta(data, sandbox); + + if (!sandbox.sizes.length) return; + + var maxSize = getMaxSize(sandbox.sizes); + + var orientation = 1; + + // convert imir/irot to exif orientation + sandbox.transforms.forEach(function (transform) { + var rotate_ccw = { 1: 6, 2: 5, 3: 8, 4: 7, 5: 4, 6: 3, 7: 2, 8: 1 }; + var mirror_vert = { 1: 4, 2: 3, 3: 2, 4: 1, 5: 6, 6: 5, 7: 8, 8: 7 }; + + if (transform.type === 'imir') { + if (transform.value === 0) { + // vertical flip + orientation = mirror_vert[orientation]; + } else { + // horizontal flip = vertical flip + 180 deg rotation + orientation = mirror_vert[orientation]; + orientation = rotate_ccw[orientation]; + orientation = rotate_ccw[orientation]; + } + } + + if (transform.type === 'irot') { + // counter-clockwise rotation 90 deg 0-3 times + for (var i = 0; i < transform.value; i++) { + orientation = rotate_ccw[orientation]; + } + } + }); + + var exif_location = null; + + if (sandbox.item_inf.Exif) { + exif_location = sandbox.item_loc[sandbox.item_inf.Exif]; + } + + return { + width: maxSize.width, + height: maxSize.height, + orientation: sandbox.transforms.length ? orientation : null, + variants: sandbox.sizes, + exif_location: exif_location + }; +}; + + +module.exports.getMimeType = function (data) { + var brand = String.fromCharCode.apply(null, data.slice(0, 4)); + var compat = {}; + + compat[brand] = true; + + for (var i = 8; i < data.length; i += 4) { + compat[String.fromCharCode.apply(null, data.slice(i, i + 4))] = true; + } + + // heic and avif are superset of miaf, so they should all list mif1 as compatible + if (!compat.mif1 && !compat.msf1 && !compat.miaf) return; + + if (brand === 'avif' || brand === 'avis' || brand === 'avio') { + // `.avifs` and `image/avif-sequence` are removed from spec, all files have single type + return { type: 'avif', mime: 'image/avif' }; + } + + // https://nokiatech.github.io/heif/technical.html + if (brand === 'heic' || brand === 'heix') { + return { type: 'heic', mime: 'image/heic' }; + } + + if (brand === 'hevc' || brand === 'hevx') { + return { type: 'heic', mime: 'image/heic-sequence' }; + } + + if (compat.avif || compat.avis) { + return { type: 'avif', mime: 'image/avif' }; + } + + if (compat.heic || compat.heix || compat.hevc || compat.hevx || compat.heis) { + if (compat.msf1) { + return { type: 'heif', mime: 'image/heif-sequence' }; + } + return { type: 'heif', mime: 'image/heif' }; + } + + return { type: 'avif', mime: 'image/avif' }; +}; + +},{"./common":81}],84:[function(_dereq_,module,exports){ +// Utils used to parse miaf-based files (avif/heic/heif) +// +// - image collections are not supported (only last size is reported) +// - images with metadata encoded after image data are not supported +// - images without any `ispe` box are not supported +// + +/* eslint-disable consistent-return */ + +'use strict'; + + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt32BE = _dereq_('../common').readUInt32BE; +var miaf = _dereq_('../miaf_utils'); +var exif = _dereq_('../exif_utils'); + +var SIG_FTYP = str2arr('ftyp'); + + +module.exports = function (data) { + // ISO media file (avif format) starts with ftyp box: + // 0000 0020 6674 7970 6176 6966 + // (length) f t y p a v i f + // + if (!sliceEq(data, 4, SIG_FTYP)) return; + + var firstBox = miaf.unbox(data, 0); + if (!firstBox) return; + + var fileType = miaf.getMimeType(firstBox.data); + if (!fileType) return; + + var meta, offset = firstBox.end; + + for (;;) { + var box = miaf.unbox(data, offset); + if (!box) break; + offset = box.end; + + // mdat block SHOULD be last (but not strictly required), + // so it's unlikely that metadata is after it + if (box.boxtype === 'mdat') return; + if (box.boxtype === 'meta') { + meta = box.data; + break; + } + } + + if (!meta) return; + + var imgSize = miaf.readSizeFromMeta(meta); + + if (!imgSize) return; + + var result = { + width: imgSize.width, + height: imgSize.height, + type: fileType.type, + mime: fileType.mime, + wUnits: 'px', + hUnits: 'px' + }; + + if (imgSize.variants.length > 1) { + result.variants = imgSize.variants; + } + + if (imgSize.orientation) { + result.orientation = imgSize.orientation; + } + + if (imgSize.exif_location && + imgSize.exif_location.offset + imgSize.exif_location.length <= data.length) { + + var sig_offset = readUInt32BE(data, imgSize.exif_location.offset); + var exif_data = data.slice( + imgSize.exif_location.offset + sig_offset + 4, + imgSize.exif_location.offset + imgSize.exif_location.length); + + var orientation = exif.get_orientation(exif_data); + + if (orientation > 0) result.orientation = orientation; + } + + return result; +}; + +},{"../common":81,"../exif_utils":82,"../miaf_utils":83}],85:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; + +var SIG_BM = str2arr('BM'); + + +module.exports = function (data) { + if (data.length < 26) return; + + if (!sliceEq(data, 0, SIG_BM)) return; + + return { + width: readUInt16LE(data, 18), + height: readUInt16LE(data, 22), + type: 'bmp', + mime: 'image/bmp', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],86:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; + + +var SIG_GIF87a = str2arr('GIF87a'); +var SIG_GIF89a = str2arr('GIF89a'); + + +module.exports = function (data) { + if (data.length < 10) return; + + if (!sliceEq(data, 0, SIG_GIF87a) && !sliceEq(data, 0, SIG_GIF89a)) return; + + return { + width: readUInt16LE(data, 6), + height: readUInt16LE(data, 8), + type: 'gif', + mime: 'image/gif', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],87:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var readUInt16LE = _dereq_('../common').readUInt16LE; + +var HEADER = 0; +var TYPE_ICO = 1; +var INDEX_SIZE = 16; + +// Format specification: +// https://en.wikipedia.org/wiki/ICO_(file_format)#Icon_resource_structure +module.exports = function (data) { + var header = readUInt16LE(data, 0); + var type = readUInt16LE(data, 2); + var numImages = readUInt16LE(data, 4); + + if (header !== HEADER || type !== TYPE_ICO || !numImages) { + return; + } + + var variants = []; + var maxSize = { width: 0, height: 0 }; + + for (var i = 0; i < numImages; i++) { + var width = data[6 + INDEX_SIZE * i] || 256; + var height = data[6 + INDEX_SIZE * i + 1] || 256; + var size = { width: width, height: height }; + variants.push(size); + + if (width > maxSize.width || height > maxSize.height) { + maxSize = size; + } + } + + return { + width: maxSize.width, + height: maxSize.height, + variants: variants, + type: 'ico', + mime: 'image/x-icon', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],88:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var readUInt16BE = _dereq_('../common').readUInt16BE; +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var exif = _dereq_('../exif_utils'); + + +var SIG_EXIF = str2arr('Exif\0\0'); + + +module.exports = function (data) { + if (data.length < 2) return; + + // first marker of the file MUST be 0xFFD8 + if (data[0] !== 0xFF || data[1] !== 0xD8) return; + + var offset = 2; + + for (;;) { + if (data.length - offset < 2) return; + // not a JPEG marker + if (data[offset++] !== 0xFF) return; + + var code = data[offset++]; + var length; + + // skip padding bytes + while (code === 0xFF) code = data[offset++]; + + // standalone markers, according to JPEG 1992, + // http://www.w3.org/Graphics/JPEG/itu-t81.pdf, see Table B.1 + if ((0xD0 <= code && code <= 0xD9) || code === 0x01) { + length = 0; + } else if (0xC0 <= code && code <= 0xFE) { + // the rest of the unreserved markers + if (data.length - offset < 2) return; + + length = readUInt16BE(data, offset) - 2; + offset += 2; + } else { + // unknown markers + return; + } + + if (code === 0xD9 /* EOI */ || code === 0xDA /* SOS */) { + // end of the datastream + return; + } + + var orientation; + + // try to get orientation from Exif segment + if (code === 0xE1 && length >= 10 && sliceEq(data, offset, SIG_EXIF)) { + orientation = exif.get_orientation(data.slice(offset + 6, offset + length)); + } + + if (length >= 5 && + (0xC0 <= code && code <= 0xCF) && + code !== 0xC4 && code !== 0xC8 && code !== 0xCC) { + + if (data.length - offset < length) return; + + var result = { + width: readUInt16BE(data, offset + 3), + height: readUInt16BE(data, offset + 1), + type: 'jpg', + mime: 'image/jpeg', + wUnits: 'px', + hUnits: 'px' + }; + + if (orientation > 0) { + result.orientation = orientation; + } + + return result; + } + + offset += length; + } +}; + +},{"../common":81,"../exif_utils":82}],89:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt32BE = _dereq_('../common').readUInt32BE; + + +var SIG_PNG = str2arr('\x89PNG\r\n\x1a\n'); +var SIG_IHDR = str2arr('IHDR'); + + +module.exports = function (data) { + if (data.length < 24) return; + + // check PNG signature + if (!sliceEq(data, 0, SIG_PNG)) return; + + // check that first chunk is IHDR + if (!sliceEq(data, 12, SIG_IHDR)) return; + + return { + width: readUInt32BE(data, 16), + height: readUInt32BE(data, 20), + type: 'png', + mime: 'image/png', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],90:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt32BE = _dereq_('../common').readUInt32BE; + + +var SIG_8BPS = str2arr('8BPS\x00\x01'); + + +module.exports = function (data) { + if (data.length < 6 + 16) return; + + // signature + version + if (!sliceEq(data, 0, SIG_8BPS)) return; + + return { + width: readUInt32BE(data, 6 + 12), + height: readUInt32BE(data, 6 + 8), + type: 'psd', + mime: 'image/vnd.adobe.photoshop', + wUnits: 'px', + hUnits: 'px' + }; +}; + +},{"../common":81}],91:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +function isWhiteSpace(chr) { + return chr === 0x20 || chr === 0x09 || chr === 0x0D || chr === 0x0A; +} + +// Filter NaN, Infinity, < 0 +function isFinitePositive(val) { + return typeof val === 'number' && isFinite(val) && val > 0; +} + +function canBeSvg(buf) { + var i = 0, max = buf.length; + + while (i < max && isWhiteSpace(buf[i])) i++; + + if (i === max) return false; + return buf[i] === 0x3c; /* < */ +} + + +var SVG_HEADER_RE = /]+>/; +var SVG_WIDTH_RE = /[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/; +var SVG_HEIGHT_RE = /\bheight="([^%]+?)"|\bheight='([^%]+?)'/; +var SVG_VIEWBOX_RE = /\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/; +var SVG_UNITS_RE = /in$|mm$|cm$|pt$|pc$|px$|em$|ex$/; + +function svgAttrs(str) { + var width = str.match(SVG_WIDTH_RE); + var height = str.match(SVG_HEIGHT_RE); + var viewbox = str.match(SVG_VIEWBOX_RE); + + return { + width: width && (width[1] || width[2]), + height: height && (height[1] || height[2]), + viewbox: viewbox && (viewbox[1] || viewbox[2]) + }; +} + + +function units(str) { + if (!SVG_UNITS_RE.test(str)) return 'px'; + + return str.match(SVG_UNITS_RE)[0]; +} + + +module.exports = function (data) { + if (!canBeSvg(data)) return; + + var str = ''; + + for (var i = 0; i < data.length; i++) { + // 1. We can't rely on buffer features + // 2. Don't care about UTF16 because ascii is enougth for our goals + str += String.fromCharCode(data[i]); + } + + if (!SVG_HEADER_RE.test(str)) return; + + var attrs = svgAttrs(str.match(SVG_HEADER_RE)[0]); + var width = parseFloat(attrs.width); + var height = parseFloat(attrs.height); + + // Extract from direct values + + if (attrs.width && attrs.height) { + if (!isFinitePositive(width) || !isFinitePositive(height)) return; + + return { + width: width, + height: height, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(attrs.width), + hUnits: units(attrs.height) + }; + } + + // Extract from viewbox + + var parts = (attrs.viewbox || '').split(' '); + var viewbox = { + width: parts[2], + height: parts[3] + }; + var vbWidth = parseFloat(viewbox.width); + var vbHeight = parseFloat(viewbox.height); + + if (!isFinitePositive(vbWidth) || !isFinitePositive(vbHeight)) return; + if (units(viewbox.width) !== units(viewbox.height)) return; + + var ratio = vbWidth / vbHeight; + + if (attrs.width) { + if (!isFinitePositive(width)) return; + + return { + width: width, + height: width / ratio, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(attrs.width), + hUnits: units(attrs.width) + }; + } + + if (attrs.height) { + if (!isFinitePositive(height)) return; + + return { + width: height * ratio, + height: height, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(attrs.height), + hUnits: units(attrs.height) + }; + } + + return { + width: vbWidth, + height: vbHeight, + type: 'svg', + mime: 'image/svg+xml', + wUnits: units(viewbox.width), + hUnits: units(viewbox.height) + }; +}; + +},{}],92:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; +var readUInt16BE = _dereq_('../common').readUInt16BE; +var readUInt32LE = _dereq_('../common').readUInt32LE; +var readUInt32BE = _dereq_('../common').readUInt32BE; + + +var SIG_1 = str2arr('II\x2A\0'); +var SIG_2 = str2arr('MM\0\x2A'); + + +function readUInt16(buffer, offset, is_big_endian) { + return is_big_endian ? readUInt16BE(buffer, offset) : readUInt16LE(buffer, offset); +} + +function readUInt32(buffer, offset, is_big_endian) { + return is_big_endian ? readUInt32BE(buffer, offset) : readUInt32LE(buffer, offset); +} + +function readIFDValue(data, data_offset, is_big_endian) { + var type = readUInt16(data, data_offset + 2, is_big_endian); + var values = readUInt32(data, data_offset + 4, is_big_endian); + + if (values !== 1 || (type !== 3 && type !== 4)) return null; + + if (type === 3) { + return readUInt16(data, data_offset + 8, is_big_endian); + } + + return readUInt32(data, data_offset + 8, is_big_endian); +} + +module.exports = function (data) { + if (data.length < 8) return; + + // check TIFF signature + if (!sliceEq(data, 0, SIG_1) && !sliceEq(data, 0, SIG_2)) return; + + var is_big_endian = (data[0] === 77 /* 'MM' */); + var count = readUInt32(data, 4, is_big_endian) - 8; + + if (count < 0) return; + + // skip until IFD + var offset = count + 8; + + if (data.length - offset < 2) return; + + // read number of IFD entries + var ifd_size = readUInt16(data, offset + 0, is_big_endian) * 12; + + if (ifd_size <= 0) return; + + offset += 2; + + // read all IFD entries + if (data.length - offset < ifd_size) return; + + var i, width, height, tag; + + for (i = 0; i < ifd_size; i += 12) { + tag = readUInt16(data, offset + i, is_big_endian); + + if (tag === 256) { + width = readIFDValue(data, offset + i, is_big_endian); + } else if (tag === 257) { + height = readIFDValue(data, offset + i, is_big_endian); + } + } + + if (width && height) { + return { + width: width, + height: height, + type: 'tiff', + mime: 'image/tiff', + wUnits: 'px', + hUnits: 'px' + }; + } +}; + +},{"../common":81}],93:[function(_dereq_,module,exports){ +'use strict'; + +/* eslint-disable no-bitwise */ +/* eslint-disable consistent-return */ + +var str2arr = _dereq_('../common').str2arr; +var sliceEq = _dereq_('../common').sliceEq; +var readUInt16LE = _dereq_('../common').readUInt16LE; +var readUInt32LE = _dereq_('../common').readUInt32LE; +var exif = _dereq_('../exif_utils'); + + +var SIG_RIFF = str2arr('RIFF'); +var SIG_WEBP = str2arr('WEBP'); + + +function parseVP8(data, offset) { + if (data[offset + 3] !== 0x9D || data[offset + 4] !== 0x01 || data[offset + 5] !== 0x2A) { + // bad code block signature + return; + } + + return { + width: readUInt16LE(data, offset + 6) & 0x3FFF, + height: readUInt16LE(data, offset + 8) & 0x3FFF, + type: 'webp', + mime: 'image/webp', + wUnits: 'px', + hUnits: 'px' + }; +} + + +function parseVP8L(data, offset) { + if (data[offset] !== 0x2F) return; + + var bits = readUInt32LE(data, offset + 1); + + return { + width: (bits & 0x3FFF) + 1, + height: ((bits >> 14) & 0x3FFF) + 1, + type: 'webp', + mime: 'image/webp', + wUnits: 'px', + hUnits: 'px' + }; +} + + +function parseVP8X(data, offset) { + return { + // TODO: replace with `data.readUIntLE(8, 3) + 1` + // when 0.10 support is dropped + width: ((data[offset + 6] << 16) | (data[offset + 5] << 8) | data[offset + 4]) + 1, + height: ((data[offset + 9] << offset) | (data[offset + 8] << 8) | data[offset + 7]) + 1, + type: 'webp', + mime: 'image/webp', + wUnits: 'px', + hUnits: 'px' + }; +} + + +module.exports = function (data) { + if (data.length < 16) return; + + // check /^RIFF....WEBPVP8([ LX])$/ signature + if (!sliceEq(data, 0, SIG_RIFF) && !sliceEq(data, 8, SIG_WEBP)) return; + + var offset = 12; + var result = null; + var exif_orientation = 0; + var fileLength = readUInt32LE(data, 4) + 8; + + if (fileLength > data.length) return; + + while (offset + 8 < fileLength) { + if (data[offset] === 0) { + // after each chunk of odd size there should be 0 byte of padding, skip those + offset++; + continue; + } + + var header = String.fromCharCode.apply(null, data.slice(offset, offset + 4)); + var length = readUInt32LE(data, offset + 4); + + if (header === 'VP8 ' && length >= 10) { + result = result || parseVP8(data, offset + 8); + } else if (header === 'VP8L' && length >= 9) { + result = result || parseVP8L(data, offset + 8); + } else if (header === 'VP8X' && length >= 10) { + result = result || parseVP8X(data, offset + 8); + } else if (header === 'EXIF') { + exif_orientation = exif.get_orientation(data.slice(offset + 8, offset + 8 + length)); + + // exif is the last chunk we care about, stop after it + offset = Infinity; + } + + offset += 8 + length; + } + + if (!result) return; + + if (exif_orientation > 0) { + result.orientation = exif_orientation; + } + + return result; +}; + +},{"../common":81,"../exif_utils":82}],94:[function(_dereq_,module,exports){ +'use strict'; + + +module.exports = { + avif: _dereq_('./parse_sync/avif'), + bmp: _dereq_('./parse_sync/bmp'), + gif: _dereq_('./parse_sync/gif'), + ico: _dereq_('./parse_sync/ico'), + jpeg: _dereq_('./parse_sync/jpeg'), + png: _dereq_('./parse_sync/png'), + psd: _dereq_('./parse_sync/psd'), + svg: _dereq_('./parse_sync/svg'), + tiff: _dereq_('./parse_sync/tiff'), + webp: _dereq_('./parse_sync/webp') +}; + +},{"./parse_sync/avif":84,"./parse_sync/bmp":85,"./parse_sync/gif":86,"./parse_sync/ico":87,"./parse_sync/jpeg":88,"./parse_sync/png":89,"./parse_sync/psd":90,"./parse_sync/svg":91,"./parse_sync/tiff":92,"./parse_sync/webp":93}],95:[function(_dereq_,module,exports){ +'use strict'; + + +var parsers = _dereq_('./lib/parsers_sync'); + + +function probeBuffer(buffer) { + var parser_names = Object.keys(parsers); + + for (var i = 0; i < parser_names.length; i++) { + var result = parsers[parser_names[i]](buffer); + + if (result) return result; + } + + return null; +} + + +/////////////////////////////////////////////////////////////////////// +// Exports +// + +module.exports = function get_image_size(src) { + return probeBuffer(src); +}; + +module.exports.parsers = parsers; + +},{"./lib/parsers_sync":94}],96:[function(_dereq_,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -19344,7 +19605,4538 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],88:[function(_dereq_,module,exports){ +},{}],97:[function(_dereq_,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = _dereq_('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":28}],98:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +module.exports = Stream; + +var EE = _dereq_('events').EventEmitter; +var inherits = _dereq_('inherits'); + +inherits(Stream, EE); +Stream.Readable = _dereq_('readable-stream/lib/_stream_readable.js'); +Stream.Writable = _dereq_('readable-stream/lib/_stream_writable.js'); +Stream.Duplex = _dereq_('readable-stream/lib/_stream_duplex.js'); +Stream.Transform = _dereq_('readable-stream/lib/_stream_transform.js'); +Stream.PassThrough = _dereq_('readable-stream/lib/_stream_passthrough.js'); +Stream.finished = _dereq_('readable-stream/lib/internal/streams/end-of-stream.js') +Stream.pipeline = _dereq_('readable-stream/lib/internal/streams/pipeline.js') + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":27,"inherits":65,"readable-stream/lib/_stream_duplex.js":100,"readable-stream/lib/_stream_passthrough.js":101,"readable-stream/lib/_stream_readable.js":102,"readable-stream/lib/_stream_transform.js":103,"readable-stream/lib/_stream_writable.js":104,"readable-stream/lib/internal/streams/end-of-stream.js":108,"readable-stream/lib/internal/streams/pipeline.js":110}],99:[function(_dereq_,module,exports){ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + +},{}],100:[function(_dereq_,module,exports){ +(function (process){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. +'use strict'; +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +module.exports = Duplex; + +var Readable = _dereq_('./_stream_readable'); + +var Writable = _dereq_('./_stream_writable'); + +_dereq_('inherits')(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +}).call(this)}).call(this,_dereq_('_process')) +},{"./_stream_readable":102,"./_stream_writable":104,"_process":96,"inherits":65}],101:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. +'use strict'; + +module.exports = PassThrough; + +var Transform = _dereq_('./_stream_transform'); + +_dereq_('inherits')(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":103,"inherits":65}],102:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +'use strict'; + +module.exports = Readable; +/**/ + +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +var EE = _dereq_('events').EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = _dereq_('./internal/streams/stream'); +/**/ + + +var Buffer = _dereq_('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = _dereq_('util'); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = _dereq_('./internal/streams/buffer_list'); + +var destroyImpl = _dereq_('./internal/streams/destroy'); + +var _require = _dereq_('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = _dereq_('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; + +_dereq_('inherits')(Readable, Stream); + +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || _dereq_('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + + this.autoDestroy = !!options.autoDestroy; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || _dereq_('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = _dereq_('string_decoder/').StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: + + var p = this._readableState.buffer.head; + var content = ''; + + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + + this._readableState.buffer.clear(); + + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; // Don't raise the hwm > 1GB + + +var MAX_HWM = 0x40000000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = _dereq_('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} + +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = _dereq_('./internal/streams/from'); + } + + return from(Readable, iterable, opts); + }; +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} +}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":99,"./_stream_duplex":100,"./internal/streams/async_iterator":105,"./internal/streams/buffer_list":106,"./internal/streams/destroy":107,"./internal/streams/from":109,"./internal/streams/state":111,"./internal/streams/stream":112,"_process":96,"buffer":28,"events":27,"inherits":65,"string_decoder/":113,"util":26}],103:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. +'use strict'; + +module.exports = Transform; + +var _require$codes = _dereq_('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = _dereq_('./_stream_duplex'); + +_dereq_('inherits')(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} +},{"../errors":99,"./_stream_duplex":100,"inherits":65}],104:[function(_dereq_,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. +'use strict'; + +module.exports = Writable; +/* */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex; +/**/ + +Writable.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: _dereq_('util-deprecate') +}; +/**/ + +/**/ + +var Stream = _dereq_('./internal/streams/stream'); +/**/ + + +var Buffer = _dereq_('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = _dereq_('./internal/streams/destroy'); + +var _require = _dereq_('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = _dereq_('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +var errorOrDestroy = destroyImpl.errorOrDestroy; + +_dereq_('inherits')(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || _dereq_('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + + this.autoDestroy = !!options.autoDestroy; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || _dereq_('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + errorOrDestroy(stream, err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +}).call(this)}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":99,"./_stream_duplex":100,"./internal/streams/destroy":107,"./internal/streams/state":111,"./internal/streams/stream":112,"_process":96,"buffer":28,"inherits":65,"util-deprecate":120}],105:[function(_dereq_,module,exports){ +(function (process){(function (){ +'use strict'; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = _dereq_('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; +}).call(this)}).call(this,_dereq_('_process')) +},{"./end-of-stream":108,"_process":96}],106:[function(_dereq_,module,exports){ +'use strict'; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = _dereq_('buffer'), + Buffer = _require.Buffer; + +var _require2 = _dereq_('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + + return BufferList; +}(); +},{"buffer":28,"util":26}],107:[function(_dereq_,module,exports){ +(function (process){(function (){ +'use strict'; // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; +}).call(this)}).call(this,_dereq_('_process')) +},{"_process":96}],108:[function(_dereq_,module,exports){ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = _dereq_('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; +},{"../../../errors":99}],109:[function(_dereq_,module,exports){ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; + +},{}],110:[function(_dereq_,module,exports){ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = _dereq_('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = _dereq_('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; +},{"../../../errors":99,"./end-of-stream":108}],111:[function(_dereq_,module,exports){ +'use strict'; + +var ERR_INVALID_OPT_VALUE = _dereq_('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; +},{"../../../errors":99}],112:[function(_dereq_,module,exports){ +module.exports = _dereq_('events').EventEmitter; + +},{"events":27}],113:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +'use strict'; + +/**/ + +var Buffer = _dereq_('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":97}],114:[function(_dereq_,module,exports){ +(function (process,Buffer){(function (){ + +/** + * Module dependencies. + */ + +var assert = _dereq_('assert'); +var debug = _dereq_('debug')('stream-parser'); + +/** + * Module exports. + */ + +module.exports = Parser; + +/** + * Parser states. + */ + +var INIT = -1; +var BUFFERING = 0; +var SKIPPING = 1; +var PASSTHROUGH = 2; + +/** + * The `Parser` stream mixin works with either `Writable` or `Transform` stream + * instances/subclasses. Provides a convenient generic "parsing" API: + * + * _bytes(n, cb) - buffers "n" bytes and then calls "cb" with the "chunk" + * _skipBytes(n, cb) - skips "n" bytes and then calls "cb" when done + * + * If you extend a `Transform` stream, then the `_passthrough()` function is also + * added: + * + * _passthrough(n, cb) - passes through "n" bytes untouched and then calls "cb" + * + * @param {Stream} stream Transform or Writable stream instance to extend + * @api public + */ + +function Parser (stream) { + var isTransform = stream && 'function' == typeof stream._transform; + var isWritable = stream && 'function' == typeof stream._write; + + if (!isTransform && !isWritable) throw new Error('must pass a Writable or Transform stream in'); + debug('extending Parser into stream'); + + // Transform streams and Writable streams get `_bytes()` and `_skipBytes()` + stream._bytes = _bytes; + stream._skipBytes = _skipBytes; + + // only Transform streams get the `_passthrough()` function + if (isTransform) stream._passthrough = _passthrough; + + // take control of the streams2 callback functions for this stream + if (isTransform) { + stream._transform = transform; + } else { + stream._write = write; + } +} + +function init (stream) { + debug('initializing parser stream'); + + // number of bytes left to parser for the next "chunk" + stream._parserBytesLeft = 0; + + // array of Buffer instances that make up the next "chunk" + stream._parserBuffers = []; + + // number of bytes parsed so far for the next "chunk" + stream._parserBuffered = 0; + + // flag that keeps track of if what the parser should do with bytes received + stream._parserState = INIT; + + // the callback for the next "chunk" + stream._parserCallback = null; + + // XXX: backwards compat with the old Transform API... remove at some point.. + if ('function' == typeof stream.push) { + stream._parserOutput = stream.push.bind(stream); + } + + stream._parserInit = true; +} + +/** + * Buffers `n` bytes and then invokes `fn` once that amount has been collected. + * + * @param {Number} n the number of bytes to buffer + * @param {Function} fn callback function to invoke when `n` bytes are buffered + * @api public + */ + +function _bytes (n, fn) { + assert(!this._parserCallback, 'there is already a "callback" set!'); + assert(isFinite(n) && n > 0, 'can only buffer a finite number of bytes > 0, got "' + n + '"'); + if (!this._parserInit) init(this); + debug('buffering %o bytes', n); + this._parserBytesLeft = n; + this._parserCallback = fn; + this._parserState = BUFFERING; +} + +/** + * Skips over the next `n` bytes, then invokes `fn` once that amount has + * been discarded. + * + * @param {Number} n the number of bytes to discard + * @param {Function} fn callback function to invoke when `n` bytes have been skipped + * @api public + */ + +function _skipBytes (n, fn) { + assert(!this._parserCallback, 'there is already a "callback" set!'); + assert(n > 0, 'can only skip > 0 bytes, got "' + n + '"'); + if (!this._parserInit) init(this); + debug('skipping %o bytes', n); + this._parserBytesLeft = n; + this._parserCallback = fn; + this._parserState = SKIPPING; +} + +/** + * Passes through `n` bytes to the readable side of this stream untouched, + * then invokes `fn` once that amount has been passed through. + * + * @param {Number} n the number of bytes to pass through + * @param {Function} fn callback function to invoke when `n` bytes have passed through + * @api public + */ + +function _passthrough (n, fn) { + assert(!this._parserCallback, 'There is already a "callback" set!'); + assert(n > 0, 'can only pass through > 0 bytes, got "' + n + '"'); + if (!this._parserInit) init(this); + debug('passing through %o bytes', n); + this._parserBytesLeft = n; + this._parserCallback = fn; + this._parserState = PASSTHROUGH; +} + +/** + * The `_write()` callback function implementation. + * + * @api private + */ + +function write (chunk, encoding, fn) { + if (!this._parserInit) init(this); + debug('write(%o bytes)', chunk.length); + + // XXX: old Writable stream API compat... remove at some point... + if ('function' == typeof encoding) fn = encoding; + + data(this, chunk, null, fn); +} + +/** + * The `_transform()` callback function implementation. + * + * @api private + */ + + +function transform (chunk, output, fn) { + if (!this._parserInit) init(this); + debug('transform(%o bytes)', chunk.length); + + // XXX: old Transform stream API compat... remove at some point... + if ('function' != typeof output) { + output = this._parserOutput; + } + + data(this, chunk, output, fn); +} + +/** + * The internal buffering/passthrough logic... + * + * This `_data` function get's "trampolined" to prevent stack overflows for tight + * loops. This technique requires us to return a "thunk" function for any + * synchronous action. Async stuff breaks the trampoline, but that's ok since it's + * working with a new stack at that point anyway. + * + * @api private + */ + +function _data (stream, chunk, output, fn) { + if (stream._parserBytesLeft <= 0) { + return fn(new Error('got data but not currently parsing anything')); + } + + if (chunk.length <= stream._parserBytesLeft) { + // small buffer fits within the "_parserBytesLeft" window + return function () { + return process(stream, chunk, output, fn); + }; + } else { + // large buffer needs to be sliced on "_parserBytesLeft" and processed + return function () { + var b = chunk.slice(0, stream._parserBytesLeft); + return process(stream, b, output, function (err) { + if (err) return fn(err); + if (chunk.length > b.length) { + return function () { + return _data(stream, chunk.slice(b.length), output, fn); + }; + } + }); + }; + } +} + +/** + * The internal `process` function gets called by the `data` function when + * something "interesting" happens. This function takes care of buffering the + * bytes when buffering, passing through the bytes when doing that, and invoking + * the user callback when the number of bytes has been reached. + * + * @api private + */ + +function process (stream, chunk, output, fn) { + stream._parserBytesLeft -= chunk.length; + debug('%o bytes left for stream piece', stream._parserBytesLeft); + + if (stream._parserState === BUFFERING) { + // buffer + stream._parserBuffers.push(chunk); + stream._parserBuffered += chunk.length; + } else if (stream._parserState === PASSTHROUGH) { + // passthrough + output(chunk); + } + // don't need to do anything for the SKIPPING case + + if (0 === stream._parserBytesLeft) { + // done with stream "piece", invoke the callback + var cb = stream._parserCallback; + if (cb && stream._parserState === BUFFERING && stream._parserBuffers.length > 1) { + chunk = Buffer.concat(stream._parserBuffers, stream._parserBuffered); + } + if (stream._parserState !== BUFFERING) { + chunk = null; + } + stream._parserCallback = null; + stream._parserBuffered = 0; + stream._parserState = INIT; + stream._parserBuffers.splice(0); // empty + + if (cb) { + var args = []; + if (chunk) { + // buffered + args.push(chunk); + } else { + // passthrough + } + if (output) { + // on a Transform stream, has "output" function + args.push(output); + } + var async = cb.length > args.length; + if (async) { + args.push(trampoline(fn)); + } + // invoke cb + var rtn = cb.apply(stream, args); + if (!async || fn === rtn) return fn; + } + } else { + // need more bytes + return fn; + } +} + +var data = trampoline(_data); + +/** + * Generic thunk-based "trampoline" helper function. + * + * @param {Function} input function + * @return {Function} "trampolined" function + * @api private + */ + +function trampoline (fn) { + return function () { + var result = fn.apply(this, arguments); + + while ('function' == typeof result) { + result = result(); + } + + return result; + }; +} + +}).call(this)}).call(this,_dereq_('_process'),_dereq_("buffer").Buffer) +},{"_process":96,"assert":21,"buffer":28,"debug":115}],115:[function(_dereq_,module,exports){ +(function (process){(function (){ +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = _dereq_('./debug'); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + +}).call(this)}).call(this,_dereq_('_process')) +},{"./debug":116,"_process":96}],116:[function(_dereq_,module,exports){ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = _dereq_('ms'); + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Previous log timestamp. + */ + +var prevTime; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} + +},{"ms":117}],117:[function(_dereq_,module,exports){ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} + +},{}],118:[function(_dereq_,module,exports){ +(function (setImmediate,clearImmediate){(function (){ +var nextTick = _dereq_('process/browser.js').nextTick; +var apply = Function.prototype.apply; +var slice = Array.prototype.slice; +var immediateIds = {}; +var nextImmediateId = 0; + +// DOM APIs, for completeness + +exports.setTimeout = function() { + return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); +}; +exports.setInterval = function() { + return new Timeout(apply.call(setInterval, window, arguments), clearInterval); +}; +exports.clearTimeout = +exports.clearInterval = function(timeout) { timeout.close(); }; + +function Timeout(id, clearFn) { + this._id = id; + this._clearFn = clearFn; +} +Timeout.prototype.unref = Timeout.prototype.ref = function() {}; +Timeout.prototype.close = function() { + this._clearFn.call(window, this._id); +}; + +// Does not start the time, just sets up the members needed. +exports.enroll = function(item, msecs) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = msecs; +}; + +exports.unenroll = function(item) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = -1; +}; + +exports._unrefActive = exports.active = function(item) { + clearTimeout(item._idleTimeoutId); + + var msecs = item._idleTimeout; + if (msecs >= 0) { + item._idleTimeoutId = setTimeout(function onTimeout() { + if (item._onTimeout) + item._onTimeout(); + }, msecs); + } +}; + +// That's not how node.js implements it but the exposed api is the same. +exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { + var id = nextImmediateId++; + var args = arguments.length < 2 ? false : slice.call(arguments, 1); + + immediateIds[id] = true; + + nextTick(function onNextTick() { + if (immediateIds[id]) { + // fn.call() is faster so we optimize for the common use-case + // @see http://jsperf.com/call-apply-segu + if (args) { + fn.apply(null, args); + } else { + fn.call(null); + } + // Prevent ids from leaking + exports.clearImmediate(id); + } + }); + + return id; +}; + +exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { + delete immediateIds[id]; +}; +}).call(this)}).call(this,_dereq_("timers").setImmediate,_dereq_("timers").clearImmediate) +},{"process/browser.js":96,"timers":118}],119:[function(_dereq_,module,exports){ // TinyColor v1.4.2 // https://github.com/bgrins/TinyColor // Brian Grinstead, MIT License @@ -20541,15 +25333,5277 @@ else { })(Math); -},{}],89:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{}],120:[function(_dereq_,module,exports){ +(function (global){(function (){ +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],121:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Traditional Chinese calendar for jQuery v2.0.2. + Written by Nicolas Riesco (enquiries@nicolasriesco.net) December 2016. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +var gregorianCalendar = main.instance(); + +/** Implementation of the traditional Chinese calendar. + Source of calendar tables https://github.com/isee15/Lunar-Solar-Calendar-Converter . + @class ChineseCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function ChineseCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +ChineseCalendar.prototype = new main.baseCalendar; + +assign(ChineseCalendar.prototype, { + /** The calendar name. + @memberof ChineseCalendar */ + name: 'Chinese', + /** Julian date of start of Gregorian epoch: 1 January 0001 CE. + @memberof GregorianCalendar */ + jdEpoch: 1721425.5, + /** true if has a year zero, false if not. + @memberof ChineseCalendar */ + hasYearZero: false, + /** The minimum month number. + This calendar uses month indices to account for intercalary months. + @memberof ChineseCalendar */ + minMonth: 0, + /** The first month in the year. + This calendar uses month indices to account for intercalary months. + @memberof ChineseCalendar */ + firstMonth: 0, + /** The minimum day number. + @memberof ChineseCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof ChineseCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Chinese', + epochs: ['BEC', 'EC'], + monthNumbers: function(date, padded) { + if (typeof date === 'string') { + var match = date.match(MONTH_NUMBER_REGEXP); + return (match) ? match[0] : ''; + } + + var year = this._validateYear(date); + var monthIndex = date.month(); + + var month = '' + this.toChineseMonth(year, monthIndex); + + if (padded && month.length < 2) { + month = "0" + month; + } + + if (this.isIntercalaryMonth(year, monthIndex)) { + month += 'i'; + } + + return month; + }, + monthNames: function(date) { + if (typeof date === 'string') { + var match = date.match(MONTH_NAME_REGEXP); + return (match) ? match[0] : ''; + } + + var year = this._validateYear(date); + var monthIndex = date.month(); + + var month = this.toChineseMonth(year, monthIndex); + + var monthName = ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'][month - 1]; + + if (this.isIntercalaryMonth(year, monthIndex)) { + monthName = '闰' + monthName; + } + + return monthName; + }, + monthNamesShort: function(date) { + if (typeof date === 'string') { + var match = date.match(MONTH_SHORT_NAME_REGEXP); + return (match) ? match[0] : ''; + } + + var year = this._validateYear(date); + var monthIndex = date.month(); + + var month = this.toChineseMonth(year, monthIndex); + + var monthName = ['一','二','三','四','五','六', + '七','八','九','十','十一','十二'][month - 1]; + + if (this.isIntercalaryMonth(year, monthIndex)) { + monthName = '闰' + monthName; + } + + return monthName; + }, + parseMonth: function(year, monthString) { + year = this._validateYear(year); + var month = parseInt(monthString); + var isIntercalary; + + if (!isNaN(month)) { + var i = monthString[monthString.length - 1]; + isIntercalary = (i === 'i' || i === 'I'); + } else { + if (monthString[0] === '闰') { + isIntercalary = true; + monthString = monthString.substring(1); + } + if (monthString[monthString.length - 1] === '月') { + monthString = monthString.substring(0, monthString.length - 1); + } + month = 1 + + ['一','二','三','四','五','六', + '七','八','九','十','十一','十二'].indexOf(monthString); + } + + var monthIndex = this.toMonthIndex(year, month, isIntercalary); + return monthIndex; + }, + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 1, + isRTL: false + } + }, + + /** Check that a candidate date is from the same calendar and is valid. + @memberof BaseCalendar + @private + @param year {CDate|number} The date or the year to validate. + @param error {string} Error message if invalid. + @return {number} The year. + @throws Error if year out of range. */ + _validateYear: function(year, error) { + if (year.year) { + year = year.year(); + } + + if (typeof year !== 'number' || year < 1888 || year > 2111) { + throw error.replace(/\{0\}/, this.local.name); + } + + return year; + }, + + /** Retrieve the month index (i.e. accounting for intercalary months). + @memberof ChineseCalendar + @param year {number} The year. + @param month {number} The month (1 for first month). + @param [isIntercalary=false] {boolean} If month is intercalary. + @return {number} The month index (0 for first month). + @throws Error if an invalid month/year or a different calendar used. */ + toMonthIndex: function(year, month, isIntercalary) { + // compute intercalary month in the year (0 if none) + var intercalaryMonth = this.intercalaryMonth(year); + + // validate month + var invalidIntercalaryMonth = + (isIntercalary && month !== intercalaryMonth); + if (invalidIntercalaryMonth || month < 1 || month > 12) { + throw main.local.invalidMonth + .replace(/\{0\}/, this.local.name); + } + + // compute month index + var monthIndex; + + if (!intercalaryMonth) { + monthIndex = month - 1; + } else if(!isIntercalary && month <= intercalaryMonth) { + monthIndex = month - 1; + } else { + monthIndex = month; + } + + return monthIndex; + }, + + /** Retrieve the month (i.e. accounting for intercalary months). + @memberof ChineseCalendar + @param year {CDate|number} The date or the year to examine. + @param monthIndex {number} The month index (0 for first month). + @return {number} The month (1 for first month). + @throws Error if an invalid month/year or a different calendar used. */ + toChineseMonth: function(year, monthIndex) { + if (year.year) { + year = year.year(); + monthIndex = year.month(); + } + + // compute intercalary month in the year (0 if none) + var intercalaryMonth = this.intercalaryMonth(year); + + // validate month + var maxMonthIndex = (intercalaryMonth) ? 12 : 11; + if (monthIndex < 0 || monthIndex > maxMonthIndex) { + throw main.local.invalidMonth + .replace(/\{0\}/, this.local.name); + } + + // compute Chinese month + var month; + + if (!intercalaryMonth) { + month = monthIndex + 1; + } else if(monthIndex < intercalaryMonth) { + month = monthIndex + 1; + } else { + month = monthIndex; + } + + return month; + }, + + /** Determine the intercalary month of a year (if any). + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The intercalary month number, or 0 if none. + @throws Error if an invalid year or a different calendar used. */ + intercalaryMonth: function(year) { + year = this._validateYear(year); + + var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]]; + var intercalaryMonth = monthDaysTable >> 13; + + return intercalaryMonth; + }, + + /** Determine whether this date is an intercalary month. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [monthIndex] {number} The month index to examine. + @return {boolean} true if this is an intercalary month, false if not. + @throws Error if an invalid year or a different calendar used. */ + isIntercalaryMonth: function(year, monthIndex) { + if (year.year) { + year = year.year(); + monthIndex = year.month(); + } + + var intercalaryMonth = this.intercalaryMonth(year); + + return !!intercalaryMonth && intercalaryMonth === monthIndex; + }, + + /** Determine whether this date is in a leap year. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + return (this.intercalaryMonth(year) !== 0); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [monthIndex] {number} The month index to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, monthIndex, day) { + // compute Chinese new year + var validatedYear = + this._validateYear(year, main.local.invalidyear); + var packedDate = + CHINESE_NEW_YEAR[validatedYear - CHINESE_NEW_YEAR[0]]; + + var y = (packedDate >> 9) & 0xFFF; + var m = (packedDate >> 5) & 0x0F; + var d = packedDate & 0x1F; + + // find first Thrusday of the year + var firstThursday; + firstThursday = gregorianCalendar.newDate(y, m, d); + firstThursday.add(4 - (firstThursday.dayOfWeek() || 7), 'd'); + + // compute days from first Thursday + var offset = + this.toJD(year, monthIndex, day) - firstThursday.toJD(); + return 1 + Math.floor(offset / 7); + }, + + /** Retrieve the number of months in a year. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + return (this.leapYear(year)) ? 13 : 12; + }, + + /** Retrieve the number of days in a month. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [monthIndex] {number} The month index. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, monthIndex) { + if (year.year) { + monthIndex = year.month(); + year = year.year(); + } + + year = this._validateYear(year); + + var monthDaysTable = LUNAR_MONTH_DAYS[year - LUNAR_MONTH_DAYS[0]]; + + var intercalaryMonth = monthDaysTable >> 13; + var maxMonthIndex = (intercalaryMonth) ? 12 : 11; + if (monthIndex > maxMonthIndex) { + throw main.local.invalidMonth + .replace(/\{0\}/, this.local.name); + } + + var daysInMonth = (monthDaysTable & (1 << (12 - monthIndex))) ? + 30 : 29; + + return daysInMonth; + }, + + /** Determine whether this date is a week day. + @memberof ChineseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [monthIndex] {number} The month index to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, monthIndex, day) { + return (this.dayOfWeek(year, monthIndex, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof ChineseCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [monthIndex] {number} The month index to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, monthIndex, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = this._validateYear(date.year()); + monthIndex = date.month(); + day = date.day(); + + var isIntercalary = this.isIntercalaryMonth(year, monthIndex); + var month = this.toChineseMonth(year, monthIndex); + + var solar = toSolar(year, month, day, isIntercalary); + + return gregorianCalendar.toJD(solar.year, solar.month, solar.day); + }, + + /** Create a new date from a Julian date. + @memberof ChineseCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var date = gregorianCalendar.fromJD(jd); + var lunar = toLunar(date.year(), date.month(), date.day()); + var monthIndex = this.toMonthIndex( + lunar.year, lunar.month, lunar.isIntercalary); + return this.newDate(lunar.year, monthIndex, lunar.day); + }, + + /** Create a new date from a string. + @memberof ChineseCalendar + @param dateString {string} String representing a Chinese date + @return {CDate} The new date. + @throws Error if an invalid date. */ + fromString: function(dateString) { + var match = dateString.match(DATE_REGEXP); + + var year = this._validateYear(+match[1]); + + var month = +match[2]; + var isIntercalary = !!match[3]; + var monthIndex = this.toMonthIndex(year, month, isIntercalary); + + var day = +match[4]; + + return this.newDate(year, monthIndex, day); + }, + + /** Add period(s) to a date. + Cater for no year zero. + @memberof ChineseCalendar + @param date {CDate} The starting date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. + @throws Error if a different calendar used. */ + add: function(date, offset, period) { + var year = date.year(); + var monthIndex = date.month(); + var isIntercalary = this.isIntercalaryMonth(year, monthIndex); + var month = this.toChineseMonth(year, monthIndex); + + var cdate = Object.getPrototypeOf(ChineseCalendar.prototype) + .add.call(this, date, offset, period); + + if (period === 'y') { + // Resync month + var resultYear = cdate.year(); + var resultMonthIndex = cdate.month(); + + // Using the fact the month index of an intercalary month + // equals its month number: + var resultCanBeIntercalaryMonth = + this.isIntercalaryMonth(resultYear, month); + + var correctedMonthIndex = + (isIntercalary && resultCanBeIntercalaryMonth) ? + this.toMonthIndex(resultYear, month, true) : + this.toMonthIndex(resultYear, month, false); + + if (correctedMonthIndex !== resultMonthIndex) { + cdate.month(correctedMonthIndex); + } + } + + return cdate; + }, +}); + +// Used by ChineseCalendar.prototype.fromString +var DATE_REGEXP = /^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m; +var MONTH_NUMBER_REGEXP = /^\d?\d[iI]?/m; +var MONTH_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?月/m; +var MONTH_SHORT_NAME_REGEXP = /^闰?十?[一二三四五六七八九]?/m; + +// Chinese calendar implementation +main.calendars.chinese = ChineseCalendar; + +// Chinese calendar tables from year 1888 to 2111 +// +// Source: +// https://github.com/isee15/Lunar-Solar-Calendar-Converter.git + +// Table of intercalary months and days per month from year 1888 to 2111 +// +// bit (12 - i): days in the i^th month +// (= 0 if i^th lunar month has 29 days) +// (= 1 if i^th lunar month has 30 days) +// (first month in lunar year is i = 0) +// bits (13,14,15,16): intercalary month +// (= 0 if lunar year has no intercalary month) +var LUNAR_MONTH_DAYS = [1887, 0x1694, 0x16aa, 0x4ad5, + 0xab6, 0xc4b7, 0x4ae, 0xa56, 0xb52a, 0x1d2a, 0xd54, 0x75aa, 0x156a, + 0x1096d, 0x95c, 0x14ae, 0xaa4d, 0x1a4c, 0x1b2a, 0x8d55, 0xad4, + 0x135a, 0x495d, 0x95c, 0xd49b, 0x149a, 0x1a4a, 0xbaa5, 0x16a8, + 0x1ad4, 0x52da, 0x12b6, 0xe937, 0x92e, 0x1496, 0xb64b, 0xd4a, + 0xda8, 0x95b5, 0x56c, 0x12ae, 0x492f, 0x92e, 0xcc96, 0x1a94, + 0x1d4a, 0xada9, 0xb5a, 0x56c, 0x726e, 0x125c, 0xf92d, 0x192a, + 0x1a94, 0xdb4a, 0x16aa, 0xad4, 0x955b, 0x4ba, 0x125a, 0x592b, + 0x152a, 0xf695, 0xd94, 0x16aa, 0xaab5, 0x9b4, 0x14b6, 0x6a57, + 0xa56, 0x1152a, 0x1d2a, 0xd54, 0xd5aa, 0x156a, 0x96c, 0x94ae, + 0x14ae, 0xa4c, 0x7d26, 0x1b2a, 0xeb55, 0xad4, 0x12da, 0xa95d, + 0x95a, 0x149a, 0x9a4d, 0x1a4a, 0x11aa5, 0x16a8, 0x16d4, 0xd2da, + 0x12b6, 0x936, 0x9497, 0x1496, 0x1564b, 0xd4a, 0xda8, 0xd5b4, + 0x156c, 0x12ae, 0xa92f, 0x92e, 0xc96, 0x6d4a, 0x1d4a, 0x10d65, + 0xb58, 0x156c, 0xb26d, 0x125c, 0x192c, 0x9a95, 0x1a94, 0x1b4a, + 0x4b55, 0xad4, 0xf55b, 0x4ba, 0x125a, 0xb92b, 0x152a, 0x1694, + 0x96aa, 0x15aa, 0x12ab5, 0x974, 0x14b6, 0xca57, 0xa56, 0x1526, + 0x8e95, 0xd54, 0x15aa, 0x49b5, 0x96c, 0xd4ae, 0x149c, 0x1a4c, + 0xbd26, 0x1aa6, 0xb54, 0x6d6a, 0x12da, 0x1695d, 0x95a, 0x149a, + 0xda4b, 0x1a4a, 0x1aa4, 0xbb54, 0x16b4, 0xada, 0x495b, 0x936, + 0xf497, 0x1496, 0x154a, 0xb6a5, 0xda4, 0x15b4, 0x6ab6, 0x126e, + 0x1092f, 0x92e, 0xc96, 0xcd4a, 0x1d4a, 0xd64, 0x956c, 0x155c, + 0x125c, 0x792e, 0x192c, 0xfa95, 0x1a94, 0x1b4a, 0xab55, 0xad4, + 0x14da, 0x8a5d, 0xa5a, 0x1152b, 0x152a, 0x1694, 0xd6aa, 0x15aa, + 0xab4, 0x94ba, 0x14b6, 0xa56, 0x7527, 0xd26, 0xee53, 0xd54, 0x15aa, + 0xa9b5, 0x96c, 0x14ae, 0x8a4e, 0x1a4c, 0x11d26, 0x1aa4, 0x1b54, + 0xcd6a, 0xada, 0x95c, 0x949d, 0x149a, 0x1a2a, 0x5b25, 0x1aa4, + 0xfb52, 0x16b4, 0xaba, 0xa95b, 0x936, 0x1496, 0x9a4b, 0x154a, + 0x136a5, 0xda4, 0x15ac]; + +// Table of Chinese New Years from year 1888 to 2111 +// +// bits (0 to 4): solar day +// bits (5 to 8): solar month +// bits (9 to 20): solar year +var CHINESE_NEW_YEAR = [1887, 0xec04c, 0xec23f, 0xec435, 0xec649, + 0xec83e, 0xeca51, 0xecc46, 0xece3a, 0xed04d, 0xed242, 0xed436, + 0xed64a, 0xed83f, 0xeda53, 0xedc48, 0xede3d, 0xee050, 0xee244, + 0xee439, 0xee64d, 0xee842, 0xeea36, 0xeec4a, 0xeee3e, 0xef052, + 0xef246, 0xef43a, 0xef64e, 0xef843, 0xefa37, 0xefc4b, 0xefe41, + 0xf0054, 0xf0248, 0xf043c, 0xf0650, 0xf0845, 0xf0a38, 0xf0c4d, + 0xf0e42, 0xf1037, 0xf124a, 0xf143e, 0xf1651, 0xf1846, 0xf1a3a, + 0xf1c4e, 0xf1e44, 0xf2038, 0xf224b, 0xf243f, 0xf2653, 0xf2848, + 0xf2a3b, 0xf2c4f, 0xf2e45, 0xf3039, 0xf324d, 0xf3442, 0xf3636, + 0xf384a, 0xf3a3d, 0xf3c51, 0xf3e46, 0xf403b, 0xf424e, 0xf4443, + 0xf4638, 0xf484c, 0xf4a3f, 0xf4c52, 0xf4e48, 0xf503c, 0xf524f, + 0xf5445, 0xf5639, 0xf584d, 0xf5a42, 0xf5c35, 0xf5e49, 0xf603e, + 0xf6251, 0xf6446, 0xf663b, 0xf684f, 0xf6a43, 0xf6c37, 0xf6e4b, + 0xf703f, 0xf7252, 0xf7447, 0xf763c, 0xf7850, 0xf7a45, 0xf7c39, + 0xf7e4d, 0xf8042, 0xf8254, 0xf8449, 0xf863d, 0xf8851, 0xf8a46, + 0xf8c3b, 0xf8e4f, 0xf9044, 0xf9237, 0xf944a, 0xf963f, 0xf9853, + 0xf9a47, 0xf9c3c, 0xf9e50, 0xfa045, 0xfa238, 0xfa44c, 0xfa641, + 0xfa836, 0xfaa49, 0xfac3d, 0xfae52, 0xfb047, 0xfb23a, 0xfb44e, + 0xfb643, 0xfb837, 0xfba4a, 0xfbc3f, 0xfbe53, 0xfc048, 0xfc23c, + 0xfc450, 0xfc645, 0xfc839, 0xfca4c, 0xfcc41, 0xfce36, 0xfd04a, + 0xfd23d, 0xfd451, 0xfd646, 0xfd83a, 0xfda4d, 0xfdc43, 0xfde37, + 0xfe04b, 0xfe23f, 0xfe453, 0xfe648, 0xfe83c, 0xfea4f, 0xfec44, + 0xfee38, 0xff04c, 0xff241, 0xff436, 0xff64a, 0xff83e, 0xffa51, + 0xffc46, 0xffe3a, 0x10004e, 0x100242, 0x100437, 0x10064b, 0x100841, + 0x100a53, 0x100c48, 0x100e3c, 0x10104f, 0x101244, 0x101438, + 0x10164c, 0x101842, 0x101a35, 0x101c49, 0x101e3d, 0x102051, + 0x102245, 0x10243a, 0x10264e, 0x102843, 0x102a37, 0x102c4b, + 0x102e3f, 0x103053, 0x103247, 0x10343b, 0x10364f, 0x103845, + 0x103a38, 0x103c4c, 0x103e42, 0x104036, 0x104249, 0x10443d, + 0x104651, 0x104846, 0x104a3a, 0x104c4e, 0x104e43, 0x105038, + 0x10524a, 0x10543e, 0x105652, 0x105847, 0x105a3b, 0x105c4f, + 0x105e45, 0x106039, 0x10624c, 0x106441, 0x106635, 0x106849, + 0x106a3d, 0x106c51, 0x106e47, 0x10703c, 0x10724f, 0x107444, + 0x107638, 0x10784c, 0x107a3f, 0x107c53, 0x107e48]; + +function toLunar(yearOrDate, monthOrResult, day, result) { + var solarDate; + var lunarDate; + + if(typeof yearOrDate === 'object') { + solarDate = yearOrDate; + lunarDate = monthOrResult || {}; + + } else { + var isValidYear = (typeof yearOrDate === 'number') && + (yearOrDate >= 1888) && (yearOrDate <= 2111); + if(!isValidYear) + throw new Error("Solar year outside range 1888-2111"); + + var isValidMonth = (typeof monthOrResult === 'number') && + (monthOrResult >= 1) && (monthOrResult <= 12); + if(!isValidMonth) + throw new Error("Solar month outside range 1 - 12"); + + var isValidDay = (typeof day === 'number') && (day >= 1) && (day <= 31); + if(!isValidDay) + throw new Error("Solar day outside range 1 - 31"); + + solarDate = { + year: yearOrDate, + month: monthOrResult, + day: day, + }; + lunarDate = result || {}; + } + + // Compute Chinese new year and lunar year + var chineseNewYearPackedDate = + CHINESE_NEW_YEAR[solarDate.year - CHINESE_NEW_YEAR[0]]; + + var packedDate = (solarDate.year << 9) | (solarDate.month << 5) + | solarDate.day; + + lunarDate.year = (packedDate >= chineseNewYearPackedDate) ? + solarDate.year : + solarDate.year - 1; + + chineseNewYearPackedDate = + CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]]; + + var y = (chineseNewYearPackedDate >> 9) & 0xFFF; + var m = (chineseNewYearPackedDate >> 5) & 0x0F; + var d = chineseNewYearPackedDate & 0x1F; + + // Compute days from new year + var daysFromNewYear; + + var chineseNewYearJSDate = new Date(y, m -1, d); + var jsDate = new Date(solarDate.year, solarDate.month - 1, solarDate.day); + + daysFromNewYear = Math.round( + (jsDate - chineseNewYearJSDate) / (24 * 3600 * 1000)); + + // Compute lunar month and day + var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]]; + + var i; + for(i = 0; i < 13; i++) { + var daysInMonth = (monthDaysTable & (1 << (12 - i))) ? 30 : 29; + + if (daysFromNewYear < daysInMonth) { + break; + } + + daysFromNewYear -= daysInMonth; + } + + var intercalaryMonth = monthDaysTable >> 13; + if (!intercalaryMonth || i < intercalaryMonth) { + lunarDate.isIntercalary = false; + lunarDate.month = 1 + i; + } else if (i === intercalaryMonth) { + lunarDate.isIntercalary = true; + lunarDate.month = i; + } else { + lunarDate.isIntercalary = false; + lunarDate.month = i; + } + + lunarDate.day = 1 + daysFromNewYear; + + return lunarDate; +} + +function toSolar(yearOrDate, monthOrResult, day, isIntercalaryOrResult, result) { + var solarDate; + var lunarDate; + + if(typeof yearOrDate === 'object') { + lunarDate = yearOrDate; + solarDate = monthOrResult || {}; + + } else { + var isValidYear = (typeof yearOrDate === 'number') && + (yearOrDate >= 1888) && (yearOrDate <= 2111); + if(!isValidYear) + throw new Error("Lunar year outside range 1888-2111"); + + var isValidMonth = (typeof monthOrResult === 'number') && + (monthOrResult >= 1) && (monthOrResult <= 12); + if(!isValidMonth) + throw new Error("Lunar month outside range 1 - 12"); + + var isValidDay = (typeof day === 'number') && (day >= 1) && (day <= 30); + if(!isValidDay) + throw new Error("Lunar day outside range 1 - 30"); + + var isIntercalary; + if(typeof isIntercalaryOrResult === 'object') { + isIntercalary = false; + solarDate = isIntercalaryOrResult; + } else { + isIntercalary = !!isIntercalaryOrResult; + solarDate = result || {}; + } + + lunarDate = { + year: yearOrDate, + month: monthOrResult, + day: day, + isIntercalary: isIntercalary, + }; + } + + // Compute days from new year + var daysFromNewYear; + + daysFromNewYear = lunarDate.day - 1; + + var monthDaysTable = LUNAR_MONTH_DAYS[lunarDate.year - LUNAR_MONTH_DAYS[0]]; + var intercalaryMonth = monthDaysTable >> 13; + + var monthsFromNewYear; + if (!intercalaryMonth) { + monthsFromNewYear = lunarDate.month - 1; + } else if (lunarDate.month > intercalaryMonth) { + monthsFromNewYear = lunarDate.month; + } else if (lunarDate.isIntercalary) { + monthsFromNewYear = lunarDate.month; + } else { + monthsFromNewYear = lunarDate.month - 1; + } + + for(var i = 0; i < monthsFromNewYear; i++) { + var daysInMonth = (monthDaysTable & (1 << (12 - i))) ? 30 : 29; + daysFromNewYear += daysInMonth; + } + + // Compute Chinese new year + var packedDate = CHINESE_NEW_YEAR[lunarDate.year - CHINESE_NEW_YEAR[0]]; + + var y = (packedDate >> 9) & 0xFFF; + var m = (packedDate >> 5) & 0x0F; + var d = packedDate & 0x1F; + + // Compute solar date + var jsDate = new Date(y, m - 1, d + daysFromNewYear); + + solarDate.year = jsDate.getFullYear(); + solarDate.month = 1 + jsDate.getMonth(); + solarDate.day = jsDate.getDate(); + + return solarDate; +} + + +},{"../main":135,"object-assign":71}],122:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Coptic calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Coptic calendar. + See http://en.wikipedia.org/wiki/Coptic_calendar. + See also Calendrical Calculations: The Millennium Edition + (http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml). + @class CopticCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function CopticCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +CopticCalendar.prototype = new main.baseCalendar; + +assign(CopticCalendar.prototype, { + /** The calendar name. + @memberof CopticCalendar */ + name: 'Coptic', + /** Julian date of start of Coptic epoch: 29 August 284 CE (Gregorian). + @memberof CopticCalendar */ + jdEpoch: 1825029.5, + /** Days per month in a common year. + @memberof CopticCalendar */ + daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5], + /** true if has a year zero, false if not. + @memberof CopticCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof CopticCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof CopticCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof CopticCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof CopticCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Coptic', + epochs: ['BAM', 'AM'], + monthNames: ['Thout', 'Paopi', 'Hathor', 'Koiak', 'Tobi', 'Meshir', + 'Paremhat', 'Paremoude', 'Pashons', 'Paoni', 'Epip', 'Mesori', 'Pi Kogi Enavot'], + monthNamesShort: ['Tho', 'Pao', 'Hath', 'Koi', 'Tob', 'Mesh', + 'Pat', 'Pad', 'Pash', 'Pao', 'Epi', 'Meso', 'PiK'], + dayNames: ['Tkyriaka', 'Pesnau', 'Pshoment', 'Peftoou', 'Ptiou', 'Psoou', 'Psabbaton'], + dayNamesShort: ['Tky', 'Pes', 'Psh', 'Pef', 'Pti', 'Pso', 'Psa'], + dayNamesMin: ['Tk', 'Pes', 'Psh', 'Pef', 'Pt', 'Pso', 'Psa'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero + return year % 4 === 3 || year % 4 === -1; + }, + + /** Retrieve the number of months in a year. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, + main.local.invalidYear || main.regionalOptions[''].invalidYear); + return 13; + }, + + /** Determine the week of the year for a date. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number) the month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof CopticCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param month {number} The month to examine. + @param day {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof CopticCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number) the month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + if (year < 0) { year++; } // No year zero + return date.day() + (date.month() - 1) * 30 + + (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof CopticCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var c = Math.floor(jd) + 0.5 - this.jdEpoch; + var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1; + if (year <= 0) { year--; } // No year zero + c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD(); + var month = Math.floor(c / 30) + 1; + var day = c - (month - 1) * 30 + 1; + return this.newDate(year, month, day); + } +}); + +// Coptic calendar implementation +main.calendars.coptic = CopticCalendar; + + +},{"../main":135,"object-assign":71}],123:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Discworld calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) January 2016. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Discworld calendar - Unseen University version. + See also http://wiki.lspace.org/mediawiki/Discworld_calendar + and http://discworld.wikia.com/wiki/Discworld_calendar. + @class DiscworldCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function DiscworldCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +DiscworldCalendar.prototype = new main.baseCalendar; + +assign(DiscworldCalendar.prototype, { + /** The calendar name. + @memberof DiscworldCalendar */ + name: 'Discworld', + /** Julian date of start of Discworld epoch: 1 January 0001 CE. + @memberof DiscworldCalendar */ + jdEpoch: 1721425.5, + /** Days per month in a common year. + @memberof DiscworldCalendar */ + daysPerMonth: [16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], + /** true if has a year zero, false if not. + @memberof DiscworldCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof DiscworldCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof DiscworldCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof DiscworldCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof DiscworldCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Discworld', + epochs: ['BUC', 'UC'], + monthNames: ['Ick', 'Offle', 'February', 'March', 'April', 'May', 'June', + 'Grune', 'August', 'Spune', 'Sektober', 'Ember', 'December'], + monthNamesShort: ['Ick', 'Off', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Gru', 'Aug', 'Spu', 'Sek', 'Emb', 'Dec'], + dayNames: ['Sunday', 'Octeday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Oct', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Oc', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 2, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return false; + }, + + /** Retrieve the number of months in a year. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 13; + }, + + /** Retrieve the number of days in a year. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 400; + }, + + /** Determine the week of the year for a date. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 8) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1]; + }, + + /** Retrieve the number of days in a week. + @memberof DiscworldCalendar + @return {number} The number of days. */ + daysInWeek: function() { + return 8; + }, + + /** Retrieve the day of the week for a date. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The day of the week: 0 to number of days - 1. + @throws Error if an invalid date or a different calendar used. */ + dayOfWeek: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return (date.day() + 1) % 8; + }, + + /** Determine whether this date is a week day. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + var dow = this.dayOfWeek(year, month, day); + return (dow >= 2 && dow <= 6); + }, + + /** Retrieve additional information about a date. + @memberof DiscworldCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return {century: centuries[Math.floor((date.year() - 1) / 100) + 1] || ''}; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof DiscworldCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year() + (date.year() < 0 ? 1 : 0); + month = date.month(); + day = date.day(); + return day + (month > 1 ? 16 : 0) + (month > 2 ? (month - 2) * 32 : 0) + + (year - 1) * 400 + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof DiscworldCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd + 0.5) - Math.floor(this.jdEpoch) - 1; + var year = Math.floor(jd / 400) + 1; + jd -= (year - 1) * 400; + jd += (jd > 15 ? 16 : 0); + var month = Math.floor(jd / 32) + 1; + var day = jd - (month - 1) * 32 + 1; + return this.newDate(year <= 0 ? year - 1 : year, month, day); + } +}); + +// Names of the centuries +var centuries = { + 20: 'Fruitbat', + 21: 'Anchovy' +}; + +// Discworld calendar implementation +main.calendars.discworld = DiscworldCalendar; + + +},{"../main":135,"object-assign":71}],124:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Ethiopian calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Ethiopian calendar. + See http://en.wikipedia.org/wiki/Ethiopian_calendar. + See also Calendrical Calculations: The Millennium Edition + (http://emr.cs.iit.edu/home/reingold/calendar-book/index.shtml). + @class EthiopianCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function EthiopianCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +EthiopianCalendar.prototype = new main.baseCalendar; + +assign(EthiopianCalendar.prototype, { + /** The calendar name. + @memberof EthiopianCalendar */ + name: 'Ethiopian', + /** Julian date of start of Ethiopian epoch: 27 August 8 CE (Gregorian). + @memberof EthiopianCalendar */ + jdEpoch: 1724220.5, + /** Days per month in a common year. + @memberof EthiopianCalendar */ + daysPerMonth: [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5], + /** true if has a year zero, false if not. + @memberof EthiopianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof EthiopianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof EthiopianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof EthiopianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof EthiopianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Ethiopian', + epochs: ['BEE', 'EE'], + monthNames: ['Meskerem', 'Tikemet', 'Hidar', 'Tahesas', 'Tir', 'Yekatit', + 'Megabit', 'Miazia', 'Genbot', 'Sene', 'Hamle', 'Nehase', 'Pagume'], + monthNamesShort: ['Mes', 'Tik', 'Hid', 'Tah', 'Tir', 'Yek', + 'Meg', 'Mia', 'Gen', 'Sen', 'Ham', 'Neh', 'Pag'], + dayNames: ['Ehud', 'Segno', 'Maksegno', 'Irob', 'Hamus', 'Arb', 'Kidame'], + dayNamesShort: ['Ehu', 'Seg', 'Mak', 'Iro', 'Ham', 'Arb', 'Kid'], + dayNamesMin: ['Eh', 'Se', 'Ma', 'Ir', 'Ha', 'Ar', 'Ki'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero + return year % 4 === 3 || year % 4 === -1; + }, + + /** Retrieve the number of months in a year. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, + main.local.invalidYear || main.regionalOptions[''].invalidYear); + return 13; + }, + + /** Determine the week of the year for a date. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 13 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof EthiopianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof EthiopianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + if (year < 0) { year++; } // No year zero + return date.day() + (date.month() - 1) * 30 + + (year - 1) * 365 + Math.floor(year / 4) + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof EthiopianCalendar + @param jd {number} the Julian date to convert. + @return {CDate} the equivalent date. */ + fromJD: function(jd) { + var c = Math.floor(jd) + 0.5 - this.jdEpoch; + var year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1; + if (year <= 0) { year--; } // No year zero + c = Math.floor(jd) + 0.5 - this.newDate(year, 1, 1).toJD(); + var month = Math.floor(c / 30) + 1; + var day = c - (month - 1) * 30 + 1; + return this.newDate(year, month, day); + } +}); + +// Ethiopian calendar implementation +main.calendars.ethiopian = EthiopianCalendar; + + +},{"../main":135,"object-assign":71}],125:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Hebrew calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Hebrew civil calendar. + Based on code from http://www.fourmilab.ch/documents/calendar/. + See also http://en.wikipedia.org/wiki/Hebrew_calendar. + @class HebrewCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function HebrewCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +HebrewCalendar.prototype = new main.baseCalendar; + +assign(HebrewCalendar.prototype, { + /** The calendar name. + @memberof HebrewCalendar */ + name: 'Hebrew', + /** Julian date of start of Hebrew epoch: 7 October 3761 BCE. + @memberof HebrewCalendar */ + jdEpoch: 347995.5, + /** Days per month in a common year. + @memberof HebrewCalendar */ + daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29], + /** true if has a year zero, false if not. + @memberof HebrewCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof HebrewCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof HebrewCalendar */ + firstMonth: 7, + /** The minimum day number. + @memberof HebrewCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof HebrewCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Hebrew', + epochs: ['BAM', 'AM'], + monthNames: ['Nisan', 'Iyar', 'Sivan', 'Tammuz', 'Av', 'Elul', + 'Tishrei', 'Cheshvan', 'Kislev', 'Tevet', 'Shevat', 'Adar', 'Adar II'], + monthNamesShort: ['Nis', 'Iya', 'Siv', 'Tam', 'Av', 'Elu', 'Tis', 'Che', 'Kis', 'Tev', 'She', 'Ada', 'Ad2'], + dayNames: ['Yom Rishon', 'Yom Sheni', 'Yom Shlishi', 'Yom Revi\'i', 'Yom Chamishi', 'Yom Shishi', 'Yom Shabbat'], + dayNamesShort: ['Ris', 'She', 'Shl', 'Rev', 'Cha', 'Shi', 'Sha'], + dayNamesMin: ['Ri','She','Shl','Re','Ch','Shi','Sha'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return this._leapYear(date.year()); + }, + + /** Determine whether this date is in a leap year. + @memberof HebrewCalendar + @private + @param year {number} The year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + _leapYear: function(year) { + year = (year < 0 ? year + 1 : year); + return mod(year * 7 + 1, 19) < 7; + }, + + /** Retrieve the number of months in a year. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return this._leapYear(year.year ? year.year() : year) ? 13 : 12; + }, + + /** Determine the week of the year for a date. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + year = date.year(); + return this.toJD((year === -1 ? +1 : year + 1), 7, 1) - this.toJD(year, 7, 1); + }, + + /** Retrieve the number of days in a month. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + if (year.year) { + month = year.month(); + year = year.year(); + } + this._validate(year, month, this.minDay, main.local.invalidMonth); + return (month === 12 && this.leapYear(year) ? 30 : // Adar I + (month === 8 && mod(this.daysInYear(year), 10) === 5 ? 30 : // Cheshvan in shlemah year + (month === 9 && mod(this.daysInYear(year), 10) === 3 ? 29 : // Kislev in chaserah year + this.daysPerMonth[month - 1]))); + }, + + /** Determine whether this date is a week day. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 6; + }, + + /** Retrieve additional information about a date - year type. + @memberof HebrewCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return {yearType: (this.leapYear(date) ? 'embolismic' : 'common') + ' ' + + ['deficient', 'regular', 'complete'][this.daysInYear(date) % 10 - 3]}; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof HebrewCalendar + @param year {CDate)|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + var adjYear = (year <= 0 ? year + 1 : year); + var jd = this.jdEpoch + this._delay1(adjYear) + + this._delay2(adjYear) + day + 1; + if (month < 7) { + for (var m = 7; m <= this.monthsInYear(year); m++) { + jd += this.daysInMonth(year, m); + } + for (var m = 1; m < month; m++) { + jd += this.daysInMonth(year, m); + } + } + else { + for (var m = 7; m < month; m++) { + jd += this.daysInMonth(year, m); + } + } + return jd; + }, + + /** Test for delay of start of new year and to avoid + Sunday, Wednesday, or Friday as start of the new year. + @memberof HebrewCalendar + @private + @param year {number} The year to examine. + @return {number} The days to offset by. */ + _delay1: function(year) { + var months = Math.floor((235 * year - 234) / 19); + var parts = 12084 + 13753 * months; + var day = months * 29 + Math.floor(parts / 25920); + if (mod(3 * (day + 1), 7) < 3) { + day++; + } + return day; + }, + + /** Check for delay in start of new year due to length of adjacent years. + @memberof HebrewCalendar + @private + @param year {number} The year to examine. + @return {number} The days to offset by. */ + _delay2: function(year) { + var last = this._delay1(year - 1); + var present = this._delay1(year); + var next = this._delay1(year + 1); + return ((next - present) === 356 ? 2 : ((present - last) === 382 ? 1 : 0)); + }, + + /** Create a new date from a Julian date. + @memberof HebrewCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5; + var year = Math.floor(((jd - this.jdEpoch) * 98496.0) / 35975351.0) - 1; + while (jd >= this.toJD((year === -1 ? +1 : year + 1), 7, 1)) { + year++; + } + var month = (jd < this.toJD(year, 1, 1)) ? 7 : 1; + while (jd > this.toJD(year, month, this.daysInMonth(year, month))) { + month++; + } + var day = jd - this.toJD(year, month, 1) + 1; + return this.newDate(year, month, day); + } +}); + +// Modulus function which works for non-integers. +function mod(a, b) { + return a - (b * Math.floor(a / b)); +} + +// Hebrew calendar implementation +main.calendars.hebrew = HebrewCalendar; + + +},{"../main":135,"object-assign":71}],126:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Islamic calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Islamic or '16 civil' calendar. + Based on code from http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php. + See also http://en.wikipedia.org/wiki/Islamic_calendar. + @class IslamicCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function IslamicCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +IslamicCalendar.prototype = new main.baseCalendar; + +assign(IslamicCalendar.prototype, { + /** The calendar name. + @memberof IslamicCalendar */ + name: 'Islamic', + /** Julian date of start of Islamic epoch: 16 July 622 CE. + @memberof IslamicCalendar */ + jdEpoch: 1948439.5, + /** Days per month in a common year. + @memberof IslamicCalendar */ + daysPerMonth: [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29], + /** true if has a year zero, false if not. + @memberof IslamicCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof IslamicCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof IslamicCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof IslamicCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof IslamicCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Islamic', + epochs: ['BH', 'AH'], + monthNames: ['Muharram', 'Safar', 'Rabi\' al-awwal', 'Rabi\' al-thani', 'Jumada al-awwal', 'Jumada al-thani', + 'Rajab', 'Sha\'aban', 'Ramadan', 'Shawwal', 'Dhu al-Qi\'dah', 'Dhu al-Hijjah'], + monthNamesShort: ['Muh', 'Saf', 'Rab1', 'Rab2', 'Jum1', 'Jum2', 'Raj', 'Sha\'', 'Ram', 'Shaw', 'DhuQ', 'DhuH'], + dayNames: ['Yawm al-ahad', 'Yawm al-ithnayn', 'Yawm ath-thulaathaa\'', + 'Yawm al-arbi\'aa\'', 'Yawm al-khamīs', 'Yawm al-jum\'a', 'Yawm as-sabt'], + dayNamesShort: ['Aha', 'Ith', 'Thu', 'Arb', 'Kha', 'Jum', 'Sab'], + dayNamesMin: ['Ah','It','Th','Ar','Kh','Ju','Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 6, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return (date.year() * 11 + 14) % 30 < 11; + }, + + /** Determine the week of the year for a date. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + return (this.leapYear(year) ? 355 : 354); + }, + + /** Retrieve the number of days in a month. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof IslamicCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 5; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof IslamicCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + year = (year <= 0 ? year + 1 : year); + return day + Math.ceil(29.5 * (month - 1)) + (year - 1) * 354 + + Math.floor((3 + (11 * year)) / 30) + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof IslamicCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5; + var year = Math.floor((30 * (jd - this.jdEpoch) + 10646) / 10631); + year = (year <= 0 ? year - 1 : year); + var month = Math.min(12, Math.ceil((jd - 29 - this.toJD(year, 1, 1)) / 29.5) + 1); + var day = jd - this.toJD(year, month, 1) + 1; + return this.newDate(year, month, day); + } +}); + +// Islamic (16 civil) calendar implementation +main.calendars.islamic = IslamicCalendar; + + +},{"../main":135,"object-assign":71}],127:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Julian calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Julian calendar. + Based on code from http://www.fourmilab.ch/documents/calendar/. + See also http://en.wikipedia.org/wiki/Julian_calendar. + @class JulianCalendar + @augments BaseCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function JulianCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +JulianCalendar.prototype = new main.baseCalendar; + +assign(JulianCalendar.prototype, { + /** The calendar name. + @memberof JulianCalendar */ + name: 'Julian', + /** Julian date of start of Julian epoch: 1 January 0001 AD = 30 December 0001 BCE. + @memberof JulianCalendar */ + jdEpoch: 1721423.5, + /** Days per month in a common year. + @memberof JulianCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof JulianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof JulianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof JulianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof JulianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof JulianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Julian', + epochs: ['BC', 'AD'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'mm/dd/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = (date.year() < 0 ? date.year() + 1 : date.year()); // No year zero + return (year % 4) === 0; + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Thursday of this week starting on Monday + var checkDate = this.newDate(year, month, day); + checkDate.add(4 - (checkDate.dayOfWeek() || 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof JulianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} True if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof JulianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + if (year < 0) { year++; } // No year zero + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + if (month <= 2) { + year--; + month += 12; + } + return Math.floor(365.25 * (year + 4716)) + + Math.floor(30.6001 * (month + 1)) + day - 1524.5; + }, + + /** Create a new date from a Julian date. + @memberof JulianCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + var a = Math.floor(jd + 0.5); + var b = a + 1524; + var c = Math.floor((b - 122.1) / 365.25); + var d = Math.floor(365.25 * c); + var e = Math.floor((b - d) / 30.6001); + var month = e - Math.floor(e < 14 ? 1 : 13); + var year = c - Math.floor(month > 2 ? 4716 : 4715); + var day = b - d - Math.floor(30.6001 * e); + if (year <= 0) { year--; } // No year zero + return this.newDate(year, month, day); + } +}); + +// Julian calendar implementation +main.calendars.julian = JulianCalendar; + + +},{"../main":135,"object-assign":71}],128:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Mayan calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Mayan Long Count calendar. + See also http://en.wikipedia.org/wiki/Mayan_calendar. + @class MayanCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function MayanCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +MayanCalendar.prototype = new main.baseCalendar; + +assign(MayanCalendar.prototype, { + /** The calendar name. + @memberof MayanCalendar */ + name: 'Mayan', + /** Julian date of start of Mayan epoch: 11 August 3114 BCE. + @memberof MayanCalendar */ + jdEpoch: 584282.5, + /** true if has a year zero, false if not. + @memberof MayanCalendar */ + hasYearZero: true, + /** The minimum month number. + @memberof MayanCalendar */ + minMonth: 0, + /** The first month in the year. + @memberof MayanCalendar */ + firstMonth: 0, + /** The minimum day number. + @memberof MayanCalendar */ + minDay: 0, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof MayanCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. + @property haabMonths {string[]} The names of the Haab months. + @property tzolkinMonths {string[]} The names of the Tzolkin months. */ + regionalOptions: { // Localisations + '': { + name: 'Mayan', + epochs: ['', ''], + monthNames: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17'], + monthNamesShort: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17'], + dayNames: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'], + dayNamesShort: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'], + dayNamesMin: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'], + digits: null, + dateFormat: 'YYYY.m.d', + firstDay: 0, + isRTL: false, + haabMonths: ['Pop', 'Uo', 'Zip', 'Zotz', 'Tzec', 'Xul', 'Yaxkin', 'Mol', 'Chen', 'Yax', + 'Zac', 'Ceh', 'Mac', 'Kankin', 'Muan', 'Pax', 'Kayab', 'Cumku', 'Uayeb'], + tzolkinMonths: ['Imix', 'Ik', 'Akbal', 'Kan', 'Chicchan', 'Cimi', 'Manik', 'Lamat', 'Muluc', 'Oc', + 'Chuen', 'Eb', 'Ben', 'Ix', 'Men', 'Cib', 'Caban', 'Etznab', 'Cauac', 'Ahau'] + } + }, + + /** Determine whether this date is in a leap year. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return false; + }, + + /** Format the year, if not a simple sequential number. + @memberof MayanCalendar + @param year {CDate|number} The date to format or the year to format. + @return {string} The formatted year. + @throws Error if an invalid year or a different calendar used. */ + formatYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + year = date.year(); + var baktun = Math.floor(year / 400); + year = year % 400; + year += (year < 0 ? 400 : 0); + var katun = Math.floor(year / 20); + return baktun + '.' + katun + '.' + (year % 20); + }, + + /** Convert from the formatted year back to a single number. + @memberof MayanCalendar + @param years {string} The year as n.n.n. + @return {number} The sequential year. + @throws Error if an invalid value is supplied. */ + forYear: function(years) { + years = years.split('.'); + if (years.length < 3) { + throw 'Invalid Mayan year'; + } + var year = 0; + for (var i = 0; i < years.length; i++) { + var y = parseInt(years[i], 10); + if (Math.abs(y) > 19 || (i > 0 && y < 0)) { + throw 'Invalid Mayan year'; + } + year = year * 20 + y; + } + return year; + }, + + /** Retrieve the number of months in a year. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 18; + }, + + /** Determine the week of the year for a date. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + this._validate(year, month, day, main.local.invalidDate); + return 0; + }, + + /** Retrieve the number of days in a year. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return 360; + }, + + /** Retrieve the number of days in a month. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + this._validate(year, month, this.minDay, main.local.invalidMonth); + return 20; + }, + + /** Retrieve the number of days in a week. + @memberof MayanCalendar + @return {number} The number of days. */ + daysInWeek: function() { + return 5; // Just for formatting + }, + + /** Retrieve the day of the week for a date. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The day of the week: 0 to number of days - 1. + @throws Error if an invalid date or a different calendar used. */ + dayOfWeek: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return date.day(); + }, + + /** Determine whether this date is a week day. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + this._validate(year, month, day, main.local.invalidDate); + return true; + }, + + /** Retrieve additional information about a date - Haab and Tzolkin equivalents. + @memberof MayanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var jd = date.toJD(); + var haab = this._toHaab(jd); + var tzolkin = this._toTzolkin(jd); + return {haabMonthName: this.local.haabMonths[haab[0] - 1], + haabMonth: haab[0], haabDay: haab[1], + tzolkinDayName: this.local.tzolkinMonths[tzolkin[0] - 1], + tzolkinDay: tzolkin[0], tzolkinTrecena: tzolkin[1]}; + }, + + /** Retrieve Haab date from a Julian date. + @memberof MayanCalendar + @private + @param jd {number} The Julian date. + @return {number[]} Corresponding Haab month and day. */ + _toHaab: function(jd) { + jd -= this.jdEpoch; + var day = mod(jd + 8 + ((18 - 1) * 20), 365); + return [Math.floor(day / 20) + 1, mod(day, 20)]; + }, + + /** Retrieve Tzolkin date from a Julian date. + @memberof MayanCalendar + @private + @param jd {number} The Julian date. + @return {number[]} Corresponding Tzolkin day and trecena. */ + _toTzolkin: function(jd) { + jd -= this.jdEpoch; + return [amod(jd + 20, 20), amod(jd + 4, 13)]; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof MayanCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + return date.day() + (date.month() * 20) + (date.year() * 360) + this.jdEpoch; + }, + + /** Create a new date from a Julian date. + @memberof MayanCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5 - this.jdEpoch; + var year = Math.floor(jd / 360); + jd = jd % 360; + jd += (jd < 0 ? 360 : 0); + var month = Math.floor(jd / 20); + var day = jd % 20; + return this.newDate(year, month, day); + } +}); + +// Modulus function which works for non-integers. +function mod(a, b) { + return a - (b * Math.floor(a / b)); +} + +// Modulus function which returns numerator if modulus is zero. +function amod(a, b) { + return mod(a - 1, b) + 1; +} + +// Mayan calendar implementation +main.calendars.mayan = MayanCalendar; + + +},{"../main":135,"object-assign":71}],129:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Nanakshahi calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) January 2016. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Nanakshahi calendar. + See also https://en.wikipedia.org/wiki/Nanakshahi_calendar. + @class NanakshahiCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function NanakshahiCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +NanakshahiCalendar.prototype = new main.baseCalendar; + +var gregorian = main.instance('gregorian'); + +assign(NanakshahiCalendar.prototype, { + /** The calendar name. + @memberof NanakshahiCalendar */ + name: 'Nanakshahi', + /** Julian date of start of Nanakshahi epoch: 14 March 1469 CE. + @memberof NanakshahiCalendar */ + jdEpoch: 2257673.5, + /** Days per month in a common year. + @memberof NanakshahiCalendar */ + daysPerMonth: [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30], + /** true if has a year zero, false if not. + @memberof NanakshahiCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof NanakshahiCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof NanakshahiCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof NanakshahiCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof NanakshahiCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Nanakshahi', + epochs: ['BN', 'AN'], + monthNames: ['Chet', 'Vaisakh', 'Jeth', 'Harh', 'Sawan', 'Bhadon', + 'Assu', 'Katak', 'Maghar', 'Poh', 'Magh', 'Phagun'], + monthNamesShort: ['Che', 'Vai', 'Jet', 'Har', 'Saw', 'Bha', 'Ass', 'Kat', 'Mgr', 'Poh', 'Mgh', 'Pha'], + dayNames: ['Somvaar', 'Mangalvar', 'Budhvaar', 'Veervaar', 'Shukarvaar', 'Sanicharvaar', 'Etvaar'], + dayNamesShort: ['Som', 'Mangal', 'Budh', 'Veer', 'Shukar', 'Sanichar', 'Et'], + dayNamesMin: ['So', 'Ma', 'Bu', 'Ve', 'Sh', 'Sa', 'Et'], + digits: null, + dateFormat: 'dd-mm-yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + main.local.invalidYear || main.regionalOptions[''].invalidYear); + return gregorian.leapYear(date.year() + (date.year() < 1 ? 1 : 0) + 1469); + }, + + /** Determine the week of the year for a date. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Monday of this week starting on Monday + var checkDate = this.newDate(year, month, day); + checkDate.add(1 - (checkDate.dayOfWeek() || 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof NanakshahiCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidMonth); + var year = date.year(); + if (year < 0) { year++; } // No year zero + var doy = date.day(); + for (var m = 1; m < date.month(); m++) { + doy += this.daysPerMonth[m - 1]; + } + return doy + gregorian.toJD(year + 1468, 3, 13); + }, + + /** Create a new date from a Julian date. + @memberof NanakshahiCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd + 0.5); + var year = Math.floor((jd - (this.jdEpoch - 1)) / 366); + while (jd >= this.toJD(year + 1, 1, 1)) { + year++; + } + var day = jd - Math.floor(this.toJD(year, 1, 1) + 0.5) + 1; + var month = 1; + while (day > this.daysInMonth(year, month)) { + day -= this.daysInMonth(year, month); + month++; + } + return this.newDate(year, month, day); + } +}); + +// Nanakshahi calendar implementation +main.calendars.nanakshahi = NanakshahiCalendar; + + +},{"../main":135,"object-assign":71}],130:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Nepali calendar for jQuery v2.0.2. + Written by Artur Neumann (ict.projects{at}nepal.inf.org) April 2013. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Nepali civil calendar. + Based on the ideas from + http://codeissue.com/articles/a04e050dea7468f/algorithm-to-convert-english-date-to-nepali-date-using-c-net + and http://birenj2ee.blogspot.com/2011/04/nepali-calendar-in-java.html + See also http://en.wikipedia.org/wiki/Nepali_calendar + and https://en.wikipedia.org/wiki/Bikram_Samwat. + @class NepaliCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function NepaliCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +NepaliCalendar.prototype = new main.baseCalendar; + +assign(NepaliCalendar.prototype, { + /** The calendar name. + @memberof NepaliCalendar */ + name: 'Nepali', + /** Julian date of start of Nepali epoch: 14 April 57 BCE. + @memberof NepaliCalendar */ + jdEpoch: 1700709.5, + /** Days per month in a common year. + @memberof NepaliCalendar */ + daysPerMonth: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + /** true if has a year zero, false if not. + @memberof NepaliCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof NepaliCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof NepaliCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof NepaliCalendar */ + minDay: 1, + /** The number of days in the year. + @memberof NepaliCalendar */ + daysPerYear: 365, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof NepaliCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Nepali', + epochs: ['BBS', 'ABS'], + monthNames: ['Baisakh', 'Jestha', 'Ashadh', 'Shrawan', 'Bhadra', 'Ashwin', + 'Kartik', 'Mangsir', 'Paush', 'Mangh', 'Falgun', 'Chaitra'], + monthNamesShort: ['Bai', 'Je', 'As', 'Shra', 'Bha', 'Ash', 'Kar', 'Mang', 'Pau', 'Ma', 'Fal', 'Chai'], + dayNames: ['Aaitabaar', 'Sombaar', 'Manglbaar', 'Budhabaar', 'Bihibaar', 'Shukrabaar', 'Shanibaar'], + dayNamesShort: ['Aaita', 'Som', 'Mangl', 'Budha', 'Bihi', 'Shukra', 'Shani'], + dayNamesMin: ['Aai', 'So', 'Man', 'Bu', 'Bi', 'Shu', 'Sha'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 1, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + return this.daysInYear(year) !== this.daysPerYear; + }, + + /** Determine the week of the year for a date. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + year = date.year(); + if (typeof this.NEPALI_CALENDAR_DATA[year] === 'undefined') { + return this.daysPerYear; + } + var daysPerYear = 0; + for (var month_number = this.minMonth; month_number <= 12; month_number++) { + daysPerYear += this.NEPALI_CALENDAR_DATA[year][month_number]; + } + return daysPerYear; + }, + + /** Retrieve the number of days in a month. + @memberof NepaliCalendar + @param year {CDate|number| The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + if (year.year) { + month = year.month(); + year = year.year(); + } + this._validate(year, month, this.minDay, main.local.invalidMonth); + return (typeof this.NEPALI_CALENDAR_DATA[year] === 'undefined' ? + this.daysPerMonth[month - 1] : this.NEPALI_CALENDAR_DATA[year][month]); + }, + + /** Determine whether this date is a week day. + @memberof NepaliCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof NepaliCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(nepaliYear, nepaliMonth, nepaliDay) { + var date = this._validate(nepaliYear, nepaliMonth, nepaliDay, main.local.invalidDate); + nepaliYear = date.year(); + nepaliMonth = date.month(); + nepaliDay = date.day(); + var gregorianCalendar = main.instance(); + var gregorianDayOfYear = 0; // We will add all the days that went by since + // the 1st. January and then we can get the Gregorian Date + var nepaliMonthToCheck = nepaliMonth; + var nepaliYearToCheck = nepaliYear; + this._createMissingCalendarData(nepaliYear); + // Get the correct year + var gregorianYear = nepaliYear - (nepaliMonthToCheck > 9 || (nepaliMonthToCheck === 9 && + nepaliDay >= this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0]) ? 56 : 57); + // First we add the amount of days in the actual Nepali month as the day of year in the + // Gregorian one because at least this days are gone since the 1st. Jan. + if (nepaliMonth !== 9) { + gregorianDayOfYear = nepaliDay; + nepaliMonthToCheck--; + } + // Now we loop throw all Nepali month and add the amount of days to gregorianDayOfYear + // we do this till we reach Paush (9th month). 1st. January always falls in this month + while (nepaliMonthToCheck !== 9) { + if (nepaliMonthToCheck <= 0) { + nepaliMonthToCheck = 12; + nepaliYearToCheck--; + } + gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][nepaliMonthToCheck]; + nepaliMonthToCheck--; + } + // If the date that has to be converted is in Paush (month no. 9) we have to do some other calculation + if (nepaliMonth === 9) { + // Add the days that are passed since the first day of Paush and substract the + // amount of days that lie between 1st. Jan and 1st Paush + gregorianDayOfYear += nepaliDay - this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0]; + // For the first days of Paush we are now in negative values, + // because in the end of the gregorian year we substract + // 365 / 366 days (P.S. remember math in school + - gives -) + if (gregorianDayOfYear < 0) { + gregorianDayOfYear += gregorianCalendar.daysInYear(gregorianYear); + } + } + else { + gregorianDayOfYear += this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][9] - + this.NEPALI_CALENDAR_DATA[nepaliYearToCheck][0]; + } + return gregorianCalendar.newDate(gregorianYear, 1 ,1).add(gregorianDayOfYear, 'd').toJD(); + }, + + /** Create a new date from a Julian date. + @memberof NepaliCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var gregorianCalendar = main.instance(); + var gregorianDate = gregorianCalendar.fromJD(jd); + var gregorianYear = gregorianDate.year(); + var gregorianDayOfYear = gregorianDate.dayOfYear(); + var nepaliYear = gregorianYear + 56; //this is not final, it could be also +57 but +56 is always true for 1st Jan. + this._createMissingCalendarData(nepaliYear); + var nepaliMonth = 9; // Jan 1 always fall in Nepali month Paush which is the 9th month of Nepali calendar. + // Get the Nepali day in Paush (month 9) of 1st January + var dayOfFirstJanInPaush = this.NEPALI_CALENDAR_DATA[nepaliYear][0]; + // Check how many days are left of Paush . + // Days calculated from 1st Jan till the end of the actual Nepali month, + // we use this value to check if the gregorian Date is in the actual Nepali month. + var daysSinceJanFirstToEndOfNepaliMonth = + this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] - dayOfFirstJanInPaush + 1; + // If the gregorian day-of-year is smaller o equal than the sum of days between the 1st January and + // the end of the actual nepali month we found the correct nepali month. + // Example: + // The 4th February 2011 is the gregorianDayOfYear 35 (31 days of January + 4) + // 1st January 2011 is in the nepali year 2067, where 1st. January is in the 17th day of Paush (9th month) + // In 2067 Paush has 30days, This means (30-17+1=14) there are 14days between 1st January and end of Paush + // (including 17th January) + // The gregorianDayOfYear (35) is bigger than 14, so we check the next month + // The next nepali month (Mangh) has 29 days + // 29+14=43, this is bigger than gregorianDayOfYear(35) so, we found the correct nepali month + while (gregorianDayOfYear > daysSinceJanFirstToEndOfNepaliMonth) { + nepaliMonth++; + if (nepaliMonth > 12) { + nepaliMonth = 1; + nepaliYear++; + } + daysSinceJanFirstToEndOfNepaliMonth += this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth]; + } + // The last step is to calculate the nepali day-of-month + // to continue our example from before: + // we calculated there are 43 days from 1st. January (17 Paush) till end of Mangh (29 days) + // when we subtract from this 43 days the day-of-year of the the Gregorian date (35), + // we know how far the searched day is away from the end of the Nepali month. + // So we simply subtract this number from the amount of days in this month (30) + var nepaliDayOfMonth = this.NEPALI_CALENDAR_DATA[nepaliYear][nepaliMonth] - + (daysSinceJanFirstToEndOfNepaliMonth - gregorianDayOfYear); + return this.newDate(nepaliYear, nepaliMonth, nepaliDayOfMonth); + }, + + /** Creates missing data in the NEPALI_CALENDAR_DATA table. + This data will not be correct but just give an estimated result. Mostly -/+ 1 day + @private + @param nepaliYear {number} The missing year number. */ + _createMissingCalendarData: function(nepaliYear) { + var tmp_calendar_data = this.daysPerMonth.slice(0); + tmp_calendar_data.unshift(17); + for (var nepaliYearToCreate = (nepaliYear - 1); nepaliYearToCreate < (nepaliYear + 2); nepaliYearToCreate++) { + if (typeof this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] === 'undefined') { + this.NEPALI_CALENDAR_DATA[nepaliYearToCreate] = tmp_calendar_data; + } + } + }, + + NEPALI_CALENDAR_DATA: { + // These data are from http://www.ashesh.com.np + 1970: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1971: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], + 1972: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 1973: [19, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 1974: [19, 31, 31, 32, 30, 31, 31, 30, 29, 30, 29, 30, 30], + 1975: [18, 31, 31, 32, 32, 30, 31, 30, 29, 30, 29, 30, 30], + 1976: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1977: [18, 31, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], + 1978: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1979: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 1980: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1981: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 1982: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1983: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 1984: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1985: [18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 1986: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1987: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 1988: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 1989: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 1990: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1991: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + // These data are from http://nepalicalendar.rat32.com/index.php + 1992: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 1993: [18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 1994: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1995: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 1996: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 1997: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1998: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 1999: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2000: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2001: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2002: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2003: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2004: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2005: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2006: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2007: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2008: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], + 2009: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2010: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2011: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2012: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2013: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2014: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2015: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2016: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2017: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2018: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2019: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2020: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2021: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2022: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2023: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2024: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2025: [18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2026: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2027: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2028: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2029: [18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], + 2030: [17, 31, 32, 31, 32, 31, 30, 30, 30, 30, 30, 30, 31], + 2031: [17, 31, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31], + 2032: [17, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32], + 2033: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2034: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2035: [17, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], + 2036: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2037: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2038: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2039: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2040: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2041: [18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2042: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2043: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2044: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2045: [18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2046: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2047: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2048: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2049: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2050: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2051: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2052: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2053: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2054: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2055: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 29, 30], + 2056: [17, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30], + 2057: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2058: [17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2059: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2060: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2061: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2062: [17, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31], + 2063: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2064: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2065: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2066: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31], + 2067: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2068: [17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2069: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2070: [17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30], + 2071: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2072: [17, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2073: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31], + 2074: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2075: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2076: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + 2077: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31], + 2078: [17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30], + 2079: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30], + 2080: [16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30], + // These data are from http://www.ashesh.com.np/nepali-calendar/ + 2081: [17, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2082: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2083: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], + 2084: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], + 2085: [17, 31, 32, 31, 32, 31, 31, 30, 30, 29, 30, 30, 30], + 2086: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2087: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30], + 2088: [16, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30], + 2089: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2090: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2091: [16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30], + 2092: [16, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2093: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2094: [17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30], + 2095: [17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30], + 2096: [17, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30], + 2097: [17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30], + 2098: [17, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 30, 31], + 2099: [17, 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30], + 2100: [17, 31, 32, 31, 32, 30, 31, 30, 29, 30, 29, 30, 30] + } +}); + +// Nepali calendar implementation +main.calendars.nepali = NepaliCalendar; + + +},{"../main":135,"object-assign":71}],131:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Persian calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the Persian or Jalali calendar. + Based on code from http://www.iranchamber.com/calendar/converter/iranian_calendar_converter.php. + See also http://en.wikipedia.org/wiki/Iranian_calendar. + @class PersianCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function PersianCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +PersianCalendar.prototype = new main.baseCalendar; + +assign(PersianCalendar.prototype, { + /** The calendar name. + @memberof PersianCalendar */ + name: 'Persian', + /** Julian date of start of Persian epoch: 19 March 622 CE. + @memberof PersianCalendar */ + jdEpoch: 1948320.5, + /** Days per month in a common year. + @memberof PersianCalendar */ + daysPerMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29], + /** true if has a year zero, false if not. + @memberof PersianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof PersianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof PersianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof PersianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof PersianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Persian', + epochs: ['BP', 'AP'], + monthNames: ['Farvardin', 'Ordibehesht', 'Khordad', 'Tir', 'Mordad', 'Shahrivar', + 'Mehr', 'Aban', 'Azar', 'Day', 'Bahman', 'Esfand'], + monthNamesShort: ['Far', 'Ord', 'Kho', 'Tir', 'Mor', 'Sha', 'Meh', 'Aba', 'Aza', 'Day', 'Bah', 'Esf'], + dayNames: ['Yekshambe', 'Doshambe', 'Seshambe', 'Chæharshambe', 'Panjshambe', 'Jom\'e', 'Shambe'], + dayNamesShort: ['Yek', 'Do', 'Se', 'Chæ', 'Panj', 'Jom', 'Sha'], + dayNamesMin: ['Ye','Do','Se','Ch','Pa','Jo','Sh'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 6, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return (((((date.year() - (date.year() > 0 ? 474 : 473)) % 2820) + + 474 + 38) * 682) % 2816) < 682; + }, + + /** Determine the week of the year for a date. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Saturday of this week starting on Saturday + var checkDate = this.newDate(year, month, day); + checkDate.add(-((checkDate.dayOfWeek() + 1) % 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 12 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof PersianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return this.dayOfWeek(year, month, day) !== 5; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof PersianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + var epBase = year - (year >= 0 ? 474 : 473); + var epYear = 474 + mod(epBase, 2820); + return day + (month <= 7 ? (month - 1) * 31 : (month - 1) * 30 + 6) + + Math.floor((epYear * 682 - 110) / 2816) + (epYear - 1) * 365 + + Math.floor(epBase / 2820) * 1029983 + this.jdEpoch - 1; + }, + + /** Create a new date from a Julian date. + @memberof PersianCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + jd = Math.floor(jd) + 0.5; + var depoch = jd - this.toJD(475, 1, 1); + var cycle = Math.floor(depoch / 1029983); + var cyear = mod(depoch, 1029983); + var ycycle = 2820; + if (cyear !== 1029982) { + var aux1 = Math.floor(cyear / 366); + var aux2 = mod(cyear, 366); + ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) + aux1 + 1; + } + var year = ycycle + (2820 * cycle) + 474; + year = (year <= 0 ? year - 1 : year); + var yday = jd - this.toJD(year, 1, 1) + 1; + var month = (yday <= 186 ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30)); + var day = jd - this.toJD(year, month, 1) + 1; + return this.newDate(year, month, day); + } +}); + +// Modulus function which works for non-integers. +function mod(a, b) { + return a - (b * Math.floor(a / b)); +} + +// Persian (Jalali) calendar implementation +main.calendars.persian = PersianCalendar; +main.calendars.jalali = PersianCalendar; + + +},{"../main":135,"object-assign":71}],132:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Taiwanese (Minguo) calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +var gregorianCalendar = main.instance(); + +/** Implementation of the Taiwanese calendar. + See http://en.wikipedia.org/wiki/Minguo_calendar. + @class TaiwanCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function TaiwanCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +TaiwanCalendar.prototype = new main.baseCalendar; + +assign(TaiwanCalendar.prototype, { + /** The calendar name. + @memberof TaiwanCalendar */ + name: 'Taiwan', + /** Julian date of start of Taiwan epoch: 1 January 1912 CE (Gregorian). + @memberof TaiwanCalendar */ + jdEpoch: 2419402.5, + /** Difference in years between Taiwan and Gregorian calendars. + @memberof TaiwanCalendar */ + yearsOffset: 1911, + /** Days per month in a common year. + @memberof TaiwanCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof TaiwanCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof TaiwanCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof TaiwanCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof TaiwanCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof TaiwanCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Taiwan', + epochs: ['BROC', 'ROC'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 1, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.leapYear(year); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.weekOfYear(year, date.month(), date.day()); + }, + + /** Retrieve the number of days in a month. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof TaiwanCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof TaiwanCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var year = this._t2gYear(date.year()); + return gregorianCalendar.toJD(year, date.month(), date.day()); + }, + + /** Create a new date from a Julian date. + @memberof TaiwanCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var date = gregorianCalendar.fromJD(jd); + var year = this._g2tYear(date.year()); + return this.newDate(year, date.month(), date.day()); + }, + + /** Convert Taiwanese to Gregorian year. + @memberof TaiwanCalendar + @private + @param year {number} The Taiwanese year. + @return {number} The corresponding Gregorian year. */ + _t2gYear: function(year) { + return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0); + }, + + /** Convert Gregorian to Taiwanese year. + @memberof TaiwanCalendar + @private + @param year {number} The Gregorian year. + @return {number} The corresponding Taiwanese year. */ + _g2tYear: function(year) { + return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0); + } +}); + +// Taiwan calendar implementation +main.calendars.taiwan = TaiwanCalendar; + + +},{"../main":135,"object-assign":71}],133:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Thai calendar for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) February 2010. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +var gregorianCalendar = main.instance(); + +/** Implementation of the Thai calendar. + See http://en.wikipedia.org/wiki/Thai_calendar. + @class ThaiCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function ThaiCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +ThaiCalendar.prototype = new main.baseCalendar; + +assign(ThaiCalendar.prototype, { + /** The calendar name. + @memberof ThaiCalendar */ + name: 'Thai', + /** Julian date of start of Thai epoch: 1 January 543 BCE (Gregorian). + @memberof ThaiCalendar */ + jdEpoch: 1523098.5, + /** Difference in years between Thai and Gregorian calendars. + @memberof ThaiCalendar */ + yearsOffset: 543, + /** Days per month in a common year. + @memberof ThaiCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof ThaiCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof ThaiCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof ThaiCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof ThaiCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof ThaiCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Thai', + epochs: ['BBE', 'BE'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'dd/mm/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.leapYear(year); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + var year = this._t2gYear(date.year()); + return gregorianCalendar.weekOfYear(year, date.month(), date.day()); + }, + + /** Retrieve the number of days in a month. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof ThaiCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof ThaiCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var year = this._t2gYear(date.year()); + return gregorianCalendar.toJD(year, date.month(), date.day()); + }, + + /** Create a new date from a Julian date. + @memberof ThaiCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + var date = gregorianCalendar.fromJD(jd); + var year = this._g2tYear(date.year()); + return this.newDate(year, date.month(), date.day()); + }, + + /** Convert Thai to Gregorian year. + @memberof ThaiCalendar + @private + @param year {number} The Thai year. + @return {number} The corresponding Gregorian year. */ + _t2gYear: function(year) { + return year - this.yearsOffset - (year >= 1 && year <= this.yearsOffset ? 1 : 0); + }, + + /** Convert Gregorian to Thai year. + @memberof ThaiCalendar + @private + @param year {number} The Gregorian year. + @return {number} The corresponding Thai year. */ + _g2tYear: function(year) { + return year + this.yearsOffset + (year >= -this.yearsOffset && year <= -1 ? 1 : 0); + } +}); + +// Thai calendar implementation +main.calendars.thai = ThaiCalendar; + + +},{"../main":135,"object-assign":71}],134:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + UmmAlQura calendar for jQuery v2.0.2. + Written by Amro Osama March 2013. + Modified by Binnooh.com & www.elm.sa - 2014 - Added dates back to 1276 Hijri year. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var main = _dereq_('../main'); +var assign = _dereq_('object-assign'); + + +/** Implementation of the UmmAlQura or 'saudi' calendar. + See also http://en.wikipedia.org/wiki/Islamic_calendar#Saudi_Arabia.27s_Umm_al-Qura_calendar. + http://www.ummulqura.org.sa/About.aspx + http://www.staff.science.uu.nl/~gent0113/islam/ummalqura.htm + @class UmmAlQuraCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function UmmAlQuraCalendar(language) { + this.local = this.regionalOptions[language || ''] || this.regionalOptions['']; +} + +UmmAlQuraCalendar.prototype = new main.baseCalendar; + +assign(UmmAlQuraCalendar.prototype, { + /** The calendar name. + @memberof UmmAlQuraCalendar */ + name: 'UmmAlQura', + //jdEpoch: 1948440, // Julian date of start of UmmAlQura epoch: 14 March 1937 CE + //daysPerMonth: // Days per month in a common year, replaced by a method. + /** true if has a year zero, false if not. + @memberof UmmAlQuraCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof UmmAlQuraCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof UmmAlQuraCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof UmmAlQuraCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof UmmAlQuraCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Umm al-Qura', + epochs: ['BH', 'AH'], + monthNames: ['Al-Muharram', 'Safar', 'Rabi\' al-awwal', 'Rabi\' Al-Thani', 'Jumada Al-Awwal', 'Jumada Al-Thani', + 'Rajab', 'Sha\'aban', 'Ramadan', 'Shawwal', 'Dhu al-Qi\'dah', 'Dhu al-Hijjah'], + monthNamesShort: ['Muh', 'Saf', 'Rab1', 'Rab2', 'Jum1', 'Jum2', 'Raj', 'Sha\'', 'Ram', 'Shaw', 'DhuQ', 'DhuH'], + dayNames: ['Yawm al-Ahad', 'Yawm al-Ithnain', 'Yawm al-Thalāthā’', 'Yawm al-Arba‘ā’', 'Yawm al-Khamīs', 'Yawm al-Jum‘a', 'Yawm al-Sabt'], + dayNamesMin: ['Ah', 'Ith', 'Th', 'Ar', 'Kh', 'Ju', 'Sa'], + digits: null, + dateFormat: 'yyyy/mm/dd', + firstDay: 6, + isRTL: true + } + }, + + /** Determine whether this date is in a leap year. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function (year) { + var date = this._validate(year, this.minMonth, this.minDay, main.local.invalidYear); + return (this.daysInYear(date.year()) === 355); + }, + + /** Determine the week of the year for a date. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function (year, month, day) { + // Find Sunday of this week starting on Sunday + var checkDate = this.newDate(year, month, day); + checkDate.add(-checkDate.dayOfWeek(), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a year. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function (year) { + var daysCount = 0; + for (var i = 1; i <= 12; i++) { + daysCount += this.daysInMonth(year, i); + } + return daysCount; + }, + + /** Retrieve the number of days in a month. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function (year, month) { + var date = this._validate(year, month, this.minDay, main.local.invalidMonth); + var mcjdn = date.toJD() - 2400000 + 0.5; // Modified Chronological Julian Day Number (MCJDN) + // the MCJDN's of the start of the lunations in the Umm al-Qura calendar are stored in the 'ummalqura_dat' array + var index = 0; + for (var i = 0; i < ummalqura_dat.length; i++) { + if (ummalqura_dat[i] > mcjdn) { + return (ummalqura_dat[index] - ummalqura_dat[index - 1]); + } + index++; + } + return 30; // Unknown outside + }, + + /** Determine whether this date is a week day. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function (year, month, day) { + return this.dayOfWeek(year, month, day) !== 5; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof UmmAlQuraCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function (year, month, day) { + var date = this._validate(year, month, day, main.local.invalidDate); + var index = (12 * (date.year() - 1)) + date.month() - 15292; + var mcjdn = date.day() + ummalqura_dat[index - 1] - 1; + return mcjdn + 2400000 - 0.5; // Modified Chronological Julian Day Number (MCJDN) + }, + + /** Create a new date from a Julian date. + @memberof UmmAlQuraCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function (jd) { + var mcjdn = jd - 2400000 + 0.5; // Modified Chronological Julian Day Number (MCJDN) + // the MCJDN's of the start of the lunations in the Umm al-Qura calendar + // are stored in the 'ummalqura_dat' array + var index = 0; + for (var i = 0; i < ummalqura_dat.length; i++) { + if (ummalqura_dat[i] > mcjdn) break; + index++; + } + var lunation = index + 15292; //UmmAlQura Lunation Number + var ii = Math.floor((lunation - 1) / 12); + var year = ii + 1; + var month = lunation - 12 * ii; + var day = mcjdn - ummalqura_dat[index - 1] + 1; + return this.newDate(year, month, day); + }, + + /** Determine whether a date is valid for this calendar. + @memberof UmmAlQuraCalendar + @param year {number} The year to examine. + @param month {number} The month to examine. + @param day {number} The day to examine. + @return {boolean} true if a valid date, false if not. */ + isValid: function(year, month, day) { + var valid = main.baseCalendar.prototype.isValid.apply(this, arguments); + if (valid) { + year = (year.year != null ? year.year : year); + valid = (year >= 1276 && year <= 1500); + } + return valid; + }, + + /** Check that a candidate date is from the same calendar and is valid. + @memberof UmmAlQuraCalendar + @private + @param year {CDate|number} The date to validate or the year to validate. + @param month {number} The month to validate. + @param day {number} The day to validate. + @param error {string} Error message if invalid. + @throws Error if different calendars used or invalid date. */ + _validate: function(year, month, day, error) { + var date = main.baseCalendar.prototype._validate.apply(this, arguments); + if (date.year < 1276 || date.year > 1500) { + throw error.replace(/\{0\}/, this.local.name); + } + return date; + } +}); + +// UmmAlQura calendar implementation +main.calendars.ummalqura = UmmAlQuraCalendar; + +var ummalqura_dat = [ + 20, 50, 79, 109, 138, 168, 197, 227, 256, 286, 315, 345, 374, 404, 433, 463, 492, 522, 551, 581, + 611, 641, 670, 700, 729, 759, 788, 818, 847, 877, 906, 936, 965, 995, 1024, 1054, 1083, 1113, 1142, 1172, + 1201, 1231, 1260, 1290, 1320, 1350, 1379, 1409, 1438, 1468, 1497, 1527, 1556, 1586, 1615, 1645, 1674, 1704, 1733, 1763, + 1792, 1822, 1851, 1881, 1910, 1940, 1969, 1999, 2028, 2058, 2087, 2117, 2146, 2176, 2205, 2235, 2264, 2294, 2323, 2353, + 2383, 2413, 2442, 2472, 2501, 2531, 2560, 2590, 2619, 2649, 2678, 2708, 2737, 2767, 2796, 2826, 2855, 2885, 2914, 2944, + 2973, 3003, 3032, 3062, 3091, 3121, 3150, 3180, 3209, 3239, 3268, 3298, 3327, 3357, 3386, 3416, 3446, 3476, 3505, 3535, + 3564, 3594, 3623, 3653, 3682, 3712, 3741, 3771, 3800, 3830, 3859, 3889, 3918, 3948, 3977, 4007, 4036, 4066, 4095, 4125, + 4155, 4185, 4214, 4244, 4273, 4303, 4332, 4362, 4391, 4421, 4450, 4480, 4509, 4539, 4568, 4598, 4627, 4657, 4686, 4716, + 4745, 4775, 4804, 4834, 4863, 4893, 4922, 4952, 4981, 5011, 5040, 5070, 5099, 5129, 5158, 5188, 5218, 5248, 5277, 5307, + 5336, 5366, 5395, 5425, 5454, 5484, 5513, 5543, 5572, 5602, 5631, 5661, 5690, 5720, 5749, 5779, 5808, 5838, 5867, 5897, + 5926, 5956, 5985, 6015, 6044, 6074, 6103, 6133, 6162, 6192, 6221, 6251, 6281, 6311, 6340, 6370, 6399, 6429, 6458, 6488, + 6517, 6547, 6576, 6606, 6635, 6665, 6694, 6724, 6753, 6783, 6812, 6842, 6871, 6901, 6930, 6960, 6989, 7019, 7048, 7078, + 7107, 7137, 7166, 7196, 7225, 7255, 7284, 7314, 7344, 7374, 7403, 7433, 7462, 7492, 7521, 7551, 7580, 7610, 7639, 7669, + 7698, 7728, 7757, 7787, 7816, 7846, 7875, 7905, 7934, 7964, 7993, 8023, 8053, 8083, 8112, 8142, 8171, 8201, 8230, 8260, + 8289, 8319, 8348, 8378, 8407, 8437, 8466, 8496, 8525, 8555, 8584, 8614, 8643, 8673, 8702, 8732, 8761, 8791, 8821, 8850, + 8880, 8909, 8938, 8968, 8997, 9027, 9056, 9086, 9115, 9145, 9175, 9205, 9234, 9264, 9293, 9322, 9352, 9381, 9410, 9440, + 9470, 9499, 9529, 9559, 9589, 9618, 9648, 9677, 9706, 9736, 9765, 9794, 9824, 9853, 9883, 9913, 9943, 9972, 10002, 10032, + 10061, 10090, 10120, 10149, 10178, 10208, 10237, 10267, 10297, 10326, 10356, 10386, 10415, 10445, 10474, 10504, 10533, 10562, 10592, 10621, + 10651, 10680, 10710, 10740, 10770, 10799, 10829, 10858, 10888, 10917, 10947, 10976, 11005, 11035, 11064, 11094, 11124, 11153, 11183, 11213, + 11242, 11272, 11301, 11331, 11360, 11389, 11419, 11448, 11478, 11507, 11537, 11567, 11596, 11626, 11655, 11685, 11715, 11744, 11774, 11803, + 11832, 11862, 11891, 11921, 11950, 11980, 12010, 12039, 12069, 12099, 12128, 12158, 12187, 12216, 12246, 12275, 12304, 12334, 12364, 12393, + 12423, 12453, 12483, 12512, 12542, 12571, 12600, 12630, 12659, 12688, 12718, 12747, 12777, 12807, 12837, 12866, 12896, 12926, 12955, 12984, + 13014, 13043, 13072, 13102, 13131, 13161, 13191, 13220, 13250, 13280, 13310, 13339, 13368, 13398, 13427, 13456, 13486, 13515, 13545, 13574, + 13604, 13634, 13664, 13693, 13723, 13752, 13782, 13811, 13840, 13870, 13899, 13929, 13958, 13988, 14018, 14047, 14077, 14107, 14136, 14166, + 14195, 14224, 14254, 14283, 14313, 14342, 14372, 14401, 14431, 14461, 14490, 14520, 14550, 14579, 14609, 14638, 14667, 14697, 14726, 14756, + 14785, 14815, 14844, 14874, 14904, 14933, 14963, 14993, 15021, 15051, 15081, 15110, 15140, 15169, 15199, 15228, 15258, 15287, 15317, 15347, + 15377, 15406, 15436, 15465, 15494, 15524, 15553, 15582, 15612, 15641, 15671, 15701, 15731, 15760, 15790, 15820, 15849, 15878, 15908, 15937, + 15966, 15996, 16025, 16055, 16085, 16114, 16144, 16174, 16204, 16233, 16262, 16292, 16321, 16350, 16380, 16409, 16439, 16468, 16498, 16528, + 16558, 16587, 16617, 16646, 16676, 16705, 16734, 16764, 16793, 16823, 16852, 16882, 16912, 16941, 16971, 17001, 17030, 17060, 17089, 17118, + 17148, 17177, 17207, 17236, 17266, 17295, 17325, 17355, 17384, 17414, 17444, 17473, 17502, 17532, 17561, 17591, 17620, 17650, 17679, 17709, + 17738, 17768, 17798, 17827, 17857, 17886, 17916, 17945, 17975, 18004, 18034, 18063, 18093, 18122, 18152, 18181, 18211, 18241, 18270, 18300, + 18330, 18359, 18388, 18418, 18447, 18476, 18506, 18535, 18565, 18595, 18625, 18654, 18684, 18714, 18743, 18772, 18802, 18831, 18860, 18890, + 18919, 18949, 18979, 19008, 19038, 19068, 19098, 19127, 19156, 19186, 19215, 19244, 19274, 19303, 19333, 19362, 19392, 19422, 19452, 19481, + 19511, 19540, 19570, 19599, 19628, 19658, 19687, 19717, 19746, 19776, 19806, 19836, 19865, 19895, 19924, 19954, 19983, 20012, 20042, 20071, + 20101, 20130, 20160, 20190, 20219, 20249, 20279, 20308, 20338, 20367, 20396, 20426, 20455, 20485, 20514, 20544, 20573, 20603, 20633, 20662, + 20692, 20721, 20751, 20780, 20810, 20839, 20869, 20898, 20928, 20957, 20987, 21016, 21046, 21076, 21105, 21135, 21164, 21194, 21223, 21253, + 21282, 21312, 21341, 21371, 21400, 21430, 21459, 21489, 21519, 21548, 21578, 21607, 21637, 21666, 21696, 21725, 21754, 21784, 21813, 21843, + 21873, 21902, 21932, 21962, 21991, 22021, 22050, 22080, 22109, 22138, 22168, 22197, 22227, 22256, 22286, 22316, 22346, 22375, 22405, 22434, + 22464, 22493, 22522, 22552, 22581, 22611, 22640, 22670, 22700, 22730, 22759, 22789, 22818, 22848, 22877, 22906, 22936, 22965, 22994, 23024, + 23054, 23083, 23113, 23143, 23173, 23202, 23232, 23261, 23290, 23320, 23349, 23379, 23408, 23438, 23467, 23497, 23527, 23556, 23586, 23616, + 23645, 23674, 23704, 23733, 23763, 23792, 23822, 23851, 23881, 23910, 23940, 23970, 23999, 24029, 24058, 24088, 24117, 24147, 24176, 24206, + 24235, 24265, 24294, 24324, 24353, 24383, 24413, 24442, 24472, 24501, 24531, 24560, 24590, 24619, 24648, 24678, 24707, 24737, 24767, 24796, + 24826, 24856, 24885, 24915, 24944, 24974, 25003, 25032, 25062, 25091, 25121, 25150, 25180, 25210, 25240, 25269, 25299, 25328, 25358, 25387, + 25416, 25446, 25475, 25505, 25534, 25564, 25594, 25624, 25653, 25683, 25712, 25742, 25771, 25800, 25830, 25859, 25888, 25918, 25948, 25977, + 26007, 26037, 26067, 26096, 26126, 26155, 26184, 26214, 26243, 26272, 26302, 26332, 26361, 26391, 26421, 26451, 26480, 26510, 26539, 26568, + 26598, 26627, 26656, 26686, 26715, 26745, 26775, 26805, 26834, 26864, 26893, 26923, 26952, 26982, 27011, 27041, 27070, 27099, 27129, 27159, + 27188, 27218, 27248, 27277, 27307, 27336, 27366, 27395, 27425, 27454, 27484, 27513, 27542, 27572, 27602, 27631, 27661, 27691, 27720, 27750, + 27779, 27809, 27838, 27868, 27897, 27926, 27956, 27985, 28015, 28045, 28074, 28104, 28134, 28163, 28193, 28222, 28252, 28281, 28310, 28340, + 28369, 28399, 28428, 28458, 28488, 28517, 28547, 28577, + // From 1356 + 28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167, + 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, + 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, + 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, + 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, + 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, + 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711, + 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302, + 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893, + 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483, + 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, + 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, + 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, + 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, + 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, + 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027, + 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617, + 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208, + 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798, + 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, + 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, + 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, + 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, + 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, + 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342, + 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932, + 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523, + 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114, + 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, + 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, + 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, + 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, + 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, + 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657, + 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248, + 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838, + 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429, + 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, + 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, + 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, + 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, + 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, + 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973, + 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564, + 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154, + 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745, + 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, + 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, + 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, + 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, + 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, + 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288, + 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879, + 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469, + 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061, + 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, + 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, + 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, + 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, + 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, + 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603, + 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195, + 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785, + 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376, + 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, + 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, + 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, + 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, + 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, + 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919, + 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510, + 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101, + 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691, + 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, + 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, + 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, + 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, + 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, + 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235, + 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826, + 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416, + 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007, + 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, + 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, + 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, + 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, + 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, + 79990]; + + +},{"../main":135,"object-assign":71}],135:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Calendars for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var assign = _dereq_('object-assign'); + + +function Calendars() { + this.regionalOptions = []; + this.regionalOptions[''] = { + invalidCalendar: 'Calendar {0} not found', + invalidDate: 'Invalid {0} date', + invalidMonth: 'Invalid {0} month', + invalidYear: 'Invalid {0} year', + differentCalendars: 'Cannot mix {0} and {1} dates' + }; + this.local = this.regionalOptions['']; + this.calendars = {}; + this._localCals = {}; +} + +/** Create the calendars plugin. +

Provides support for various world calendars in a consistent manner.

+ @class Calendars + @example _exports.instance('julian').newDate(2014, 12, 25) */ +assign(Calendars.prototype, { + + /** Obtain a calendar implementation and localisation. + @memberof Calendars + @param [name='gregorian'] {string} The name of the calendar, e.g. 'gregorian', 'persian', 'islamic'. + @param [language=''] {string} The language code to use for localisation (default is English). + @return {Calendar} The calendar and localisation. + @throws Error if calendar not found. */ + instance: function(name, language) { + name = (name || 'gregorian').toLowerCase(); + language = language || ''; + var cal = this._localCals[name + '-' + language]; + if (!cal && this.calendars[name]) { + cal = new this.calendars[name](language); + this._localCals[name + '-' + language] = cal; + } + if (!cal) { + throw (this.local.invalidCalendar || this.regionalOptions[''].invalidCalendar). + replace(/\{0\}/, name); + } + return cal; + }, + + /** Create a new date - for today if no other parameters given. + @memberof Calendars + @param year {CDate|number} The date to copy or the year for the date. + @param [month] {number} The month for the date. + @param [day] {number} The day for the date. + @param [calendar='gregorian'] {BaseCalendar|string} The underlying calendar or the name of the calendar. + @param [language=''] {string} The language to use for localisation (default English). + @return {CDate} The new date. + @throws Error if an invalid date. */ + newDate: function(year, month, day, calendar, language) { + calendar = (year != null && year.year ? year.calendar() : (typeof calendar === 'string' ? + this.instance(calendar, language) : calendar)) || this.instance(); + return calendar.newDate(year, month, day); + }, + + /** A simple digit substitution function for localising numbers via the Calendar digits option. + @member Calendars + @param digits {string[]} The substitute digits, for 0 through 9. + @return {function} The substitution function. */ + substituteDigits: function(digits) { + return function(value) { + return (value + '').replace(/[0-9]/g, function(digit) { + return digits[digit]; + }); + } + }, + + /** Digit substitution function for localising Chinese style numbers via the Calendar digits option. + @member Calendars + @param digits {string[]} The substitute digits, for 0 through 9. + @param powers {string[]} The characters denoting powers of 10, i.e. 1, 10, 100, 1000. + @return {function} The substitution function. */ + substituteChineseDigits: function(digits, powers) { + return function(value) { + var localNumber = ''; + var power = 0; + while (value > 0) { + var units = value % 10; + localNumber = (units === 0 ? '' : digits[units] + powers[power]) + localNumber; + power++; + value = Math.floor(value / 10); + } + if (localNumber.indexOf(digits[1] + powers[1]) === 0) { + localNumber = localNumber.substr(1); + } + return localNumber || digits[0]; + } + } +}); + +/** Generic date, based on a particular calendar. + @class CDate + @param calendar {BaseCalendar} The underlying calendar implementation. + @param year {number} The year for this date. + @param month {number} The month for this date. + @param day {number} The day for this date. + @return {CDate} The date object. + @throws Error if an invalid date. */ +function CDate(calendar, year, month, day) { + this._calendar = calendar; + this._year = year; + this._month = month; + this._day = day; + if (this._calendar._validateLevel === 0 && + !this._calendar.isValid(this._year, this._month, this._day)) { + throw (_exports.local.invalidDate || _exports.regionalOptions[''].invalidDate). + replace(/\{0\}/, this._calendar.local.name); + } +} + +/** Pad a numeric value with leading zeroes. + @private + @param value {number} The number to format. + @param length {number} The minimum length. + @return {string} The formatted number. */ +function pad(value, length) { + value = '' + value; + return '000000'.substring(0, length - value.length) + value; +} + +assign(CDate.prototype, { + + /** Create a new date. + @memberof CDate + @param [year] {CDate|number} The date to copy or the year for the date (default this date). + @param [month] {number} The month for the date. + @param [day] {number} The day for the date. + @return {CDate} The new date. + @throws Error if an invalid date. */ + newDate: function(year, month, day) { + return this._calendar.newDate((year == null ? this : year), month, day); + }, + + /** Set or retrieve the year for this date. + @memberof CDate + @param [year] {number} The year for the date. + @return {number|CDate} The date's year (if no parameter) or the updated date. + @throws Error if an invalid date. */ + year: function(year) { + return (arguments.length === 0 ? this._year : this.set(year, 'y')); + }, + + /** Set or retrieve the month for this date. + @memberof CDate + @param [month] {number} The month for the date. + @return {number|CDate} The date's month (if no parameter) or the updated date. + @throws Error if an invalid date. */ + month: function(month) { + return (arguments.length === 0 ? this._month : this.set(month, 'm')); + }, + + /** Set or retrieve the day for this date. + @memberof CDate + @param [day] {number} The day for the date. + @return {number|CData} The date's day (if no parameter) or the updated date. + @throws Error if an invalid date. */ + day: function(day) { + return (arguments.length === 0 ? this._day : this.set(day, 'd')); + }, + + /** Set new values for this date. + @memberof CDate + @param year {number} The year for the date. + @param month {number} The month for the date. + @param day {number} The day for the date. + @return {CDate} The updated date. + @throws Error if an invalid date. */ + date: function(year, month, day) { + if (!this._calendar.isValid(year, month, day)) { + throw (_exports.local.invalidDate || _exports.regionalOptions[''].invalidDate). + replace(/\{0\}/, this._calendar.local.name); + } + this._year = year; + this._month = month; + this._day = day; + return this; + }, + + /** Determine whether this date is in a leap year. + @memberof CDate + @return {boolean} true if this is a leap year, false if not. */ + leapYear: function() { + return this._calendar.leapYear(this); + }, + + /** Retrieve the epoch designator for this date, e.g. BCE or CE. + @memberof CDate + @return {string} The current epoch. */ + epoch: function() { + return this._calendar.epoch(this); + }, + + /** Format the year, if not a simple sequential number. + @memberof CDate + @return {string} The formatted year. */ + formatYear: function() { + return this._calendar.formatYear(this); + }, + + /** Retrieve the month of the year for this date, + i.e. the month's position within a numbered year. + @memberof CDate + @return {number} The month of the year: minMonth to months per year. */ + monthOfYear: function() { + return this._calendar.monthOfYear(this); + }, + + /** Retrieve the week of the year for this date. + @memberof CDate + @return {number} The week of the year: 1 to weeks per year. */ + weekOfYear: function() { + return this._calendar.weekOfYear(this); + }, + + /** Retrieve the number of days in the year for this date. + @memberof CDate + @return {number} The number of days in this year. */ + daysInYear: function() { + return this._calendar.daysInYear(this); + }, + + /** Retrieve the day of the year for this date. + @memberof CDate + @return {number} The day of the year: 1 to days per year. */ + dayOfYear: function() { + return this._calendar.dayOfYear(this); + }, + + /** Retrieve the number of days in the month for this date. + @memberof CDate + @return {number} The number of days. */ + daysInMonth: function() { + return this._calendar.daysInMonth(this); + }, + + /** Retrieve the day of the week for this date. + @memberof CDate + @return {number} The day of the week: 0 to number of days - 1. */ + dayOfWeek: function() { + return this._calendar.dayOfWeek(this); + }, + + /** Determine whether this date is a week day. + @memberof CDate + @return {boolean} true if a week day, false if not. */ + weekDay: function() { + return this._calendar.weekDay(this); + }, + + /** Retrieve additional information about this date. + @memberof CDate + @return {object} Additional information - contents depends on calendar. */ + extraInfo: function() { + return this._calendar.extraInfo(this); + }, + + /** Add period(s) to a date. + @memberof CDate + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. */ + add: function(offset, period) { + return this._calendar.add(this, offset, period); + }, + + /** Set a portion of the date. + @memberof CDate + @param value {number} The new value for the period. + @param period {string} One of 'y' for year, 'm' for month, 'd' for day. + @return {CDate} The updated date. + @throws Error if not a valid date. */ + set: function(value, period) { + return this._calendar.set(this, value, period); + }, + + /** Compare this date to another date. + @memberof CDate + @param date {CDate} The other date. + @return {number} -1 if this date is before the other date, + 0 if they are equal, or +1 if this date is after the other date. */ + compareTo: function(date) { + if (this._calendar.name !== date._calendar.name) { + throw (_exports.local.differentCalendars || _exports.regionalOptions[''].differentCalendars). + replace(/\{0\}/, this._calendar.local.name).replace(/\{1\}/, date._calendar.local.name); + } + var c = (this._year !== date._year ? this._year - date._year : + this._month !== date._month ? this.monthOfYear() - date.monthOfYear() : + this._day - date._day); + return (c === 0 ? 0 : (c < 0 ? -1 : +1)); + }, + + /** Retrieve the calendar backing this date. + @memberof CDate + @return {BaseCalendar} The calendar implementation. */ + calendar: function() { + return this._calendar; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof CDate + @return {number} The equivalent Julian date. */ + toJD: function() { + return this._calendar.toJD(this); + }, + + /** Create a new date from a Julian date. + @memberof CDate + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + return this._calendar.fromJD(jd); + }, + + /** Convert this date to a standard (Gregorian) JavaScript Date. + @memberof CDate + @return {Date} The equivalent JavaScript date. */ + toJSDate: function() { + return this._calendar.toJSDate(this); + }, + + /** Create a new date from a standard (Gregorian) JavaScript Date. + @memberof CDate + @param jsd {Date} The JavaScript date to convert. + @return {CDate} The equivalent date. */ + fromJSDate: function(jsd) { + return this._calendar.fromJSDate(jsd); + }, + + /** Convert to a string for display. + @memberof CDate + @return {string} This date as a string. */ + toString: function() { + return (this.year() < 0 ? '-' : '') + pad(Math.abs(this.year()), 4) + + '-' + pad(this.month(), 2) + '-' + pad(this.day(), 2); + } +}); + +/** Basic functionality for all calendars. + Other calendars should extend this: +
OtherCalendar.prototype = new BaseCalendar;
+ @class BaseCalendar */ +function BaseCalendar() { + this.shortYearCutoff = '+10'; +} + +assign(BaseCalendar.prototype, { + _validateLevel: 0, // "Stack" to turn validation on/off + + /** Create a new date within this calendar - today if no parameters given. + @memberof BaseCalendar + @param year {CDate|number} The date to duplicate or the year for the date. + @param [month] {number} The month for the date. + @param [day] {number} The day for the date. + @return {CDate} The new date. + @throws Error if not a valid date or a different calendar used. */ + newDate: function(year, month, day) { + if (year == null) { + return this.today(); + } + if (year.year) { + this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + day = year.day(); + month = year.month(); + year = year.year(); + } + return new CDate(this, year, month, day); + }, + + /** Create a new date for today. + @memberof BaseCalendar + @return {CDate} Today's date. */ + today: function() { + return this.fromJSDate(new Date()); + }, + + /** Retrieve the epoch designator for this date. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {string} The current epoch. + @throws Error if an invalid year or a different calendar used. */ + epoch: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return (date.year() < 0 ? this.local.epochs[0] : this.local.epochs[1]); + }, + + /** Format the year, if not a simple sequential number + @memberof BaseCalendar + @param year {CDate|number} The date to format or the year to format. + @return {string} The formatted year. + @throws Error if an invalid year or a different calendar used. */ + formatYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return (date.year() < 0 ? '-' : '') + pad(Math.abs(date.year()), 4) + }, + + /** Retrieve the number of months in a year. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of months. + @throws Error if an invalid year or a different calendar used. */ + monthsInYear: function(year) { + this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return 12; + }, + + /** Calculate the month's ordinal position within the year - + for those calendars that don't start at month 1! + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param month {number} The month to examine. + @return {number} The ordinal position, starting from minMonth. + @throws Error if an invalid year/month or a different calendar used. */ + monthOfYear: function(year, month) { + var date = this._validate(year, month, this.minDay, + _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth); + return (date.month() + this.monthsInYear(date) - this.firstMonth) % + this.monthsInYear(date) + this.minMonth; + }, + + /** Calculate actual month from ordinal position, starting from minMonth. + @memberof BaseCalendar + @param year {number} The year to examine. + @param ord {number} The month's ordinal position. + @return {number} The month's number. + @throws Error if an invalid year/month. */ + fromMonthOfYear: function(year, ord) { + var m = (ord + this.firstMonth - 2 * this.minMonth) % + this.monthsInYear(year) + this.minMonth; + this._validate(year, m, this.minDay, + _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth); + return m; + }, + + /** Retrieve the number of days in a year. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {number} The number of days. + @throws Error if an invalid year or a different calendar used. */ + daysInYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + return (this.leapYear(date) ? 366 : 365); + }, + + /** Retrieve the day of the year for a date. + @memberof BaseCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The day of the year. + @throws Error if an invalid date or a different calendar used. */ + dayOfYear: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return date.toJD() - this.newDate(date.year(), + this.fromMonthOfYear(date.year(), this.minMonth), this.minDay).toJD() + 1; + }, + + /** Retrieve the number of days in a week. + @memberof BaseCalendar + @return {number} The number of days. */ + daysInWeek: function() { + return 7; + }, + + /** Retrieve the day of the week for a date. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The day of the week: 0 to number of days - 1. + @throws Error if an invalid date or a different calendar used. */ + dayOfWeek: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return (Math.floor(this.toJD(date)) + 2) % this.daysInWeek(); + }, + + /** Retrieve additional information about a date. + @memberof BaseCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {object} Additional information - contents depends on calendar. + @throws Error if an invalid date or a different calendar used. */ + extraInfo: function(year, month, day) { + this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return {}; + }, + + /** Add period(s) to a date. + Cater for no year zero. + @memberof BaseCalendar + @param date {CDate} The starting date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. + @throws Error if a different calendar used. */ + add: function(date, offset, period) { + this._validate(date, this.minMonth, this.minDay, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return this._correctAdd(date, this._add(date, offset, period), offset, period); + }, + + /** Add period(s) to a date. + @memberof BaseCalendar + @private + @param date {CDate} The starting date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. */ + _add: function(date, offset, period) { + this._validateLevel++; + if (period === 'd' || period === 'w') { + var jd = date.toJD() + offset * (period === 'w' ? this.daysInWeek() : 1); + var d = date.calendar().fromJD(jd); + this._validateLevel--; + return [d.year(), d.month(), d.day()]; + } + try { + var y = date.year() + (period === 'y' ? offset : 0); + var m = date.monthOfYear() + (period === 'm' ? offset : 0); + var d = date.day();// + (period === 'd' ? offset : 0) + + //(period === 'w' ? offset * this.daysInWeek() : 0); + var resyncYearMonth = function(calendar) { + while (m < calendar.minMonth) { + y--; + m += calendar.monthsInYear(y); + } + var yearMonths = calendar.monthsInYear(y); + while (m > yearMonths - 1 + calendar.minMonth) { + y++; + m -= yearMonths; + yearMonths = calendar.monthsInYear(y); + } + }; + if (period === 'y') { + if (date.month() !== this.fromMonthOfYear(y, m)) { // Hebrew + m = this.newDate(y, date.month(), this.minDay).monthOfYear(); + } + m = Math.min(m, this.monthsInYear(y)); + d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m))); + } + else if (period === 'm') { + resyncYearMonth(this); + d = Math.min(d, this.daysInMonth(y, this.fromMonthOfYear(y, m))); + } + var ymd = [y, this.fromMonthOfYear(y, m), d]; + this._validateLevel--; + return ymd; + } + catch (e) { + this._validateLevel--; + throw e; + } + }, + + /** Correct a candidate date after adding period(s) to a date. + Handle no year zero if necessary. + @memberof BaseCalendar + @private + @param date {CDate} The starting date. + @param ymd {number[]} The added date. + @param offset {number} The number of periods to adjust by. + @param period {string} One of 'y' for year, 'm' for month, 'w' for week, 'd' for day. + @return {CDate} The updated date. */ + _correctAdd: function(date, ymd, offset, period) { + if (!this.hasYearZero && (period === 'y' || period === 'm')) { + if (ymd[0] === 0 || // In year zero + (date.year() > 0) !== (ymd[0] > 0)) { // Crossed year zero + var adj = {y: [1, 1, 'y'], m: [1, this.monthsInYear(-1), 'm'], + w: [this.daysInWeek(), this.daysInYear(-1), 'd'], + d: [1, this.daysInYear(-1), 'd']}[period]; + var dir = (offset < 0 ? -1 : +1); + ymd = this._add(date, offset * adj[0] + dir * adj[1], adj[2]); + } + } + return date.date(ymd[0], ymd[1], ymd[2]); + }, + + /** Set a portion of the date. + @memberof BaseCalendar + @param date {CDate} The starting date. + @param value {number} The new value for the period. + @param period {string} One of 'y' for year, 'm' for month, 'd' for day. + @return {CDate} The updated date. + @throws Error if an invalid date or a different calendar used. */ + set: function(date, value, period) { + this._validate(date, this.minMonth, this.minDay, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + var y = (period === 'y' ? value : date.year()); + var m = (period === 'm' ? value : date.month()); + var d = (period === 'd' ? value : date.day()); + if (period === 'y' || period === 'm') { + d = Math.min(d, this.daysInMonth(y, m)); + } + return date.date(y, m, d); + }, + + /** Determine whether a date is valid for this calendar. + @memberof BaseCalendar + @param year {number} The year to examine. + @param month {number} The month to examine. + @param day {number} The day to examine. + @return {boolean} true if a valid date, false if not. */ + isValid: function(year, month, day) { + this._validateLevel++; + var valid = (this.hasYearZero || year !== 0); + if (valid) { + var date = this.newDate(year, month, this.minDay); + valid = (month >= this.minMonth && month - this.minMonth < this.monthsInYear(date)) && + (day >= this.minDay && day - this.minDay < this.daysInMonth(date)); + } + this._validateLevel--; + return valid; + }, + + /** Convert the date to a standard (Gregorian) JavaScript Date. + @memberof BaseCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {Date} The equivalent JavaScript date. + @throws Error if an invalid date or a different calendar used. */ + toJSDate: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + return _exports.instance().fromJD(this.toJD(date)).toJSDate(); + }, + + /** Convert the date from a standard (Gregorian) JavaScript Date. + @memberof BaseCalendar + @param jsd {Date} The JavaScript date. + @return {CDate} The equivalent calendar date. */ + fromJSDate: function(jsd) { + return this.fromJD(_exports.instance().fromJSDate(jsd).toJD()); + }, + + /** Check that a candidate date is from the same calendar and is valid. + @memberof BaseCalendar + @private + @param year {CDate|number} The date to validate or the year to validate. + @param [month] {number} The month to validate. + @param [day] {number} The day to validate. + @param error {string} Rrror message if invalid. + @throws Error if different calendars used or invalid date. */ + _validate: function(year, month, day, error) { + if (year.year) { + if (this._validateLevel === 0 && this.name !== year.calendar().name) { + throw (_exports.local.differentCalendars || _exports.regionalOptions[''].differentCalendars). + replace(/\{0\}/, this.local.name).replace(/\{1\}/, year.calendar().local.name); + } + return year; + } + try { + this._validateLevel++; + if (this._validateLevel === 1 && !this.isValid(year, month, day)) { + throw error.replace(/\{0\}/, this.local.name); + } + var date = this.newDate(year, month, day); + this._validateLevel--; + return date; + } + catch (e) { + this._validateLevel--; + throw e; + } + } +}); + +/** Implementation of the Proleptic Gregorian Calendar. + See http://en.wikipedia.org/wiki/Gregorian_calendar + and http://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar. + @class GregorianCalendar + @augments BaseCalendar + @param [language=''] {string} The language code (default English) for localisation. */ +function GregorianCalendar(language) { + this.local = this.regionalOptions[language] || this.regionalOptions['']; +} + +GregorianCalendar.prototype = new BaseCalendar; + +assign(GregorianCalendar.prototype, { + /** The calendar name. + @memberof GregorianCalendar */ + name: 'Gregorian', + /** Julian date of start of Gregorian epoch: 1 January 0001 CE. + @memberof GregorianCalendar */ + jdEpoch: 1721425.5, + /** Days per month in a common year. + @memberof GregorianCalendar */ + daysPerMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** true if has a year zero, false if not. + @memberof GregorianCalendar */ + hasYearZero: false, + /** The minimum month number. + @memberof GregorianCalendar */ + minMonth: 1, + /** The first month in the year. + @memberof GregorianCalendar */ + firstMonth: 1, + /** The minimum day number. + @memberof GregorianCalendar */ + minDay: 1, + + /** Localisations for the plugin. + Entries are objects indexed by the language code ('' being the default US/English). + Each object has the following attributes. + @memberof GregorianCalendar + @property name {string} The calendar name. + @property epochs {string[]} The epoch names. + @property monthNames {string[]} The long names of the months of the year. + @property monthNamesShort {string[]} The short names of the months of the year. + @property dayNames {string[]} The long names of the days of the week. + @property dayNamesShort {string[]} The short names of the days of the week. + @property dayNamesMin {string[]} The minimal names of the days of the week. + @property dateFormat {string} The date format for this calendar. + See the options on formatDate for details. + @property firstDay {number} The number of the first day of the week, starting at 0. + @property isRTL {number} true if this localisation reads right-to-left. */ + regionalOptions: { // Localisations + '': { + name: 'Gregorian', + epochs: ['BCE', 'CE'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + digits: null, + dateFormat: 'mm/dd/yyyy', + firstDay: 0, + isRTL: false + } + }, + + /** Determine whether this date is in a leap year. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @return {boolean} true if this is a leap year, false if not. + @throws Error if an invalid year or a different calendar used. */ + leapYear: function(year) { + var date = this._validate(year, this.minMonth, this.minDay, + _exports.local.invalidYear || _exports.regionalOptions[''].invalidYear); + var year = date.year() + (date.year() < 0 ? 1 : 0); // No year zero + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + }, + + /** Determine the week of the year for a date - ISO 8601. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {number} The week of the year, starting from 1. + @throws Error if an invalid date or a different calendar used. */ + weekOfYear: function(year, month, day) { + // Find Thursday of this week starting on Monday + var checkDate = this.newDate(year, month, day); + checkDate.add(4 - (checkDate.dayOfWeek() || 7), 'd'); + return Math.floor((checkDate.dayOfYear() - 1) / 7) + 1; + }, + + /** Retrieve the number of days in a month. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year of the month. + @param [month] {number} The month. + @return {number} The number of days in this month. + @throws Error if an invalid month/year or a different calendar used. */ + daysInMonth: function(year, month) { + var date = this._validate(year, month, this.minDay, + _exports.local.invalidMonth || _exports.regionalOptions[''].invalidMonth); + return this.daysPerMonth[date.month() - 1] + + (date.month() === 2 && this.leapYear(date.year()) ? 1 : 0); + }, + + /** Determine whether this date is a week day. + @memberof GregorianCalendar + @param year {CDate|number} The date to examine or the year to examine. + @param [month] {number} The month to examine. + @param [day] {number} The day to examine. + @return {boolean} true if a week day, false if not. + @throws Error if an invalid date or a different calendar used. */ + weekDay: function(year, month, day) { + return (this.dayOfWeek(year, month, day) || 7) < 6; + }, + + /** Retrieve the Julian date equivalent for this date, + i.e. days since January 1, 4713 BCE Greenwich noon. + @memberof GregorianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {number} The equivalent Julian date. + @throws Error if an invalid date or a different calendar used. */ + toJD: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + year = date.year(); + month = date.month(); + day = date.day(); + if (year < 0) { year++; } // No year zero + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + if (month < 3) { + month += 12; + year--; + } + var a = Math.floor(year / 100); + var b = 2 - a + Math.floor(a / 4); + return Math.floor(365.25 * (year + 4716)) + + Math.floor(30.6001 * (month + 1)) + day + b - 1524.5; + }, + + /** Create a new date from a Julian date. + @memberof GregorianCalendar + @param jd {number} The Julian date to convert. + @return {CDate} The equivalent date. */ + fromJD: function(jd) { + // Jean Meeus algorithm, "Astronomical Algorithms", 1991 + var z = Math.floor(jd + 0.5); + var a = Math.floor((z - 1867216.25) / 36524.25); + a = z + 1 + a - Math.floor(a / 4); + var b = a + 1524; + var c = Math.floor((b - 122.1) / 365.25); + var d = Math.floor(365.25 * c); + var e = Math.floor((b - d) / 30.6001); + var day = b - d - Math.floor(e * 30.6001); + var month = e - (e > 13.5 ? 13 : 1); + var year = c - (month > 2.5 ? 4716 : 4715); + if (year <= 0) { year--; } // No year zero + return this.newDate(year, month, day); + }, + + /** Convert this date to a standard (Gregorian) JavaScript Date. + @memberof GregorianCalendar + @param year {CDate|number} The date to convert or the year to convert. + @param [month] {number} The month to convert. + @param [day] {number} The day to convert. + @return {Date} The equivalent JavaScript date. + @throws Error if an invalid date or a different calendar used. */ + toJSDate: function(year, month, day) { + var date = this._validate(year, month, day, + _exports.local.invalidDate || _exports.regionalOptions[''].invalidDate); + var jsd = new Date(date.year(), date.month() - 1, date.day()); + jsd.setHours(0); + jsd.setMinutes(0); + jsd.setSeconds(0); + jsd.setMilliseconds(0); + // Hours may be non-zero on daylight saving cut-over: + // > 12 when midnight changeover, but then cannot generate + // midnight datetime, so jump to 1AM, otherwise reset. + jsd.setHours(jsd.getHours() > 12 ? jsd.getHours() + 2 : 0); + return jsd; + }, + + /** Create a new date from a standard (Gregorian) JavaScript Date. + @memberof GregorianCalendar + @param jsd {Date} The JavaScript date to convert. + @return {CDate} The equivalent date. */ + fromJSDate: function(jsd) { + return this.newDate(jsd.getFullYear(), jsd.getMonth() + 1, jsd.getDate()); + } +}); + +// Singleton manager +var _exports = module.exports = new Calendars(); + +// Date template +_exports.cdate = CDate; + +// Base calendar template +_exports.baseCalendar = BaseCalendar; + +// Gregorian calendar implementation +_exports.calendars.gregorian = GregorianCalendar; + + +},{"object-assign":71}],136:[function(_dereq_,module,exports){ +/* + * World Calendars + * https://github.com/alexcjohnson/world-calendars + * + * Batch-converted from kbwood/calendars + * Many thanks to Keith Wood and all of the contributors to the original project! + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* http://keith-wood.name/calendars.html + Calendars extras for jQuery v2.0.2. + Written by Keith Wood (wood.keith{at}optusnet.com.au) August 2009. + Available under the MIT (http://keith-wood.name/licence.html) license. + Please attribute the author if you use it. */ + +var assign = _dereq_('object-assign'); +var main = _dereq_('./main'); + + +assign(main.regionalOptions[''], { + invalidArguments: 'Invalid arguments', + invalidFormat: 'Cannot format a date from another calendar', + missingNumberAt: 'Missing number at position {0}', + unknownNameAt: 'Unknown name at position {0}', + unexpectedLiteralAt: 'Unexpected literal at position {0}', + unexpectedText: 'Additional text found at end' +}); +main.local = main.regionalOptions['']; + +assign(main.cdate.prototype, { + + /** Format this date. + Found in the jquery.calendars.plus.js module. + @memberof CDate + @param [format] {string} The date format to use (see formatDate). + @param [settings] {object} Options for the formatDate function. + @return {string} The formatted date. */ + formatDate: function(format, settings) { + if (typeof format !== 'string') { + settings = format; + format = ''; + } + return this._calendar.formatDate(format || '', this, settings); + } +}); + +assign(main.baseCalendar.prototype, { + + UNIX_EPOCH: main.instance().newDate(1970, 1, 1).toJD(), + SECS_PER_DAY: 24 * 60 * 60, + TICKS_EPOCH: main.instance().jdEpoch, // 1 January 0001 CE + TICKS_PER_DAY: 24 * 60 * 60 * 10000000, + + /** Date form for ATOM (RFC 3339/ISO 8601). + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + ATOM: 'yyyy-mm-dd', + /** Date form for cookies. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + COOKIE: 'D, dd M yyyy', + /** Date form for full date. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + FULL: 'DD, MM d, yyyy', + /** Date form for ISO 8601. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + ISO_8601: 'yyyy-mm-dd', + /** Date form for Julian date. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + JULIAN: 'J', + /** Date form for RFC 822. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_822: 'D, d M yy', + /** Date form for RFC 850. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_850: 'DD, dd-M-yy', + /** Date form for RFC 1036. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_1036: 'D, d M yy', + /** Date form for RFC 1123. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_1123: 'D, d M yyyy', + /** Date form for RFC 2822. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RFC_2822: 'D, d M yyyy', + /** Date form for RSS (RFC 822). + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + RSS: 'D, d M yy', + /** Date form for Windows ticks. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + TICKS: '!', + /** Date form for Unix timestamp. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + TIMESTAMP: '@', + /** Date form for W3c (ISO 8601). + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar */ + W3C: 'yyyy-mm-dd', + + /** Format a date object into a string value. + The format can be combinations of the following: +
    +
  • d - day of month (no leading zero)
  • +
  • dd - day of month (two digit)
  • +
  • o - day of year (no leading zeros)
  • +
  • oo - day of year (three digit)
  • +
  • D - day name short
  • +
  • DD - day name long
  • +
  • w - week of year (no leading zero)
  • +
  • ww - week of year (two digit)
  • +
  • m - month of year (no leading zero)
  • +
  • mm - month of year (two digit)
  • +
  • M - month name short
  • +
  • MM - month name long
  • +
  • yy - year (two digit)
  • +
  • yyyy - year (four digit)
  • +
  • YYYY - formatted year
  • +
  • J - Julian date (days since January 1, 4713 BCE Greenwich noon)
  • +
  • @ - Unix timestamp (s since 01/01/1970)
  • +
  • ! - Windows ticks (100ns since 01/01/0001)
  • +
  • '...' - literal text
  • +
  • '' - single quote
  • +
+ Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar + @param [format] {string} The desired format of the date (defaults to calendar format). + @param date {CDate} The date value to format. + @param [settings] {object} Addition options, whose attributes include: + @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday. + @property [dayNames] {string[]} Names of the days from Sunday. + @property [monthNamesShort] {string[]} Abbreviated names of the months. + @property [monthNames] {string[]} Names of the months. + @property [calculateWeek] {CalendarsPickerCalculateWeek} Function that determines week of the year. + @property [localNumbers=false] {boolean} true to localise numbers (if available), + false to use normal Arabic numerals. + @return {string} The date in the above format. + @throws Errors if the date is from a different calendar. */ + formatDate: function(format, date, settings) { + if (typeof format !== 'string') { + settings = date; + date = format; + format = ''; + } + if (!date) { + return ''; + } + if (date.calendar() !== this) { + throw main.local.invalidFormat || main.regionalOptions[''].invalidFormat; + } + format = format || this.local.dateFormat; + settings = settings || {}; + var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort; + var dayNames = settings.dayNames || this.local.dayNames; + var monthNumbers = settings.monthNumbers || this.local.monthNumbers; + var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort; + var monthNames = settings.monthNames || this.local.monthNames; + var calculateWeek = settings.calculateWeek || this.local.calculateWeek; + // Check whether a format character is doubled + var doubled = function(match, step) { + var matches = 1; + while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) { + matches++; + } + iFormat += matches - 1; + return Math.floor(matches / (step || 1)) > 1; + }; + // Format a number, with leading zeroes if necessary + var formatNumber = function(match, value, len, step) { + var num = '' + value; + if (doubled(match, step)) { + while (num.length < len) { + num = '0' + num; + } + } + return num; + }; + // Format a name, short or long as requested + var formatName = function(match, value, shortNames, longNames) { + return (doubled(match) ? longNames[value] : shortNames[value]); + }; + // Format month number + // (e.g. Chinese calendar needs to account for intercalary months) + var calendar = this; + var formatMonth = function(date) { + return (typeof monthNumbers === 'function') ? + monthNumbers.call(calendar, date, doubled('m')) : + localiseNumbers(formatNumber('m', date.month(), 2)); + }; + // Format a month name, short or long as requested + var formatMonthName = function(date, useLongName) { + if (useLongName) { + return (typeof monthNames === 'function') ? + monthNames.call(calendar, date) : + monthNames[date.month() - calendar.minMonth]; + } else { + return (typeof monthNamesShort === 'function') ? + monthNamesShort.call(calendar, date) : + monthNamesShort[date.month() - calendar.minMonth]; + } + }; + // Localise numbers if requested and available + var digits = this.local.digits; + var localiseNumbers = function(value) { + return (settings.localNumbers && digits ? digits(value) : value); + }; + var output = ''; + var literal = false; + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !doubled("'")) { + literal = false; + } + else { + output += format.charAt(iFormat); + } + } + else { + switch (format.charAt(iFormat)) { + case 'd': output += localiseNumbers(formatNumber('d', date.day(), 2)); break; + case 'D': output += formatName('D', date.dayOfWeek(), + dayNamesShort, dayNames); break; + case 'o': output += formatNumber('o', date.dayOfYear(), 3); break; + case 'w': output += formatNumber('w', date.weekOfYear(), 2); break; + case 'm': output += formatMonth(date); break; + case 'M': output += formatMonthName(date, doubled('M')); break; + case 'y': + output += (doubled('y', 2) ? date.year() : + (date.year() % 100 < 10 ? '0' : '') + date.year() % 100); + break; + case 'Y': + doubled('Y', 2); + output += date.formatYear(); + break; + case 'J': output += date.toJD(); break; + case '@': output += (date.toJD() - this.UNIX_EPOCH) * this.SECS_PER_DAY; break; + case '!': output += (date.toJD() - this.TICKS_EPOCH) * this.TICKS_PER_DAY; break; + case "'": + if (doubled("'")) { + output += "'"; + } + else { + literal = true; + } + break; + default: + output += format.charAt(iFormat); + } + } + } + return output; + }, + + /** Parse a string value into a date object. + See formatDate for the possible formats, plus: +
    +
  • * - ignore rest of string
  • +
+ Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar + @param format {string} The expected format of the date ('' for default calendar format). + @param value {string} The date in the above format. + @param [settings] {object} Additional options whose attributes include: + @property [shortYearCutoff] {number} The cutoff year for determining the century. + @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday. + @property [dayNames] {string[]} Names of the days from Sunday. + @property [monthNamesShort] {string[]} Abbreviated names of the months. + @property [monthNames] {string[]} Names of the months. + @return {CDate} The extracted date value or null if value is blank. + @throws Errors if the format and/or value are missing, + if the value doesn't match the format, or if the date is invalid. */ + parseDate: function(format, value, settings) { + if (value == null) { + throw main.local.invalidArguments || main.regionalOptions[''].invalidArguments; + } + value = (typeof value === 'object' ? value.toString() : value + ''); + if (value === '') { + return null; + } + format = format || this.local.dateFormat; + settings = settings || {}; + var shortYearCutoff = settings.shortYearCutoff || this.shortYearCutoff; + shortYearCutoff = (typeof shortYearCutoff !== 'string' ? shortYearCutoff : + this.today().year() % 100 + parseInt(shortYearCutoff, 10)); + var dayNamesShort = settings.dayNamesShort || this.local.dayNamesShort; + var dayNames = settings.dayNames || this.local.dayNames; + var parseMonth = settings.parseMonth || this.local.parseMonth; + var monthNumbers = settings.monthNumbers || this.local.monthNumbers; + var monthNamesShort = settings.monthNamesShort || this.local.monthNamesShort; + var monthNames = settings.monthNames || this.local.monthNames; + var jd = -1; + var year = -1; + var month = -1; + var day = -1; + var doy = -1; + var shortYear = false; + var literal = false; + // Check whether a format character is doubled + var doubled = function(match, step) { + var matches = 1; + while (iFormat + matches < format.length && format.charAt(iFormat + matches) === match) { + matches++; + } + iFormat += matches - 1; + return Math.floor(matches / (step || 1)) > 1; + }; + // Extract a number from the string value + var getNumber = function(match, step) { + var isDoubled = doubled(match, step); + var size = [2, 3, isDoubled ? 4 : 2, isDoubled ? 4 : 2, 10, 11, 20]['oyYJ@!'.indexOf(match) + 1]; + var digits = new RegExp('^-?\\d{1,' + size + '}'); + var num = value.substring(iValue).match(digits); + if (!num) { + throw (main.local.missingNumberAt || main.regionalOptions[''].missingNumberAt). + replace(/\{0\}/, iValue); + } + iValue += num[0].length; + return parseInt(num[0], 10); + }; + // Extract a month number from the string value + var calendar = this; + var getMonthNumber = function() { + if (typeof monthNumbers === 'function') { + doubled('m'); // update iFormat + var month = monthNumbers.call(calendar, value.substring(iValue)); + iValue += month.length; + return month; + } + + return getNumber('m'); + }; + // Extract a name from the string value and convert to an index + var getName = function(match, shortNames, longNames, step) { + var names = (doubled(match, step) ? longNames : shortNames); + for (var i = 0; i < names.length; i++) { + if (value.substr(iValue, names[i].length).toLowerCase() === names[i].toLowerCase()) { + iValue += names[i].length; + return i + calendar.minMonth; + } + } + throw (main.local.unknownNameAt || main.regionalOptions[''].unknownNameAt). + replace(/\{0\}/, iValue); + }; + // Extract a month number from the string value + var getMonthName = function() { + if (typeof monthNames === 'function') { + var month = doubled('M') ? + monthNames.call(calendar, value.substring(iValue)) : + monthNamesShort.call(calendar, value.substring(iValue)); + iValue += month.length; + return month; + } + + return getName('M', monthNamesShort, monthNames); + }; + // Confirm that a literal character matches the string value + var checkLiteral = function() { + if (value.charAt(iValue) !== format.charAt(iFormat)) { + throw (main.local.unexpectedLiteralAt || + main.regionalOptions[''].unexpectedLiteralAt).replace(/\{0\}/, iValue); + } + iValue++; + }; + var iValue = 0; + for (var iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !doubled("'")) { + literal = false; + } + else { + checkLiteral(); + } + } + else { + switch (format.charAt(iFormat)) { + case 'd': day = getNumber('d'); break; + case 'D': getName('D', dayNamesShort, dayNames); break; + case 'o': doy = getNumber('o'); break; + case 'w': getNumber('w'); break; + case 'm': month = getMonthNumber(); break; + case 'M': month = getMonthName(); break; + case 'y': + var iSave = iFormat; + shortYear = !doubled('y', 2); + iFormat = iSave; + year = getNumber('y', 2); + break; + case 'Y': year = getNumber('Y', 2); break; + case 'J': + jd = getNumber('J') + 0.5; + if (value.charAt(iValue) === '.') { + iValue++; + getNumber('J'); + } + break; + case '@': jd = getNumber('@') / this.SECS_PER_DAY + this.UNIX_EPOCH; break; + case '!': jd = getNumber('!') / this.TICKS_PER_DAY + this.TICKS_EPOCH; break; + case '*': iValue = value.length; break; + case "'": + if (doubled("'")) { + checkLiteral(); + } + else { + literal = true; + } + break; + default: checkLiteral(); + } + } + } + if (iValue < value.length) { + throw main.local.unexpectedText || main.regionalOptions[''].unexpectedText; + } + if (year === -1) { + year = this.today().year(); + } + else if (year < 100 && shortYear) { + year += (shortYearCutoff === -1 ? 1900 : this.today().year() - + this.today().year() % 100 - (year <= shortYearCutoff ? 0 : 100)); + } + if (typeof month === 'string') { + month = parseMonth.call(this, year, month); + } + if (doy > -1) { + month = 1; + day = doy; + for (var dim = this.daysInMonth(year, month); day > dim; dim = this.daysInMonth(year, month)) { + month++; + day -= dim; + } + } + return (jd > -1 ? this.fromJD(jd) : this.newDate(year, month, day)); + }, + + /** A date may be specified as an exact value or a relative one. + Found in the jquery.calendars.plus.js module. + @memberof BaseCalendar + @param dateSpec {CDate|number|string} The date as an object or string in the given format or + an offset - numeric days from today, or string amounts and periods, e.g. '+1m +2w'. + @param defaultDate {CDate} The date to use if no other supplied, may be null. + @param currentDate {CDate} The current date as a possible basis for relative dates, + if null today is used (optional) + @param [dateFormat] {string} The expected date format - see formatDate. + @param [settings] {object} Additional options whose attributes include: + @property [shortYearCutoff] {number} The cutoff year for determining the century. + @property [dayNamesShort] {string[]} Abbreviated names of the days from Sunday. + @property [dayNames] {string[]} Names of the days from Sunday. + @property [monthNamesShort] {string[]} Abbreviated names of the months. + @property [monthNames] {string[]} Names of the months. + @return {CDate} The decoded date. */ + determineDate: function(dateSpec, defaultDate, currentDate, dateFormat, settings) { + if (currentDate && typeof currentDate !== 'object') { + settings = dateFormat; + dateFormat = currentDate; + currentDate = null; + } + if (typeof dateFormat !== 'string') { + settings = dateFormat; + dateFormat = ''; + } + var calendar = this; + var offsetString = function(offset) { + try { + return calendar.parseDate(dateFormat, offset, settings); + } + catch (e) { + // Ignore + } + offset = offset.toLowerCase(); + var date = (offset.match(/^c/) && currentDate ? + currentDate.newDate() : null) || calendar.today(); + var pattern = /([+-]?[0-9]+)\s*(d|w|m|y)?/g; + var matches = pattern.exec(offset); + while (matches) { + date.add(parseInt(matches[1], 10), matches[2] || 'd'); + matches = pattern.exec(offset); + } + return date; + }; + defaultDate = (defaultDate ? defaultDate.newDate() : null); + dateSpec = (dateSpec == null ? defaultDate : + (typeof dateSpec === 'string' ? offsetString(dateSpec) : (typeof dateSpec === 'number' ? + (isNaN(dateSpec) || dateSpec === Infinity || dateSpec === -Infinity ? defaultDate : + calendar.today().add(dateSpec, 'd')) : calendar.newDate(dateSpec)))); + return dateSpec; + } +}); + + +},{"./main":135,"object-assign":71}],137:[function(_dereq_,module,exports){ 'use strict'; /** @@ -20612,15 +30666,7 @@ module.exports = [ } ]; -},{}],90:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],138:[function(_dereq_,module,exports){ 'use strict'; var ARROWPATHS = _dereq_('./arrow_paths'); @@ -20659,192 +30705,143 @@ function arrowCoordinateDescription(axis, lower, upper) { module.exports = templatedArray('annotation', { visible: { valType: 'boolean', - dflt: true, editType: 'calc+arraydraw', - }, text: { valType: 'string', - editType: 'calc+arraydraw', - }, textangle: { valType: 'angle', dflt: 0, - editType: 'calc+arraydraw', - }, font: fontAttrs({ editType: 'calc+arraydraw', colorEditType: 'arraydraw', - }), width: { valType: 'number', min: 1, dflt: null, - editType: 'calc+arraydraw', - }, height: { valType: 'number', min: 1, dflt: null, - editType: 'calc+arraydraw', - }, opacity: { valType: 'number', min: 0, max: 1, dflt: 1, - editType: 'arraydraw', - }, align: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'center', - editType: 'arraydraw', - }, valign: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], dflt: 'middle', - editType: 'arraydraw', - }, bgcolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'arraydraw', - }, bordercolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'arraydraw', - }, borderpad: { valType: 'number', min: 0, dflt: 1, - editType: 'calc+arraydraw', - }, borderwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'calc+arraydraw', - }, // arrow showarrow: { valType: 'boolean', dflt: true, - editType: 'calc+arraydraw', - }, arrowcolor: { valType: 'color', - editType: 'arraydraw', - }, arrowhead: { valType: 'integer', min: 0, max: ARROWPATHS.length, dflt: 1, - editType: 'arraydraw', - }, startarrowhead: { valType: 'integer', min: 0, max: ARROWPATHS.length, dflt: 1, - editType: 'arraydraw', - }, arrowside: { valType: 'flaglist', flags: ['end', 'start'], extras: ['none'], dflt: 'end', - editType: 'arraydraw', - }, arrowsize: { valType: 'number', min: 0.3, dflt: 1, - editType: 'calc+arraydraw', - }, startarrowsize: { valType: 'number', min: 0.3, dflt: 1, - editType: 'calc+arraydraw', - }, arrowwidth: { valType: 'number', min: 0.1, - editType: 'calc+arraydraw', - }, standoff: { valType: 'number', min: 0, dflt: 0, - editType: 'calc+arraydraw', - }, startstandoff: { valType: 'number', min: 0, dflt: 0, - editType: 'calc+arraydraw', - }, ax: { valType: 'any', - editType: 'calc+arraydraw', - }, ay: { valType: 'any', - editType: 'calc+arraydraw', - }, axref: { valType: 'enumerated', @@ -20853,9 +30850,7 @@ module.exports = templatedArray('annotation', { 'pixel', cartesianConstants.idRegex.x.toString() ], - editType: 'calc', - }, ayref: { valType: 'enumerated', @@ -20864,9 +30859,7 @@ module.exports = templatedArray('annotation', { 'pixel', cartesianConstants.idRegex.y.toString() ], - editType: 'calc', - }, // positioning xref: { @@ -20875,30 +30868,22 @@ module.exports = templatedArray('annotation', { 'paper', cartesianConstants.idRegex.x.toString() ], - editType: 'calc', - }, x: { valType: 'any', - editType: 'calc+arraydraw', - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'auto', - editType: 'calc+arraydraw', - }, xshift: { valType: 'number', dflt: 0, - editType: 'calc+arraydraw', - }, yref: { valType: 'enumerated', @@ -20906,104 +30891,70 @@ module.exports = templatedArray('annotation', { 'paper', cartesianConstants.idRegex.y.toString() ], - editType: 'calc', - }, y: { valType: 'any', - editType: 'calc+arraydraw', - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'auto', - editType: 'calc+arraydraw', - }, yshift: { valType: 'number', dflt: 0, - editType: 'calc+arraydraw', - }, clicktoshow: { valType: 'enumerated', values: [false, 'onoff', 'onout'], dflt: false, - editType: 'arraydraw', - }, xclick: { valType: 'any', - editType: 'arraydraw', - }, yclick: { valType: 'any', - editType: 'arraydraw', - }, hovertext: { valType: 'string', - editType: 'arraydraw', - }, hoverlabel: { bgcolor: { valType: 'color', - editType: 'arraydraw', - }, bordercolor: { valType: 'color', - editType: 'arraydraw', - }, font: fontAttrs({ editType: 'arraydraw', - }), editType: 'arraydraw' }, captureevents: { valType: 'boolean', - editType: 'arraydraw', - }, editType: 'calc', _deprecated: { ref: { valType: 'string', - editType: 'calc', - } } }); -},{"../../constants/axis_placeable_objects":208,"../../plot_api/plot_template":268,"../../plots/cartesian/constants":285,"../../plots/font_attributes":307,"./arrow_paths":89}],91:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/axis_placeable_objects":261,"../../plot_api/plot_template":320,"../../plots/cartesian/constants":337,"../../plots/font_attributes":359,"./arrow_paths":137}],139:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21085,15 +31036,7 @@ function calcAxisExpansion(ann, ax) { ann._extremes[axId] = extremes; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"./draw":96}],92:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"./draw":144}],140:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21218,20 +31161,12 @@ function getToggleSets(gd, hoverData) { return {on: onSet, off: offSet, explicitOff: explicitOffSet}; } -// to handle log axes until v2 +// to handle log axes until v3 function clickData2r(d, ax) { return ax.type === 'log' ? ax.l2r(d) : ax.d2r(d); } -},{"../../lib":233,"../../plot_api/plot_template":268,"../../registry":326}],93:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../registry":373}],141:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21302,16 +31237,7 @@ module.exports = function handleAnnotationCommonDefaults(annIn, annOut, fullLayo coerce('captureevents', !!hoverText); }; -},{"../../lib":233,"../color":105}],94:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../color":155}],142:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -21321,7 +31247,7 @@ var toLogRange = _dereq_('../../lib/to_log_range'); * convertCoords: when converting an axis between log and linear * you need to alter any annotations on that axis to keep them * pointing at the same data point. - * In v2.0 this will become obsolete + * In v3.0 this will become obsolete * * gd: the plot div * ax: the axis being changed @@ -21365,16 +31291,7 @@ module.exports = function convertCoords(gd, ax, newType, doExtra) { } }; -},{"../../lib/to_log_range":257,"fast-isnumeric":23}],95:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/to_log_range":309,"fast-isnumeric":31}],143:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -21473,18 +31390,10 @@ function handleAnnotationDefaults(annIn, annOut, fullLayout) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"./attributes":90,"./common_defaults":93}],96:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"./attributes":138,"./common_defaults":141}],144:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Plots = _dereq_('../../plots/plots'); @@ -22234,19 +32143,10 @@ function drawRaw(gd, options, index, subplotId, xa, ya) { } else annText.call(textLayout); } -},{"../../lib":233,"../../lib/setcursor":253,"../../lib/svg_text_utils":255,"../../plot_api/plot_template":268,"../../plots/cartesian/axes":279,"../../plots/plots":313,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"../fx":145,"./draw_arrow_head":97,"d3":21}],97:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../lib/setcursor":305,"../../lib/svg_text_utils":307,"../../plot_api/plot_template":320,"../../plots/cartesian/axes":331,"../../plots/plots":366,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"../fx":195,"./draw_arrow_head":145,"@plotly/d3":20}],145:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../color'); @@ -22390,16 +32290,7 @@ module.exports = function drawArrowHead(el3, ends, options) { if(doEnd) drawhead(headStyle, end, endRot, scale); }; -},{"../../lib":233,"../color":105,"./arrow_paths":89,"d3":21}],98:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../color":155,"./arrow_paths":137,"@plotly/d3":20}],146:[function(_dereq_,module,exports){ 'use strict'; var drawModule = _dereq_('./draw'); @@ -22424,16 +32315,7 @@ module.exports = { convertCoords: _dereq_('./convert_coords') }; -},{"../../plots/cartesian/include_components":291,"./attributes":90,"./calc_autorange":91,"./click":92,"./convert_coords":94,"./defaults":95,"./draw":96}],99:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian/include_components":343,"./attributes":138,"./calc_autorange":139,"./click":140,"./convert_coords":142,"./defaults":143,"./draw":144}],147:[function(_dereq_,module,exports){ 'use strict'; var annAttrs = _dereq_('../annotations/attributes'); @@ -22444,28 +32326,18 @@ module.exports = overrideAll(templatedArray('annotation', { visible: annAttrs.visible, x: { valType: 'any', - - }, y: { valType: 'any', - - }, z: { valType: 'any', - - }, ax: { valType: 'number', - - }, ay: { valType: 'number', - - }, xanchor: annAttrs.xanchor, @@ -22512,15 +32384,7 @@ module.exports = overrideAll(templatedArray('annotation', { // zref: 'z' }), 'calc', 'from-root'); -},{"../../plot_api/edit_types":261,"../../plot_api/plot_template":268,"../annotations/attributes":90}],100:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plot_api/edit_types":313,"../../plot_api/plot_template":320,"../annotations/attributes":138}],148:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -22577,15 +32441,7 @@ function mockAnnAxes(ann, scene) { }; } -},{"../../lib":233,"../../plots/cartesian/axes":279}],101:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331}],149:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -22653,15 +32509,7 @@ function handleAnnotationDefaults(annIn, annOut, sceneLayout, opts) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"../annotations/common_defaults":93,"./attributes":99}],102:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"../annotations/common_defaults":141,"./attributes":147}],150:[function(_dereq_,module,exports){ 'use strict'; var drawRaw = _dereq_('../annotations/draw').drawRaw; @@ -22705,15 +32553,7 @@ module.exports = function draw(scene) { } }; -},{"../../plots/gl3d/project":310,"../annotations/draw":96}],103:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/gl3d/project":362,"../annotations/draw":144}],151:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -22753,15 +32593,298 @@ function includeGL3D(layoutIn, layoutOut) { } } -},{"../../lib":233,"../../registry":326,"./attributes":99,"./convert":100,"./defaults":101,"./draw":102}],104:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../../lib":285,"../../registry":373,"./attributes":147,"./convert":148,"./defaults":149,"./draw":150}],152:[function(_dereq_,module,exports){ +'use strict'; +// a trimmed down version of: +// https://github.com/alexcjohnson/world-calendars/blob/master/dist/index.js + +module.exports = _dereq_('world-calendars/dist/main'); + +_dereq_('world-calendars/dist/plus'); + +_dereq_('world-calendars/dist/calendars/chinese'); +_dereq_('world-calendars/dist/calendars/coptic'); +_dereq_('world-calendars/dist/calendars/discworld'); +_dereq_('world-calendars/dist/calendars/ethiopian'); +_dereq_('world-calendars/dist/calendars/hebrew'); +_dereq_('world-calendars/dist/calendars/islamic'); +_dereq_('world-calendars/dist/calendars/julian'); +_dereq_('world-calendars/dist/calendars/mayan'); +_dereq_('world-calendars/dist/calendars/nanakshahi'); +_dereq_('world-calendars/dist/calendars/nepali'); +_dereq_('world-calendars/dist/calendars/persian'); +_dereq_('world-calendars/dist/calendars/taiwan'); +_dereq_('world-calendars/dist/calendars/thai'); +_dereq_('world-calendars/dist/calendars/ummalqura'); + +},{"world-calendars/dist/calendars/chinese":121,"world-calendars/dist/calendars/coptic":122,"world-calendars/dist/calendars/discworld":123,"world-calendars/dist/calendars/ethiopian":124,"world-calendars/dist/calendars/hebrew":125,"world-calendars/dist/calendars/islamic":126,"world-calendars/dist/calendars/julian":127,"world-calendars/dist/calendars/mayan":128,"world-calendars/dist/calendars/nanakshahi":129,"world-calendars/dist/calendars/nepali":130,"world-calendars/dist/calendars/persian":131,"world-calendars/dist/calendars/taiwan":132,"world-calendars/dist/calendars/thai":133,"world-calendars/dist/calendars/ummalqura":134,"world-calendars/dist/main":135,"world-calendars/dist/plus":136}],153:[function(_dereq_,module,exports){ +'use strict'; + +var calendars = _dereq_('./calendars'); + +var Lib = _dereq_('../../lib'); +var constants = _dereq_('../../constants/numerical'); + +var EPOCHJD = constants.EPOCHJD; +var ONEDAY = constants.ONEDAY; + +var attributes = { + valType: 'enumerated', + values: Object.keys(calendars.calendars), + editType: 'calc', + dflt: 'gregorian' +}; + +var handleDefaults = function(contIn, contOut, attr, dflt) { + var attrs = {}; + attrs[attr] = attributes; + + return Lib.coerce(contIn, contOut, attrs, attr, dflt); +}; + +var handleTraceDefaults = function(traceIn, traceOut, coords, layout) { + for(var i = 0; i < coords.length; i++) { + handleDefaults(traceIn, traceOut, coords[i] + 'calendar', layout.calendar); + } +}; + +// each calendar needs its own default canonical tick. I would love to use +// 2000-01-01 (or even 0000-01-01) for them all but they don't necessarily +// all support either of those dates. Instead I'll use the most significant +// number they *do* support, biased toward the present day. +var CANONICAL_TICK = { + chinese: '2000-01-01', + coptic: '2000-01-01', + discworld: '2000-01-01', + ethiopian: '2000-01-01', + hebrew: '5000-01-01', + islamic: '1000-01-01', + julian: '2000-01-01', + mayan: '5000-01-01', + nanakshahi: '1000-01-01', + nepali: '2000-01-01', + persian: '1000-01-01', + jalali: '1000-01-01', + taiwan: '1000-01-01', + thai: '2000-01-01', + ummalqura: '1400-01-01' +}; + +// Start on a Sunday - for week ticks +// Discworld and Mayan calendars don't have 7-day weeks but we're going to give them +// 7-day week ticks so start on our Sundays. +// If anyone really cares we can customize the auto tick spacings for these calendars. +var CANONICAL_SUNDAY = { + chinese: '2000-01-02', + coptic: '2000-01-03', + discworld: '2000-01-03', + ethiopian: '2000-01-05', + hebrew: '5000-01-01', + islamic: '1000-01-02', + julian: '2000-01-03', + mayan: '5000-01-01', + nanakshahi: '1000-01-05', + nepali: '2000-01-05', + persian: '1000-01-01', + jalali: '1000-01-01', + taiwan: '1000-01-04', + thai: '2000-01-04', + ummalqura: '1400-01-06' +}; + +var DFLTRANGE = { + chinese: ['2000-01-01', '2001-01-01'], + coptic: ['1700-01-01', '1701-01-01'], + discworld: ['1800-01-01', '1801-01-01'], + ethiopian: ['2000-01-01', '2001-01-01'], + hebrew: ['5700-01-01', '5701-01-01'], + islamic: ['1400-01-01', '1401-01-01'], + julian: ['2000-01-01', '2001-01-01'], + mayan: ['5200-01-01', '5201-01-01'], + nanakshahi: ['0500-01-01', '0501-01-01'], + nepali: ['2000-01-01', '2001-01-01'], + persian: ['1400-01-01', '1401-01-01'], + jalali: ['1400-01-01', '1401-01-01'], + taiwan: ['0100-01-01', '0101-01-01'], + thai: ['2500-01-01', '2501-01-01'], + ummalqura: ['1400-01-01', '1401-01-01'] +}; + +/* + * convert d3 templates to world-calendars templates, so our users only need + * to know d3's specifiers. Map space padding to no padding, and unknown fields + * to an ugly placeholder + */ +var UNKNOWN = '##'; +var d3ToWorldCalendars = { + 'd': {'0': 'dd', '-': 'd'}, // 2-digit or unpadded day of month + 'e': {'0': 'd', '-': 'd'}, // alternate, always unpadded day of month + 'a': {'0': 'D', '-': 'D'}, // short weekday name + 'A': {'0': 'DD', '-': 'DD'}, // full weekday name + 'j': {'0': 'oo', '-': 'o'}, // 3-digit or unpadded day of the year + 'W': {'0': 'ww', '-': 'w'}, // 2-digit or unpadded week of the year (Monday first) + 'm': {'0': 'mm', '-': 'm'}, // 2-digit or unpadded month number + 'b': {'0': 'M', '-': 'M'}, // short month name + 'B': {'0': 'MM', '-': 'MM'}, // full month name + 'y': {'0': 'yy', '-': 'yy'}, // 2-digit year (map unpadded to zero-padded) + 'Y': {'0': 'yyyy', '-': 'yyyy'}, // 4-digit year (map unpadded to zero-padded) + 'U': UNKNOWN, // Sunday-first week of the year + 'w': UNKNOWN, // day of the week [0(sunday),6] + // combined format, we replace the date part with the world-calendar version + // and the %X stays there for d3 to handle with time parts + 'c': {'0': 'D M d %X yyyy', '-': 'D M d %X yyyy'}, + 'x': {'0': 'mm/dd/yyyy', '-': 'mm/dd/yyyy'} +}; + +function worldCalFmt(fmt, x, calendar) { + var dateJD = Math.floor((x + 0.05) / ONEDAY) + EPOCHJD; + var cDate = getCal(calendar).fromJD(dateJD); + var i = 0; + var modifier, directive, directiveLen, directiveObj, replacementPart; + + while((i = fmt.indexOf('%', i)) !== -1) { + modifier = fmt.charAt(i + 1); + if(modifier === '0' || modifier === '-' || modifier === '_') { + directiveLen = 3; + directive = fmt.charAt(i + 2); + if(modifier === '_') modifier = '-'; + } else { + directive = modifier; + modifier = '0'; + directiveLen = 2; + } + directiveObj = d3ToWorldCalendars[directive]; + if(!directiveObj) { + i += directiveLen; + } else { + // code is recognized as a date part but world-calendars doesn't support it + if(directiveObj === UNKNOWN) replacementPart = UNKNOWN; + + // format the cDate according to the translated directive + else replacementPart = cDate.formatDate(directiveObj[modifier]); + + fmt = fmt.substr(0, i) + replacementPart + fmt.substr(i + directiveLen); + i += replacementPart.length; + } + } + return fmt; +} + +// cache world calendars, so we don't have to reinstantiate +// during each date-time conversion +var allCals = {}; +function getCal(calendar) { + var calendarObj = allCals[calendar]; + if(calendarObj) return calendarObj; + + calendarObj = allCals[calendar] = calendars.instance(calendar); + return calendarObj; +} + +function makeAttrs(description) { + return Lib.extendFlat({}, attributes, { description: description }); +} + +function makeTraceAttrsDescription(coord) { + return 'Sets the calendar system to use with `' + coord + '` date data.'; +} + +var xAttrs = { + xcalendar: makeAttrs(makeTraceAttrsDescription('x')) +}; + +var xyAttrs = Lib.extendFlat({}, xAttrs, { + ycalendar: makeAttrs(makeTraceAttrsDescription('y')) +}); + +var xyzAttrs = Lib.extendFlat({}, xyAttrs, { + zcalendar: makeAttrs(makeTraceAttrsDescription('z')) +}); + +var axisAttrs = makeAttrs([ + 'Sets the calendar system to use for `range` and `tick0`', + 'if this is a date axis. This does not set the calendar for', + 'interpreting data on this axis, that\'s specified in the trace', + 'or via the global `layout.calendar`' +].join(' ')); + +module.exports = { + moduleType: 'component', + name: 'calendars', + + schema: { + traces: { + scatter: xyAttrs, + bar: xyAttrs, + box: xyAttrs, + heatmap: xyAttrs, + contour: xyAttrs, + histogram: xyAttrs, + histogram2d: xyAttrs, + histogram2dcontour: xyAttrs, + scatter3d: xyzAttrs, + surface: xyzAttrs, + mesh3d: xyzAttrs, + scattergl: xyAttrs, + ohlc: xAttrs, + candlestick: xAttrs + }, + layout: { + calendar: makeAttrs([ + 'Sets the default calendar system to use for interpreting and', + 'displaying dates throughout the plot.' + ].join(' ')) + }, + subplots: { + xaxis: {calendar: axisAttrs}, + yaxis: {calendar: axisAttrs}, + scene: { + xaxis: {calendar: axisAttrs}, + // TODO: it's actually redundant to include yaxis and zaxis here + // because in the scene attributes these are the same object so merging + // into one merges into them all. However, I left them in for parity with + // cartesian, where yaxis is unused until we Plotschema.get() when we + // use its presence or absence to determine whether to delete attributes + // from yaxis if they only apply to x (rangeselector/rangeslider) + yaxis: {calendar: axisAttrs}, + zaxis: {calendar: axisAttrs} + }, + polar: { + radialaxis: {calendar: axisAttrs} + } + }, + transforms: { + filter: { + valuecalendar: makeAttrs([ + 'WARNING: All transforms are deprecated and may be removed from the API in next major version.', + 'Sets the calendar system to use for `value`, if it is a date.' + ].join(' ')), + targetcalendar: makeAttrs([ + 'WARNING: All transforms are deprecated and may be removed from the API in next major version.', + 'Sets the calendar system to use for `target`, if it is an', + 'array of dates. If `target` is a string (eg *x*) we use the', + 'corresponding trace attribute (eg `xcalendar`) if it exists,', + 'even if `targetcalendar` is provided.' + ].join(' ')) + } + } + }, + + layoutAttributes: attributes, + + handleDefaults: handleDefaults, + handleTraceDefaults: handleTraceDefaults, + + CANONICAL_SUNDAY: CANONICAL_SUNDAY, + CANONICAL_TICK: CANONICAL_TICK, + DFLTRANGE: DFLTRANGE, + + getCal: getCal, + worldCalFmt: worldCalFmt +}; + +},{"../../constants/numerical":265,"../../lib":285,"./calendars":152}],154:[function(_dereq_,module,exports){ 'use strict'; @@ -22793,20 +32916,12 @@ exports.borderLine = '#BEC8D9'; // gives back exactly lightLine if the other colors are defaults. exports.lightFraction = 100 * (0xe - 0x4) / (0xf - 0x4); -},{}],105:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],155:[function(_dereq_,module,exports){ 'use strict'; var tinycolor = _dereq_('tinycolor2'); var isNumeric = _dereq_('fast-isnumeric'); +var isTypedArray = _dereq_('../../lib/array').isTypedArray; var color = module.exports = {}; @@ -22921,7 +33036,7 @@ color.clean = function(container) { if(!Array.isArray(el0) && el0 && typeof el0 === 'object') { for(j = 0; j < val.length; j++) color.clean(val[j]); } - } else if(val && typeof val === 'object') color.clean(val); + } else if(val && typeof val === 'object' && !isTypedArray(val)) color.clean(val); } }; @@ -22967,15 +33082,7 @@ function cleanOne(val) { return 'rgb(' + rgbStr + ')'; } -},{"./attributes":104,"fast-isnumeric":23,"tinycolor2":88}],106:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/array":271,"./attributes":154,"fast-isnumeric":31,"tinycolor2":119}],156:[function(_dereq_,module,exports){ 'use strict'; var axesAttrs = _dereq_('../../plots/cartesian/layout_attributes'); @@ -22988,82 +33095,61 @@ module.exports = overrideAll({ // TODO: only right is supported currently // orient: { // valType: 'enumerated', -// // values: ['left', 'right', 'top', 'bottom'], // dflt: 'right', -// +// // }, thicknessmode: { valType: 'enumerated', values: ['fraction', 'pixels'], - dflt: 'pixels', - }, thickness: { valType: 'number', - min: 0, dflt: 30, - }, lenmode: { valType: 'enumerated', values: ['fraction', 'pixels'], - dflt: 'fraction', - }, len: { valType: 'number', min: 0, dflt: 1, - - }, x: { valType: 'number', dflt: 1.02, min: -2, max: 3, - - }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'left', - - }, xpad: { valType: 'number', - min: 0, dflt: 10, - }, y: { valType: 'number', - dflt: 0.5, min: -2, max: 3, - }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], - dflt: 'middle', - }, ypad: { valType: 'number', - min: 0, dflt: 10, - }, // a possible line around the bar itself outlinecolor: axesAttrs.linecolor, @@ -23073,16 +33159,12 @@ module.exports = overrideAll({ bordercolor: axesAttrs.linecolor, borderwidth: { valType: 'number', - min: 0, dflt: 0, - }, bgcolor: { valType: 'color', - dflt: 'rgba(0,0,0,0)', - }, // tick and title properties named and function exactly as in axes tickmode: axesAttrs.tickmode, @@ -23092,6 +33174,8 @@ module.exports = overrideAll({ tickvals: axesAttrs.tickvals, ticktext: axesAttrs.ticktext, ticks: extendFlat({}, axesAttrs.ticks, {dflt: ''}), + ticklabeloverflow: extendFlat({}, axesAttrs.ticklabeloverflow, { + }), ticklabelposition: { valType: 'enumerated', values: [ @@ -23100,15 +33184,12 @@ module.exports = overrideAll({ 'outside bottom', 'inside bottom' ], dflt: 'outside', - - }, ticklen: axesAttrs.ticklen, tickwidth: axesAttrs.tickwidth, tickcolor: axesAttrs.tickcolor, showticklabels: axesAttrs.showticklabels, tickfont: fontAttrs({ - }), tickangle: axesAttrs.tickangle, tickformat: axesAttrs.tickformat, @@ -23124,49 +33205,31 @@ module.exports = overrideAll({ title: { text: { valType: 'string', - - }, font: fontAttrs({ - }), side: { valType: 'enumerated', values: ['right', 'top', 'bottom'], - dflt: 'top', - } }, _deprecated: { title: { valType: 'string', - - }, titlefont: fontAttrs({ - }), titleside: { valType: 'enumerated', values: ['right', 'top', 'bottom'], - dflt: 'top', - } } }, 'colorbars', 'from-root'); -},{"../../lib/extend":227,"../../plot_api/edit_types":261,"../../plots/cartesian/layout_attributes":293,"../../plots/font_attributes":307}],107:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plot_api/edit_types":313,"../../plots/cartesian/layout_attributes":345,"../../plots/font_attributes":359}],157:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -23186,16 +33249,7 @@ module.exports = { } }; -},{}],108:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],158:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -23240,11 +33294,14 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { coerce('bordercolor'); coerce('borderwidth'); coerce('bgcolor'); + var ticklabelposition = coerce('ticklabelposition'); + coerce('ticklabeloverflow', ticklabelposition.indexOf('inside') !== -1 ? 'hide past domain' : 'hide past div'); handleTickValueDefaults(colorbarIn, colorbarOut, coerce, 'linear'); - var opts = {outerTicks: false, font: layout.font}; + var font = layout.font; + var opts = {outerTicks: false, font: font}; if(ticklabelposition.indexOf('inside') !== -1) { opts.bgColor = 'black'; // could we instead use the average of colors in the scale? } @@ -23252,22 +33309,20 @@ module.exports = function colorbarDefaults(containerIn, containerOut, layout) { handleTickMarkDefaults(colorbarIn, colorbarOut, coerce, 'linear', opts); coerce('title.text', layout._dfltTitle.colorbar); - Lib.coerceFont(coerce, 'title.font', layout.font); + + var tickFont = colorbarOut.tickfont; + var dfltTitleFont = Lib.extendFlat({}, tickFont, { + color: font.color, + size: Lib.bigFont(tickFont.size) + }); + Lib.coerceFont(coerce, 'title.font', dfltTitleFont); coerce('title.side'); }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/cartesian/tick_label_defaults":300,"../../plots/cartesian/tick_mark_defaults":301,"../../plots/cartesian/tick_value_defaults":302,"./attributes":106}],109:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/cartesian/tick_label_defaults":352,"../../plots/cartesian/tick_mark_defaults":353,"../../plots/cartesian/tick_value_defaults":354,"./attributes":156}],159:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Plots = _dereq_('../../plots/plots'); @@ -23944,6 +33999,7 @@ function mockColorBarAxis(gd, opts, zrange) { tickcolor: opts.tickcolor, showticklabels: opts.showticklabels, ticklabelposition: opts.ticklabelposition, + ticklabeloverflow: opts.ticklabeloverflow, tickfont: opts.tickfont, tickangle: opts.tickangle, tickformat: opts.tickformat, @@ -23990,16 +34046,7 @@ module.exports = { draw: draw }; -},{"../../constants/alignment":207,"../../lib":233,"../../lib/extend":227,"../../lib/setcursor":253,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../plots/cartesian/axis_defaults":281,"../../plots/cartesian/layout_attributes":293,"../../plots/cartesian/position_defaults":296,"../../plots/plots":313,"../../registry":326,"../color":105,"../colorscale/helpers":116,"../dragelement":124,"../drawing":127,"../titles":200,"./constants":107,"d3":21,"tinycolor2":88}],110:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/extend":279,"../../lib/setcursor":305,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../plots/cartesian/axis_defaults":333,"../../plots/cartesian/layout_attributes":345,"../../plots/cartesian/position_defaults":348,"../../plots/plots":366,"../../registry":373,"../color":155,"../colorscale/helpers":166,"../dragelement":174,"../drawing":177,"../titles":253,"./constants":157,"@plotly/d3":20,"tinycolor2":119}],160:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -24009,15 +34056,7 @@ module.exports = function hasColorbar(container) { return Lib.isPlainObject(container.colorbar); }; -},{"../../lib":233}],111:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],161:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -24031,15 +34070,7 @@ module.exports = { hasColorbar: _dereq_('./has_colorbar') }; -},{"./attributes":106,"./defaults":108,"./draw":109,"./has_colorbar":110}],112:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":156,"./defaults":158,"./draw":159,"./has_colorbar":160}],162:[function(_dereq_,module,exports){ 'use strict'; var colorbarAttrs = _dereq_('../colorbar/attributes'); @@ -24140,9 +34171,7 @@ module.exports = function colorScaleAttrs(context, opts) { attrs.color = { valType: 'color', arrayOk: true, - editType: editTypeOverride || 'style', - }; if(opts.anim) { @@ -24152,74 +34181,58 @@ module.exports = function colorScaleAttrs(context, opts) { attrs[auto] = { valType: 'boolean', - dflt: true, editType: 'calc', impliedEdits: autoImpliedEdits, - }; attrs[min] = { valType: 'number', - dflt: null, editType: editTypeOverride || 'plot', impliedEdits: minmaxImpliedEdits, - }; attrs[max] = { valType: 'number', - dflt: null, editType: editTypeOverride || 'plot', impliedEdits: minmaxImpliedEdits, - }; attrs[mid] = { valType: 'number', - dflt: null, editType: 'calc', impliedEdits: autoImpliedEdits, - }; attrs.colorscale = { valType: 'colorscale', - editType: 'calc', dflt: colorscaleDflt, impliedEdits: {autocolorscale: false}, - }; attrs.autocolorscale = { valType: 'boolean', - // gets overrode in 'heatmap' & 'surface' for backwards comp. dflt: opts.autoColorDflt === false ? false : true, editType: 'calc', impliedEdits: {colorscale: undefined}, - }; attrs.reversescale = { valType: 'boolean', - dflt: false, editType: 'plot', - }; if(!noScale) { attrs.showscale = { valType: 'boolean', - dflt: showScaleDflt, editType: 'calc', - }; attrs.colorbar = colorbarAttrs; @@ -24228,26 +34241,16 @@ module.exports = function colorScaleAttrs(context, opts) { if(!opts.noColorAxis) { attrs.coloraxis = { valType: 'subplotid', - regex: counterRegex('coloraxis'), dflt: null, editType: 'calc', - }; } return attrs; }; -},{"../../lib/regex":249,"../colorbar/attributes":106,"./scales.js":120}],113:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/regex":301,"../colorbar/attributes":156,"./scales.js":170}],163:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -24318,15 +34321,7 @@ module.exports = function calc(gd, trace, opts) { } }; -},{"../../lib":233,"./helpers":116,"fast-isnumeric":23}],114:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./helpers":166,"fast-isnumeric":31}],164:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -24395,15 +34390,7 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) { } }; -},{"../../lib":233,"./helpers":116}],115:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./helpers":166}],165:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -24520,18 +34507,10 @@ module.exports = function colorScaleDefaults(parentContIn, parentContOut, layout } }; -},{"../../lib":233,"../../registry":326,"../colorbar/defaults":108,"../colorbar/has_colorbar":110,"./scales":120,"fast-isnumeric":23}],116:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"../colorbar/defaults":158,"../colorbar/has_colorbar":160,"./scales":170,"fast-isnumeric":31}],166:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var isNumeric = _dereq_('fast-isnumeric'); @@ -24573,7 +34552,7 @@ var letterAttrs = ['min', 'max', 'mid', 'auto']; /** * Extract 'c' / 'z', trace / color axis colorscale options * - * Note that it would be nice to replace all z* with c* equivalents in v2 + * Note that it would be nice to replace all z* with c* equivalents in v3 * * @param {object} cont : attribute container * @return {object}: @@ -24760,15 +34739,7 @@ module.exports = { makeColorScaleFuncFromTrace: makeColorScaleFuncFromTrace }; -},{"../../lib":233,"../color":105,"./scales":120,"d3":21,"fast-isnumeric":23,"tinycolor2":88}],117:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../color":155,"./scales":170,"@plotly/d3":20,"fast-isnumeric":31,"tinycolor2":119}],167:[function(_dereq_,module,exports){ 'use strict'; var scales = _dereq_('./scales'); @@ -24802,15 +34773,7 @@ module.exports = { makeColorScaleFuncFromTrace: helpers.makeColorScaleFuncFromTrace }; -},{"./attributes":112,"./calc":113,"./cross_trace_defaults":114,"./defaults":115,"./helpers":116,"./layout_attributes":118,"./layout_defaults":119,"./scales":120}],118:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":162,"./calc":163,"./cross_trace_defaults":164,"./defaults":165,"./helpers":166,"./layout_attributes":168,"./layout_defaults":169,"./scales":170}],168:[function(_dereq_,module,exports){ 'use strict'; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -24829,23 +34792,17 @@ module.exports = { sequential: { valType: 'colorscale', dflt: scales.Reds, - editType: 'calc', - }, sequentialminus: { valType: 'colorscale', dflt: scales.Blues, - editType: 'calc', - }, diverging: { valType: 'colorscale', dflt: scales.RdBu, - editType: 'calc', - } }, @@ -24855,7 +34812,6 @@ module.exports = { // support yaxis, yaxis2, yaxis3, ... counters _isSubplotObj: true, editType: 'calc', - }, colorScaleAttrs('', { colorAttr: 'corresponding trace color array(s)', noColorAxis: true, @@ -24863,15 +34819,7 @@ module.exports = { })) }; -},{"../../lib/extend":227,"./attributes":112,"./scales":120}],119:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"./attributes":162,"./scales":170}],169:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -24914,15 +34862,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { } }; -},{"../../lib":233,"../../plot_api/plot_template":268,"./defaults":115,"./layout_attributes":118}],120:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"./defaults":165,"./layout_attributes":168}],170:[function(_dereq_,module,exports){ 'use strict'; var tinycolor = _dereq_('tinycolor2'); @@ -25118,16 +35058,7 @@ module.exports = { isValid: isValidScale }; -},{"tinycolor2":88}],121:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"tinycolor2":119}],171:[function(_dereq_,module,exports){ 'use strict'; @@ -25151,16 +35082,7 @@ module.exports = function align(v, dv, v0, v1, anchor) { return vc; }; -},{}],122:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],172:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -25189,15 +35111,7 @@ module.exports = function getCursor(x, y, xanchor, yanchor) { return cursorset[y][x]; }; -},{"../../lib":233}],123:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],173:[function(_dereq_,module,exports){ 'use strict'; exports.selectMode = function(dragmode) { @@ -25248,15 +35162,7 @@ exports.selectingOrDrawing = function(dragmode) { ); }; -},{}],124:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],174:[function(_dereq_,module,exports){ 'use strict'; var mouseOffset = _dereq_('mouse-event-offset'); @@ -25431,7 +35337,7 @@ dragElement.init = function init(options) { if(dx || dy) { gd._dragged = true; - dragElement.unhover(gd); + dragElement.unhover(gd, e); } if(gd._dragged && options.moveFn && !rightClick) { @@ -25540,15 +35446,7 @@ function pointerOffset(e) { ); } -},{"../../lib":233,"../../plots/cartesian/constants":285,"./align":121,"./cursor":122,"./unhover":125,"has-hover":54,"has-passive-events":55,"mouse-event-offset":76}],125:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/constants":337,"./align":171,"./cursor":172,"./unhover":175,"has-hover":62,"has-passive-events":63,"mouse-event-offset":69}],175:[function(_dereq_,module,exports){ 'use strict'; var Events = _dereq_('../../lib/events'); @@ -25577,7 +35475,7 @@ unhover.raw = function raw(gd, evt) { var oldhoverdata = gd._hoverdata; if(!evt) evt = {}; - if(evt.target && + if(evt.target && !gd._dragged && Events.triggerHandler(gd, 'plotly_beforehover', evt) === false) { return; } @@ -25595,16 +35493,7 @@ unhover.raw = function raw(gd, evt) { } }; -},{"../../lib/dom":225,"../../lib/events":226,"../../lib/throttle":256,"../fx/constants":139}],126:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/dom":277,"../../lib/events":278,"../../lib/throttle":308,"../fx/constants":189}],176:[function(_dereq_,module,exports){ 'use strict'; exports.dash = { @@ -25615,24 +35504,44 @@ exports.dash = { // dash lengths in px, and it will be honored values: ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'], dflt: 'solid', - editType: 'style', - }; -},{}],127:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +exports.pattern = { + shape: { + valType: 'enumerated', + values: ['', '/', '\\', 'x', '-', '|', '+', '.'], + dflt: '', + arrayOk: true, + editType: 'style', + }, + bgcolor: { + valType: 'color', + arrayOk: true, + editType: 'style', + }, + size: { + valType: 'number', + min: 0, + dflt: 8, + arrayOk: true, + editType: 'style', + }, + solidity: { + valType: 'number', + min: 0, + max: 1, + dflt: 0.3, + arrayOk: true, + editType: 'style', + }, + editType: 'style' +}; +},{}],177:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var tinycolor = _dereq_('tinycolor2'); @@ -25986,6 +35895,185 @@ drawing.gradient = function(sel, gd, gradientID, type, colorscale, prop) { fullLayout._gradientUrlQueryParts[k] = 1; }; +/** + * pattern: create and apply a pattern fill + * + * @param {object} sel: d3 selection to apply this pattern to + * You can use `selection.call(Drawing.pattern, ...)` + * @param {DOM element} gd: the graph div `sel` is part of + * @param {string} patternID: a unique (within this plot) identifier + * for this pattern, so that we don't create unnecessary definitions + * @param {string} bgcolor: background color for this pattern + * @param {string} fgcolor: foreground color for this pattern + * @param {number} size: size of unit squares for repetition of this pattern + * @param {number} solidity: how solid lines of this pattern are + * @param {string} prop: the property to apply to, 'fill' or 'stroke' + */ +drawing.pattern = function(sel, gd, patternID, shape, bgcolor, fgcolor, size, solidity, prop) { + var fullLayout = gd._fullLayout; + var fullID = 'p' + fullLayout._uid + '-' + patternID; + var width, height; + + // linear interpolation + var linearFn = function(x, x0, x1, y0, y1) { + return y0 + (y1 - y0) * (x - x0) / (x1 - x0); + }; + + var path, linewidth, radius; + var patternTag; + var patternAttrs = {}; + switch(shape) { + case '/': + width = size * Math.sqrt(2); + height = size * Math.sqrt(2); + path = 'M-' + (width / 4) + ',' + (height / 4) + 'l' + (width / 2) + ',-' + (height / 2) + + 'M0,' + height + 'L' + width + ',0' + + 'M' + (width / 4 * 3) + ',' + (height / 4 * 5) + 'l' + (width / 2) + ',-' + (height / 2); + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '\\': + width = size * Math.sqrt(2); + height = size * Math.sqrt(2); + path = 'M' + (width / 4 * 3) + ',-' + (height / 4) + 'l' + (width / 2) + ',' + (height / 2) + + 'M0,0L' + width + ',' + height + + 'M-' + (width / 4) + ',' + (height / 4 * 3) + 'l' + (width / 2) + ',' + (height / 2); + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case 'x': + width = size * Math.sqrt(2); + height = size * Math.sqrt(2); + path = 'M-' + (width / 4) + ',' + (height / 4) + 'l' + (width / 2) + ',-' + (height / 2) + + 'M0,' + height + 'L' + width + ',0' + + 'M' + (width / 4 * 3) + ',' + (height / 4 * 5) + 'l' + (width / 2) + ',-' + (height / 2) + + 'M' + (width / 4 * 3) + ',-' + (height / 4) + 'l' + (width / 2) + ',' + (height / 2) + + 'M0,0L' + width + ',' + height + + 'M-' + (width / 4) + ',' + (height / 4 * 3) + 'l' + (width / 2) + ',' + (height / 2); + linewidth = size - size * Math.sqrt(1.0 - solidity); + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '|': + width = size; + height = size; + patternTag = 'path'; + path = 'M' + (width / 2) + ',0L' + (width / 2) + ',' + height; + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '-': + width = size; + height = size; + patternTag = 'path'; + path = 'M0,' + (height / 2) + 'L' + width + ',' + (height / 2); + linewidth = solidity * size; + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '+': + width = size; + height = size; + patternTag = 'path'; + path = 'M' + (width / 2) + ',0L' + (width / 2) + ',' + height + + 'M0,' + (height / 2) + 'L' + width + ',' + (height / 2); + linewidth = size - size * Math.sqrt(1.0 - solidity); + patternTag = 'path'; + patternAttrs = { + 'd': path, + 'stroke': fgcolor, + 'stroke-width': linewidth + 'px' + }; + break; + case '.': + width = size; + height = size; + if(solidity < Math.PI / 4) { + radius = Math.sqrt(solidity * size * size / Math.PI); + } else { + radius = linearFn(solidity, Math.PI / 4, 1.0, size / 2, size / Math.sqrt(2)); + } + patternTag = 'circle'; + patternAttrs = { + 'cx': width / 2, + 'cy': height / 2, + 'r': radius, + 'fill': fgcolor + }; + break; + } + + var pattern = fullLayout._defs.select('.patterns') + .selectAll('#' + fullID) + .data([shape + ';' + bgcolor + ';' + fgcolor + ';' + size + ';' + solidity], Lib.identity); + + pattern.exit().remove(); + + pattern.enter() + .append('pattern') + .each(function() { + var el = d3.select(this); + + el.attr({ + 'id': fullID, + 'width': width + 'px', + 'height': height + 'px', + 'patternUnits': 'userSpaceOnUse' + }); + + if(bgcolor) { + var rects = el.selectAll('rect').data([0]); + rects.exit().remove(); + rects.enter() + .append('rect') + .attr({ + 'width': width + 'px', + 'height': height + 'px', + 'fill': bgcolor + }); + } + + var patterns = el.selectAll(patternTag).data([0]); + patterns.exit().remove(); + patterns.enter() + .append(patternTag) + .attr(patternAttrs); + }); + + sel.style(prop, getFullUrl(fullID, gd)) + .style(prop + '-opacity', null); + + sel.classed('pattern_filled', true); + var className2query = function(s) { + return '.' + s.attr('class').replace(/\s/g, '.'); + }; + var k = className2query(d3.select(sel.node().parentNode)) + '>.pattern_filled'; + fullLayout._patternUrlQueryParts[k] = 1; +}; + /* * Make the gradients container and clear out any previous gradients. * We never collect all the gradients we need in one place, @@ -26004,6 +36092,23 @@ drawing.initGradients = function(gd) { fullLayout._gradientUrlQueryParts = {}; }; +drawing.initPatterns = function(gd) { + var fullLayout = gd._fullLayout; + + var patternsGroup = Lib.ensureSingle(fullLayout._defs, 'g', 'patterns'); + patternsGroup.selectAll('pattern').remove(); + + // initialize stash of query parts filled in Drawing.pattern, + // used to fix URL strings during image exports + fullLayout._patternUrlQueryParts = {}; +}; + +drawing.getPatternAttr = function(mp, i, dflt) { + if(mp && Lib.isArrayOrTypedArray(mp)) { + return i < mp.length ? mp[i] : dflt; + } + return mp; +}; drawing.pointStyle = function(s, trace, gd) { if(!s.size()) return; @@ -26109,11 +36214,14 @@ drawing.singlePointStyle = function(d, sel, trace, fns, gd) { // for legend - arrays will propagate through here, but we don't need // to treat it as per-point. - if(Array.isArray(gradientType)) { + if(Lib.isArrayOrTypedArray(gradientType)) { gradientType = gradientType[0]; if(!gradientInfo[gradientType]) gradientType = 0; } + var markerPattern = marker.pattern; + var patternShape = markerPattern && drawing.getPatternAttr(markerPattern.shape, d.i, ''); + if(gradientType && gradientType !== 'none') { var gradientColor = d.mgc; if(gradientColor) perPointGradient = true; @@ -26124,6 +36232,20 @@ drawing.singlePointStyle = function(d, sel, trace, fns, gd) { drawing.gradient(sel, gd, gradientID, gradientType, [[0, gradientColor], [1, fillColor]], 'fill'); + } else if(patternShape) { + var patternBGColor = drawing.getPatternAttr(markerPattern.bgcolor, d.i, null); + var patternSize = drawing.getPatternAttr(markerPattern.size, d.i, 8); + var patternSolidity = drawing.getPatternAttr(markerPattern.solidity, d.i, 0.3); + var perPointPattern = Lib.isArrayOrTypedArray(markerPattern.shape) || + Lib.isArrayOrTypedArray(markerPattern.bgcolor) || + Lib.isArrayOrTypedArray(markerPattern.size) || + Lib.isArrayOrTypedArray(markerPattern.solidity); + + var patternID = trace.uid; + if(perPointPattern) patternID += '-' + d.i; + + drawing.pattern(sel, gd, patternID, patternShape, patternBGColor, fillColor, + patternSize, patternSolidity, 'fill'); } else { Color.fill(sel, fillColor); } @@ -26362,7 +36484,8 @@ drawing.textPointStyle = function(s, trace, gd) { } if(texttemplate) { - var labels = trace._module.formatLabels ? trace._module.formatLabels(d, trace, fullLayout) : {}; + var fn = trace._module.formatLabels; + var labels = fn ? fn(d, trace, fullLayout) : {}; var pointValues = {}; appendArrayPointValue(pointValues, trace, d.i); var meta = trace._meta || {}; @@ -26688,7 +36811,9 @@ function getFullUrl(localId, gd) { var context = gd._context; var baseUrl = context._exportedPlot ? '' : (context._baseUrl || ''); - return 'url(\'' + baseUrl + '#' + localId + '\')'; + return baseUrl ? + 'url(\'' + baseUrl + '#' + localId + '\')' : + 'url(#' + localId + ')'; } drawing.getTranslate = function(element) { @@ -26817,19 +36942,10 @@ drawing.setTextPointsScale = function(selection, xScale, yScale) { }); }; -},{"../../components/fx/helpers":141,"../../constants/alignment":207,"../../constants/interactions":211,"../../constants/xmlns_namespaces":213,"../../lib":233,"../../lib/svg_text_utils":255,"../../registry":326,"../../traces/scatter/make_bubble_size_func":464,"../../traces/scatter/subtypes":472,"../color":105,"../colorscale":117,"./symbol_defs":128,"d3":21,"fast-isnumeric":23,"tinycolor2":88}],128:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/fx/helpers":191,"../../constants/alignment":260,"../../constants/interactions":264,"../../constants/xmlns_namespaces":266,"../../lib":285,"../../lib/svg_text_utils":307,"../../registry":373,"../../traces/scatter/make_bubble_size_func":511,"../../traces/scatter/subtypes":519,"../color":155,"../colorscale":167,"./symbol_defs":178,"@plotly/d3":20,"fast-isnumeric":31,"tinycolor2":119}],178:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); /** Marker symbol definitions * users can specify markers either by number or name @@ -27381,130 +37497,90 @@ module.exports = { } }; -},{"d3":21}],129:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"@plotly/d3":20}],179:[function(_dereq_,module,exports){ 'use strict'; module.exports = { visible: { valType: 'boolean', - editType: 'calc', - }, type: { valType: 'enumerated', values: ['percent', 'constant', 'sqrt', 'data'], - editType: 'calc', - }, symmetric: { valType: 'boolean', - editType: 'calc', - }, array: { valType: 'data_array', editType: 'calc', - }, arrayminus: { valType: 'data_array', editType: 'calc', - }, value: { valType: 'number', min: 0, dflt: 10, - editType: 'calc', - }, valueminus: { valType: 'number', min: 0, dflt: 10, - editType: 'calc', - }, traceref: { valType: 'integer', min: 0, dflt: 0, - editType: 'style' }, tracerefminus: { valType: 'integer', min: 0, dflt: 0, - editType: 'style' }, copy_ystyle: { valType: 'boolean', - editType: 'plot' }, copy_zstyle: { valType: 'boolean', - editType: 'style' }, color: { valType: 'color', - editType: 'style', - }, thickness: { valType: 'number', min: 0, dflt: 2, - editType: 'style', - }, width: { valType: 'number', min: 0, - editType: 'plot', - }, editType: 'calc', _deprecated: { opacity: { valType: 'number', - editType: 'style', - } } }; -},{}],130:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],180:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -27582,16 +37658,7 @@ function calcOneAxis(calcTrace, trace, axis, coord) { baseExtremes.max = baseExtremes.max.concat(extremes.max); } -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"./compute_error":131,"fast-isnumeric":23}],131:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"./compute_error":181,"fast-isnumeric":31}],181:[function(_dereq_,module,exports){ 'use strict'; @@ -27683,15 +37750,7 @@ function makeComputeErrorValue(type, value) { } } -},{}],132:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],182:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -27758,15 +37817,7 @@ module.exports = function(traceIn, traceOut, defaultColor, opts) { } }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../registry":326,"./attributes":129,"fast-isnumeric":23}],133:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../registry":373,"./attributes":179,"fast-isnumeric":31}],183:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -27827,19 +37878,10 @@ function hoverInfo(calcPoint, trace, hoverPoint) { } } -},{"../../lib":233,"../../plot_api/edit_types":261,"./attributes":129,"./calc":130,"./compute_error":131,"./defaults":132,"./plot":134,"./style":135}],134:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plot_api/edit_types":313,"./attributes":179,"./calc":180,"./compute_error":181,"./defaults":182,"./plot":184,"./style":185}],184:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Drawing = _dereq_('../drawing'); @@ -27999,19 +38041,10 @@ function errorCoords(d, xa, ya) { return out; } -},{"../../traces/scatter/subtypes":472,"../drawing":127,"d3":21,"fast-isnumeric":23}],135:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../traces/scatter/subtypes":519,"../drawing":177,"@plotly/d3":20,"fast-isnumeric":31}],185:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../color'); @@ -28036,15 +38069,7 @@ module.exports = function style(traces) { }); }; -},{"../color":105,"d3":21}],136:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../color":155,"@plotly/d3":20}],186:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -28055,16 +38080,13 @@ module.exports = { hoverlabel: { bgcolor: extendFlat({}, hoverLabelAttrs.bgcolor, { arrayOk: true, - }), bordercolor: extendFlat({}, hoverLabelAttrs.bordercolor, { arrayOk: true, - }), font: fontAttrs({ arrayOk: true, editType: 'none', - }), align: extendFlat({}, hoverLabelAttrs.align, {arrayOk: true}), namelength: extendFlat({}, hoverLabelAttrs.namelength, {arrayOk: true}), @@ -28072,15 +38094,7 @@ module.exports = { } }; -},{"../../lib/extend":227,"../../plots/font_attributes":307,"./layout_attributes":146}],137:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plots/font_attributes":359,"./layout_attributes":196}],187:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -28131,15 +38145,7 @@ function paste(traceAttr, cd, cdAttr, fn) { } } -},{"../../lib":233,"../../registry":326}],138:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373}],188:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -28168,15 +38174,7 @@ module.exports = function click(gd, evt, subplot) { } }; -},{"../../registry":326,"./hover":142}],139:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./hover":192}],189:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -28200,15 +38198,7 @@ module.exports = { HOVERID: '-hover' }; -},{}],140:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],190:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -28226,15 +38216,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleHoverLabelDefaults(traceIn, traceOut, coerce, opts); }; -},{"../../lib":233,"./attributes":136,"./hoverlabel_defaults":143}],141:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./attributes":186,"./hoverlabel_defaults":193}],191:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -28488,18 +38470,10 @@ exports.isXYhover = function(hovermode) { return !!xyHoverMode[hovermode]; }; -},{"../../lib":233}],142:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],192:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var tinycolor = _dereq_('tinycolor2'); @@ -28538,6 +38512,13 @@ var YSHIFTY = Math.sin(YA_RADIANS); var HOVERARROWSIZE = constants.HOVERARROWSIZE; var HOVERTEXTPAD = constants.HOVERTEXTPAD; +var multipleHoverPoints = { + box: true, + ohlc: true, + violin: true, + candlestick: true +}; + // fx.hover: highlight data on hover // evt can be a mousemove event, or an object with data about what points // to hover on @@ -28747,8 +38728,11 @@ function _hover(gd, evt, subplot, noHoverEvent) { return dragElement.unhoverRaw(gd, evt); } - var hoverdistance = fullLayout.hoverdistance === -1 ? Infinity : fullLayout.hoverdistance; - var spikedistance = fullLayout.spikedistance === -1 ? Infinity : fullLayout.spikedistance; + var hoverdistance = fullLayout.hoverdistance; + if(hoverdistance === -1) hoverdistance = Infinity; + + var spikedistance = fullLayout.spikedistance; + if(spikedistance === -1) spikedistance = Infinity; // hoverData: the set of candidate points we've found to highlight var hoverData = []; @@ -28763,7 +38747,7 @@ function _hover(gd, evt, subplot, noHoverEvent) { // mapped onto each of the currently selected overlaid subplots var xvalArray, yvalArray; - var itemnum, curvenum, cd, trace, subplotId, subploti, mode, + var itemnum, curvenum, cd, trace, subplotId, subploti, _mode, xval, yval, pointData, closedataPreviousLength; // spikePoints: the set of candidate points we've found to draw spikes to @@ -28826,7 +38810,13 @@ function _hover(gd, evt, subplot, noHoverEvent) { return; } - var dbb = evt.target.getBoundingClientRect(); + // Discover event target, traversing open shadow roots. + var target = evt.composedPath && evt.composedPath()[0]; + if(!target) { + // Fallback for browsers not supporting composedPath + target = evt.target; + } + var dbb = target.getBoundingClientRect(); xpx = evt.clientX - dbb.left; ypx = evt.clientY - dbb.top; @@ -28892,9 +38882,9 @@ function _hover(gd, evt, subplot, noHoverEvent) { } // within one trace mode can sometimes be overridden - mode = hovermode; - if(helpers.isUnifiedHover(mode)) { - mode = mode.charAt(0); + _mode = hovermode; + if(helpers.isUnifiedHover(_mode)) { + _mode = _mode.charAt(0); } // container for new point, also used to pass info into module.hoverPoints @@ -28952,20 +38942,20 @@ function _hover(gd, evt, subplot, noHoverEvent) { // for a highlighting array, figure out what // we're searching for with this element - if(mode === 'array') { + if(_mode === 'array') { var selection = evt[curvenum]; if('pointNumber' in selection) { pointData.index = selection.pointNumber; - mode = 'closest'; + _mode = 'closest'; } else { - mode = ''; + _mode = ''; if('xval' in selection) { xval = selection.xval; - mode = 'x'; + _mode = 'x'; } if('yval' in selection) { yval = selection.yval; - mode = mode ? 'closest' : 'y'; + _mode = _mode ? 'closest' : 'y'; } } } else if(customXVal !== undefined && customYVal !== undefined) { @@ -28979,7 +38969,11 @@ function _hover(gd, evt, subplot, noHoverEvent) { // Now if there is range to look in, find the points to hover. if(hoverdistance !== 0) { if(trace._module && trace._module.hoverPoints) { - var newPoints = trace._module.hoverPoints(pointData, xval, yval, mode, fullLayout._hoverlayer); + var newPoints = trace._module.hoverPoints(pointData, xval, yval, _mode, { + finiteRange: true, + hoverLayer: fullLayout._hoverlayer + }); + if(newPoints) { var newPoint; for(var newPointNum = 0; newPointNum < newPoints.length; newPointNum++) { @@ -29008,7 +39002,9 @@ function _hover(gd, evt, subplot, noHoverEvent) { if(hoverData.length === 0) { pointData.distance = spikedistance; pointData.index = false; - var closestPoints = trace._module.hoverPoints(pointData, xval, yval, 'closest', fullLayout._hoverlayer); + var closestPoints = trace._module.hoverPoints(pointData, xval, yval, 'closest', { + hoverLayer: fullLayout._hoverlayer + }); if(closestPoints) { closestPoints = closestPoints.filter(function(point) { // some hover points, like scatter fills, do not allow spikes, @@ -29127,46 +39123,70 @@ function _hover(gd, evt, subplot, noHoverEvent) { } } - hoverData.sort(function(d1, d2) { return d1.distance - d2.distance; }); + var sortHoverData = function() { + hoverData.sort(function(d1, d2) { return d1.distance - d2.distance; }); + + // move period positioned points and box/bar-like traces to the end of the list + hoverData = orderRangePoints(hoverData, hovermode); + }; + sortHoverData(); - // If in compare mode, select every point at position if( - helpers.isXYhover(mode) && + helpers.isXYhover(_mode) && hoverData[0].length !== 0 && hoverData[0].trace.type !== 'splom' // TODO: add support for splom ) { - var hd = hoverData[0]; - var cd0 = hd.cd[hd.index]; - var isGrouped = (fullLayout.boxmode === 'group' || fullLayout.violinmode === 'group'); - - var xVal = hd.xVal; - var ax = hd.xa; - if(ax.type === 'category') xVal = ax._categoriesMap[xVal]; - if(ax.type === 'date') xVal = ax.d2c(xVal); - if(cd0 && cd0.t && cd0.t.posLetter === ax._id && isGrouped) { - xVal += cd0.t.dPos; + // pick winning point + var winningPoint = hoverData[0]; + // discard other points + if(multipleHoverPoints[winningPoint.trace.type]) { + hoverData = hoverData.filter(function(d) { + return d.trace.index === winningPoint.trace.index; + }); + } else { + hoverData = [winningPoint]; } + var initLen = hoverData.length; - var yVal = hd.yVal; - ax = hd.ya; - if(ax.type === 'category') yVal = ax._categoriesMap[yVal]; - if(ax.type === 'date') yVal = ax.d2c(yVal); - if(cd0 && cd0.t && cd0.t.posLetter === ax._id && isGrouped) { - yVal += cd0.t.dPos; - } + var winX = getCoord('x', winningPoint, fullLayout); + var winY = getCoord('y', winningPoint, fullLayout); - findHoverPoints(xVal, yVal); + // in compare mode, select every point at position + findHoverPoints(winX, winY); - // Remove duplicated hoverData points - // note that d3 also filters identical points in the rendering steps - var repeated = {}; - hoverData = hoverData.filter(function(hd) { - var key = hoverDataKey(hd); - if(!repeated[key]) { - repeated[key] = true; - return repeated[key]; + var finalPoints = []; + var seen = {}; + var id = 0; + var insert = function(newHd) { + var key = multipleHoverPoints[newHd.trace.type] ? hoverDataKey(newHd) : newHd.trace.index; + if(!seen[key]) { + id++; + seen[key] = id; + finalPoints.push(newHd); + } else { + var oldId = seen[key] - 1; + var oldHd = finalPoints[oldId]; + if(oldId > 0 && + Math.abs(newHd.distance) < + Math.abs(oldHd.distance) + ) { + // replace with closest + finalPoints[oldId] = newHd; + } } - }); + }; + + var k; + // insert the winnig point(s) first + for(k = 0; k < initLen; k++) { + insert(hoverData[k]); + } + // override from the end + for(k = hoverData.length - 1; k > initLen - 1; k--) { + insert(hoverData[k]); + } + hoverData = finalPoints; + sortHoverData(); } // lastly, emit custom hover/unhover events @@ -29269,9 +39289,8 @@ function createHoverText(hoverData, opts, gd) { var c0 = hoverData[0]; var xa = c0.xa; var ya = c0.ya; - var commonAttr = hovermode.charAt(0) === 'y' ? 'yLabel' : 'xLabel'; - var t0 = c0[commonAttr]; - var t00 = (String(t0) || '').split(' ')[0]; + var axLetter = hovermode.charAt(0); + var t0 = c0[axLetter + 'Label']; var outerContainerBB = outerContainer.node().getBoundingClientRect(); var outerTop = outerContainerBB.top; var outerWidth = outerContainerBB.width; @@ -29460,27 +39479,13 @@ function createHoverText(hoverData, opts, gd) { } label.attr('transform', strTranslate(lx, ly)); - - // remove the "close but not quite" points - // because of error bars, only take up to a space - hoverData = filterClosePoints(hoverData); }); - function filterClosePoints(hoverData) { - return hoverData.filter(function(d) { - return (d.zLabelVal !== undefined) || - (d[commonAttr] || '').split(' ')[0] === t00; - }); - } - // Show a single hover label if(helpers.isUnifiedHover(hovermode)) { // Delete leftover hover labels from other hovermodes container.selectAll('g.hovertext').remove(); - // similarly to compare mode, we remove the "close but not quite together" points - if((t0 !== undefined) && (c0.distance <= opts.hoverdistance)) hoverData = filterClosePoints(hoverData); - // Return early if nothing is hovered on if(hoverData.length === 0) return; @@ -29500,10 +39505,10 @@ function createHoverText(hoverData, opts, gd) { }; var mockLayoutOut = {}; legendSupplyDefaults(mockLayoutIn, mockLayoutOut, gd._fullData); - var legendOpts = mockLayoutOut.legend; + var mockLegend = mockLayoutOut.legend; // prepare items for the legend - legendOpts.entries = []; + mockLegend.entries = []; for(var j = 0; j < hoverData.length; j++) { var texts = getHoverLabelText(hoverData[j], true, hovermode, fullLayout, t0); var text = texts[0]; @@ -29529,17 +39534,19 @@ function createHoverText(hoverData, opts, gd) { } pt._distinct = true; - legendOpts.entries.push([pt]); + mockLegend.entries.push([pt]); } - legendOpts.entries.sort(function(a, b) { return a[0].trace.index - b[0].trace.index;}); - legendOpts.layer = container; + mockLegend.entries.sort(function(a, b) { return a[0].trace.index - b[0].trace.index;}); + mockLegend.layer = container; // Draw unified hover label - legendDraw(gd, legendOpts); + mockLegend._inHover = true; + legendDraw(gd, mockLegend); // Position the hover - var ly = Lib.mean(hoverData.map(function(c) {return (c.y0 + c.y1) / 2;})); - var lx = Lib.mean(hoverData.map(function(c) {return (c.x0 + c.x1) / 2;})); + var winningPoint = hoverData[0]; + var ly = (winningPoint.y0 + winningPoint.y1) / 2; + var lx = (winningPoint.x0 + winningPoint.x1) / 2; var legendContainer = container.select('g.legend'); var tbb = legendContainer.node().getBoundingClientRect(); lx += xa._offset; @@ -29736,14 +39743,17 @@ function getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g) { name = plainText(d.name, d.nameLength); } + var h0 = hovermode.charAt(0); + var h1 = h0 === 'x' ? 'y' : 'x'; + if(d.zLabel !== undefined) { if(d.xLabel !== undefined) text += 'x: ' + d.xLabel + '
'; if(d.yLabel !== undefined) text += 'y: ' + d.yLabel + '
'; if(d.trace.type !== 'choropleth' && d.trace.type !== 'choroplethmapbox') { text += (text ? 'z: ' : '') + d.zLabel; } - } else if(showCommonLabel && d[hovermode.charAt(0) + 'Label'] === t0) { - text = d[(hovermode.charAt(0) === 'x' ? 'y' : 'x') + 'Label'] || ''; + } else if(showCommonLabel && d[h0 + 'Label'] === t0) { + text = d[h1 + 'Label'] || ''; } else if(d.xLabel === undefined) { if(d.yLabel !== undefined && d.trace.type !== 'scattercarpet') { text = d.yLabel; @@ -29772,16 +39782,20 @@ function getHoverLabelText(d, showCommonLabel, hovermode, fullLayout, t0, g) { } // hovertemplate - var d3locale = fullLayout._d3locale; var hovertemplate = d.hovertemplate || false; - var hovertemplateLabels = d.hovertemplateLabels || d; - var eventData = d.eventData[0] || {}; if(hovertemplate) { + var labels = d.hovertemplateLabels || d; + + if(d[h0 + 'Label'] !== t0) { + labels[h0 + 'other'] = labels[h0 + 'Val']; + labels[h0 + 'otherLabel'] = labels[h0 + 'Label']; + } + text = Lib.hovertemplateString( hovertemplate, - hovertemplateLabels, - d3locale, - eventData, + labels, + fullLayout._d3locale, + d.eventData[0] || {}, d.trace._meta ); @@ -30098,11 +40112,11 @@ function cleanPoint(d, hovermode) { // and convert the x and y label values into formatted text if(d.xLabelVal !== undefined) { - d.xLabel = ('xLabel' in d) ? d.xLabel : Axes.hoverLabelText(d.xa, d.xLabelVal); + d.xLabel = ('xLabel' in d) ? d.xLabel : Axes.hoverLabelText(d.xa, d.xLabelVal, trace.xhoverformat); d.xVal = d.xa.c2d(d.xLabelVal); } if(d.yLabelVal !== undefined) { - d.yLabel = ('yLabel' in d) ? d.yLabel : Axes.hoverLabelText(d.ya, d.yLabelVal); + d.yLabel = ('yLabel' in d) ? d.yLabel : Axes.hoverLabelText(d.ya, d.yLabelVal, trace.yhoverformat); d.yVal = d.ya.c2d(d.yLabelVal); } @@ -30360,15 +40374,52 @@ function plainText(s, len) { }); } -},{"../../lib":233,"../../lib/events":226,"../../lib/override_cursor":244,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"../legend/defaults":157,"../legend/draw":158,"./constants":139,"./helpers":141,"d3":21,"fast-isnumeric":23,"tinycolor2":88}],143:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +function orderRangePoints(hoverData, hovermode) { + var axLetter = hovermode.charAt(0); + var first = []; + var second = []; + var last = []; + + for(var i = 0; i < hoverData.length; i++) { + var d = hoverData[i]; + + if( + Registry.traceIs(d.trace, 'bar-like') || + Registry.traceIs(d.trace, 'box-violin') + ) { + last.push(d); + } else if(d.trace[axLetter + 'period']) { + second.push(d); + } else { + first.push(d); + } + } + + return first.concat(second).concat(last); +} + +function getCoord(axLetter, winningPoint, fullLayout) { + var ax = winningPoint[axLetter + 'a']; + var val = winningPoint[axLetter + 'Val']; + + if(ax.type === 'category') val = ax._categoriesMap[val]; + else if(ax.type === 'date') val = ax.d2c(val); + + var cd0 = winningPoint.cd[winningPoint.index]; + if(cd0 && cd0.t && cd0.t.posLetter === ax._id) { + if( + fullLayout.boxmode === 'group' || + fullLayout.violinmode === 'group' + ) { + val += cd0.t.dPos; + } + } + + return val; +} + +},{"../../lib":285,"../../lib/events":278,"../../lib/override_cursor":296,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"../legend/defaults":207,"../legend/draw":208,"./constants":189,"./helpers":191,"@plotly/d3":20,"fast-isnumeric":31,"tinycolor2":119}],193:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -30406,21 +40457,13 @@ module.exports = function handleHoverLabelDefaults(contIn, contOut, coerce, opts coerce('hoverlabel.align', opts.align); }; -},{"../../lib":233,"../color":105,"./helpers":141}],144:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../color":155,"./helpers":191}],194:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); var layoutAttributes = _dereq_('./layout_attributes'); -module.exports = function handleHoverModeDefaults(layoutIn, layoutOut, fullData) { +module.exports = function handleHoverModeDefaults(layoutIn, layoutOut) { function coerce(attr, dflt) { // don't coerce if it is already coerced in other place e.g. in cartesian defaults if(layoutOut[attr] !== undefined) return layoutOut[attr]; @@ -30428,52 +40471,14 @@ module.exports = function handleHoverModeDefaults(layoutIn, layoutOut, fullData) return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt); } - var clickmode = coerce('clickmode'); - - var hovermodeDflt; - if(layoutOut._has('cartesian')) { - if(clickmode.indexOf('select') > -1) { - hovermodeDflt = 'closest'; - } else { - // flag for 'horizontal' plots: - // determines the state of the mode bar 'compare' hovermode button - layoutOut._isHoriz = isHoriz(fullData, layoutOut); - hovermodeDflt = layoutOut._isHoriz ? 'y' : 'x'; - } - } else hovermodeDflt = 'closest'; - - return coerce('hovermode', hovermodeDflt); + coerce('clickmode'); + return coerce('hovermode'); }; -function isHoriz(fullData, fullLayout) { - var stackOpts = fullLayout._scatterStackOpts || {}; - - for(var i = 0; i < fullData.length; i++) { - var trace = fullData[i]; - var subplot = trace.xaxis + trace.yaxis; - var subplotStackOpts = stackOpts[subplot] || {}; - var groupOpts = subplotStackOpts[trace.stackgroup] || {}; - - if(trace.orientation !== 'h' && groupOpts.orientation !== 'h') { - return false; - } - } - - return true; -} - -},{"../../lib":233,"./layout_attributes":146}],145:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./layout_attributes":196}],195:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var dragElement = _dereq_('../dragelement'); var helpers = _dereq_('./helpers'); @@ -30541,22 +40546,13 @@ function castHoverinfo(trace, fullLayout, ptNumber) { return Lib.castOption(trace, ptNumber, 'hoverinfo', _coerce); } -},{"../../lib":233,"../dragelement":124,"./attributes":136,"./calc":137,"./click":138,"./constants":139,"./defaults":140,"./helpers":141,"./hover":142,"./layout_attributes":146,"./layout_defaults":147,"./layout_global_defaults":148,"d3":21}],146:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../dragelement":174,"./attributes":186,"./calc":187,"./click":188,"./constants":189,"./defaults":190,"./helpers":191,"./hover":192,"./layout_attributes":196,"./layout_defaults":197,"./layout_global_defaults":198,"@plotly/d3":20}],196:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); var fontAttrs = _dereq_('../../plots/font_attributes')({ editType: 'none', - }); fontAttrs.family.dflt = constants.HOVERFONT; fontAttrs.size.dflt = constants.HOVERFONTSIZE; @@ -30564,16 +40560,13 @@ fontAttrs.size.dflt = constants.HOVERFONTSIZE; module.exports = { clickmode: { valType: 'flaglist', - flags: ['event', 'select'], dflt: 'event', editType: 'plot', extras: ['none'], - }, dragmode: { valType: 'enumerated', - values: [ 'zoom', 'pan', @@ -30590,99 +40583,74 @@ module.exports = { ], dflt: 'zoom', editType: 'modebar', - }, hovermode: { valType: 'enumerated', - values: ['x', 'y', 'closest', false, 'x unified', 'y unified'], + dflt: 'closest', editType: 'modebar', - }, hoverdistance: { valType: 'integer', min: -1, dflt: 20, - editType: 'none', - }, spikedistance: { valType: 'integer', min: -1, - dflt: 20, - + dflt: -1, editType: 'none', - }, hoverlabel: { bgcolor: { valType: 'color', - editType: 'none', - }, bordercolor: { valType: 'color', - editType: 'none', - }, font: fontAttrs, align: { valType: 'enumerated', values: ['left', 'right', 'auto'], dflt: 'auto', - editType: 'none', - }, namelength: { valType: 'integer', min: -1, dflt: 15, - editType: 'none', - }, editType: 'none' }, selectdirection: { valType: 'enumerated', - values: ['h', 'v', 'd', 'any'], dflt: 'any', - editType: 'none' } }; -},{"../../plots/font_attributes":307,"./constants":139}],147:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/font_attributes":359,"./constants":189}],197:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); -var isUnifiedHover = _dereq_('./helpers').isUnifiedHover; var layoutAttributes = _dereq_('./layout_attributes'); var handleHoverModeDefaults = _dereq_('./hovermode_defaults'); var handleHoverLabelDefaults = _dereq_('./hoverlabel_defaults'); -module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { +module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { function coerce(attr, dflt) { return Lib.coerce(layoutIn, layoutOut, layoutAttributes, attr, dflt); } - var hoverMode = handleHoverModeDefaults(layoutIn, layoutOut, fullData); + var hoverMode = handleHoverModeDefaults(layoutIn, layoutOut); if(hoverMode) { coerce('hoverdistance'); - coerce('spikedistance', isUnifiedHover(hoverMode) ? -1 : undefined); + coerce('spikedistance'); } var dragMode = coerce('dragmode'); @@ -30705,15 +40673,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { handleHoverLabelDefaults(layoutIn, layoutOut, coerce); }; -},{"../../lib":233,"./helpers":141,"./hoverlabel_defaults":143,"./hovermode_defaults":144,"./layout_attributes":146}],148:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./hoverlabel_defaults":193,"./hovermode_defaults":194,"./layout_attributes":196}],198:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -30728,15 +40688,7 @@ module.exports = function supplyLayoutGlobalDefaults(layoutIn, layoutOut) { handleHoverLabelDefaults(layoutIn, layoutOut, coerce); }; -},{"../../lib":233,"./hoverlabel_defaults":143,"./layout_attributes":146}],149:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./hoverlabel_defaults":193,"./layout_attributes":196}],199:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -30749,92 +40701,69 @@ var gridAttrs = { rows: { valType: 'integer', min: 1, - editType: 'plot', - }, roworder: { valType: 'enumerated', values: ['top to bottom', 'bottom to top'], dflt: 'top to bottom', - editType: 'plot', - }, columns: { valType: 'integer', min: 1, - editType: 'plot', - }, subplots: { valType: 'info_array', freeLength: true, dimensions: 2, items: {valType: 'enumerated', values: [counterRegex('xy').toString(), ''], editType: 'plot'}, - editType: 'plot', - }, xaxes: { valType: 'info_array', freeLength: true, items: {valType: 'enumerated', values: [cartesianIdRegex.x.toString(), ''], editType: 'plot'}, - editType: 'plot', - }, yaxes: { valType: 'info_array', freeLength: true, items: {valType: 'enumerated', values: [cartesianIdRegex.y.toString(), ''], editType: 'plot'}, - editType: 'plot', - }, pattern: { valType: 'enumerated', values: ['independent', 'coupled'], dflt: 'coupled', - editType: 'plot', - }, xgap: { valType: 'number', min: 0, max: 1, - editType: 'plot', - }, ygap: { valType: 'number', min: 0, max: 1, - editType: 'plot', - }, domain: domainAttrs({name: 'grid', editType: 'plot', noGridCell: true}, { - }), xside: { valType: 'enumerated', values: ['bottom', 'bottom plot', 'top plot', 'top'], dflt: 'bottom plot', - editType: 'plot', - }, yside: { valType: 'enumerated', values: ['left', 'left plot', 'right plot', 'right'], dflt: 'left plot', - editType: 'plot', - }, editType: 'plot' }; @@ -31102,15 +41031,7 @@ module.exports = { contentDefaults: contentDefaults }; -},{"../../lib":233,"../../lib/regex":249,"../../plot_api/plot_template":268,"../../plots/cartesian/constants":285,"../../plots/domain":306}],150:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../lib/regex":301,"../../plot_api/plot_template":320,"../../plots/cartesian/constants":337,"../../plots/domain":358}],200:[function(_dereq_,module,exports){ 'use strict'; var cartesianConstants = _dereq_('../../plots/cartesian/constants'); @@ -31121,95 +41042,73 @@ var axisPlaceableObjs = _dereq_('../../constants/axis_placeable_objects'); module.exports = templatedArray('image', { visible: { valType: 'boolean', - dflt: true, editType: 'arraydraw', - }, source: { valType: 'string', - editType: 'arraydraw', - }, layer: { valType: 'enumerated', values: ['below', 'above'], dflt: 'above', - editType: 'arraydraw', - }, sizex: { valType: 'number', - dflt: 0, editType: 'arraydraw', - }, sizey: { valType: 'number', - dflt: 0, editType: 'arraydraw', - }, sizing: { valType: 'enumerated', values: ['fill', 'contain', 'stretch'], dflt: 'contain', - editType: 'arraydraw', - }, opacity: { valType: 'number', - min: 0, max: 1, dflt: 1, editType: 'arraydraw', - }, x: { valType: 'any', - dflt: 0, editType: 'arraydraw', - }, y: { valType: 'any', - dflt: 0, editType: 'arraydraw', - }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'left', - editType: 'arraydraw', - }, yanchor: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], dflt: 'top', - editType: 'arraydraw', - }, xref: { @@ -31219,9 +41118,7 @@ module.exports = templatedArray('image', { cartesianConstants.idRegex.x.toString() ], dflt: 'paper', - editType: 'arraydraw', - }, yref: { @@ -31231,23 +41128,12 @@ module.exports = templatedArray('image', { cartesianConstants.idRegex.y.toString() ], dflt: 'paper', - editType: 'arraydraw', - }, editType: 'arraydraw' }); -},{"../../constants/axis_placeable_objects":208,"../../plot_api/plot_template":268,"../../plots/cartesian/constants":285}],151:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/axis_placeable_objects":261,"../../plot_api/plot_template":320,"../../plots/cartesian/constants":337}],201:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -31257,7 +41143,7 @@ var toLogRange = _dereq_('../../lib/to_log_range'); * convertCoords: when converting an axis between log and linear * you need to alter any images on that axis to keep them * pointing at the same data point. - * In v2.0 this will become obsolete (or perhaps size will still need conversion?) + * In v3.0 this will become obsolete (or perhaps size will still need conversion?) * we convert size by declaring that the maximum extent *in data units* should be * the same, assuming the image is anchored by its center (could remove that restriction * if we think it's important) even though the actual left and right values will not be @@ -31319,15 +41205,7 @@ module.exports = function convertCoords(gd, ax, newType, doExtra) { } }; -},{"../../lib/to_log_range":257,"fast-isnumeric":23}],152:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/to_log_range":309,"fast-isnumeric":31}],202:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -31384,18 +41262,10 @@ function imageDefaults(imageIn, imageOut, fullLayout) { return imageOut; } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"./attributes":150}],153:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"./attributes":200}],203:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Drawing = _dereq_('../drawing'); var Axes = _dereq_('../../plots/cartesian/axes'); var axisIds = _dereq_('../../plots/cartesian/axis_ids'); @@ -31623,7 +41493,7 @@ module.exports = function draw(gd) { subplot = allSubplots[i]; var subplotObj = fullLayout._plots[subplot]; - // filter out overlaid plots (which havd their images on the main plot) + // filter out overlaid plots (which have their images on the main plot) // and gl2d plots (which don't support below images, at least not yet) if(!subplotObj.imagelayer) continue; @@ -31642,15 +41512,7 @@ module.exports = function draw(gd) { } }; -},{"../../constants/xmlns_namespaces":213,"../../plots/cartesian/axes":279,"../../plots/cartesian/axis_ids":282,"../drawing":127,"d3":21}],154:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/xmlns_namespaces":266,"../../plots/cartesian/axes":331,"../../plots/cartesian/axis_ids":334,"../drawing":177,"@plotly/d3":20}],204:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -31666,15 +41528,7 @@ module.exports = { convertCoords: _dereq_('./convert_coords') }; -},{"../../plots/cartesian/include_components":291,"./attributes":150,"./convert_coords":151,"./defaults":152,"./draw":153}],155:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/include_components":343,"./attributes":200,"./convert_coords":201,"./defaults":202,"./draw":203}],205:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -31684,150 +41538,112 @@ var colorAttrs = _dereq_('../color/attributes'); module.exports = { bgcolor: { valType: 'color', - editType: 'legend', - }, bordercolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'legend', - }, borderwidth: { valType: 'number', min: 0, dflt: 0, - editType: 'legend', - }, font: fontAttrs({ editType: 'legend', - }), orientation: { valType: 'enumerated', values: ['v', 'h'], dflt: 'v', - editType: 'legend', - }, traceorder: { valType: 'flaglist', flags: ['reversed', 'grouped'], extras: ['normal'], - editType: 'legend', - }, tracegroupgap: { valType: 'number', min: 0, dflt: 10, - editType: 'legend', - }, itemsizing: { valType: 'enumerated', values: ['trace', 'constant'], dflt: 'trace', - editType: 'legend', - }, itemwidth: { valType: 'number', min: 30, dflt: 30, - editType: 'legend', - }, itemclick: { valType: 'enumerated', values: ['toggle', 'toggleothers', false], dflt: 'toggle', - editType: 'legend', - }, itemdoubleclick: { valType: 'enumerated', values: ['toggle', 'toggleothers', false], dflt: 'toggleothers', - editType: 'legend', - }, x: { valType: 'number', min: -2, max: 3, - editType: 'legend', - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'left', - editType: 'legend', - }, y: { valType: 'number', min: -2, max: 3, - editType: 'legend', - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], - editType: 'legend', - }, uirevision: { valType: 'any', - editType: 'none', - }, valign: { valType: 'enumerated', values: ['top', 'middle', 'bottom'], dflt: 'middle', - editType: 'legend', - }, title: { text: { valType: 'string', dflt: '', - editType: 'legend', - }, font: fontAttrs({ editType: 'legend', - }), side: { valType: 'enumerated', values: ['top', 'left', 'top left'], - editType: 'legend', - }, editType: 'legend', }, @@ -31835,15 +41651,7 @@ module.exports = { editType: 'legend' }; -},{"../../plots/font_attributes":307,"../color/attributes":104}],156:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/font_attributes":359,"../color/attributes":154}],206:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -31859,15 +41667,7 @@ module.exports = { itemGap: 5 }; -},{}],157:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],207:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -31947,12 +41747,13 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { coerce('bgcolor', layoutOut.paper_bgcolor); coerce('bordercolor'); coerce('borderwidth'); - Lib.coerceFont(coerce, 'font', layoutOut.font); + var itemFont = Lib.coerceFont(coerce, 'font', layoutOut.font); var orientation = coerce('orientation'); + var isHorizontal = orientation === 'h'; var defaultX, defaultY, defaultYAnchor; - if(orientation === 'h') { + if(isHorizontal) { defaultX = 0; if(Registry.getComponentMethod('rangeslider', 'isVisible')(layoutIn.xaxis)) { @@ -31961,7 +41762,7 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { } else { // maybe use y=1.1 / yanchor=bottom as above // to avoid https://github.com/plotly/plotly.js/issues/1199 - // in v2 + // in v3 defaultY = -0.1; defaultYAnchor = 'top'; } @@ -31989,23 +41790,19 @@ module.exports = function legendDefaults(layoutIn, layoutOut, fullData) { var titleText = coerce('title.text'); if(titleText) { - coerce('title.side', orientation === 'h' ? 'left' : 'top'); - Lib.coerceFont(coerce, 'title.font', layoutOut.font); + coerce('title.side', isHorizontal ? 'left' : 'top'); + var dfltTitleFont = Lib.extendFlat({}, itemFont, { + size: Lib.bigFont(itemFont.size) + }); + + Lib.coerceFont(coerce, 'title.font', dfltTitleFont); } }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/layout_attributes":311,"../../registry":326,"./attributes":155,"./helpers":161}],158:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/layout_attributes":364,"../../registry":373,"./attributes":205,"./helpers":211}],208:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Plots = _dereq_('../../plots/plots'); @@ -32027,19 +41824,24 @@ var getLegendData = _dereq_('./get_legend_data'); var style = _dereq_('./style'); var helpers = _dereq_('./helpers'); +var MAIN_TITLE = 1; + module.exports = function draw(gd, opts) { + if(!opts) opts = gd._fullLayout.legend || {}; + return _draw(gd, opts); +}; + +function _draw(gd, legendObj) { var fullLayout = gd._fullLayout; var clipId = 'legend' + fullLayout._uid; var layer; - // Check whether this is the main legend (ie. called without any opts) - if(!opts) { - opts = fullLayout.legend || {}; - opts._main = true; - layer = fullLayout._infolayer; - } else { - layer = opts.layer; + var inHover = legendObj._inHover; + if(inHover) { + layer = legendObj.layer; clipId += '-hover'; + } else { + layer = fullLayout._infolayer; } if(!layer) return; @@ -32047,24 +41849,24 @@ module.exports = function draw(gd, opts) { if(!gd._legendMouseDownTime) gd._legendMouseDownTime = 0; var legendData; - if(opts._main) { + if(!inHover) { if(!gd.calcdata) return; - legendData = fullLayout.showlegend && getLegendData(gd.calcdata, opts); + legendData = fullLayout.showlegend && getLegendData(gd.calcdata, legendObj); } else { - if(!opts.entries) return; - legendData = getLegendData(opts.entries, opts); + if(!legendObj.entries) return; + legendData = getLegendData(legendObj.entries, legendObj); } var hiddenSlices = fullLayout.hiddenlabels || []; - if(opts._main && (!fullLayout.showlegend || !legendData.length)) { + if(!inHover && (!fullLayout.showlegend || !legendData.length)) { layer.selectAll('.legend').remove(); fullLayout._topdefs.select('#' + clipId).remove(); return Plots.autoMargin(gd, 'legend'); } var legend = Lib.ensureSingle(layer, 'g', 'legend', function(s) { - if(opts._main) s.attr('pointer-events', 'all'); + if(!inHover) s.attr('pointer-events', 'all'); }); var clipPath = Lib.ensureSingleById(fullLayout._topdefs, 'clipPath', clipId, function(s) { @@ -32074,22 +41876,22 @@ module.exports = function draw(gd, opts) { var bg = Lib.ensureSingle(legend, 'rect', 'bg', function(s) { s.attr('shape-rendering', 'crispEdges'); }); - bg.call(Color.stroke, opts.bordercolor) - .call(Color.fill, opts.bgcolor) - .style('stroke-width', opts.borderwidth + 'px'); + bg.call(Color.stroke, legendObj.bordercolor) + .call(Color.fill, legendObj.bgcolor) + .style('stroke-width', legendObj.borderwidth + 'px'); var scrollBox = Lib.ensureSingle(legend, 'g', 'scrollbox'); - var title = opts.title; - opts._titleWidth = 0; - opts._titleHeight = 0; + var title = legendObj.title; + legendObj._titleWidth = 0; + legendObj._titleHeight = 0; if(title.text) { var titleEl = Lib.ensureSingle(scrollBox, 'text', 'legendtitletext'); titleEl.attr('text-anchor', 'start') .call(Drawing.font, title.font) .text(title.text); - textLayout(titleEl, scrollBox, gd, opts); // handle mathjax or multi-line text and compute title height + textLayout(titleEl, scrollBox, gd, legendObj, MAIN_TITLE); // handle mathjax or multi-line text and compute title height } else { scrollBox.selectAll('.legendtitletext').remove(); } @@ -32115,31 +41917,31 @@ module.exports = function draw(gd, opts) { return trace.visible === 'legendonly' ? 0.5 : 1; } }) - .each(function() { d3.select(this).call(drawTexts, gd, opts); }) - .call(style, gd, opts) - .each(function() { if(opts._main) d3.select(this).call(setupTraceToggle, gd); }); + .each(function() { d3.select(this).call(drawTexts, gd, legendObj); }) + .call(style, gd, legendObj) + .each(function() { if(!inHover) d3.select(this).call(setupTraceToggle, gd); }); Lib.syncOrAsync([ Plots.previousPromises, - function() { return computeLegendDimensions(gd, groups, traces, opts); }, + function() { return computeLegendDimensions(gd, groups, traces, legendObj); }, function() { // IF expandMargin return a Promise (which is truthy), // we're under a doAutoMargin redraw, so we don't have to // draw the remaining pieces below - if(opts._main && expandMargin(gd)) return; + if(!inHover && expandMargin(gd)) return; var gs = fullLayout._size; - var bw = opts.borderwidth; + var bw = legendObj.borderwidth; - var lx = gs.l + gs.w * opts.x - FROM_TL[getXanchor(opts)] * opts._width; - var ly = gs.t + gs.h * (1 - opts.y) - FROM_TL[getYanchor(opts)] * opts._effHeight; + var lx = gs.l + gs.w * legendObj.x - FROM_TL[getXanchor(legendObj)] * legendObj._width; + var ly = gs.t + gs.h * (1 - legendObj.y) - FROM_TL[getYanchor(legendObj)] * legendObj._effHeight; - if(opts._main && fullLayout.margin.autoexpand) { + if(!inHover && fullLayout.margin.autoexpand) { var lx0 = lx; var ly0 = ly; - lx = Lib.constrain(lx, 0, fullLayout.width - opts._width); - ly = Lib.constrain(ly, 0, fullLayout.height - opts._effHeight); + lx = Lib.constrain(lx, 0, fullLayout.width - legendObj._width); + ly = Lib.constrain(ly, 0, fullLayout.height - legendObj._effHeight); if(lx !== lx0) { Lib.log('Constrain legend.x to make legend fit inside graph'); @@ -32151,21 +41953,21 @@ module.exports = function draw(gd, opts) { // Set size and position of all the elements that make up a legend: // legend, background and border, scroll box and scroll bar as well as title - if(opts._main) Drawing.setTranslate(legend, lx, ly); + if(!inHover) Drawing.setTranslate(legend, lx, ly); // to be safe, remove previous listeners scrollBar.on('.drag', null); legend.on('wheel', null); - if(!opts._main || opts._height <= opts._maxHeight || gd._context.staticPlot) { + if(inHover || legendObj._height <= legendObj._maxHeight || gd._context.staticPlot) { // if scrollbar should not be shown. - var height = opts._effHeight; + var height = legendObj._effHeight; - // if not the main legend, let it be its full size - if(!opts._main) height = opts._height; + // if unified hover, let it be its full size + if(inHover) height = legendObj._height; bg.attr({ - width: opts._width - bw, + width: legendObj._width - bw, height: height - bw, x: bw / 2, y: bw / 2 @@ -32174,7 +41976,7 @@ module.exports = function draw(gd, opts) { Drawing.setTranslate(scrollBox, 0, 0); clipPath.select('rect').attr({ - width: opts._width - 2 * bw, + width: legendObj._width - 2 * bw, height: height - 2 * bw, x: bw, y: bw @@ -32183,36 +41985,36 @@ module.exports = function draw(gd, opts) { Drawing.setClipUrl(scrollBox, clipId, gd); Drawing.setRect(scrollBar, 0, 0, 0, 0); - delete opts._scrollY; + delete legendObj._scrollY; } else { var scrollBarHeight = Math.max(constants.scrollBarMinHeight, - opts._effHeight * opts._effHeight / opts._height); - var scrollBarYMax = opts._effHeight - + legendObj._effHeight * legendObj._effHeight / legendObj._height); + var scrollBarYMax = legendObj._effHeight - scrollBarHeight - 2 * constants.scrollBarMargin; - var scrollBoxYMax = opts._height - opts._effHeight; + var scrollBoxYMax = legendObj._height - legendObj._effHeight; var scrollRatio = scrollBarYMax / scrollBoxYMax; - var scrollBoxY = Math.min(opts._scrollY || 0, scrollBoxYMax); + var scrollBoxY = Math.min(legendObj._scrollY || 0, scrollBoxYMax); // increase the background and clip-path width // by the scrollbar width and margin bg.attr({ - width: opts._width - + width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin, - height: opts._effHeight - bw, + height: legendObj._effHeight - bw, x: bw / 2, y: bw / 2 }); clipPath.select('rect').attr({ - width: opts._width - + width: legendObj._width - 2 * bw + constants.scrollBarWidth + constants.scrollBarMargin, - height: opts._effHeight - 2 * bw, + height: legendObj._effHeight - 2 * bw, x: bw, y: bw + scrollBoxY }); @@ -32224,7 +42026,7 @@ module.exports = function draw(gd, opts) { // scroll legend by mousewheel or touchpad swipe up/down legend.on('wheel', function() { scrollBoxY = Lib.constrain( - opts._scrollY + + legendObj._scrollY + ((d3.event.deltaY / scrollBarYMax) * scrollBoxYMax), 0, scrollBoxYMax); scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio); @@ -32290,12 +42092,12 @@ module.exports = function draw(gd, opts) { } function scrollHandler(scrollBoxY, scrollBarHeight, scrollRatio) { - opts._scrollY = gd._fullLayout.legend._scrollY = scrollBoxY; + legendObj._scrollY = gd._fullLayout.legend._scrollY = scrollBoxY; Drawing.setTranslate(scrollBox, 0, -scrollBoxY); Drawing.setRect( scrollBar, - opts._width, + legendObj._width, constants.scrollBarMargin + scrollBoxY * scrollRatio, constants.scrollBarWidth, scrollBarHeight @@ -32322,8 +42124,8 @@ module.exports = function draw(gd, opts) { Drawing.setTranslate(legend, newX, newY); - xf = dragElement.align(newX, 0, gs.l, gs.l + gs.w, opts.xanchor); - yf = dragElement.align(newY, 0, gs.t + gs.h, gs.t, opts.yanchor); + xf = dragElement.align(newX, 0, gs.l, gs.l + gs.w, legendObj.xanchor); + yf = dragElement.align(newY, 0, gs.t + gs.h, gs.t, legendObj.yanchor); }, doneFn: function() { if(xf !== undefined && yf !== undefined) { @@ -32345,7 +42147,7 @@ module.exports = function draw(gd, opts) { }); } }], gd); -}; +} function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { var trace = legendItem.data()[0][0].trace; @@ -32374,6 +42176,7 @@ function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { if(numClicks === 1) { legend._clickTimeout = setTimeout(function() { + if(!gd._fullLayout) return; handleClick(legendItem, gd, numClicks); }, gd._context.doubleClickDelay); } else if(numClicks === 2) { @@ -32385,16 +42188,15 @@ function clickOrDoubleClick(gd, legend, legendItem, numClicks, evt) { } } -function drawTexts(g, gd, opts) { +function drawTexts(g, gd, legendObj) { var legendItem = g.data()[0][0]; var trace = legendItem.trace; var isPieLike = Registry.traceIs(trace, 'pie-like'); - var traceIndex = trace.index; - var isEditable = opts._main && gd._context.edits.legendText && !isPieLike; - var maxNameLength = opts._maxNameLength; + var isEditable = !legendObj._inHover && gd._context.edits.legendText && !isPieLike; + var maxNameLength = legendObj._maxNameLength; var name; - if(!opts.entries) { + if(!legendObj.entries) { name = isPieLike ? legendItem.label : trace.name; if(trace._meta) { name = Lib.templateString(name, trace._meta); @@ -32406,18 +42208,18 @@ function drawTexts(g, gd, opts) { var textEl = Lib.ensureSingle(g, 'text', 'legendtext'); textEl.attr('text-anchor', 'start') - .call(Drawing.font, opts.font) + .call(Drawing.font, legendObj.font) .text(isEditable ? ensureLength(name, maxNameLength) : name); - var textGap = opts.itemwidth + constants.itemGap * 2; + var textGap = legendObj.itemwidth + constants.itemGap * 2; svgTextUtils.positionText(textEl, textGap, 0); if(isEditable) { textEl.call(svgTextUtils.makeEditable, {gd: gd, text: name}) - .call(textLayout, g, gd, opts) + .call(textLayout, g, gd, legendObj) .on('edit', function(newName) { this.text(ensureLength(newName, maxNameLength)) - .call(textLayout, g, gd, opts); + .call(textLayout, g, gd, legendObj); var fullInput = legendItem.trace._fullInput || {}; var update = {}; @@ -32435,10 +42237,10 @@ function drawTexts(g, gd, opts) { update.name = newName; } - return Registry.call('_guiRestyle', gd, update, traceIndex); + return Registry.call('_guiRestyle', gd, update, trace.index); }); } else { - textLayout(textEl, g, gd, opts); + textLayout(textEl, g, gd, legendObj); } } @@ -32494,25 +42296,25 @@ function setupTraceToggle(g, gd) { }); } -function textLayout(s, g, gd, opts) { - if(!opts._main) s.attr('data-notex', true); // do not process MathJax if not main +function textLayout(s, g, gd, legendObj, aTitle) { + if(legendObj._inHover) s.attr('data-notex', true); // do not process MathJax for unified hover svgTextUtils.convertToTspans(s, gd, function() { - computeTextDimensions(g, gd, opts); + computeTextDimensions(g, gd, legendObj, aTitle); }); } -function computeTextDimensions(g, gd, opts) { +function computeTextDimensions(g, gd, legendObj, aTitle) { var legendItem = g.data()[0][0]; - if(opts._main && legendItem && !legendItem.trace.showlegend) { + if(!legendObj._inHover && legendItem && !legendItem.trace.showlegend) { g.remove(); return; } var mathjaxGroup = g.select('g[class*=math-group]'); var mathjaxNode = mathjaxGroup.node(); - if(!opts) opts = gd._fullLayout.legend; - var bw = opts.borderwidth; - var lineHeight = (legendItem ? opts : opts.title).font.size * LINE_SPACING; + if(!legendObj) legendObj = gd._fullLayout.legend; + var bw = legendObj.borderwidth; + var lineHeight = (aTitle === MAIN_TITLE ? legendObj.title : legendObj).font.size * LINE_SPACING; var height, width; if(mathjaxNode) { @@ -32521,14 +42323,14 @@ function computeTextDimensions(g, gd, opts) { height = mathjaxBB.height; width = mathjaxBB.width; - if(legendItem) { + if(aTitle === MAIN_TITLE) { + Drawing.setTranslate(mathjaxGroup, bw, bw + height * 0.75); + } else { // legend item Drawing.setTranslate(mathjaxGroup, 0, height * 0.25); - } else { // case of title - Drawing.setTranslate(mathjaxGroup, bw, height * 0.75 + bw); } } else { - var textEl = g.select(legendItem ? - '.legendtext' : '.legendtitletext' + var textEl = g.select(aTitle === MAIN_TITLE ? + '.legendtitletext' : '.legendtext' ); var textLines = svgTextUtils.lineCount(textEl); var textNode = textEl.node(); @@ -32538,36 +42340,45 @@ function computeTextDimensions(g, gd, opts) { // approximation to height offset to center the font // to avoid getBoundingClientRect - var textY = lineHeight * ((textLines - 1) / 2 - 0.3); - if(legendItem) { - var textGap = opts.itemwidth + constants.itemGap * 2; - svgTextUtils.positionText(textEl, textGap, -textY); - } else { // case of title - svgTextUtils.positionText(textEl, constants.titlePad + bw, lineHeight + bw); + if(aTitle === MAIN_TITLE) { + if(legendObj.title.side === 'left') { + // add extra space between legend title and itmes + width += constants.itemGap * 2; + } + + svgTextUtils.positionText(textEl, + bw + constants.titlePad, + bw + lineHeight + ); + } else { // legend item + svgTextUtils.positionText(textEl, + legendObj.itemwidth + constants.itemGap * 2, + -lineHeight * ((textLines - 1) / 2 - 0.3) + ); } } - if(legendItem) { + if(aTitle === MAIN_TITLE) { + legendObj._titleWidth = width; + legendObj._titleHeight = height; + } else { // legend item legendItem.lineHeight = lineHeight; legendItem.height = Math.max(height, 16) + 3; legendItem.width = width; - } else { // case of title - opts._titleWidth = width; - opts._titleHeight = height; } } -function getTitleSize(opts) { +function getTitleSize(legendObj) { var w = 0; var h = 0; - var side = opts.title.side; + var side = legendObj.title.side; if(side) { if(side.indexOf('left') !== -1) { - w = opts._titleWidth; + w = legendObj._titleWidth; } if(side.indexOf('top') !== -1) { - h = opts._titleHeight; + h = legendObj._titleHeight; } } @@ -32584,68 +42395,70 @@ function getTitleSize(opts) { * - _width: legend width * - _maxWidth (for orientation:h only): maximum width before starting new row */ -function computeLegendDimensions(gd, groups, traces, opts) { +function computeLegendDimensions(gd, groups, traces, legendObj) { var fullLayout = gd._fullLayout; - if(!opts) opts = fullLayout.legend; + if(!legendObj) legendObj = fullLayout.legend; var gs = fullLayout._size; - var isVertical = helpers.isVertical(opts); - var isGrouped = helpers.isGrouped(opts); + var isVertical = helpers.isVertical(legendObj); + var isGrouped = helpers.isGrouped(legendObj); - var bw = opts.borderwidth; + var bw = legendObj.borderwidth; var bw2 = 2 * bw; var itemGap = constants.itemGap; - var textGap = opts.itemwidth + itemGap * 2; + var textGap = legendObj.itemwidth + itemGap * 2; var endPad = 2 * (bw + itemGap); - var yanchor = getYanchor(opts); - var isBelowPlotArea = opts.y < 0 || (opts.y === 0 && yanchor === 'top'); - var isAbovePlotArea = opts.y > 1 || (opts.y === 1 && yanchor === 'bottom'); + var yanchor = getYanchor(legendObj); + var isBelowPlotArea = legendObj.y < 0 || (legendObj.y === 0 && yanchor === 'top'); + var isAbovePlotArea = legendObj.y > 1 || (legendObj.y === 1 && yanchor === 'bottom'); + + var traceGroupGap = legendObj.tracegroupgap; // - if below/above plot area, give it the maximum potential margin-push value // - otherwise, extend the height of the plot area - opts._maxHeight = Math.max( + legendObj._maxHeight = Math.max( (isBelowPlotArea || isAbovePlotArea) ? fullLayout.height / 2 : gs.h, 30 ); var toggleRectWidth = 0; - opts._width = 0; - opts._height = 0; - var titleSize = getTitleSize(opts); + legendObj._width = 0; + legendObj._height = 0; + var titleSize = getTitleSize(legendObj); if(isVertical) { traces.each(function(d) { var h = d[0].height; Drawing.setTranslate(this, bw + titleSize[0], - bw + titleSize[1] + opts._height + h / 2 + itemGap + bw + titleSize[1] + legendObj._height + h / 2 + itemGap ); - opts._height += h; - opts._width = Math.max(opts._width, d[0].width); + legendObj._height += h; + legendObj._width = Math.max(legendObj._width, d[0].width); }); - toggleRectWidth = textGap + opts._width; - opts._width += itemGap + textGap + bw2; - opts._height += endPad; + toggleRectWidth = textGap + legendObj._width; + legendObj._width += itemGap + textGap + bw2; + legendObj._height += endPad; if(isGrouped) { groups.each(function(d, i) { - Drawing.setTranslate(this, 0, i * opts.tracegroupgap); + Drawing.setTranslate(this, 0, i * legendObj.tracegroupgap); }); - opts._height += (opts._lgroupsLength - 1) * opts.tracegroupgap; + legendObj._height += (legendObj._lgroupsLength - 1) * legendObj.tracegroupgap; } } else { - var xanchor = getXanchor(opts); - var isLeftOfPlotArea = opts.x < 0 || (opts.x === 0 && xanchor === 'right'); - var isRightOfPlotArea = opts.x > 1 || (opts.x === 1 && xanchor === 'left'); + var xanchor = getXanchor(legendObj); + var isLeftOfPlotArea = legendObj.x < 0 || (legendObj.x === 0 && xanchor === 'right'); + var isRightOfPlotArea = legendObj.x > 1 || (legendObj.x === 1 && xanchor === 'left'); var isBeyondPlotAreaY = isAbovePlotArea || isBelowPlotArea; var hw = fullLayout.width / 2; // - if placed within x-margins, extend the width of the plot area // - else if below/above plot area and anchored in the margin, extend to opposite margin, // - otherwise give it the maximum potential margin-push value - opts._maxWidth = Math.max( + legendObj._maxWidth = Math.max( isLeftOfPlotArea ? ((isBeyondPlotAreaY && xanchor === 'left') ? gs.l + gs.w : hw) : isRightOfPlotArea ? ((isBeyondPlotAreaY && xanchor === 'right') ? gs.r + gs.w : hw) : gs.w, @@ -32681,10 +42494,10 @@ function computeLegendDimensions(gd, groups, traces, opts) { var next = maxWidthInGroup + itemGap; - if((next + bw + groupOffsetX) > opts._maxWidth) { + if((next + bw + groupOffsetX) > legendObj._maxWidth) { maxRowWidth = Math.max(maxRowWidth, groupOffsetX); groupOffsetX = 0; - groupOffsetY += maxGroupHeightInRow + opts.tracegroupgap; + groupOffsetY += maxGroupHeightInRow + traceGroupGap; maxGroupHeightInRow = offsetY; } @@ -32693,11 +42506,11 @@ function computeLegendDimensions(gd, groups, traces, opts) { groupOffsetX += next; }); - opts._width = Math.max(maxRowWidth, groupOffsetX) + bw; - opts._height = groupOffsetY + maxGroupHeightInRow + endPad; + legendObj._width = Math.max(maxRowWidth, groupOffsetX) + bw; + legendObj._height = groupOffsetY + maxGroupHeightInRow + endPad; } else { var nTraces = traces.size(); - var oneRowLegend = (combinedItemWidth + bw2 + (nTraces - 1) * itemGap) < opts._maxWidth; + var oneRowLegend = (combinedItemWidth + bw2 + (nTraces - 1) * itemGap) < legendObj._maxWidth; var maxItemHeightInRow = 0; var offsetX = 0; @@ -32708,11 +42521,11 @@ function computeLegendDimensions(gd, groups, traces, opts) { var w = textGap + d[0].width; var next = (oneRowLegend ? w : maxItemWidth) + itemGap; - if((next + bw + offsetX - itemGap) >= opts._maxWidth) { + if((next + bw + offsetX - itemGap) >= legendObj._maxWidth) { maxRowWidth = Math.max(maxRowWidth, rowWidth); offsetX = 0; offsetY += maxItemHeightInRow; - opts._height += maxItemHeightInRow; + legendObj._height += maxItemHeightInRow; maxItemHeightInRow = 0; } @@ -32727,30 +42540,30 @@ function computeLegendDimensions(gd, groups, traces, opts) { }); if(oneRowLegend) { - opts._width = offsetX + bw2; - opts._height = maxItemHeightInRow + endPad; + legendObj._width = offsetX + bw2; + legendObj._height = maxItemHeightInRow + endPad; } else { - opts._width = Math.max(maxRowWidth, rowWidth) + bw2; - opts._height += maxItemHeightInRow + endPad; + legendObj._width = Math.max(maxRowWidth, rowWidth) + bw2; + legendObj._height += maxItemHeightInRow + endPad; } } } - opts._width = Math.ceil( + legendObj._width = Math.ceil( Math.max( - opts._width + titleSize[0], - opts._titleWidth + 2 * (bw + constants.titlePad) + legendObj._width + titleSize[0], + legendObj._titleWidth + 2 * (bw + constants.titlePad) ) ); - opts._height = Math.ceil( + legendObj._height = Math.ceil( Math.max( - opts._height + titleSize[1], - opts._titleHeight + 2 * (bw + constants.itemGap) + legendObj._height + titleSize[1], + legendObj._titleHeight + 2 * (bw + constants.itemGap) ) ); - opts._effHeight = Math.min(opts._height, opts._maxHeight); + legendObj._effHeight = Math.min(legendObj._height, legendObj._maxHeight); var edits = gd._context.edits; var isEditable = edits.legendText || edits.legendPosition; @@ -32765,41 +42578,33 @@ function computeLegendDimensions(gd, groups, traces, opts) { function expandMargin(gd) { var fullLayout = gd._fullLayout; - var opts = fullLayout.legend; - var xanchor = getXanchor(opts); - var yanchor = getYanchor(opts); + var legendObj = fullLayout.legend; + var xanchor = getXanchor(legendObj); + var yanchor = getYanchor(legendObj); return Plots.autoMargin(gd, 'legend', { - x: opts.x, - y: opts.y, - l: opts._width * (FROM_TL[xanchor]), - r: opts._width * (FROM_BR[xanchor]), - b: opts._effHeight * (FROM_BR[yanchor]), - t: opts._effHeight * (FROM_TL[yanchor]) + x: legendObj.x, + y: legendObj.y, + l: legendObj._width * (FROM_TL[xanchor]), + r: legendObj._width * (FROM_BR[xanchor]), + b: legendObj._effHeight * (FROM_BR[yanchor]), + t: legendObj._effHeight * (FROM_TL[yanchor]) }); } -function getXanchor(opts) { - return Lib.isRightAnchor(opts) ? 'right' : - Lib.isCenterAnchor(opts) ? 'center' : +function getXanchor(legendObj) { + return Lib.isRightAnchor(legendObj) ? 'right' : + Lib.isCenterAnchor(legendObj) ? 'center' : 'left'; } -function getYanchor(opts) { - return Lib.isBottomAnchor(opts) ? 'bottom' : - Lib.isMiddleAnchor(opts) ? 'middle' : +function getYanchor(legendObj) { + return Lib.isBottomAnchor(legendObj) ? 'bottom' : + Lib.isMiddleAnchor(legendObj) ? 'middle' : 'top'; } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/events":226,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"./constants":156,"./get_legend_data":159,"./handle_click":160,"./helpers":161,"./style":163,"d3":21}],159:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/events":278,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"./constants":206,"./get_legend_data":209,"./handle_click":210,"./helpers":211,"./style":213,"@plotly/d3":20}],209:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -32813,7 +42618,6 @@ module.exports = function getLegendData(calcdata, opts) { var lgroupi = 0; var maxNameLength = 0; var i, j; - var main = opts._main; function addOneItem(legendGroup, legendItem) { // each '' legend group is treated as a separate group @@ -32839,7 +42643,7 @@ module.exports = function getLegendData(calcdata, opts) { var trace = cd0.trace; var lgroup = trace.legendgroup; - if(main && (!trace.visible || !trace.showlegend)) continue; + if(!opts._inHover && (!trace.visible || !trace.showlegend)) continue; if(Registry.traceIs(trace, 'pie-like')) { if(!slicesShown[lgroup]) slicesShown[lgroup] = {}; @@ -32900,15 +42704,7 @@ module.exports = function getLegendData(calcdata, opts) { return legendData; }; -},{"../../registry":326,"./helpers":161}],160:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./helpers":211}],210:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -33139,16 +42935,7 @@ module.exports = function handleClick(g, gd, numClicks) { } }; -},{"../../lib":233,"../../registry":326}],161:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373}],211:[function(_dereq_,module,exports){ 'use strict'; exports.isGrouped = function isGrouped(legendLayout) { @@ -33163,16 +42950,7 @@ exports.isReversed = function isReversed(legendLayout) { return (legendLayout.traceorder || '').indexOf('reversed') !== -1; }; -},{}],162:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],212:[function(_dereq_,module,exports){ 'use strict'; @@ -33187,18 +42965,10 @@ module.exports = { style: _dereq_('./style') }; -},{"./attributes":155,"./defaults":157,"./draw":158,"./style":163}],163:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":205,"./defaults":207,"./draw":208,"./style":213}],213:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -33293,13 +43063,16 @@ module.exports = function style(s, gd, legend) { .each(styleOHLC); function styleLines(d) { + var styleGuide = getStyleGuide(d); + var showFill = styleGuide.showFill; + var showLine = styleGuide.showLine; + var showGradientLine = styleGuide.showGradientLine; + var showGradientFill = styleGuide.showGradientFill; + var anyFill = styleGuide.anyFill; + var anyLine = styleGuide.anyLine; + var d0 = d[0]; var trace = d0.trace; - var showFill = trace.visible && trace.fill && trace.fill !== 'none'; - var showLine = subTypes.hasLines(trace); - var contours = trace.contours; - var showGradientLine = false; - var showGradientFill = false; var dMod, tMod; var cOpts = extractOpts(trace); @@ -33325,28 +43098,10 @@ module.exports = function style(s, gd, legend) { } }; - if(contours) { - var coloring = contours.coloring; - - if(coloring === 'lines') { - showGradientLine = true; - } else { - showLine = coloring === 'none' || coloring === 'heatmap' || contours.showlines; - } - - if(contours.type === 'constraint') { - showFill = contours._operation !== '='; - } else if(coloring === 'fill' || coloring === 'heatmap') { - showGradientFill = true; - } - } - // with fill and no markers or text, move the line and fill up a bit // so it's more centered - var markersOrText = subTypes.hasMarkers(trace) || subTypes.hasText(trace); - var anyFill = showFill || showGradientFill; - var anyLine = showLine || showGradientLine; - var pathStart = (markersOrText || !anyFill) ? 'M5,0' : + + var pathStart = (subTypes.hasMarkers(trace) || !anyFill) ? 'M5,0' : // with a line leave it slightly below center, to leave room for the // line thickness and because the line is usually more prominent anyLine ? 'M5,-2' : 'M5,-3'; @@ -33382,11 +43137,15 @@ module.exports = function style(s, gd, legend) { } function stylePoints(d) { + var styleGuide = getStyleGuide(d); + var anyFill = styleGuide.anyFill; + var anyLine = styleGuide.anyLine; + var showLine = styleGuide.showLine; + var showMarker = styleGuide.showMarker; + var d0 = d[0]; var trace = d0.trace; - var showMarkers = subTypes.hasMarkers(trace); - var showText = subTypes.hasText(trace); - var showLines = subTypes.hasLines(trace); + var showText = !showMarker && !anyLine && !anyFill && subTypes.hasText(trace); var dMod, tMod; // 'scatter3d' don't use gd.calcdata, @@ -33415,11 +43174,11 @@ module.exports = function style(s, gd, legend) { } // constrain text, markers, etc so they'll fit on the legend - if(showMarkers || showText || showLines) { + if(showMarker || showText || showLine) { var dEdit = {}; var tEdit = {}; - if(showMarkers) { + if(showMarker) { dEdit.mc = boundVal('marker.color', pickFirst); dEdit.mx = boundVal('marker.symbol', pickFirst); dEdit.mo = boundVal('marker.opacity', Lib.mean, [0.2, 1]); @@ -33436,7 +43195,7 @@ module.exports = function style(s, gd, legend) { tEdit.marker.size = ms; } - if(showLines) { + if(showLine) { tEdit.line = { width: boundVal('line.width', pickFirst, [0, 10], CST_LINE_WIDTH) }; @@ -33463,7 +43222,7 @@ module.exports = function style(s, gd, legend) { var ptgroup = d3.select(this).select('g.legendpoints'); var pts = ptgroup.selectAll('path.scatterpts') - .data(showMarkers ? dMod : []); + .data(showMarker ? dMod : []); // make sure marker is on the bottom, in case it enters after text pts.enter().insert('path', ':first-child') .classed('scatterpts', true) @@ -33473,7 +43232,7 @@ module.exports = function style(s, gd, legend) { // 'mrc' is set in pointStyle and used in textPointStyle: // constrain it here - if(showMarkers) dMod[0].mrc = 3; + if(showMarker) dMod[0].mrc = 3; var txt = ptgroup.selectAll('g.pointtext') .data(showText ? dMod : []); @@ -33555,8 +43314,23 @@ module.exports = function style(s, gd, legend) { var d0 = d[0]; var w = boundLineWidth(d0.mlw, marker.line, MAX_MARKER_LINE_WIDTH, CST_MARKER_LINE_WIDTH); - p.style('stroke-width', w + 'px') - .call(Color.fill, d0.mc || marker.color); + p.style('stroke-width', w + 'px'); + + var fillColor = d0.mc || marker.color; + + var markerPattern = marker.pattern; + var patternShape = markerPattern && Drawing.getPatternAttr(markerPattern.shape, 0, ''); + + if(patternShape) { + var patternBGColor = Drawing.getPatternAttr(markerPattern.bgcolor, 0, null); + var patternSize = Math.min(12, Drawing.getPatternAttr(markerPattern.size, 0, 8)); + var patternSolidity = Drawing.getPatternAttr(markerPattern.solidity, 0, 0.3); + var patternID = 'legend-' + trace.uid; + p.call(Drawing.pattern, gd, patternID, patternShape, patternBGColor, + fillColor, patternSize, patternSolidity, 'fill'); + } else { + p.call(Color.fill, fillColor); + } if(w) Color.stroke(p, d0.mlc || markerLine.color); }); @@ -33820,15 +43594,88 @@ function getGradientDirection(reversescale, isRadial) { return str + (reversescale ? '' : 'reversed'); } -},{"../../lib":233,"../../registry":326,"../../traces/pie/helpers":439,"../../traces/pie/style_one":445,"../../traces/scatter/subtypes":472,"../color":105,"../colorscale/helpers":116,"../drawing":127,"./constants":156,"d3":21}],164:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +function getStyleGuide(d) { + var trace = d[0].trace; + var contours = trace.contours; + var showLine = subTypes.hasLines(trace); + var showMarker = subTypes.hasMarkers(trace); + var showFill = trace.visible && trace.fill && trace.fill !== 'none'; + var showGradientLine = false; + var showGradientFill = false; + + if(contours) { + var coloring = contours.coloring; + + if(coloring === 'lines') { + showGradientLine = true; + } else { + showLine = coloring === 'none' || coloring === 'heatmap' || contours.showlines; + } + + if(contours.type === 'constraint') { + showFill = contours._operation !== '='; + } else if(coloring === 'fill' || coloring === 'heatmap') { + showGradientFill = true; + } + } + + return { + showMarker: showMarker, + showLine: showLine, + showFill: showFill, + showGradientLine: showGradientLine, + showGradientFill: showGradientFill, + anyLine: showLine || showGradientLine, + anyFill: showFill || showGradientFill, + }; +} + +},{"../../lib":285,"../../registry":373,"../../traces/pie/helpers":486,"../../traces/pie/style_one":492,"../../traces/scatter/subtypes":519,"../color":155,"../colorscale/helpers":166,"../drawing":177,"./constants":206,"@plotly/d3":20}],214:[function(_dereq_,module,exports){ +'use strict'; + +var constants = _dereq_('./constants'); + +module.exports = { + editType: 'modebar', + + orientation: { + valType: 'enumerated', + values: ['v', 'h'], + dflt: 'h', + editType: 'modebar', + }, + bgcolor: { + valType: 'color', + editType: 'modebar', + }, + color: { + valType: 'color', + editType: 'modebar', + }, + activecolor: { + valType: 'color', + editType: 'modebar', + }, + uirevision: { + valType: 'any', + editType: 'none', + }, + add: { + valType: 'string', + arrayOk: true, + dflt: '', + editType: 'modebar', + }, + remove: { + valType: 'string', + arrayOk: true, + dflt: '', + editType: 'modebar', + } +}; + +},{"./constants":216}],215:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -33923,6 +43770,7 @@ modeBarButtons.editInChartStudio = { modeBarButtons.zoom2d = { name: 'zoom2d', + _cat: 'zoom', title: function(gd) { return _(gd, 'Zoom'); }, attr: 'dragmode', val: 'zoom', @@ -33932,6 +43780,7 @@ modeBarButtons.zoom2d = { modeBarButtons.pan2d = { name: 'pan2d', + _cat: 'pan', title: function(gd) { return _(gd, 'Pan'); }, attr: 'dragmode', val: 'pan', @@ -33941,6 +43790,7 @@ modeBarButtons.pan2d = { modeBarButtons.select2d = { name: 'select2d', + _cat: 'select', title: function(gd) { return _(gd, 'Box Select'); }, attr: 'dragmode', val: 'select', @@ -33950,6 +43800,7 @@ modeBarButtons.select2d = { modeBarButtons.lasso2d = { name: 'lasso2d', + _cat: 'lasso', title: function(gd) { return _(gd, 'Lasso Select'); }, attr: 'dragmode', val: 'lasso', @@ -34011,6 +43862,7 @@ modeBarButtons.eraseshape = { modeBarButtons.zoomIn2d = { name: 'zoomIn2d', + _cat: 'zoomin', title: function(gd) { return _(gd, 'Zoom in'); }, attr: 'zoom', val: 'in', @@ -34020,6 +43872,7 @@ modeBarButtons.zoomIn2d = { modeBarButtons.zoomOut2d = { name: 'zoomOut2d', + _cat: 'zoomout', title: function(gd) { return _(gd, 'Zoom out'); }, attr: 'zoom', val: 'out', @@ -34029,6 +43882,7 @@ modeBarButtons.zoomOut2d = { modeBarButtons.autoScale2d = { name: 'autoScale2d', + _cat: 'autoscale', title: function(gd) { return _(gd, 'Autoscale'); }, attr: 'zoom', val: 'auto', @@ -34038,6 +43892,7 @@ modeBarButtons.autoScale2d = { modeBarButtons.resetScale2d = { name: 'resetScale2d', + _cat: 'resetscale', title: function(gd) { return _(gd, 'Reset axes'); }, attr: 'zoom', val: 'reset', @@ -34047,6 +43902,7 @@ modeBarButtons.resetScale2d = { modeBarButtons.hoverClosestCartesian = { name: 'hoverClosestCartesian', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Show closest data on hover'); }, attr: 'hovermode', val: 'closest', @@ -34057,6 +43913,7 @@ modeBarButtons.hoverClosestCartesian = { modeBarButtons.hoverCompareCartesian = { name: 'hoverCompareCartesian', + _cat: 'hoverCompare', title: function(gd) { return _(gd, 'Compare data on hover'); }, attr: 'hovermode', val: function(gd) { @@ -34140,6 +43997,7 @@ function handleCartesian(gd, ev) { modeBarButtons.zoom3d = { name: 'zoom3d', + _cat: 'zoom', title: function(gd) { return _(gd, 'Zoom'); }, attr: 'scene.dragmode', val: 'zoom', @@ -34149,6 +44007,7 @@ modeBarButtons.zoom3d = { modeBarButtons.pan3d = { name: 'pan3d', + _cat: 'pan', title: function(gd) { return _(gd, 'Pan'); }, attr: 'scene.dragmode', val: 'pan', @@ -34196,6 +44055,7 @@ function handleDrag3d(gd, ev) { modeBarButtons.resetCameraDefault3d = { name: 'resetCameraDefault3d', + _cat: 'resetCameraDefault', title: function(gd) { return _(gd, 'Reset camera to default'); }, attr: 'resetDefault', icon: Icons.home, @@ -34204,6 +44064,7 @@ modeBarButtons.resetCameraDefault3d = { modeBarButtons.resetCameraLastSave3d = { name: 'resetCameraLastSave3d', + _cat: 'resetCameraLastSave', title: function(gd) { return _(gd, 'Reset camera to last save'); }, attr: 'resetLastSave', icon: Icons.movie, @@ -34253,6 +44114,7 @@ function handleCamera3d(gd, ev) { modeBarButtons.hoverClosest3d = { name: 'hoverClosest3d', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: null, @@ -34307,6 +44169,7 @@ function handleHover3d(gd, ev) { modeBarButtons.zoomInGeo = { name: 'zoomInGeo', + _cat: 'zoomin', title: function(gd) { return _(gd, 'Zoom in'); }, attr: 'zoom', val: 'in', @@ -34316,6 +44179,7 @@ modeBarButtons.zoomInGeo = { modeBarButtons.zoomOutGeo = { name: 'zoomOutGeo', + _cat: 'zoomout', title: function(gd) { return _(gd, 'Zoom out'); }, attr: 'zoom', val: 'out', @@ -34325,6 +44189,7 @@ modeBarButtons.zoomOutGeo = { modeBarButtons.resetGeo = { name: 'resetGeo', + _cat: 'reset', title: function(gd) { return _(gd, 'Reset'); }, attr: 'reset', val: null, @@ -34334,6 +44199,7 @@ modeBarButtons.resetGeo = { modeBarButtons.hoverClosestGeo = { name: 'hoverClosestGeo', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: null, @@ -34369,6 +44235,7 @@ function handleGeo(gd, ev) { modeBarButtons.hoverClosestGl2d = { name: 'hoverClosestGl2d', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: null, @@ -34380,6 +44247,7 @@ modeBarButtons.hoverClosestGl2d = { modeBarButtons.hoverClosestPie = { name: 'hoverClosestPie', + _cat: 'hoverclosest', title: function(gd) { return _(gd, 'Toggle show closest data on hover'); }, attr: 'hovermode', val: 'closest', @@ -34492,6 +44360,7 @@ function setSpikelineVisibility(gd) { modeBarButtons.resetViewMapbox = { name: 'resetViewMapbox', + _cat: 'resetView', title: function(gd) { return _(gd, 'Reset view'); }, attr: 'reset', icon: Icons.home, @@ -34502,6 +44371,7 @@ modeBarButtons.resetViewMapbox = { modeBarButtons.zoomInMapbox = { name: 'zoomInMapbox', + _cat: 'zoomin', title: function(gd) { return _(gd, 'Zoom in'); }, attr: 'zoom', val: 'in', @@ -34511,6 +44381,7 @@ modeBarButtons.zoomInMapbox = { modeBarButtons.zoomOutMapbox = { name: 'zoomOutMapbox', + _cat: 'zoomout', title: function(gd) { return _(gd, 'Zoom out'); }, attr: 'zoom', val: 'out', @@ -34556,30 +44427,89 @@ function resetView(gd, subplotType) { Registry.call('_guiRelayout', gd, aObj); } -},{"../../fonts/ploticon":216,"../../lib":233,"../../plots/cartesian/axis_ids":282,"../../plots/plots":313,"../../registry":326,"../shapes/draw":186}],165:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../fonts/ploticon":268,"../../lib":285,"../../plots/cartesian/axis_ids":334,"../../plots/plots":366,"../../registry":373,"../shapes/draw":239}],216:[function(_dereq_,module,exports){ 'use strict'; -exports.manage = _dereq_('./manage'); +var modeBarButtons = _dereq_('./buttons'); +var buttonList = Object.keys(modeBarButtons); -},{"./manage":166}],166:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +var DRAW_MODES = [ + 'drawline', + 'drawopenpath', + 'drawclosedpath', + 'drawcircle', + 'drawrect', + 'eraseshape' +]; +var backButtons = [ + 'v1hovermode', + 'hoverclosest', + 'hovercompare', + 'togglehover', + 'togglespikelines' +].concat(DRAW_MODES); +var foreButtons = []; +var addToForeButtons = function(b) { + if(backButtons.indexOf(b._cat || b.name) !== -1) return; + // for convenience add lowercase shotname e.g. zoomin as well fullname zoomInGeo + var name = b.name; + var _cat = (b._cat || b.name).toLowerCase(); + if(foreButtons.indexOf(name) === -1) foreButtons.push(name); + if(foreButtons.indexOf(_cat) === -1) foreButtons.push(_cat); +}; +buttonList.forEach(function(k) { + addToForeButtons(modeBarButtons[k]); +}); +foreButtons.sort(); + +module.exports = { + DRAW_MODES: DRAW_MODES, + backButtons: backButtons, + foreButtons: foreButtons +}; + +},{"./buttons":215}],217:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../../lib'); +var Color = _dereq_('../color'); +var Template = _dereq_('../../plot_api/plot_template'); +var attributes = _dereq_('./attributes'); + +module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { + var containerIn = layoutIn.modebar || {}; + var containerOut = Template.newContainer(layoutOut, 'modebar'); + + function coerce(attr, dflt) { + return Lib.coerce(containerIn, containerOut, attributes, attr, dflt); + } + + coerce('orientation'); + coerce('bgcolor', Color.addOpacity(layoutOut.paper_bgcolor, 0.5)); + var defaultColor = Color.contrast(Color.rgb(layoutOut.modebar.bgcolor)); + coerce('color', Color.addOpacity(defaultColor, 0.3)); + coerce('activecolor', Color.addOpacity(defaultColor, 0.7)); + coerce('uirevision', layoutOut.uirevision); + coerce('add'); + coerce('remove'); +}; + +},{"../../lib":285,"../../plot_api/plot_template":320,"../color":155,"./attributes":214}],218:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = { + moduleType: 'component', + name: 'modebar', + + layoutAttributes: _dereq_('./attributes'), + supplyLayoutDefaults: _dereq_('./defaults'), + + manage: _dereq_('./manage') +}; + +},{"./attributes":214,"./defaults":217,"./manage":219}],219:[function(_dereq_,module,exports){ 'use strict'; var axisIds = _dereq_('../../plots/cartesian/axis_ids'); @@ -34589,6 +44519,7 @@ var isUnifiedHover = _dereq_('../fx/helpers').isUnifiedHover; var createModeBar = _dereq_('./modebar'); var modeBarButtons = _dereq_('./buttons'); +var DRAW_MODES = _dereq_('./constants').DRAW_MODES; /** * ModeBar wrapper around 'create' and 'update', @@ -34640,22 +44571,47 @@ module.exports = function manageModeBar(gd) { else fullLayout._modeBar = createModeBar(gd, buttonGroups); }; -var DRAW_MODES = [ - 'drawline', - 'drawopenpath', - 'drawclosedpath', - 'drawcircle', - 'drawrect', - 'eraseshape' -]; - // logic behind which buttons are displayed by default function getButtonGroups(gd) { var fullLayout = gd._fullLayout; var fullData = gd._fullData; var context = gd._context; - var buttonsToRemove = context.modeBarButtonsToRemove; - var buttonsToAdd = context.modeBarButtonsToAdd; + + function match(name, B) { + if(typeof B === 'string') { + if(B.toLowerCase() === name.toLowerCase()) return true; + } else { + var v0 = B.name; + var v1 = (B._cat || B.name); + + if(v0 === name || v1 === name.toLowerCase()) return true; + } + return false; + } + + var layoutAdd = fullLayout.modebar.add; + if(typeof layoutAdd === 'string') layoutAdd = [layoutAdd]; + + var layoutRemove = fullLayout.modebar.remove; + if(typeof layoutRemove === 'string') layoutRemove = [layoutRemove]; + + var buttonsToAdd = context.modeBarButtonsToAdd.concat( + layoutAdd.filter(function(e) { + for(var i = 0; i < context.modeBarButtonsToRemove.length; i++) { + if(match(e, context.modeBarButtonsToRemove[i])) return false; + } + return true; + }) + ); + + var buttonsToRemove = context.modeBarButtonsToRemove.concat( + layoutRemove.filter(function(e) { + for(var i = 0; i < context.modeBarButtonsToAdd.length; i++) { + if(match(e, context.modeBarButtonsToAdd[i])) return false; + } + return true; + }) + ); var hasCartesian = fullLayout._has('cartesian'); var hasGL3D = fullLayout._has('gl3d'); @@ -34678,9 +44634,20 @@ function getButtonGroups(gd) { var out = []; for(var i = 0; i < newGroup.length; i++) { - var button = newGroup[i]; - if(buttonsToRemove.indexOf(button) !== -1) continue; - out.push(modeBarButtons[button]); + var name = newGroup[i]; + var B = modeBarButtons[name]; + var v0 = B.name.toLowerCase(); + var v1 = (B._cat || B.name).toLowerCase(); + var found = false; + for(var q = 0; q < buttonsToRemove.length; q++) { + var t = buttonsToRemove[q].toLowerCase(); + if(t === v0 || t === v1) { + found = true; + break; + } + } + if(found) continue; + out.push(modeBarButtons[name]); } groups.push(out); @@ -34752,19 +44719,50 @@ function getButtonGroups(gd) { dragModeGroup.push('select2d', 'lasso2d'); } - // accept pre-defined buttons as string + var enabledHoverGroup = []; + var enableHover = function(a) { + // return if already added + if(enabledHoverGroup.indexOf(a) !== -1) return; + // should be in hoverGroup + if(hoverGroup.indexOf(a) !== -1) { + enabledHoverGroup.push(a); + } + }; if(Array.isArray(buttonsToAdd)) { var newList = []; for(var i = 0; i < buttonsToAdd.length; i++) { var b = buttonsToAdd[i]; if(typeof b === 'string') { + b = b.toLowerCase(); + if(DRAW_MODES.indexOf(b) !== -1) { + // accept pre-defined drag modes i.e. shape drawing features as string if( fullLayout._has('mapbox') || // draw shapes in paper coordinate (could be improved in future to support data coordinate, when there is no pitch) fullLayout._has('cartesian') // draw shapes in data coordinate ) { dragModeGroup.push(b); } + } else if(b === 'togglespikelines') { + enableHover('toggleSpikelines'); + } else if(b === 'togglehover') { + enableHover('toggleHover'); + } else if(b === 'hovercompare') { + enableHover('hoverCompareCartesian'); + } else if(b === 'hoverclosest') { + enableHover('hoverClosestCartesian'); + enableHover('hoverClosestGeo'); + enableHover('hoverClosest3d'); + enableHover('hoverClosestGl2d'); + enableHover('hoverClosestPie'); + } else if(b === 'v1hovermode') { + enableHover('toggleHover'); + enableHover('hoverClosestCartesian'); + enableHover('hoverCompareCartesian'); + enableHover('hoverClosestGeo'); + enableHover('hoverClosest3d'); + enableHover('hoverClosestGl2d'); + enableHover('hoverClosestPie'); } } else newList.push(b); } @@ -34773,7 +44771,7 @@ function getButtonGroups(gd) { addGroup(dragModeGroup); addGroup(zoomGroup.concat(resetGroup)); - addGroup(hoverGroup); + addGroup(enabledHoverGroup); return appendButtonsToGroups(groups, buttonsToAdd); } @@ -34866,19 +44864,10 @@ function fillCustomButton(customButtons) { return customButtons; } -},{"../../plots/cartesian/axis_ids":282,"../../registry":326,"../../traces/scatter/subtypes":472,"../fx/helpers":141,"./buttons":164,"./modebar":167}],167:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian/axis_ids":334,"../../registry":373,"../../traces/scatter/subtypes":519,"../fx/helpers":191,"./buttons":215,"./constants":216,"./modebar":220}],220:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Lib = _dereq_('../../lib'); @@ -35212,15 +45201,7 @@ function createModeBar(gd, buttons) { module.exports = createModeBar; -},{"../../fonts/ploticon":216,"../../lib":233,"d3":21,"fast-isnumeric":23}],168:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../fonts/ploticon":268,"../../lib":285,"@plotly/d3":20,"fast-isnumeric":31}],221:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -35230,51 +45211,38 @@ var templatedArray = _dereq_('../../plot_api/plot_template').templatedArray; var buttonAttrs = templatedArray('button', { visible: { valType: 'boolean', - dflt: true, editType: 'plot', - }, step: { valType: 'enumerated', - values: ['month', 'year', 'day', 'hour', 'minute', 'second', 'all'], dflt: 'month', editType: 'plot', - }, stepmode: { valType: 'enumerated', - values: ['backward', 'todate'], dflt: 'backward', editType: 'plot', - }, count: { valType: 'number', - min: 0, dflt: 1, editType: 'plot', - }, label: { valType: 'string', - editType: 'plot', - }, editType: 'plot', - }); module.exports = { visible: { valType: 'boolean', - editType: 'plot', - }, buttons: buttonAttrs, @@ -35283,80 +45251,55 @@ module.exports = { valType: 'number', min: -2, max: 3, - editType: 'plot', - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'left', - editType: 'plot', - }, y: { valType: 'number', min: -2, max: 3, - editType: 'plot', - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'bottom', - editType: 'plot', - }, font: fontAttrs({ editType: 'plot', - }), bgcolor: { valType: 'color', dflt: colorAttrs.lightLine, - editType: 'plot', - }, activecolor: { valType: 'color', - editType: 'plot', - }, bordercolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'plot', - }, borderwidth: { valType: 'number', min: 0, dflt: 0, - editType: 'plot', - }, editType: 'plot' }; -},{"../../plot_api/plot_template":268,"../../plots/font_attributes":307,"../color/attributes":104}],169:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plot_api/plot_template":320,"../../plots/font_attributes":359,"../color/attributes":154}],222:[function(_dereq_,module,exports){ 'use strict'; @@ -35377,15 +45320,7 @@ module.exports = { darkAmount: 10 }; -},{}],170:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],223:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -35469,18 +45404,10 @@ function getPosDflt(containerOut, layout, counterAxes) { return [containerOut.domain[0], posY + constants.yPad]; } -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/array_container_defaults":274,"../color":105,"./attributes":168,"./constants":169}],171:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/array_container_defaults":326,"../color":155,"./attributes":221,"./constants":222}],224:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Plots = _dereq_('../../plots/plots'); @@ -35724,19 +45651,10 @@ function reposition(gd, buttons, opts, axName, selector) { selector.attr('transform', strTranslate(lx, ly)); } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/cartesian/axis_ids":282,"../../plots/plots":313,"../../registry":326,"../color":105,"../drawing":127,"./constants":169,"./get_update_object":172,"d3":21}],172:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/cartesian/axis_ids":334,"../../plots/plots":366,"../../registry":373,"../color":155,"../drawing":177,"./constants":222,"./get_update_object":225,"@plotly/d3":20}],225:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); module.exports = function getUpdateObject(axisLayout, buttonLayout) { var axName = axisLayout._name; @@ -35778,15 +45696,7 @@ function getXRange(axisLayout, buttonLayout) { return [range0, range1]; } -},{"d3":21}],173:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"@plotly/d3":20}],226:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -35805,15 +45715,7 @@ module.exports = { draw: _dereq_('./draw') }; -},{"./attributes":168,"./defaults":170,"./draw":171}],174:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":221,"./defaults":223,"./draw":224}],227:[function(_dereq_,module,exports){ 'use strict'; var colorAttributes = _dereq_('../color/attributes'); @@ -35822,72 +45724,50 @@ module.exports = { bgcolor: { valType: 'color', dflt: colorAttributes.background, - editType: 'plot', - }, bordercolor: { valType: 'color', dflt: colorAttributes.defaultLine, - editType: 'plot', - }, borderwidth: { valType: 'integer', dflt: 0, min: 0, - editType: 'plot', - }, autorange: { valType: 'boolean', dflt: true, - editType: 'calc', impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - }, range: { valType: 'info_array', - items: [ {valType: 'any', editType: 'calc', impliedEdits: {'^autorange': false}}, {valType: 'any', editType: 'calc', impliedEdits: {'^autorange': false}} ], editType: 'calc', impliedEdits: {'autorange': false}, - }, thickness: { valType: 'number', dflt: 0.15, min: 0, max: 1, - editType: 'plot', - }, visible: { valType: 'boolean', dflt: true, - editType: 'calc', - }, editType: 'calc' }; -},{"../color/attributes":104}],175:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../color/attributes":154}],228:[function(_dereq_,module,exports){ 'use strict'; var listAxes = _dereq_('../../plots/cartesian/axis_ids').list; @@ -35913,15 +45793,7 @@ module.exports = function calcAutorange(gd) { } }; -},{"../../plots/cartesian/autorange":278,"../../plots/cartesian/axis_ids":282,"./constants":176}],176:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/autorange":330,"../../plots/cartesian/axis_ids":334,"./constants":229}],229:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -35969,15 +45841,7 @@ module.exports = { extraPad: 15 }; -},{}],177:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],230:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -36055,18 +45919,10 @@ module.exports = function handleDefaults(layoutIn, layoutOut, axName) { containerOut._input = containerIn; }; -},{"../../lib":233,"../../plot_api/plot_template":268,"../../plots/cartesian/axis_ids":282,"./attributes":174,"./oppaxis_attributes":181}],178:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plot_api/plot_template":320,"../../plots/cartesian/axis_ids":334,"./attributes":227,"./oppaxis_attributes":234}],231:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Plots = _dereq_('../../plots/plots'); @@ -36699,15 +46555,7 @@ function drawGrabbers(rangeSlider, gd, axisOpts, opts) { grabAreaMax.attr('height', opts._height); } -},{"../../lib":233,"../../lib/setcursor":253,"../../plots/cartesian":292,"../../plots/cartesian/axis_ids":282,"../../plots/plots":313,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"../titles":200,"./constants":176,"d3":21}],179:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../lib/setcursor":305,"../../plots/cartesian":344,"../../plots/cartesian/axis_ids":334,"../../plots/plots":366,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"../titles":253,"./constants":229,"@plotly/d3":20}],232:[function(_dereq_,module,exports){ 'use strict'; var axisIDs = _dereq_('../../plots/cartesian/axis_ids'); @@ -36774,15 +46622,7 @@ exports.autoMarginOpts = function(gd, ax) { }; }; -},{"../../constants/alignment":207,"../../lib/svg_text_utils":255,"../../plots/cartesian/axis_ids":282,"./constants":176}],180:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib/svg_text_utils":307,"../../plots/cartesian/axis_ids":334,"./constants":229}],233:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -36813,15 +46653,7 @@ module.exports = { autoMarginOpts: helpers.autoMarginOpts }; -},{"../../lib":233,"./attributes":174,"./calc_autorange":175,"./defaults":177,"./draw":178,"./helpers":179,"./oppaxis_attributes":181}],181:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./attributes":227,"./calc_autorange":228,"./defaults":230,"./draw":231,"./helpers":232,"./oppaxis_attributes":234}],234:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -36834,32 +46666,20 @@ module.exports = { valType: 'enumerated', values: ['auto', 'fixed', 'match'], dflt: 'match', - editType: 'calc', - }, range: { valType: 'info_array', - items: [ {valType: 'any', editType: 'plot'}, {valType: 'any', editType: 'plot'} ], editType: 'plot', - }, editType: 'calc' }; -},{}],182:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],235:[function(_dereq_,module,exports){ 'use strict'; var annAttrs = _dereq_('../annotations/attributes'); @@ -36872,94 +46692,68 @@ var axisPlaceableObjs = _dereq_('../../constants/axis_placeable_objects'); module.exports = templatedArray('shape', { visible: { valType: 'boolean', - dflt: true, editType: 'calc+arraydraw', - }, type: { valType: 'enumerated', values: ['circle', 'rect', 'path', 'line'], - editType: 'calc+arraydraw', - }, layer: { valType: 'enumerated', values: ['below', 'above'], dflt: 'above', - editType: 'arraydraw', - }, xref: extendFlat({}, annAttrs.xref, { - }), xsizemode: { valType: 'enumerated', values: ['scaled', 'pixel'], dflt: 'scaled', - editType: 'calc+arraydraw', - }, xanchor: { valType: 'any', - editType: 'calc+arraydraw', - }, x0: { valType: 'any', - editType: 'calc+arraydraw', - }, x1: { valType: 'any', - editType: 'calc+arraydraw', - }, yref: extendFlat({}, annAttrs.yref, { - }), ysizemode: { valType: 'enumerated', values: ['scaled', 'pixel'], dflt: 'scaled', - editType: 'calc+arraydraw', - }, yanchor: { valType: 'any', - editType: 'calc+arraydraw', - }, y0: { valType: 'any', - editType: 'calc+arraydraw', - }, y1: { valType: 'any', - editType: 'calc+arraydraw', - }, path: { valType: 'string', - editType: 'calc+arraydraw', - }, opacity: { @@ -36967,52 +46761,35 @@ module.exports = templatedArray('shape', { min: 0, max: 1, dflt: 1, - editType: 'arraydraw', - }, line: { color: extendFlat({}, scatterLineAttrs.color, {editType: 'arraydraw'}), width: extendFlat({}, scatterLineAttrs.width, {editType: 'calc+arraydraw'}), dash: extendFlat({}, dash, {editType: 'arraydraw'}), - editType: 'calc+arraydraw' }, fillcolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'arraydraw', - }, fillrule: { valType: 'enumerated', values: ['evenodd', 'nonzero'], dflt: 'evenodd', - editType: 'arraydraw', - }, editable: { valType: 'boolean', - dflt: false, editType: 'calc+arraydraw', - }, editType: 'arraydraw' }); -},{"../../constants/axis_placeable_objects":208,"../../lib/extend":227,"../../plot_api/plot_template":268,"../../traces/scatter/attributes":447,"../annotations/attributes":90,"../drawing/attributes":126}],183:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/axis_placeable_objects":261,"../../lib/extend":279,"../../plot_api/plot_template":320,"../../traces/scatter/attributes":494,"../annotations/attributes":138,"../drawing/attributes":176}],236:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -37124,16 +46901,7 @@ function shapeBounds(ax, v0, v1, path, paramsToUse) { if(max >= min) return [min, max]; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"./constants":184,"./helpers":193}],184:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"./constants":237,"./helpers":246}],237:[function(_dereq_,module,exports){ 'use strict'; @@ -37188,16 +46956,7 @@ module.exports = { } }; -},{}],185:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],238:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -37272,7 +47031,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { var dflt0 = 0.25; var dflt1 = 0.75; - // hack until V2.0 when log has regular range behavior - make it look like other + // hack until V3.0 when log has regular range behavior - make it look like other // ranges to send to coerce, then put it back after // this is all to give reasonable default position behavior on log axes, which is // a pretty unimportant edge case so we could just ignore this. @@ -37319,16 +47078,7 @@ function handleShapeDefaults(shapeIn, shapeOut, fullLayout) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"../../plots/cartesian/axes":279,"./attributes":182,"./helpers":193}],186:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/array_container_defaults":326,"../../plots/cartesian/axes":331,"./attributes":235,"./helpers":246}],239:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -38093,15 +47843,7 @@ function eraseActiveShape(gd) { } } -},{"../../lib":233,"../../lib/setcursor":253,"../../plot_api/plot_template":268,"../../plots/cartesian/axes":279,"../../plots/cartesian/handle_outline":289,"../../registry":326,"../color":105,"../dragelement":124,"../drawing":127,"./constants":184,"./draw_newshape/display_outlines":190,"./draw_newshape/helpers":191,"./helpers":193}],187:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../lib/setcursor":305,"../../plot_api/plot_template":320,"../../plots/cartesian/axes":331,"../../plots/cartesian/handle_outline":341,"../../registry":373,"../color":155,"../dragelement":174,"../drawing":177,"./constants":237,"./draw_newshape/display_outlines":243,"./draw_newshape/helpers":244,"./helpers":246}],240:[function(_dereq_,module,exports){ 'use strict'; var dash = _dereq_('../../drawing/attributes').dash; @@ -38113,63 +47855,48 @@ module.exports = { color: { valType: 'color', editType: 'none', - - }, width: { valType: 'number', min: 0, dflt: 4, - editType: 'none', - }, dash: extendFlat({}, dash, { dflt: 'solid', editType: 'none' }), - editType: 'none' }, fillcolor: { valType: 'color', dflt: 'rgba(0,0,0,0)', - editType: 'none', - }, fillrule: { valType: 'enumerated', values: ['evenodd', 'nonzero'], dflt: 'evenodd', - editType: 'none', - }, opacity: { valType: 'number', min: 0, max: 1, dflt: 1, - editType: 'none', - }, layer: { valType: 'enumerated', values: ['below', 'above'], dflt: 'above', - editType: 'none', - }, drawdirection: { valType: 'enumerated', - values: ['ortho', 'horizontal', 'vertical', 'diagonal'], dflt: 'diagonal', editType: 'none', - }, editType: 'none' @@ -38179,32 +47906,20 @@ module.exports = { fillcolor: { valType: 'color', dflt: 'rgb(255,0,255)', - editType: 'none', - }, opacity: { valType: 'number', min: 0, max: 1, dflt: 0.5, - editType: 'none', - }, editType: 'none' } }; -},{"../../../lib/extend":227,"../../drawing/attributes":126}],188:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../../lib/extend":279,"../../drawing/attributes":176}],241:[function(_dereq_,module,exports){ 'use strict'; var CIRCLE_SIDES = 32; // should be divisible by 4 @@ -38220,16 +47935,7 @@ module.exports = { SQRT2: Math.sqrt(2) }; -},{}],189:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],242:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../color'); @@ -38252,16 +47958,7 @@ module.exports = function supplyDrawNewShapeDefaults(layoutIn, layoutOut, coerce coerce('activeshape.opacity'); }; -},{"../../color":105}],190:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../color":155}],243:[function(_dereq_,module,exports){ 'use strict'; var dragElement = _dereq_('../../dragelement'); @@ -38547,16 +48244,7 @@ function recordPositions(polygonsOut, polygonsIn) { return polygonsOut; } -},{"../../../plots/cartesian/handle_outline":289,"../../../registry":326,"../../dragelement":124,"../../dragelement/helpers":123,"./constants":188,"./helpers":191,"./newshapes":192}],191:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../../plots/cartesian/handle_outline":341,"../../../registry":373,"../../dragelement":174,"../../dragelement/helpers":173,"./constants":241,"./helpers":244,"./newshapes":245}],244:[function(_dereq_,module,exports){ 'use strict'; var parseSvgPath = _dereq_('parse-svg-path'); @@ -38885,16 +48573,7 @@ exports.ellipseOver = function(pos) { }; }; -},{"../../../plots/cartesian/helpers":290,"./constants":188,"parse-svg-path":77}],192:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../../plots/cartesian/helpers":342,"./constants":241,"parse-svg-path":72}],245:[function(_dereq_,module,exports){ 'use strict'; var dragHelpers = _dereq_('../../dragelement/helpers'); @@ -39144,16 +48823,7 @@ function fixDatesForPaths(polygons, xaxis, yaxis) { return polygons; } -},{"../../../plots/cartesian/handle_outline":289,"../../../plots/cartesian/helpers":290,"../../dragelement/helpers":123,"./constants":188,"./helpers":191}],193:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../../plots/cartesian/handle_outline":341,"../../../plots/cartesian/helpers":342,"../../dragelement/helpers":173,"./constants":241,"./helpers":244}],246:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -39165,7 +48835,7 @@ var Lib = _dereq_('../../lib'); // so these have to be specified in terms of the category serial numbers, // but can take fractional values. Other axis types we specify position based on // the actual data values. -// TODO: in V2.0 (when log axis ranges are in data units) range and shape position +// TODO: in V3.0 (when log axis ranges are in data units) range and shape position // will be identical, so rangeToShapePosition and shapePositionToRange can be // removed entirely. @@ -39302,16 +48972,7 @@ exports.makeOptionsAndPlotinfo = function(gd, index) { }; }; -},{"../../lib":233,"./constants":184}],194:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"./constants":237}],247:[function(_dereq_,module,exports){ 'use strict'; var drawModule = _dereq_('./draw'); @@ -39330,15 +48991,7 @@ module.exports = { drawOne: drawModule.drawOne }; -},{"../../plots/cartesian/include_components":291,"./attributes":182,"./calc_autorange":183,"./defaults":185,"./draw":186,"./draw_newshape/defaults":189}],195:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/include_components":343,"./attributes":235,"./calc_autorange":236,"./defaults":238,"./draw":239,"./draw_newshape/defaults":242}],248:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -39352,60 +49005,44 @@ var constants = _dereq_('./constants'); var stepsAttrs = templatedArray('step', { visible: { valType: 'boolean', - dflt: true, - }, method: { valType: 'enumerated', values: ['restyle', 'relayout', 'animate', 'update', 'skip'], dflt: 'restyle', - - }, args: { valType: 'info_array', - freeLength: true, items: [ { valType: 'any' }, { valType: 'any' }, { valType: 'any' } ], - }, label: { valType: 'string', - - }, value: { valType: 'string', - - }, execute: { valType: 'boolean', - dflt: true, - } }); module.exports = overrideAll(templatedArray('slider', { visible: { valType: 'boolean', - dflt: true, - }, active: { valType: 'number', - min: 0, dflt: 0, - }, steps: stepsAttrs, @@ -39413,176 +49050,122 @@ module.exports = overrideAll(templatedArray('slider', { lenmode: { valType: 'enumerated', values: ['fraction', 'pixels'], - dflt: 'fraction', - }, len: { valType: 'number', min: 0, dflt: 1, - - }, x: { valType: 'number', min: -2, max: 3, dflt: 0, - - }, pad: extendDeepAll(padAttrs({editType: 'arraydraw'}), { - }, {t: {dflt: 20}}), xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'left', - - }, y: { valType: 'number', min: -2, max: 3, dflt: 0, - - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'top', - - }, transition: { duration: { valType: 'number', - min: 0, dflt: 150, - }, easing: { valType: 'enumerated', values: animationAttrs.transition.easing.values, - dflt: 'cubic-in-out', - } }, currentvalue: { visible: { valType: 'boolean', - dflt: true, - }, xanchor: { valType: 'enumerated', values: ['left', 'center', 'right'], dflt: 'left', - - }, offset: { valType: 'number', dflt: 10, - - }, prefix: { valType: 'string', - - }, suffix: { valType: 'string', - - }, font: fontAttrs({ - }) }, font: fontAttrs({ - }), activebgcolor: { valType: 'color', - dflt: constants.gripBgActiveColor, - }, bgcolor: { valType: 'color', - dflt: constants.railBgColor, - }, bordercolor: { valType: 'color', dflt: constants.railBorderColor, - - }, borderwidth: { valType: 'number', min: 0, dflt: constants.railBorderWidth, - - }, ticklen: { valType: 'number', min: 0, dflt: constants.tickLength, - - }, tickcolor: { valType: 'color', dflt: constants.tickColor, - - }, tickwidth: { valType: 'number', min: 0, dflt: 1, - - }, minorticklen: { valType: 'number', min: 0, dflt: constants.minorTickLength, - - } }), 'arraydraw', 'from-root'); -},{"../../lib/extend":227,"../../plot_api/edit_types":261,"../../plot_api/plot_template":268,"../../plots/animation_attributes":273,"../../plots/font_attributes":307,"../../plots/pad_attributes":312,"./constants":196}],196:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/extend":279,"../../plot_api/edit_types":313,"../../plot_api/plot_template":320,"../../plots/animation_attributes":325,"../../plots/font_attributes":359,"../../plots/pad_attributes":365,"./constants":249}],249:[function(_dereq_,module,exports){ 'use strict'; @@ -39667,15 +49250,7 @@ module.exports = { currentValueInset: 0, }; -},{}],197:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],250:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -39782,18 +49357,10 @@ function stepDefaults(valueIn, valueOut) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"./attributes":195,"./constants":196}],198:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/array_container_defaults":326,"./attributes":248,"./constants":249}],251:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Plots = _dereq_('../../plots/plots'); var Color = _dereq_('../color'); @@ -40413,15 +49980,7 @@ function drawRail(sliderGroup, sliderOpts) { ); } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/svg_text_utils":255,"../../plot_api/plot_template":268,"../../plots/plots":313,"../color":105,"../drawing":127,"./constants":196,"d3":21}],199:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/svg_text_utils":307,"../../plot_api/plot_template":320,"../../plots/plots":366,"../color":155,"../drawing":177,"./constants":249,"@plotly/d3":20}],252:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -40436,19 +49995,10 @@ module.exports = { draw: _dereq_('./draw') }; -},{"./attributes":195,"./constants":196,"./defaults":197,"./draw":198}],200:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./attributes":248,"./constants":249,"./defaults":250,"./draw":251}],253:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Plots = _dereq_('../../plots/plots'); @@ -40704,15 +50254,7 @@ module.exports = { draw: draw }; -},{"../../constants/alignment":207,"../../constants/interactions":211,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../../registry":326,"../color":105,"../drawing":127,"d3":21,"fast-isnumeric":23}],201:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../constants/interactions":264,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../../registry":373,"../color":155,"../drawing":177,"@plotly/d3":20,"fast-isnumeric":31}],254:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -40725,49 +50267,37 @@ var templatedArray = _dereq_('../../plot_api/plot_template').templatedArray; var buttonsAttrs = templatedArray('button', { visible: { valType: 'boolean', - - }, method: { valType: 'enumerated', values: ['restyle', 'relayout', 'animate', 'update', 'skip'], dflt: 'restyle', - - }, args: { valType: 'info_array', - freeLength: true, items: [ {valType: 'any'}, {valType: 'any'}, {valType: 'any'} ], - }, args2: { valType: 'info_array', - freeLength: true, items: [ {valType: 'any'}, {valType: 'any'}, {valType: 'any'} ], - }, label: { valType: 'string', - dflt: '', - }, execute: { valType: 'boolean', - dflt: true, - } }); @@ -40776,39 +50306,29 @@ module.exports = overrideAll(templatedArray('updatemenu', { visible: { valType: 'boolean', - - }, type: { valType: 'enumerated', values: ['dropdown', 'buttons'], dflt: 'dropdown', - - }, direction: { valType: 'enumerated', values: ['left', 'right', 'up', 'down'], dflt: 'down', - - }, active: { valType: 'integer', - min: -1, dflt: 0, - }, showactive: { valType: 'boolean', - dflt: true, - }, buttons: buttonsAttrs, @@ -40818,71 +50338,46 @@ module.exports = overrideAll(templatedArray('updatemenu', { min: -2, max: 3, dflt: -0.05, - - }, xanchor: { valType: 'enumerated', values: ['auto', 'left', 'center', 'right'], dflt: 'right', - - }, y: { valType: 'number', min: -2, max: 3, dflt: 1, - - }, yanchor: { valType: 'enumerated', values: ['auto', 'top', 'middle', 'bottom'], dflt: 'top', - - }, pad: extendFlat(padAttrs({editType: 'arraydraw'}), { - }), font: fontAttrs({ - }), bgcolor: { valType: 'color', - - }, bordercolor: { valType: 'color', dflt: colorAttrs.borderLine, - - }, borderwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'arraydraw', - } }), 'arraydraw', 'from-root'); -},{"../../lib/extend":227,"../../plot_api/edit_types":261,"../../plot_api/plot_template":268,"../../plots/font_attributes":307,"../../plots/pad_attributes":312,"../color/attributes":104}],202:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/extend":279,"../../plot_api/edit_types":313,"../../plot_api/plot_template":320,"../../plots/font_attributes":359,"../../plots/pad_attributes":365,"../color/attributes":154}],255:[function(_dereq_,module,exports){ 'use strict'; @@ -40954,15 +50449,7 @@ module.exports = { } }; -},{}],203:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],256:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -41037,19 +50524,10 @@ function buttonDefaults(buttonIn, buttonOut) { } } -},{"../../lib":233,"../../plots/array_container_defaults":274,"./attributes":201,"./constants":202}],204:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/array_container_defaults":326,"./attributes":254,"./constants":255}],257:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Plots = _dereq_('../../plots/plots'); var Color = _dereq_('../color'); @@ -41688,22 +51166,14 @@ function removeAllButtons(gButton, newMenuIndexAttr) { .selectAll('g.' + constants.dropdownButtonClassName).remove(); } -},{"../../constants/alignment":207,"../../lib":233,"../../lib/svg_text_utils":255,"../../plot_api/plot_template":268,"../../plots/plots":313,"../color":105,"../drawing":127,"./constants":202,"./scrollbox":206,"d3":21}],205:[function(_dereq_,module,exports){ -arguments[4][199][0].apply(exports,arguments) -},{"./attributes":201,"./constants":202,"./defaults":203,"./draw":204,"dup":199}],206:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../lib":285,"../../lib/svg_text_utils":307,"../../plot_api/plot_template":320,"../../plots/plots":366,"../color":155,"../drawing":177,"./constants":255,"./scrollbox":259,"@plotly/d3":20}],258:[function(_dereq_,module,exports){ +arguments[4][252][0].apply(exports,arguments) +},{"./attributes":254,"./constants":255,"./defaults":256,"./draw":257,"dup":252}],259:[function(_dereq_,module,exports){ 'use strict'; module.exports = ScrollBox; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../color'); var Drawing = _dereq_('../drawing'); @@ -42155,15 +51625,7 @@ ScrollBox.prototype.setTranslate = function setTranslate(translateX, translateY) } }; -},{"../../lib":233,"../color":105,"../drawing":127,"d3":21}],207:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../color":155,"../drawing":177,"@plotly/d3":20}],260:[function(_dereq_,module,exports){ 'use strict'; // fraction of some size to get to a named position @@ -42220,16 +51682,7 @@ module.exports = { } }; -},{}],208:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],261:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42252,15 +51705,7 @@ module.exports = { } }; -},{}],209:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],262:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42268,15 +51713,7 @@ module.exports = { DATE_FORMAT_LINK: 'https://github.com/d3/d3-time-format#locale_format' }; -},{}],210:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],263:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42306,15 +51743,7 @@ module.exports = { } }; -},{}],211:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],264:[function(_dereq_,module,exports){ 'use strict'; @@ -42329,15 +51758,7 @@ module.exports = { DESELECTDIM: 0.2 }; -},{}],212:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],265:[function(_dereq_,module,exports){ 'use strict'; @@ -42355,7 +51776,7 @@ module.exports = { * to avoid glitches: Make sure that even when you multiply it by the * number of pixels on a giant screen it still works */ - FP_SAFE: Number.MAX_VALUE / 10000, + FP_SAFE: Number.MAX_VALUE * 1e-4, /* * conversion of date units to milliseconds @@ -42402,16 +51823,7 @@ module.exports = { MINUS_SIGN: '\u2212' }; -},{}],213:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],266:[function(_dereq_,module,exports){ 'use strict'; @@ -42426,28 +51838,17 @@ exports.svgAttrs = { 'xmlns:xlink': exports.xlink }; -},{}],214:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],267:[function(_dereq_,module,exports){ 'use strict'; exports.version = _dereq_('./version').version; // inject promise polyfill -_dereq_('es6-promise').polyfill(); +_dereq_('native-promise-only'); // inject plot css _dereq_('../build/plotcss'); -// inject default MathJax config -_dereq_('./fonts/mathjax_config')(); - // include registry module and expose register method var Registry = _dereq_('./registry'); var register = exports.register = Registry.register; @@ -42484,7 +51885,8 @@ register([ _dereq_('./components/grid'), _dereq_('./components/errorbars'), _dereq_('./components/colorscale'), - _dereq_('./components/colorbar') + _dereq_('./components/colorbar'), + _dereq_('./components/modebar') ]); // locales en and en-US are required for default behavior @@ -42503,55 +51905,24 @@ if(window.PlotlyLocales && Array.isArray(window.PlotlyLocales)) { exports.Icons = _dereq_('./fonts/ploticon'); // unofficial 'beta' plot methods, use at your own risk -exports.Plots = _dereq_('./plots/plots'); -exports.Fx = _dereq_('./components/fx'); +var Fx = _dereq_('./components/fx'); +var Plots = _dereq_('./plots/plots'); + +exports.Plots = { + resize: Plots.resize, + graphJson: Plots.graphJson, + sendDataToCloud: Plots.sendDataToCloud +}; +exports.Fx = { + hover: Fx.hover, + unhover: Fx.unhover, + loneHover: Fx.loneHover, + loneUnhover: Fx.loneUnhover +}; exports.Snapshot = _dereq_('./snapshot'); exports.PlotSchema = _dereq_('./plot_api/plot_schema'); -exports.Queue = _dereq_('./lib/queue'); - -// export d3 used in the bundle -exports.d3 = _dereq_('d3'); - -},{"../build/plotcss":1,"./components/annotations":98,"./components/annotations3d":103,"./components/colorbar":111,"./components/colorscale":117,"./components/errorbars":133,"./components/fx":145,"./components/grid":149,"./components/images":154,"./components/legend":162,"./components/rangeselector":173,"./components/rangeslider":180,"./components/shapes":194,"./components/sliders":199,"./components/updatemenus":205,"./fonts/mathjax_config":215,"./fonts/ploticon":216,"./lib/queue":248,"./locale-en":259,"./locale-en-us":258,"./plot_api":263,"./plot_api/plot_schema":267,"./plots/plots":313,"./registry":326,"./snapshot":331,"./traces/scatter":459,"./version":494,"d3":21,"es6-promise":22}],215:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -/* global MathJax:false */ - -module.exports = function() { - if(typeof MathJax !== 'undefined') { - var globalConfig = (window.PlotlyConfig || {}).MathJaxConfig !== 'local'; - - if(globalConfig) { - MathJax.Hub.Config({ - messageStyle: 'none', - skipStartupTypeset: true, - displayAlign: 'left', - tex2jax: { - inlineMath: [['$', '$'], ['\\(', '\\)']] - } - }); - MathJax.Hub.Configured(); - } - } -}; - -},{}],216:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../build/plotcss":1,"./components/annotations":146,"./components/annotations3d":151,"./components/colorbar":161,"./components/colorscale":167,"./components/errorbars":183,"./components/fx":195,"./components/grid":199,"./components/images":204,"./components/legend":212,"./components/modebar":218,"./components/rangeselector":226,"./components/rangeslider":233,"./components/shapes":247,"./components/sliders":252,"./components/updatemenus":258,"./fonts/ploticon":268,"./locale-en":311,"./locale-en-us":310,"./plot_api":315,"./plot_api/plot_schema":319,"./plots/plots":366,"./registry":373,"./snapshot":378,"./traces/scatter":506,"./version":546,"native-promise-only":70}],268:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -42723,16 +52094,7 @@ module.exports = { } }; -},{}],217:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],269:[function(_dereq_,module,exports){ 'use strict'; @@ -42787,15 +52149,7 @@ exports.isBottomAnchor = function isBottomAnchor(opts) { ); }; -},{}],218:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],270:[function(_dereq_,module,exports){ 'use strict'; var modModule = _dereq_('./mod'); @@ -43028,28 +52382,13 @@ module.exports = { pathAnnulus: pathAnnulus }; -},{"./mod":240}],219:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./mod":292}],271:[function(_dereq_,module,exports){ 'use strict'; var isArray = Array.isArray; -// IE9 fallbacks - -var ab = (typeof ArrayBuffer === 'undefined' || !ArrayBuffer.isView) ? - {isView: function() { return false; }} : - ArrayBuffer; - -var dv = (typeof DataView === 'undefined') ? - function() {} : - DataView; +var ab = ArrayBuffer; +var dv = DataView; function isTypedArray(a) { return ab.isView(a) && !(a instanceof dv); @@ -43185,16 +52524,7 @@ function _rowLength(z, fn, len0) { return 0; } -},{}],220:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],272:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -43218,15 +52548,7 @@ module.exports = function cleanNumber(v) { return BADNUM; }; -},{"../constants/numerical":212,"fast-isnumeric":23}],221:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/numerical":265,"fast-isnumeric":31}],273:[function(_dereq_,module,exports){ 'use strict'; /** @@ -43246,15 +52568,7 @@ module.exports = function clearGlCanvases(gd) { } }; -},{}],222:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],274:[function(_dereq_,module,exports){ 'use strict'; /** @@ -43269,15 +52583,7 @@ module.exports = function clearResponsive(gd) { } }; -},{}],223:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],275:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -43295,9 +52601,6 @@ var isArrayOrTypedArray = _dereq_('./array').isArrayOrTypedArray; exports.valObjectMeta = { data_array: { // You can use *dflt=[] to force said array to exist though. - - - coerceFunction: function(v, propOut, dflt) { // TODO maybe `v: {type: 'float32', vals: [/* ... */]}` also if(isArrayOrTypedArray(v)) propOut.set(v); @@ -43305,9 +52608,6 @@ exports.valObjectMeta = { } }, enumerated: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(opts.coerceNumber) v = +v; if(opts.values.indexOf(v) === -1) propOut.set(dflt); @@ -43329,18 +52629,12 @@ exports.valObjectMeta = { } }, 'boolean': { - - - coerceFunction: function(v, propOut, dflt) { if(v === true || v === false) propOut.set(v); else propOut.set(dflt); } }, number: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(!isNumeric(v) || (opts.min !== undefined && v < opts.min) || @@ -43350,9 +52644,6 @@ exports.valObjectMeta = { } }, integer: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(v % 1 || !isNumeric(v) || (opts.min !== undefined && v < opts.min) || @@ -43362,10 +52653,7 @@ exports.valObjectMeta = { } }, string: { - - // TODO 'values shouldn't be in there (edge case: 'dash' in Scatter) - coerceFunction: function(v, propOut, dflt, opts) { if(typeof v !== 'string') { var okToCoerce = (typeof v === 'number'); @@ -43377,18 +52665,12 @@ exports.valObjectMeta = { } }, color: { - - - coerceFunction: function(v, propOut, dflt) { if(tinycolor(v).isValid()) propOut.set(v); else propOut.set(dflt); } }, colorlist: { - - - coerceFunction: function(v, propOut, dflt) { function isColor(color) { return tinycolor(color).isValid(); @@ -43399,17 +52681,11 @@ exports.valObjectMeta = { } }, colorscale: { - - - coerceFunction: function(v, propOut, dflt) { propOut.set(colorscales.get(v, dflt)); } }, angle: { - - - coerceFunction: function(v, propOut, dflt) { if(v === 'auto') propOut.set('auto'); else if(!isNumeric(v)) propOut.set(dflt); @@ -43417,9 +52693,6 @@ exports.valObjectMeta = { } }, subplotid: { - - - coerceFunction: function(v, propOut, dflt, opts) { var regex = opts.regex || counterRegex(dflt); if(typeof v === 'string' && regex.test(v)) { @@ -43439,9 +52712,6 @@ exports.valObjectMeta = { } }, flaglist: { - - - coerceFunction: function(v, propOut, dflt, opts) { if(typeof v !== 'string') { propOut.set(dflt); @@ -43464,23 +52734,17 @@ exports.valObjectMeta = { } }, any: { - - - coerceFunction: function(v, propOut, dflt) { if(v === undefined) propOut.set(dflt); else propOut.set(v); } }, info_array: { - - // set `dimensions=2` for a 2D array or '1-2' for either // `items` may be a single object instead of an array, in which case // `freeLength` must be true. // if `dimensions='1-2'` and items is a 1D array, then the value can // either be a matching 1D array or an array of such matching 1D arrays - coerceFunction: function(v, propOut, dflt, opts) { // simplified coerce function just for array items function coercePart(v, opts, dflt) { @@ -43651,6 +52915,18 @@ exports.coerceFont = function(coerce, attr, dfltObj) { return out; }; +/* + * Shortcut to coerce the pattern attributes + */ +exports.coercePattern = function(coerce, attr) { + var shape = coerce(attr + '.shape'); + if(shape) { + coerce(attr + '.size'); + coerce(attr + '.bgcolor'); + coerce(attr + '.solidity'); + } +}; + /** Coerce shortcut for 'hoverinfo' * handling 1-vs-multi-trace dflt logic * @@ -43733,16 +53009,7 @@ function validate(value, opts) { } exports.validate = validate; -},{"../components/colorscale/scales":120,"../constants/interactions":211,"../plots/attributes":275,"./array":219,"./mod":240,"./nested_property":241,"./regex":249,"fast-isnumeric":23,"tinycolor2":88}],224:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../components/colorscale/scales":170,"../constants/interactions":264,"../plots/attributes":327,"./array":271,"./mod":292,"./nested_property":293,"./regex":301,"fast-isnumeric":31,"tinycolor2":119}],276:[function(_dereq_,module,exports){ 'use strict'; var timeFormat = _dereq_('d3-time-format').timeFormat; @@ -44334,18 +53601,10 @@ exports.findExactDates = function(data, calendar) { }; }; -},{"../constants/numerical":212,"../registry":326,"./loggers":237,"./mod":240,"d3-time-format":19,"fast-isnumeric":23}],225:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/numerical":265,"../registry":373,"./loggers":289,"./mod":292,"d3-time-format":29,"fast-isnumeric":31}],277:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var loggers = _dereq_('./loggers'); var matrix = _dereq_('./matrix'); var mat4X4 = _dereq_('gl-mat4'); @@ -44512,16 +53771,7 @@ module.exports = { equalDomRects: equalDomRects }; -},{"./loggers":237,"./matrix":239,"d3":21,"gl-mat4":39}],226:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./loggers":289,"./matrix":291,"@plotly/d3":20,"gl-mat4":47}],278:[function(_dereq_,module,exports){ 'use strict'; /* global jQuery:false */ @@ -44685,16 +53935,7 @@ var Events = { module.exports = Events; -},{"events":17}],227:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"events":27}],279:[function(_dereq_,module,exports){ 'use strict'; var isPlainObject = _dereq_('./is_plain_object.js'); @@ -44799,16 +54040,7 @@ function _extend(inputs, isDeep, keepAllKeys, noArrayCopies) { return target; } -},{"./is_plain_object.js":234}],228:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./is_plain_object.js":286}],280:[function(_dereq_,module,exports){ 'use strict'; @@ -44850,15 +54082,7 @@ module.exports = function filterUnique(array) { return out; }; -},{}],229:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],281:[function(_dereq_,module,exports){ 'use strict'; /** Filter out object items with visible !== true @@ -44898,15 +54122,7 @@ function isCalcData(cont) { ); } -},{}],230:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],282:[function(_dereq_,module,exports){ 'use strict'; var mod = _dereq_('./mod').mod; @@ -45142,15 +54358,7 @@ exports.findPointOnPath = function findPointOnPath(path, val, coord, opts) { return pt; }; -},{"./mod":240}],231:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./mod":292}],283:[function(_dereq_,module,exports){ 'use strict'; // Simple helper functions @@ -45158,16 +54366,7 @@ exports.findPointOnPath = function findPointOnPath(path, val, coord, opts) { module.exports = function identity(d) { return d; }; -},{}],232:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],284:[function(_dereq_,module,exports){ 'use strict'; module.exports = function incrementNumeric(x, delta) { @@ -45200,23 +54399,16 @@ module.exports = function incrementNumeric(x, delta) { return newX; }; -},{}],233:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],285:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var utcFormat = _dereq_('d3-time-format').utcFormat; var isNumeric = _dereq_('fast-isnumeric'); var numConstants = _dereq_('../constants/numerical'); -var FP_SAFE = numConstants.FP_SAFE; +var MAX_SAFE = numConstants.FP_SAFE; +var MIN_SAFE = -MAX_SAFE; var BADNUM = numConstants.BADNUM; var lib = module.exports = {}; @@ -45246,6 +54438,7 @@ lib.valObjectMeta = coerceModule.valObjectMeta; lib.coerce = coerceModule.coerce; lib.coerce2 = coerceModule.coerce2; lib.coerceFont = coerceModule.coerceFont; +lib.coercePattern = coerceModule.coercePattern; lib.coerceHoverinfo = coerceModule.coerceHoverinfo; lib.coerceSelectionMarkerOpacity = coerceModule.coerceSelectionMarkerOpacity; lib.validate = coerceModule.validate; @@ -45376,8 +54569,7 @@ lib.cleanNumber = _dereq_('./clean_number'); lib.ensureNumber = function ensureNumber(v) { if(!isNumeric(v)) return BADNUM; v = Number(v); - if(v < -FP_SAFE || v > FP_SAFE) return BADNUM; - return isNumeric(v) ? Number(v) : BADNUM; + return (v > MAX_SAFE || v < MIN_SAFE) ? BADNUM : v; }; /** @@ -45915,11 +55107,6 @@ lib.isIE = function() { return typeof window.navigator.msSaveBlob !== 'undefined'; }; -var IS_IE9_OR_BELOW_REGEX = /MSIE [1-9]\./; -lib.isIE9orBelow = function() { - return lib.isIE() && IS_IE9_OR_BELOW_REGEX.test(window.navigator.userAgent); -}; - var IS_SAFARI_REGEX = /Version\/[\d\.]+.*Safari/; lib.isSafari = function() { return IS_SAFARI_REGEX.test(window.navigator.userAgent); @@ -45930,12 +55117,20 @@ lib.isIOS = function() { return IS_IOS_REGEX.test(window.navigator.userAgent); }; -/** - * Duck typing to recognize a d3 selection, mostly for IE9's benefit - * because it doesn't handle instanceof like modern browsers - */ +var FIREFOX_VERSION_REGEX = /Firefox\/(\d+)\.\d+/; +lib.getFirefoxVersion = function() { + var match = FIREFOX_VERSION_REGEX.exec(window.navigator.userAgent); + if(match && match.length === 2) { + var versionInt = parseInt(match[1]); + if(!isNaN(versionInt)) { + return versionInt; + } + } + return null; +}; + lib.isD3Selection = function(obj) { - return obj && (typeof obj.classed === 'function'); + return obj instanceof d3.selection; }; /** @@ -46262,21 +55457,50 @@ function templateFormatString(string, labels, d3locale) { // just in case it speeds things up *slightly*: var getterCache = {}; - return string.replace(lib.TEMPLATE_STRING_REGEX, function(match, key, format) { - var obj, value, i; - for(i = 3; i < args.length; i++) { - obj = args[i]; - if(!obj) continue; - if(obj.hasOwnProperty(key)) { - value = obj[key]; - break; - } + return string.replace(lib.TEMPLATE_STRING_REGEX, function(match, rawKey, format) { + var isOther = + rawKey === 'xother' || + rawKey === 'yother'; - if(!SIMPLE_PROPERTY_REGEX.test(key)) { - value = getterCache[key] || lib.nestedProperty(obj, key).get(); - if(value) getterCache[key] = value; + var isSpaceOther = + rawKey === '_xother' || + rawKey === '_yother'; + + var isSpaceOtherSpace = + rawKey === '_xother_' || + rawKey === '_yother_'; + + var isOtherSpace = + rawKey === 'xother_' || + rawKey === 'yother_'; + + var hasOther = isOther || isSpaceOther || isOtherSpace || isSpaceOtherSpace; + + var key = rawKey; + if(isSpaceOther || isSpaceOtherSpace) key = key.substring(1); + if(isOtherSpace || isSpaceOtherSpace) key = key.substring(0, key.length - 1); + + var value; + if(hasOther) { + value = labels[key]; + if(value === undefined) return ''; + } else { + var obj, i; + for(i = 3; i < args.length; i++) { + obj = args[i]; + if(!obj) continue; + if(obj.hasOwnProperty(key)) { + value = obj[key]; + break; + } + + if(!SIMPLE_PROPERTY_REGEX.test(key)) { + value = lib.nestedProperty(obj, key).get(); + value = getterCache[key] || lib.nestedProperty(obj, key).get(); + if(value) getterCache[key] = value; + } + if(value !== undefined) break; } - if(value !== undefined) break; } if(value === undefined && opts) { @@ -46306,8 +55530,16 @@ function templateFormatString(string, labels, d3locale) { value = lib.formatDate(ms, format.replace(TEMPLATE_STRING_FORMAT_SEPARATOR, ''), false, fmt); } } else { - if(labels.hasOwnProperty(key + 'Label')) value = labels[key + 'Label']; + var keyLabel = key + 'Label'; + if(labels.hasOwnProperty(keyLabel)) value = labels[keyLabel]; } + + if(hasOther) { + value = '(' + value + ')'; + if(isSpaceOther || isSpaceOtherSpace) value = ' ' + value; + if(isOtherSpace || isSpaceOtherSpace) value = value + ' '; + } + return value; }); } @@ -46483,16 +55715,35 @@ lib.join2 = function(arr, mainSeparator, lastSeparator) { return arr.join(mainSeparator); }; -},{"../constants/numerical":212,"./anchor_utils":217,"./angles":218,"./array":219,"./clean_number":220,"./clear_responsive":222,"./coerce":223,"./dates":224,"./dom":225,"./extend":227,"./filter_unique":228,"./filter_visible":229,"./geometry2d":230,"./identity":231,"./increment":232,"./is_plain_object":234,"./keyed_container":235,"./localize":236,"./loggers":237,"./make_trace_groups":238,"./matrix":239,"./mod":240,"./nested_property":241,"./noop":242,"./notifier":243,"./preserve_drawing_buffer":246,"./push_unique":247,"./regex":249,"./relative_attr":250,"./relink_private":251,"./search":252,"./stats":254,"./throttle":256,"./to_log_range":257,"d3":21,"d3-time-format":19,"fast-isnumeric":23}],234:[function(_dereq_,module,exports){ +lib.bigFont = function(size) { + return Math.round(1.2 * size); +}; + +var firefoxVersion = lib.getFirefoxVersion(); +// see https://bugzilla.mozilla.org/show_bug.cgi?id=1684973 +var isProblematicFirefox = firefoxVersion !== null && firefoxVersion < 86; + /** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - + * Return the mouse position from the last event registered by D3. + * @returns An array with two numbers, representing the x and y coordinates of the mouse pointer + * at the event relative to the targeted node. + */ +lib.getPositionFromD3Event = function() { + if(isProblematicFirefox) { + // layerX and layerY are non-standard, so we only fallback to them when we have to: + return [ + d3.event.layerX, + d3.event.layerY + ]; + } else { + return [ + d3.event.offsetX, + d3.event.offsetY + ]; + } +}; +},{"../constants/numerical":265,"./anchor_utils":269,"./angles":270,"./array":271,"./clean_number":272,"./clear_responsive":274,"./coerce":275,"./dates":276,"./dom":277,"./extend":279,"./filter_unique":280,"./filter_visible":281,"./geometry2d":282,"./identity":283,"./increment":284,"./is_plain_object":286,"./keyed_container":287,"./localize":288,"./loggers":289,"./make_trace_groups":290,"./matrix":291,"./mod":292,"./nested_property":293,"./noop":294,"./notifier":295,"./preserve_drawing_buffer":298,"./push_unique":299,"./regex":301,"./relative_attr":302,"./relink_private":303,"./search":304,"./stats":306,"./throttle":308,"./to_log_range":309,"@plotly/d3":20,"d3-time-format":29,"fast-isnumeric":31}],286:[function(_dereq_,module,exports){ 'use strict'; // more info: http://stackoverflow.com/questions/18531624/isplainobject-thing @@ -46507,19 +55758,11 @@ module.exports = function isPlainObject(obj) { return ( Object.prototype.toString.call(obj) === '[object Object]' && - Object.getPrototypeOf(obj) === Object.prototype + Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty') ); }; -},{}],235:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],287:[function(_dereq_,module,exports){ 'use strict'; var nestedProperty = _dereq_('./nested_property'); @@ -46704,16 +55947,7 @@ module.exports = function keyedContainer(baseObj, path, keyName, valueName) { return obj; }; -},{"./nested_property":241}],236:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./nested_property":293}],288:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -46760,15 +55994,7 @@ module.exports = function localize(gd, s) { return s; }; -},{"../registry":326}],237:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../registry":373}],289:[function(_dereq_,module,exports){ 'use strict'; /* eslint-disable no-console */ @@ -46793,7 +56019,7 @@ loggers.log = function() { for(i = 0; i < arguments.length; i++) { messages.push(arguments[i]); } - apply(console.trace || console.log, messages); + console.trace.apply(console, messages); } if(dfltConfig.notifyOnLogging > 1) { @@ -46813,7 +56039,7 @@ loggers.warn = function() { for(i = 0; i < arguments.length; i++) { messages.push(arguments[i]); } - apply(console.trace || console.log, messages); + console.trace.apply(console, messages); } if(dfltConfig.notifyOnLogging > 0) { @@ -46833,7 +56059,7 @@ loggers.error = function() { for(i = 0; i < arguments.length; i++) { messages.push(arguments[i]); } - apply(console.error, messages); + console.error.apply(console, messages); } if(dfltConfig.notifyOnLogging > 0) { @@ -46845,43 +56071,10 @@ loggers.error = function() { } }; -/* - * Robust apply, for IE9 where console.log doesn't support - * apply like other functions do - */ -function apply(f, args) { - if(f && f.apply) { - try { - // `this` should always be console, since here we're always - // applying a method of the console object. - f.apply(console, args); - return; - } catch(e) { /* in case apply failed, fall back on the code below */ } - } - - // no apply - just try calling the function on each arg independently - for(var i = 0; i < args.length; i++) { - try { - f(args[i]); - } catch(e) { - // still fails - last resort simple console.log - console.log(args[i]); - } - } -} - -},{"../plot_api/plot_config":266,"./notifier":243}],238:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../plot_api/plot_config":318,"./notifier":295}],290:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); /** * General helper to manage trace groups based on calcdata @@ -46913,16 +56106,7 @@ module.exports = function makeTraceGroups(traceLayer, cdModule, cls) { return traces; }; -},{"d3":21}],239:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"@plotly/d3":20}],291:[function(_dereq_,module,exports){ 'use strict'; var mat4X4 = _dereq_('gl-mat4'); @@ -47065,15 +56249,7 @@ exports.inverseTransformMatrix = function(m) { ]; }; -},{"gl-mat4":39}],240:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"gl-mat4":47}],292:[function(_dereq_,module,exports){ 'use strict'; /** @@ -47100,16 +56276,7 @@ module.exports = { modHalf: modHalf }; -},{}],241:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],293:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -47346,15 +56513,7 @@ function badContainer(container, propStr, propParts) { }; } -},{"./array":219,"fast-isnumeric":23}],242:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./array":271,"fast-isnumeric":31}],294:[function(_dereq_,module,exports){ 'use strict'; // Simple helper functions @@ -47362,19 +56521,10 @@ function badContainer(container, propStr, propParts) { module.exports = function noop() {}; -},{}],243:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],295:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var NOTEDATA = []; @@ -47450,16 +56600,7 @@ module.exports = function(text, displayLength) { }); }; -},{"d3":21,"fast-isnumeric":23}],244:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"@plotly/d3":20,"fast-isnumeric":31}],296:[function(_dereq_,module,exports){ 'use strict'; var setCursor = _dereq_('./setcursor'); @@ -47498,16 +56639,7 @@ module.exports = function overrideCursor(el3, csr) { } }; -},{"./setcursor":253}],245:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./setcursor":305}],297:[function(_dereq_,module,exports){ 'use strict'; var dot = _dereq_('./matrix').dot; @@ -47750,15 +56882,7 @@ polygon.filter = function filter(pts, tolerance) { }; }; -},{"../constants/numerical":212,"./matrix":239}],246:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/numerical":265,"./matrix":291}],298:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -47820,15 +56944,7 @@ function getUserAgent() { return ua; } -},{"fast-isnumeric":23,"is-mobile":74}],247:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"fast-isnumeric":31,"is-mobile":67}],299:[function(_dereq_,module,exports){ 'use strict'; /** @@ -47858,15 +56974,7 @@ module.exports = function pushUnique(array, item) { return array; }; -},{}],248:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],300:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -47987,10 +57095,6 @@ queue.stopSequence = function(gd) { queue.undo = function undo(gd) { var queueObj, i; - if(gd.framework && gd.framework.isPolar) { - gd.framework.undo(); - return; - } if(gd.undoQueue === undefined || isNaN(gd.undoQueue.index) || gd.undoQueue.index <= 0) { @@ -48020,10 +57124,6 @@ queue.undo = function undo(gd) { queue.redo = function redo(gd) { var queueObj, i; - if(gd.framework && gd.framework.isPolar) { - gd.framework.redo(); - return; - } if(gd.undoQueue === undefined || isNaN(gd.undoQueue.index) || gd.undoQueue.index >= gd.undoQueue.queue.length) { @@ -48066,15 +57166,7 @@ queue.plotDo = function(gd, func, args) { module.exports = queue; -},{"../lib":233,"../plot_api/plot_config":266}],249:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/plot_config":318}],301:[function(_dereq_,module,exports){ 'use strict'; /* @@ -48096,16 +57188,7 @@ exports.counter = function(head, tail, openEnded, matchBeginning) { return new RegExp(startWithPrefix + head + '([2-9]|[1-9][0-9]+)?' + fullTail); }; -},{}],250:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],302:[function(_dereq_,module,exports){ 'use strict'; // ASCEND: chop off the last nesting level - either [] or . - to ascend @@ -48149,16 +57232,7 @@ module.exports = function(baseAttr, relativeAttr) { return baseAttr + relativeAttr; }; -},{}],251:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],303:[function(_dereq_,module,exports){ 'use strict'; var isArrayOrTypedArray = _dereq_('./array').isArrayOrTypedArray; @@ -48206,16 +57280,7 @@ module.exports = function relinkPrivateKeys(toContainer, fromContainer) { } }; -},{"./array":219,"./is_plain_object":234}],252:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./array":271,"./is_plain_object":286}],304:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -48411,16 +57476,7 @@ exports.findIndexOfMin = function(arr, fn) { return ind; }; -},{"../constants/numerical":212,"./identity":231,"./loggers":237,"fast-isnumeric":23}],253:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../constants/numerical":265,"./identity":283,"./loggers":289,"fast-isnumeric":31}],305:[function(_dereq_,module,exports){ 'use strict'; // works with our CSS cursor classes (see css/_cursor.scss) @@ -48434,16 +57490,7 @@ module.exports = function setCursor(el3, csr) { if(csr) el3.classed('cursor-' + csr, true); }; -},{}],254:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],306:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -48544,21 +57591,12 @@ exports.interp = function(arr, n) { return frac * arr[Math.ceil(n)] + (1 - frac) * arr[Math.floor(n)]; }; -},{"./array":219,"fast-isnumeric":23}],255:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./array":271,"fast-isnumeric":31}],307:[function(_dereq_,module,exports){ 'use strict'; /* global MathJax:false */ -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../lib'); var strTranslate = Lib.strTranslate; @@ -49311,6 +58349,18 @@ function alignHTMLWith(_base, container, options) { }; } +var onePx = '1px '; + +exports.makeTextShadow = function(color) { + var x = onePx; + var y = onePx; + var b = onePx; + return x + y + b + color + ', ' + + '-' + x + '-' + y + b + color + ', ' + + x + '-' + y + b + color + ', ' + + '-' + x + y + b + color; +}; + /* * Editable title * @param {d3.selection} context: the element being edited. Normally text, @@ -49435,15 +58485,7 @@ exports.makeEditable = function(context, options) { return d3.rebind(context, dispatch, 'on'); }; -},{"../constants/alignment":207,"../constants/xmlns_namespaces":213,"../lib":233,"d3":21}],256:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../constants/alignment":260,"../constants/xmlns_namespaces":266,"../lib":285,"@plotly/d3":20}],308:[function(_dereq_,module,exports){ 'use strict'; var timerCache = {}; @@ -49538,15 +58580,7 @@ function _clearTimeout(cache) { } } -},{}],257:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],309:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -49566,15 +58600,7 @@ module.exports = function toLogRange(val, range) { return newVal; }; -},{"fast-isnumeric":23}],258:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"fast-isnumeric":31}],310:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -49588,15 +58614,7 @@ module.exports = { } }; -},{}],259:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],311:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -49631,16 +58649,7 @@ module.exports = { } }; -},{}],260:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],312:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -49689,15 +58698,7 @@ module.exports = function containerArrayMatch(astr) { return {array: arrayStr, index: Number(match[1]), property: match[3] || ''}; }; -},{"../registry":326}],261:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../registry":373}],313:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -49708,7 +58709,6 @@ var traceOpts = { valType: 'flaglist', extras: ['none'], flags: ['calc', 'clearAxisTypes', 'plot', 'style', 'markerSize', 'colorbars'], - }; var layoutOpts = { @@ -49718,7 +58718,6 @@ var layoutOpts = { 'calc', 'plot', 'legend', 'ticks', 'axrange', 'layoutstyle', 'modebar', 'camera', 'arraydraw', 'colorbars' ], - }; // flags for inside restyle/relayout include a few extras @@ -49814,15 +58813,7 @@ function overrideOne(attr, editTypeOverride, overrideContainers, key) { } } -},{"../lib":233}],262:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285}],314:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -50516,20 +59507,12 @@ exports.clearAxisTypes = function(gd, traces, layoutUpdate) { } }; -},{"../components/color":105,"../lib":233,"../plots/cartesian/axis_ids":282,"../plots/plots":313,"../registry":326,"fast-isnumeric":23,"gl-mat4/fromQuat":29}],263:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color":155,"../lib":285,"../plots/cartesian/axis_ids":334,"../plots/plots":366,"../registry":373,"fast-isnumeric":31,"gl-mat4/fromQuat":37}],315:[function(_dereq_,module,exports){ 'use strict'; var main = _dereq_('./plot_api'); -exports.plot = main.plot; +exports._doPlot = main._doPlot; exports.newPlot = main.newPlot; exports.restyle = main.restyle; exports.relayout = main.relayout; @@ -50559,16 +59542,7 @@ var templateApi = _dereq_('./template_api'); exports.makeTemplate = templateApi.makeTemplate; exports.validateTemplate = templateApi.validateTemplate; -},{"../snapshot/download":328,"./plot_api":265,"./template_api":270,"./to_image":271,"./validate":272}],264:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../snapshot/download":375,"./plot_api":317,"./template_api":322,"./to_image":323,"./validate":324}],316:[function(_dereq_,module,exports){ 'use strict'; var isPlainObject = _dereq_('../lib/is_plain_object'); @@ -50772,18 +59746,10 @@ exports.applyContainerArrayChanges = function applyContainerArrayChanges(gd, np, return true; }; -},{"../lib/is_plain_object":234,"../lib/loggers":237,"../lib/noop":242,"../lib/search":252,"../registry":326,"./container_array_match":260}],265:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib/is_plain_object":286,"../lib/loggers":289,"../lib/noop":294,"../lib/search":304,"../registry":373,"./container_array_match":312}],317:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var hasHover = _dereq_('has-hover'); @@ -50796,14 +59762,12 @@ var Queue = _dereq_('../lib/queue'); var Registry = _dereq_('../registry'); var PlotSchema = _dereq_('./plot_schema'); var Plots = _dereq_('../plots/plots'); -var Polar = _dereq_('../plots/polar/legacy'); var Axes = _dereq_('../plots/cartesian/axes'); var Drawing = _dereq_('../components/drawing'); var Color = _dereq_('../components/color'); var initInteractions = _dereq_('../plots/cartesian/graph_interact').initInteractions; var xmlnsNamespaces = _dereq_('../constants/xmlns_namespaces'); -var svgTextUtils = _dereq_('../lib/svg_text_utils'); var clearSelect = _dereq_('../plots/cartesian/select').clearSelect; var dfltConfig = _dereq_('./plot_config').dfltConfig; @@ -50818,7 +59782,7 @@ var numericNameWarningCount = 0; var numericNameWarningCountLimit = 5; /** - * Main plot-creation function + * Internal plot-creation function * * @param {string id or DOM element} gd * the id or DOM element of the graph container div @@ -50838,7 +59802,7 @@ var numericNameWarningCountLimit = 5; * object containing `data`, `layout`, `config`, and `frames` members * */ -function plot(gd, data, layout, config) { +function _doPlot(gd, data, layout, config) { var frames; gd = Lib.getGraphDiv(gd); @@ -50860,7 +59824,7 @@ function plot(gd, data, layout, config) { // if there's no data or layout, and this isn't yet a plotly plot // container, log a warning to help plotly.js users debug if(!data && !layout && !Lib.isPlotDiv(gd)) { - Lib.warn('Calling Plotly.plot as if redrawing ' + + Lib.warn('Calling _doPlot as if redrawing ' + 'but this container doesn\'t yet have a plot.', gd); } @@ -50916,13 +59880,7 @@ function plot(gd, data, layout, config) { var fullLayout = gd._fullLayout; var hasCartesian = fullLayout._has('cartesian'); - // Legacy polar plots - if(!fullLayout._has('polar') && data && data[0] && data[0].r) { - Lib.log('Legacy polar charts are deprecated!'); - return plotLegacyPolar(gd, data, layout); - } - - // so we don't try to re-call Plotly.plot from inside + // so we don't try to re-call _doPlot from inside // legend and colorbar, if margins changed fullLayout._replotting = true; @@ -50935,14 +59893,9 @@ function plot(gd, data, layout, config) { } } - // polar need a different framework - if(gd.framework !== makePlotFramework) { - gd.framework = makePlotFramework; - makePlotFramework(gd); - } - - // clear gradient defs on each .plot call, because we know we'll loop through all traces + // clear gradient and pattern defs on each .plot call, because we know we'll loop through all traces Drawing.initGradients(gd); + Drawing.initPatterns(gd); // save initial show spikes once per graph if(graphWasEmpty) Axes.saveShowSpikeInitial(gd); @@ -50950,7 +59903,7 @@ function plot(gd, data, layout, config) { // prepare the data and find the autorange // generate calcdata, if we need to - // to force redoing calcdata, just delete it before calling Plotly.plot + // to force redoing calcdata, just delete it before calling _doPlot var recalc = !gd.calcdata || gd.calcdata.length !== (gd._fullData || []).length; if(recalc) Plots.doCalcdata(gd); @@ -51322,99 +60275,6 @@ function setPlotContext(gd, config) { } } -function plotLegacyPolar(gd, data, layout) { - // build or reuse the container skeleton - var plotContainer = d3.select(gd).selectAll('.plot-container') - .data([0]); - plotContainer.enter() - .insert('div', ':first-child') - .classed('plot-container plotly', true); - var paperDiv = plotContainer.selectAll('.svg-container') - .data([0]); - paperDiv.enter().append('div') - .classed('svg-container', true) - .style('position', 'relative'); - - // empty it everytime for now - paperDiv.html(''); - - // fulfill gd requirements - if(data) gd.data = data; - if(layout) gd.layout = layout; - Polar.manager.fillLayout(gd); - - // resize canvas - paperDiv.style({ - width: gd._fullLayout.width + 'px', - height: gd._fullLayout.height + 'px' - }); - - // instantiate framework - gd.framework = Polar.manager.framework(gd); - - // plot - gd.framework({data: gd.data, layout: gd.layout}, paperDiv.node()); - - // set undo point - gd.framework.setUndoPoint(); - - // get the resulting svg for extending it - var polarPlotSVG = gd.framework.svg(); - - // editable title - var opacity = 1; - var txt = gd._fullLayout.title ? gd._fullLayout.title.text : ''; - if(txt === '' || !txt) opacity = 0; - - var titleLayout = function() { - this.call(svgTextUtils.convertToTspans, gd); - // TODO: html/mathjax - // TODO: center title - }; - - var title = polarPlotSVG.select('.title-group text') - .call(titleLayout); - - if(gd._context.edits.titleText) { - var placeholderText = Lib._(gd, 'Click to enter Plot title'); - if(!txt || txt === placeholderText) { - opacity = 0.2; - // placeholder is not going through convertToTspans - // so needs explicit data-unformatted - title.attr({'data-unformatted': placeholderText}) - .text(placeholderText) - .style({opacity: opacity}) - .on('mouseover.opacity', function() { - d3.select(this).transition().duration(100) - .style('opacity', 1); - }) - .on('mouseout.opacity', function() { - d3.select(this).transition().duration(1000) - .style('opacity', 0); - }); - } - - var setContenteditable = function() { - this.call(svgTextUtils.makeEditable, {gd: gd}) - .on('edit', function(text) { - gd.framework({layout: {title: {text: text}}}); - this.text(text) - .call(titleLayout); - this.call(setContenteditable); - }) - .on('cancel', function() { - var txt = this.attr('data-unformatted'); - this.text(txt).call(titleLayout); - }); - }; - title.call(setContenteditable); - } - - gd._context.setBackground(gd, gd._fullLayout.paper_bgcolor); - Plots.addLinks(gd); - - return Promise.resolve(); -} // convenience function to force a full redraw, mostly for use by plotly.js function redraw(gd) { @@ -51428,7 +60288,7 @@ function redraw(gd) { helpers.cleanLayout(gd.layout); gd.calcdata = undefined; - return exports.plot(gd).then(function() { + return exports._doPlot(gd).then(function() { gd.emit('plotly_redraw'); return gd; }); @@ -51449,7 +60309,7 @@ function newPlot(gd, data, layout, config) { Plots.cleanPlot([], {}, gd._fullData || [], gd._fullLayout || {}); Plots.purge(gd); - return exports.plot(gd, data, layout, config); + return exports._doPlot(gd, data, layout, config); } /** @@ -52160,7 +61020,7 @@ function restyle(gd, astr, val, _traces) { var seq = []; if(flags.fullReplot) { - seq.push(exports.plot); + seq.push(exports._doPlot); } else { seq.push(Plots.previousPromises); @@ -52646,10 +61506,6 @@ function relayout(gd, astr, val) { gd = Lib.getGraphDiv(gd); helpers.clearPromiseQueue(gd); - if(gd.framework && gd.framework.isPolar) { - return Promise.resolve(gd); - } - var aobj = {}; if(typeof astr === 'string') { aobj[astr] = val; @@ -53159,10 +62015,6 @@ function update(gd, traceUpdate, layoutUpdate, _traces) { gd = Lib.getGraphDiv(gd); helpers.clearPromiseQueue(gd); - if(gd.framework && gd.framework.isPolar) { - return Promise.resolve(gd); - } - if(!Lib.isPlainObject(traceUpdate)) traceUpdate = {}; if(!Lib.isPlainObject(layoutUpdate)) layoutUpdate = {}; @@ -53189,7 +62041,7 @@ function update(gd, traceUpdate, layoutUpdate, _traces) { // relayoutFlags.layoutReplot and restyleFlags.fullReplot are true seq.push(subroutines.layoutReplot); } else if(restyleFlags.fullReplot) { - seq.push(exports.plot); + seq.push(exports._doPlot); } else { seq.push(Plots.previousPromises); axRangeSupplyDefaultsByPass(gd, relayoutFlags, relayoutSpecs) || Plots.supplyDefaults(gd); @@ -53581,7 +62433,7 @@ function react(gd, data, layout, config) { }); } else if(restyleFlags.fullReplot || relayoutFlags.layoutReplot || configChanged) { gd._fullLayout._skipDefaults = true; - seq.push(exports.plot); + seq.push(exports._doPlot); } else { for(var componentType in relayoutFlags.arrays) { var indices = relayoutFlags.arrays[componentType]; @@ -54480,7 +63332,7 @@ function deleteFrames(gd, frameList) { } /** - * Purge a graph container div back to its initial pre-Plotly.plot state + * Purge a graph container div back to its initial pre-_doPlot state * * @param {string id or DOM element} gd * the id or DOM element of the graph container div @@ -54503,7 +63355,7 @@ function purge(gd) { // remove plot container if(fullLayout._container) fullLayout._container.remove(); - // in contrast to Plotly.Plots.purge which does NOT clear _context! + // in contrast to _doPlots.purge which does NOT clear _context! delete gd._context; return gd; @@ -54684,7 +63536,7 @@ exports.moveTraces = moveTraces; exports.prependTraces = prependTraces; exports.newPlot = newPlot; -exports.plot = plot; +exports._doPlot = _doPlot; exports.purge = purge; exports.react = react; @@ -54702,20 +63554,12 @@ exports._guiUpdate = guiEdit(update); exports._storeDirectGUIEdit = _storeDirectGUIEdit; -},{"../components/color":105,"../components/drawing":127,"../constants/xmlns_namespaces":213,"../lib":233,"../lib/events":226,"../lib/queue":248,"../lib/svg_text_utils":255,"../plots/cartesian/axes":279,"../plots/cartesian/constants":285,"../plots/cartesian/graph_interact":288,"../plots/cartesian/select":298,"../plots/plots":313,"../plots/polar/legacy":316,"../registry":326,"./edit_types":261,"./helpers":262,"./manage_arrays":264,"./plot_config":266,"./plot_schema":267,"./subroutines":269,"d3":21,"fast-isnumeric":23,"has-hover":54}],266:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color":155,"../components/drawing":177,"../constants/xmlns_namespaces":266,"../lib":285,"../lib/events":278,"../lib/queue":300,"../plots/cartesian/axes":331,"../plots/cartesian/constants":337,"../plots/cartesian/graph_interact":340,"../plots/cartesian/select":350,"../plots/plots":366,"../registry":373,"./edit_types":313,"./helpers":314,"./manage_arrays":316,"./plot_config":318,"./plot_schema":319,"./subroutines":321,"@plotly/d3":20,"fast-isnumeric":31,"has-hover":62}],318:[function(_dereq_,module,exports){ 'use strict'; /** * This will be transferred over to gd and overridden by - * config args to Plotly.plot. + * config args to Plotly.newPlot. * * The defaults are the appropriate settings for plotly.js, * so we get the right experience without any config argument. @@ -54729,94 +63573,77 @@ var configAttributes = { staticPlot: { valType: 'boolean', dflt: false, - }, plotlyServerURL: { valType: 'string', dflt: '', - }, editable: { valType: 'boolean', dflt: false, - }, edits: { annotationPosition: { valType: 'boolean', dflt: false, - }, annotationTail: { valType: 'boolean', dflt: false, - }, annotationText: { valType: 'boolean', dflt: false, - }, axisTitleText: { valType: 'boolean', dflt: false, - }, colorbarPosition: { valType: 'boolean', dflt: false, - }, colorbarTitleText: { valType: 'boolean', dflt: false, - }, legendPosition: { valType: 'boolean', dflt: false, - }, legendText: { valType: 'boolean', dflt: false, - }, shapePosition: { valType: 'boolean', dflt: false, - }, titleText: { valType: 'boolean', dflt: false, - } }, autosizable: { valType: 'boolean', dflt: false, - }, responsive: { valType: 'boolean', dflt: false, - }, fillFrame: { valType: 'boolean', dflt: false, - }, frameMargins: { valType: 'number', dflt: 0, min: 0, max: 0.5, - }, scrollZoom: { @@ -54824,105 +63651,86 @@ var configAttributes = { flags: ['cartesian', 'gl3d', 'geo', 'mapbox'], extras: [true, false], dflt: 'gl3d+geo+mapbox', - }, doubleClick: { valType: 'enumerated', values: [false, 'reset', 'autosize', 'reset+autosize'], dflt: 'reset+autosize', - }, doubleClickDelay: { valType: 'number', dflt: 300, min: 0, - }, showAxisDragHandles: { valType: 'boolean', dflt: true, - }, showAxisRangeEntryBoxes: { valType: 'boolean', dflt: true, - }, showTips: { valType: 'boolean', dflt: true, - }, showLink: { valType: 'boolean', dflt: false, - }, linkText: { valType: 'string', dflt: 'Edit chart', noBlank: true, - }, sendData: { valType: 'boolean', dflt: true, - }, showSources: { valType: 'any', dflt: false, - }, displayModeBar: { valType: 'enumerated', values: ['hover', true, false], dflt: 'hover', - }, showSendToCloud: { valType: 'boolean', dflt: false, - }, showEditInChartStudio: { valType: 'boolean', dflt: false, - }, modeBarButtonsToRemove: { valType: 'any', dflt: [], - }, modeBarButtonsToAdd: { valType: 'any', dflt: [], - }, modeBarButtons: { valType: 'any', dflt: false, - }, toImageButtonOptions: { valType: 'any', dflt: {}, - }, displaylogo: { valType: 'boolean', dflt: true, - }, watermark: { valType: 'boolean', dflt: false, - }, plotGlPixelRatio: { @@ -54930,26 +63738,22 @@ var configAttributes = { dflt: 2, min: 1, max: 4, - }, setBackground: { valType: 'any', dflt: 'transparent', - }, topojsonURL: { valType: 'string', noBlank: true, dflt: 'https://cdn.plot.ly/', - }, mapboxAccessToken: { valType: 'string', dflt: null, - }, logging: { @@ -54957,7 +63761,6 @@ var configAttributes = { min: 0, max: 2, dflt: 1, - }, notifyOnLogging: { @@ -54965,32 +63768,27 @@ var configAttributes = { min: 0, max: 2, dflt: 0, - }, queueLength: { valType: 'integer', min: 0, dflt: 0, - }, globalTransforms: { valType: 'any', dflt: [], - }, locale: { valType: 'string', dflt: 'en-US', - }, locales: { valType: 'any', dflt: {}, - } }; @@ -55017,15 +63815,7 @@ module.exports = { dfltConfig: dfltConfig }; -},{}],267:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],319:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -55037,13 +63827,8 @@ var frameAttributes = _dereq_('../plots/frame_attributes'); var animationAttributes = _dereq_('../plots/animation_attributes'); var configAttributes = _dereq_('./plot_config').configAttributes; -// polar attributes are not part of the Registry yet -var polarAreaAttrs = _dereq_('../plots/polar/legacy/area_attributes'); -var polarAxisAttrs = _dereq_('../plots/polar/legacy/axis_attributes'); - var editTypes = _dereq_('./edit_types'); -var extendFlat = Lib.extendFlat; var extendDeepAll = Lib.extendDeepAll; var isPlainObject = Lib.isPlainObject; var isArrayOrTypedArray = Lib.isArrayOrTypedArray; @@ -55075,7 +63860,7 @@ exports.UNDERSCORE_ATTRS = UNDERSCORE_ATTRS; exports.get = function() { var traces = {}; - Registry.allTypes.concat('area').forEach(function(type) { + Registry.allTypes.forEach(function(type) { traces[type] = getTraceAttributes(type); }); @@ -55094,7 +63879,6 @@ exports.get = function() { layout: editTypes.layout }, impliedEdits: { - } }, @@ -55287,8 +64071,6 @@ exports.getTraceValObject = function(trace, parts) { moduleAttrs = (Registry.transformsRegistry[transforms[tNum].type] || {}).attributes; valObject = moduleAttrs && moduleAttrs[parts[2]]; i = 3; // start recursing only inside the transform - } else if(trace.type === 'area') { - valObject = polarAreaAttrs[head]; } else { // first look in the module for this trace // components have already merged their trace attributes in here @@ -55389,12 +64171,7 @@ function layoutHeadAttr(fullLayout, head) { if(head in baseLayoutAttributes) return baseLayoutAttributes[head]; - // Polar doesn't populate _modules or _basePlotModules - // just fall back on these when the others fail - if(head === 'radialaxis' || head === 'angularaxis') { - return polarAxisAttrs[head]; - } - return polarAxisAttrs.layout[head] || false; + return false; } function recurseIntoValObject(valObject, parts, i) { @@ -55452,13 +64229,8 @@ function isIndex(val) { function getTraceAttributes(type) { var _module, basePlotModule; - if(type === 'area') { - _module = { attributes: polarAreaAttrs }; - basePlotModule = {}; - } else { - _module = Registry.modules[type]._module, - basePlotModule = _module.basePlotModule; - } + _module = Registry.modules[type]._module, + basePlotModule = _module.basePlotModule; var attributes = {}; @@ -55556,9 +64328,6 @@ function getLayoutAttributes() { } } - // polar layout attributes - layoutAttributes = assignPolarLayoutAttrs(layoutAttributes); - // add registered components layout attributes for(key in Registry.componentsRegistry) { _module = Registry.componentsRegistry[key]; @@ -55636,21 +64405,14 @@ function mergeValTypeAndRole(attrs) { function makeSrcAttr(attrName) { return { valType: 'string', - - editType: 'none' }; } function callback(attr, attrName, attrs) { if(exports.isValObject(attr)) { - if(attr.valType === 'data_array') { - // all 'data_array' attrs have role 'data' - attr.role = 'data'; - // all 'data_array' attrs have a corresponding 'src' attr - attrs[attrName + 'src'] = makeSrcAttr(attrName); - } else if(attr.arrayOk === true) { - // all 'arrayOk' attrs have a corresponding 'src' attr + if(attr.arrayOk === true || attr.valType === 'data_array') { + // all 'arrayOk' and 'data_array' attrs have a corresponding 'src' attr attrs[attrName + 'src'] = makeSrcAttr(attrName); } } else if(isPlainObject(attr)) { @@ -55703,16 +64465,6 @@ function stringify(attrs) { walk(attrs); } -function assignPolarLayoutAttrs(layoutAttributes) { - extendFlat(layoutAttributes, { - radialaxis: polarAxisAttrs.radialaxis, - angularaxis: polarAxisAttrs.angularaxis - }); - - extendFlat(layoutAttributes, polarAxisAttrs.layout); - - return layoutAttributes; -} function handleBasePlotModule(layoutAttributes, _module, astr) { var np = nestedProperty(layoutAttributes, astr); @@ -55728,16 +64480,7 @@ function insertAttrs(baseAttrs, newAttrs, astr) { np.set(extendDeepAll(np.get() || {}, newAttrs)); } -},{"../lib":233,"../plots/animation_attributes":273,"../plots/attributes":275,"../plots/frame_attributes":308,"../plots/layout_attributes":311,"../plots/polar/legacy/area_attributes":314,"../plots/polar/legacy/axis_attributes":315,"../registry":326,"./edit_types":261,"./plot_config":266}],268:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../lib":285,"../plots/animation_attributes":325,"../plots/attributes":327,"../plots/frame_attributes":360,"../plots/layout_attributes":364,"../registry":373,"./edit_types":313,"./plot_config":318}],320:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -55748,16 +64491,12 @@ var TEMPLATEITEMNAME = 'templateitemname'; var templateAttrs = { name: { valType: 'string', - editType: 'none', - } }; templateAttrs[TEMPLATEITEMNAME] = { valType: 'string', - editType: 'calc', - }; /** @@ -56040,18 +64779,10 @@ exports.arrayEditor = function(parentIn, containerStr, itemOut) { }; }; -},{"../lib":233,"../plots/attributes":275}],269:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/attributes":327}],321:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../registry'); var Plots = _dereq_('../plots/plots'); @@ -56579,7 +65310,7 @@ exports.doColorBars = function(gd) { exports.layoutReplot = function(gd) { var layout = gd.layout; gd.layout = undefined; - return Registry.call('plot', gd, '', layout); + return Registry.call('_doPlot', gd, '', layout); }; exports.doLegend = function(gd) { @@ -56764,16 +65495,7 @@ exports.drawMarginPushers = function(gd) { Registry.getComponentMethod('colorbar', 'draw')(gd); }; -},{"../components/color":105,"../components/drawing":127,"../components/modebar":165,"../components/titles":200,"../constants/alignment":207,"../lib":233,"../lib/clear_gl_canvases":221,"../plots/cartesian/autorange":278,"../plots/cartesian/axes":279,"../plots/cartesian/constraints":286,"../plots/plots":313,"../registry":326,"d3":21}],270:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../components/color":155,"../components/drawing":177,"../components/modebar":218,"../components/titles":253,"../constants/alignment":260,"../lib":285,"../lib/clear_gl_canvases":273,"../plots/cartesian/autorange":330,"../plots/cartesian/axes":331,"../plots/cartesian/constraints":338,"../plots/plots":366,"../registry":373,"@plotly/d3":20}],322:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -57226,15 +65948,7 @@ function format(opts) { return opts; } -},{"../lib":233,"../plots/attributes":275,"../plots/plots":313,"./plot_config":266,"./plot_schema":267,"./plot_template":268}],271:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/attributes":327,"../plots/plots":366,"./plot_config":318,"./plot_schema":319,"./plot_template":320}],323:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -57253,33 +65967,27 @@ var attrs = { valType: 'enumerated', values: ['png', 'jpeg', 'webp', 'svg', 'full-json'], dflt: 'png', - }, width: { valType: 'number', min: 1, - }, height: { valType: 'number', min: 1, - }, scale: { valType: 'number', min: 0, dflt: 1, - }, setBackground: { valType: 'any', dflt: false, - }, imageDataOnly: { valType: 'boolean', dflt: false, - } }; @@ -57436,7 +66144,7 @@ function toImage(gd, opts) { } return new Promise(function(resolve, reject) { - plotApi.plot(clonedGd, data, layoutImage, configImage) + plotApi.newPlot(clonedGd, data, layoutImage, configImage) .then(redrawFunc) .then(wait) .then(convert) @@ -57447,15 +66155,7 @@ function toImage(gd, opts) { module.exports = toImage; -},{"../lib":233,"../plots/plots":313,"../snapshot/helpers":330,"../snapshot/svgtoimg":332,"../snapshot/tosvg":334,"../version":494,"./plot_api":265,"fast-isnumeric":23}],272:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/plots":366,"../snapshot/helpers":377,"../snapshot/svgtoimg":379,"../snapshot/tosvg":381,"../version":546,"./plot_api":317,"fast-isnumeric":31}],324:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -57878,61 +66578,41 @@ function convertPathToAttributeString(path) { return astr; } -},{"../lib":233,"../plots/plots":313,"./plot_config":266,"./plot_schema":267}],273:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plots/plots":366,"./plot_config":318,"./plot_schema":319}],325:[function(_dereq_,module,exports){ 'use strict'; module.exports = { mode: { valType: 'enumerated', dflt: 'afterall', - values: ['immediate', 'next', 'afterall'], - }, direction: { valType: 'enumerated', - values: ['forward', 'reverse'], dflt: 'forward', - }, fromcurrent: { valType: 'boolean', dflt: false, - - }, frame: { duration: { valType: 'number', - min: 0, dflt: 500, - }, redraw: { valType: 'boolean', - dflt: true, - }, }, transition: { duration: { valType: 'number', - min: 0, dflt: 500, editType: 'none', - }, easing: { valType: 'enumerated', @@ -57975,30 +66655,18 @@ module.exports = { 'back-in-out', 'bounce-in-out' ], - editType: 'none', - }, ordering: { valType: 'enumerated', values: ['layout first', 'traces first'], dflt: 'layout first', - editType: 'none', - } } }; -},{}],274:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],326:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -58085,15 +66753,7 @@ module.exports = function handleArrayContainerDefaults(parentObjIn, parentObjOut return contOut; }; -},{"../lib":233,"../plot_api/plot_template":268}],275:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/plot_template":320}],327:[function(_dereq_,module,exports){ 'use strict'; var fxAttrs = _dereq_('../components/fx/attributes'); @@ -58101,7 +66761,6 @@ var fxAttrs = _dereq_('../components/fx/attributes'); module.exports = { type: { valType: 'enumerated', - values: [], // listed dynamically dflt: 'scatter', editType: 'calc+clearAxisTypes', @@ -58110,64 +66769,48 @@ module.exports = { visible: { valType: 'enumerated', values: [true, false, 'legendonly'], - dflt: true, editType: 'calc', - }, showlegend: { valType: 'boolean', - dflt: true, editType: 'style', - }, legendgroup: { valType: 'string', - dflt: '', editType: 'style', - }, opacity: { valType: 'number', - min: 0, max: 1, dflt: 1, editType: 'style', - }, name: { valType: 'string', - editType: 'style', - }, uid: { valType: 'string', - editType: 'plot', anim: true, - }, ids: { valType: 'data_array', editType: 'calc', anim: true, - }, customdata: { valType: 'data_array', editType: 'calc', - }, meta: { valType: 'any', arrayOk: true, - editType: 'plot', - }, // N.B. these cannot be 'data_array' as they do not have the same length as @@ -58177,20 +66820,16 @@ module.exports = { // https://github.com/plotly/plotly.js/issues/1894 selectedpoints: { valType: 'any', - editType: 'calc', - }, hoverinfo: { valType: 'flaglist', - flags: ['x', 'y', 'z', 'text', 'name'], extras: ['all', 'none', 'skip'], arrayOk: true, dflt: 'all', editType: 'none', - }, hoverlabel: fxAttrs.hoverlabel, stream: { @@ -58198,43 +66837,28 @@ module.exports = { valType: 'string', noBlank: true, strict: true, - editType: 'calc', - }, maxpoints: { valType: 'number', min: 0, max: 10000, dflt: 500, - editType: 'calc', - }, editType: 'calc' }, transforms: { _isLinkedToArray: 'transform', editType: 'calc', - }, uirevision: { valType: 'any', - editType: 'none', - } }; -},{"../components/fx/attributes":136}],276:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/fx/attributes":186}],328:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -58318,51 +66942,33 @@ module.exports = function alignPeriod(trace, ax, axLetter, vals) { return newVals; }; -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],277:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],329:[function(_dereq_,module,exports){ 'use strict'; module.exports = { xaxis: { valType: 'subplotid', - dflt: 'x', editType: 'calc+clearAxisTypes', - }, yaxis: { valType: 'subplotid', - dflt: 'y', editType: 'calc+clearAxisTypes', - } }; -},{}],278:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],330:[function(_dereq_,module,exports){ 'use strict'; +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Lib = _dereq_('../../lib'); var FP_SAFE = _dereq_('../../constants/numerical').FP_SAFE; var Registry = _dereq_('../../registry'); +var Drawing = _dereq_('../../components/drawing'); var axIds = _dereq_('./axis_ids'); var getFromId = axIds.getFromId; @@ -58575,7 +67181,7 @@ function makePadFn(fullLayout, ax, max) { var zero = 0; if(!isLinked(fullLayout, ax._id)) { - zero = padInsideLabelsOnAnchorAxis(ax, max); + zero = padInsideLabelsOnAnchorAxis(fullLayout, ax, max); } extrappad = Math.max(zero, extrappad); @@ -58594,45 +67200,69 @@ function makePadFn(fullLayout, ax, max) { var TEXTPAD = 3; -function padInsideLabelsOnAnchorAxis(ax, max) { +function padInsideLabelsOnAnchorAxis(fullLayout, ax, max) { var pad = 0; - var anchorAxis = ax._anchorAxis || {}; - if((anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) { - // increase padding to make more room for inside tick labels of the counter axis - if(( - !max && ( - anchorAxis.side === 'left' || - anchorAxis.side === 'bottom' - ) - ) || ( - max && ( - anchorAxis.side === 'top' || - anchorAxis.side === 'right' - ) - )) { - var isX = ax._id.charAt(0) === 'x'; - if(anchorAxis._vals) { - var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + 'tick'] || 0); - var cosA = Math.abs(Math.cos(rad)); - var sinA = Math.abs(Math.sin(rad)); + var isX = ax._id.charAt(0) === 'x'; - // use bounding boxes - anchorAxis._vals.forEach(function(t) { - if(t.bb) { - var w = 2 * TEXTPAD + t.bb.width; - var h = 2 * TEXTPAD + t.bb.height; + for(var subplot in fullLayout._plots) { + var plotinfo = fullLayout._plots[subplot]; - pad = Math.max(pad, isX ? - Math.max(w * cosA, h * sinA) : - Math.max(h * cosA, w * sinA) - ); + if(ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue; + + var anchorAxis = (isX ? plotinfo.yaxis : plotinfo.xaxis) || {}; + + if((anchorAxis.ticklabelposition || '').indexOf('inside') !== -1) { + // increase padding to make more room for inside tick labels of the counter axis + if(( + !max && ( + anchorAxis.side === 'left' || + anchorAxis.side === 'bottom' + ) + ) || ( + max && ( + anchorAxis.side === 'top' || + anchorAxis.side === 'right' + ) + )) { + if(anchorAxis._vals) { + var rad = Lib.deg2rad(anchorAxis._tickAngles[anchorAxis._id + 'tick'] || 0); + var cosA = Math.abs(Math.cos(rad)); + var sinA = Math.abs(Math.sin(rad)); + + // no stashed bounding boxes - stash bounding boxes + if(!anchorAxis._vals[0].bb) { + var cls = anchorAxis._id + 'tick'; + var tickLabels = anchorAxis._selections[cls]; + tickLabels.each(function(d) { + var thisLabel = d3.select(this); + var mathjaxGroup = thisLabel.select('.text-math-group'); + if(mathjaxGroup.empty()) { + d.bb = Drawing.bBox(thisLabel.node()); + } + }); } - }); - } - if(anchorAxis.ticks === 'inside' && anchorAxis.ticklabelposition === 'inside') { - pad += anchorAxis.ticklen || 0; + // use bounding boxes + for(var i = 0; i < anchorAxis._vals.length; i++) { + var t = anchorAxis._vals[i]; + var bb = t.bb; + + if(bb) { + var w = 2 * TEXTPAD + bb.width; + var h = 2 * TEXTPAD + bb.height; + + pad = Math.max(pad, isX ? + Math.max(w * cosA, h * sinA) : + Math.max(h * cosA, w * sinA) + ); + } + } + } + + if(anchorAxis.ticks === 'inside' && anchorAxis.ticklabelposition === 'inside') { + pad += anchorAxis.ticklen || 0; + } } } } @@ -58956,18 +67586,10 @@ function goodNumber(v) { function lessOrEqual(v0, v1) { return v0 <= v1; } function greaterOrEqual(v0, v1) { return v0 >= v1; } -},{"../../constants/numerical":212,"../../lib":233,"../../registry":326,"./axis_ids":282,"fast-isnumeric":23}],279:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../constants/numerical":265,"../../lib":285,"../../registry":373,"./axis_ids":334,"@plotly/d3":20,"fast-isnumeric":31}],331:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Plots = _dereq_('../../plots/plots'); @@ -59001,6 +67623,11 @@ var ONESEC = constants.ONESEC; var MINUS_SIGN = constants.MINUS_SIGN; var BADNUM = constants.BADNUM; +var ZERO_PATH = { K: 'zeroline' }; +var GRID_PATH = { K: 'gridline', L: 'path' }; +var TICK_PATH = { K: 'tick', L: 'path' }; +var TICK_TEXT = { K: 'tick', L: 'text' }; + var alignmentConstants = _dereq_('../../constants/alignment'); var MID_SHIFT = alignmentConstants.MID_SHIFT; var CAP_SHIFT = alignmentConstants.CAP_SHIFT; @@ -59516,7 +68143,7 @@ axes.prepTicks = function(ax, opts) { if(!nt) { if(ax.type === 'category' || ax.type === 'multicategory') { - minPx = ax.tickfont ? (ax.tickfont.size || 12) * 1.2 : 15; + minPx = ax.tickfont ? Lib.bigFont(ax.tickfont.size || 12) : 15; nt = ax._length / minPx; } else { minPx = ax._id.charAt(0) === 'y' ? 40 : 80; @@ -60323,16 +68950,23 @@ axes.tickText = function(ax, x, hover, noSuffixPrefix) { * log axes (where negative values can't be displayed but can appear in hover text) * * @param {object} ax: the axis to format text for - * @param {number} val: calcdata value to format - * @param {Optional(number)} val2: a second value to display + * @param {number or array of numbers} values: calcdata value(s) to format + * @param {Optional(string)} hoverformat: trace (x|y)hoverformat to override axis.hoverformat * * @returns {string} `val` formatted as a string appropriate to this axis, or - * `val` and `val2` as a range (ie ' - ') if `val2` is provided and - * it's different from `val`. + * first value and second value as a range (ie ' - ') if the second value is provided and + * it's different from the first value. */ -axes.hoverLabelText = function(ax, val, val2) { - if(val2 !== BADNUM && val2 !== val) { - return axes.hoverLabelText(ax, val) + ' - ' + axes.hoverLabelText(ax, val2); +axes.hoverLabelText = function(ax, values, hoverformat) { + if(hoverformat) ax = Lib.extendFlat({}, ax, {hoverformat: hoverformat}); + + var val = Array.isArray(values) ? values[0] : values; + var val2 = Array.isArray(values) ? values[1] : undefined; + if(val2 !== undefined && val2 !== val) { + return ( + axes.hoverLabelText(ax, val, hoverformat) + ' - ' + + axes.hoverLabelText(ax, val2, hoverformat) + ); } var logOffScale = (ax.type === 'log' && val <= 0); @@ -60416,7 +69050,7 @@ function formatDate(ax, out, hover, extraPrecision) { ax._prevDateHead = headStr; dateStr += '
' + headStr; } else { - var isInside = (ax.ticklabelposition || '').indexOf('inside') !== -1; + var isInside = insideTicklabelposition(ax); var side = ax._realSide || ax.side; // polar mocks the side of the radial axis if( (!isInside && side === 'top') || @@ -61147,6 +69781,7 @@ axes.drawOne = function(gd, ax, opts) { return axes.drawLabels(gd, ax, { vals: vals, layer: mainAxLayer, + plotinfo: plotinfo, transFn: transTickLabelFn, labelFns: axes.makeLabelFns(ax, mainLinePosition) }); @@ -61765,7 +70400,10 @@ axes.drawTicks = function(gd, ax, opts) { .classed('crisp', opts.crisp !== false) .call(Color.stroke, ax.tickcolor) .style('stroke-width', Drawing.crispRound(gd, ax.tickwidth, 1) + 'px') - .attr('d', opts.path); + .attr('d', opts.path) + .style('display', null); // visible + + hideCounterAxisInsideTickLabels(ax, [TICK_PATH]); ticks.attr('transform', opts.transFn); }; @@ -61828,7 +70466,10 @@ axes.drawGrid = function(gd, ax, opts) { grid.attr('transform', opts.transFn) .attr('d', opts.path) .call(Color.stroke, ax.gridcolor || '#ddd') - .style('stroke-width', ax._gw + 'px'); + .style('stroke-width', ax._gw + 'px') + .style('display', null); // visible + + hideCounterAxisInsideTickLabels(ax, [GRID_PATH]); if(typeof opts.path === 'function') grid.attr('d', opts.path); }; @@ -61877,7 +70518,10 @@ axes.drawZeroLine = function(gd, ax, opts) { zl.attr('transform', opts.transFn) .attr('d', opts.path) .call(Color.stroke, ax.zerolinecolor || Color.defaultLine) - .style('stroke-width', Drawing.crispRound(gd, ax.zerolinewidth, ax._gw || 1) + 'px'); + .style('stroke-width', Drawing.crispRound(gd, ax.zerolinewidth, ax._gw || 1) + 'px') + .style('display', null); // visible + + hideCounterAxisInsideTickLabels(ax, [ZERO_PATH]); }; /** @@ -61952,6 +70596,8 @@ axes.drawLabels = function(gd, ax, opts) { } }); + hideCounterAxisInsideTickLabels(ax, [TICK_TEXT]); + tickLabels.exit().remove(); if(opts.repositionOnUpdate) { @@ -61962,8 +70608,6 @@ axes.drawLabels = function(gd, ax, opts) { } function positionLabels(s, angle) { - var isInside = (ax.ticklabelposition || '').indexOf('inside') !== -1; - s.each(function(d) { var thisLabel = d3.select(this); var mathjaxGroup = thisLabel.select('.text-math-group'); @@ -61991,13 +70635,10 @@ axes.drawLabels = function(gd, ax, opts) { 'text-anchor': anchor }); - if(isInside) { - // ensure visible - thisText.style({ opacity: 100 }); + thisText.style('opacity', 1); // visible - if(ax._hideOutOfRangeInsideTickLabels) { - ax._hideOutOfRangeInsideTickLabels(); - } + if(ax._adjustTickLabelsOverflow) { + ax._adjustTickLabelsOverflow(); } } else { var mjWidth = Drawing.bBox(mathjaxGroup.node()).width; @@ -62007,39 +70648,135 @@ axes.drawLabels = function(gd, ax, opts) { }); } - ax._hideOutOfRangeInsideTickLabels = undefined; - if((ax.ticklabelposition || '').indexOf('inside') !== -1) { - ax._hideOutOfRangeInsideTickLabels = function() { + ax._adjustTickLabelsOverflow = function() { + var ticklabeloverflow = ax.ticklabeloverflow; + if(!ticklabeloverflow || ticklabeloverflow === 'allow') return; + + var hideOverflow = ticklabeloverflow.indexOf('hide') !== -1; + + var isX = ax._id.charAt(0) === 'x'; + // div positions + var p0 = 0; + var p1 = isX ? + gd._fullLayout.width : + gd._fullLayout.height; + + if(ticklabeloverflow.indexOf('domain') !== -1) { + // domain positions var rl = Lib.simpleMap(ax.range, ax.r2l); + p0 = ax.l2p(rl[0]) + ax._offset; + p1 = ax.l2p(rl[1]) + ax._offset; + } - // hide inside tick labels that go outside axis end points - var p0 = ax.l2p(rl[0]); - var p1 = ax.l2p(rl[1]); + var min = Math.min(p0, p1); + var max = Math.max(p0, p1); - var min = Math.min(p0, p1) + ax._offset; - var max = Math.max(p0, p1) + ax._offset; + var side = ax.side; - var isX = ax._id.charAt(0) === 'x'; + var visibleLabelMin = Infinity; + var visibleLabelMax = -Infinity; - tickLabels.each(function(d) { - var thisLabel = d3.select(this); - var mathjaxGroup = thisLabel.select('.text-math-group'); + tickLabels.each(function(d) { + var thisLabel = d3.select(this); + var mathjaxGroup = thisLabel.select('.text-math-group'); - if(mathjaxGroup.empty()) { - var bb = Drawing.bBox(thisLabel.node()); - var hide = false; - if(isX) { - if(bb.right > max) hide = true; - else if(bb.left < min) hide = true; + if(mathjaxGroup.empty()) { + var bb = Drawing.bBox(thisLabel.node()); + var adjust = 0; + if(isX) { + if(bb.right > max) adjust = 1; + else if(bb.left < min) adjust = 1; + } else { + if(bb.bottom > max) adjust = 1; + else if(bb.top + (ax.tickangle ? 0 : d.fontSize / 4) < min) adjust = 1; + } + + var t = thisLabel.select('text'); + if(adjust) { + if(hideOverflow) t.style('opacity', 0); // hidden + } else { + t.style('opacity', 1); // visible + + if(side === 'bottom' || side === 'right') { + visibleLabelMin = Math.min(visibleLabelMin, isX ? bb.top : bb.left); } else { - if(bb.bottom > max) hide = true; - else if(bb.top + (ax.tickangle ? 0 : d.fontSize / 4) < min) hide = true; + visibleLabelMin = -Infinity; } - if(hide) thisLabel.select('text').style({ opacity: 0 }); - } // TODO: hide mathjax? - }); - }; - } + + if(side === 'top' || side === 'left') { + visibleLabelMax = Math.max(visibleLabelMax, isX ? bb.bottom : bb.right); + } else { + visibleLabelMax = Infinity; + } + } + } // TODO: hide mathjax? + }); + + for(var subplot in fullLayout._plots) { + var plotinfo = fullLayout._plots[subplot]; + if(ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue; + var anchorAx = isX ? plotinfo.yaxis : plotinfo.xaxis; + if(anchorAx) { + anchorAx['_visibleLabelMin_' + ax._id] = visibleLabelMin; + anchorAx['_visibleLabelMax_' + ax._id] = visibleLabelMax; + } + } + }; + + ax._hideCounterAxisInsideTickLabels = function(partialOpts) { + var isX = ax._id.charAt(0) === 'x'; + + var anchoredAxes = []; + for(var subplot in fullLayout._plots) { + var plotinfo = fullLayout._plots[subplot]; + if(ax._id !== plotinfo.xaxis._id && ax._id !== plotinfo.yaxis._id) continue; + anchoredAxes.push(isX ? plotinfo.yaxis : plotinfo.xaxis); + } + + anchoredAxes.forEach(function(anchorAx, idx) { + if(anchorAx && insideTicklabelposition(anchorAx)) { + (partialOpts || [ + ZERO_PATH, + GRID_PATH, + TICK_PATH, + TICK_TEXT + ]).forEach(function(e) { + var isPeriodLabel = + e.K === 'tick' && + e.L === 'text' && + ax.ticklabelmode === 'period'; + + var mainPlotinfo = fullLayout._plots[ax._mainSubplot]; + + var sel; + if(e.K === ZERO_PATH.K) sel = mainPlotinfo.zerolinelayer.selectAll('.' + ax._id + 'zl'); + else if(e.K === GRID_PATH.K) sel = mainPlotinfo.gridlayer.selectAll('.' + ax._id); + else sel = mainPlotinfo[ax._id.charAt(0) + 'axislayer']; + + sel.each(function() { + var w = d3.select(this); + if(e.L) w = w.selectAll(e.L); + + w.each(function(d) { + var q = ax.l2p( + isPeriodLabel ? getPosX(d) : d.x + ) + ax._offset; + + var t = d3.select(this); + if( + q < ax['_visibleLabelMax_' + anchorAx._id] && + q > ax['_visibleLabelMin_' + anchorAx._id] + ) { + t.style('display', 'none'); // hidden + } else if(e.K === 'tick' && !idx) { + t.style('display', null); // visible + } + }); + }); + }); + } + }); + }; // make sure all labels are correctly positioned at their base angle // the positionLabels call above is only for newly drawn labels. @@ -62168,7 +70905,7 @@ axes.drawLabels = function(gd, ax, opts) { var anchorAx = ax._anchorAxis; if( anchorAx && anchorAx.autorange && - (ax.ticklabelposition || '').indexOf('inside') !== -1 && + insideTicklabelposition(ax) && !isLinked(fullLayout, ax._id) ) { if(!fullLayout._insideTickLabelsAutorange) { @@ -62180,7 +70917,10 @@ axes.drawLabels = function(gd, ax, opts) { function computeFinalTickLabelBoundingBoxes() { tickLabels.each(function(d, i) { var thisLabel = selectTickLabel(this); - ax._vals[i].bb = Drawing.bBox(thisLabel.node()); + var mathjaxGroup = thisLabel.select('.text-math-group'); + if(mathjaxGroup.empty()) { + ax._vals[i].bb = Drawing.bBox(thisLabel.node()); + } }); } ); @@ -62317,7 +71057,7 @@ function drawTitle(gd, ax) { if(ax.title.hasOwnProperty('standoff')) { titleStandoff = ax._depth + ax.title.standoff + approxTitleDepth(ax); } else { - var isInside = (ax.ticklabelposition || '').indexOf('inside') !== -1; + var isInside = insideTicklabelposition(ax); if(ax.type === 'multicategory') { titleStandoff = ax._depth; @@ -62676,16 +71416,19 @@ function moveOutsideBreak(v, ax) { return v; } -},{"../../components/color":105,"../../components/drawing":127,"../../components/titles":200,"../../constants/alignment":207,"../../constants/numerical":212,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../../registry":326,"./autorange":278,"./axis_autotype":280,"./axis_ids":282,"./clean_ticks":284,"./layout_attributes":293,"./set_convert":299,"d3":21,"fast-isnumeric":23}],280:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +function insideTicklabelposition(ax) { + return ((ax.ticklabelposition || '').indexOf('inside') !== -1); +} +function hideCounterAxisInsideTickLabels(ax, opts) { + if(insideTicklabelposition(ax._anchorAxis || {})) { + if(ax._hideCounterAxisInsideTickLabels) { + ax._hideCounterAxisInsideTickLabels(opts); + } + } +} +},{"../../components/color":155,"../../components/drawing":177,"../../components/titles":253,"../../constants/alignment":260,"../../constants/numerical":265,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../../registry":373,"./autorange":330,"./axis_autotype":332,"./axis_ids":334,"./clean_ticks":336,"./layout_attributes":345,"./set_convert":351,"@plotly/d3":20,"fast-isnumeric":31}],332:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -62807,15 +71550,7 @@ function multiCategory(a) { return isArrayOrTypedArray(a[0]) && isArrayOrTypedArray(a[1]); } -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],281:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],333:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -62874,8 +71609,9 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, } } + var ticklabelposition = ''; if(!options.noTicklabelposition || axType === 'multicategory') { - Lib.coerce(containerIn, containerOut, { + ticklabelposition = Lib.coerce(containerIn, containerOut, { ticklabelposition: { valType: 'enumerated', dflt: 'outside', @@ -62893,6 +71629,17 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, }, 'ticklabelposition'); } + if(!options.noTicklabeloverflow) { + coerce('ticklabeloverflow', + ticklabelposition.indexOf('inside') !== -1 ? + 'hide past domain' : + axType === 'category' || + axType === 'multicategory' ? + 'allow' : + 'hide past div' + ); + } + setConvert(containerOut, layoutOut); var autorangeDflt = !containerOut.isValidRange(containerIn.range); @@ -62922,7 +71669,7 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce, coerce('title.text', dfltTitle); Lib.coerceFont(coerce, 'title.font', { family: font.family, - size: Math.round(font.size * 1.2), + size: Lib.bigFont(font.size), color: dfltFontColor }); @@ -63115,15 +71862,7 @@ function indexOfDay(v) { ]; } -},{"../../lib":233,"../../registry":326,"../array_container_defaults":274,"./category_order_defaults":283,"./constants":285,"./layout_attributes":293,"./line_grid_defaults":295,"./set_convert":299,"./tick_label_defaults":300,"./tick_mark_defaults":301,"./tick_value_defaults":302,"fast-isnumeric":23}],282:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"../array_container_defaults":326,"./category_order_defaults":335,"./constants":337,"./layout_attributes":345,"./line_grid_defaults":347,"./set_convert":351,"./tick_label_defaults":352,"./tick_mark_defaults":353,"./tick_value_defaults":354,"fast-isnumeric":31}],334:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -63271,15 +72010,7 @@ exports.isLinked = function(fullLayout, axId) { ); }; -},{"../../registry":326,"./constants":285}],283:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./constants":337}],335:[function(_dereq_,module,exports){ 'use strict'; function findCategories(ax, opts) { @@ -63365,15 +72096,7 @@ module.exports = function handleCategoryOrderDefaults(containerIn, containerOut, } }; -},{}],284:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],336:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -63457,15 +72180,7 @@ exports.tick0 = function(tick0, axType, calendar, dtick) { return isNumeric(tick0) ? Number(tick0) : 0; }; -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],285:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],337:[function(_dereq_,module,exports){ 'use strict'; var counterRegex = _dereq_('../../lib/regex').counter; @@ -63549,15 +72264,7 @@ module.exports = { } }; -},{"../../lib/regex":249}],286:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/regex":301}],338:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -64200,18 +72907,10 @@ function updateDomain(ax, factor) { ax.setScale(); } -},{"../../constants/alignment":207,"../../constants/numerical":212,"../../lib":233,"./autorange":278,"./axis_ids":282,"./layout_attributes":293,"./scale_zoom":297,"./set_convert":299}],287:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/alignment":260,"../../constants/numerical":265,"../../lib":285,"./autorange":330,"./axis_ids":334,"./layout_attributes":345,"./scale_zoom":349,"./set_convert":351}],339:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var supportsPassive = _dereq_('has-passive-events'); @@ -64746,6 +73445,7 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) { // then replot after a delay to make sure // no more scrolling is coming redrawTimer = setTimeout(function() { + if(!gd._fullLayout) return; scrollViewBox = [0, 0, pw, ph]; dragTail(); }, REDRAWDELAY); @@ -65538,19 +74238,10 @@ module.exports = { attachWheelEventHandler: attachWheelEventHandler }; -},{"../../components/color":105,"../../components/dragelement":124,"../../components/dragelement/helpers":123,"../../components/drawing":127,"../../components/fx":145,"../../constants/alignment":207,"../../lib":233,"../../lib/clear_gl_canvases":221,"../../lib/setcursor":253,"../../lib/svg_text_utils":255,"../../plot_api/subroutines":269,"../../registry":326,"../plots":313,"./axes":279,"./axis_ids":282,"./constants":285,"./scale_zoom":297,"./select":298,"d3":21,"has-passive-events":55,"tinycolor2":88}],288:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"../../components/dragelement":174,"../../components/dragelement/helpers":173,"../../components/drawing":177,"../../components/fx":195,"../../constants/alignment":260,"../../lib":285,"../../lib/clear_gl_canvases":273,"../../lib/setcursor":305,"../../lib/svg_text_utils":307,"../../plot_api/subroutines":321,"../../registry":373,"../plots":366,"./axes":331,"./axis_ids":334,"./constants":337,"./scale_zoom":349,"./select":350,"@plotly/d3":20,"has-passive-events":63,"tinycolor2":119}],340:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Fx = _dereq_('../../components/fx'); var dragElement = _dereq_('../../components/dragelement'); @@ -65706,16 +74397,7 @@ exports.updateFx = function(gd) { setCursor(fullLayout._draggers, cursor); }; -},{"../../components/dragelement":124,"../../components/fx":145,"../../lib/setcursor":253,"./constants":285,"./dragbox":287,"d3":21}],289:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/dragelement":174,"../../components/fx":195,"../../lib/setcursor":305,"./constants":337,"./dragbox":339,"@plotly/d3":20}],341:[function(_dereq_,module,exports){ 'use strict'; function clearOutlineControllers(gd) { @@ -65742,21 +74424,12 @@ module.exports = { clearSelect: clearSelect }; -},{}],290:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],342:[function(_dereq_,module,exports){ 'use strict'; var strTranslate = _dereq_('../../lib').strTranslate; -// in v2 (once log ranges are fixed), +// in v3 (once log ranges are fixed), // we'll be able to p2r here for all axis types function p2r(ax, v) { switch(ax.type) { @@ -65799,16 +74472,7 @@ module.exports = { getTransform: getTransform }; -},{"../../lib":233}],291:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285}],343:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -65877,19 +74541,10 @@ module.exports = function makeIncludeComponents(containerArrayName) { }; }; -},{"../../lib":233,"../../registry":326,"./axis_ids":282}],292:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373,"./axis_ids":334}],344:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -66495,15 +75150,7 @@ exports.toSVG = function(gd) { exports.updateFx = _dereq_('./graph_interact').updateFx; -},{"../../components/drawing":127,"../../constants/xmlns_namespaces":213,"../../lib":233,"../../registry":326,"../get_data":309,"../plots":313,"./attributes":277,"./axis_ids":282,"./constants":285,"./graph_interact":288,"./layout_attributes":293,"./layout_defaults":294,"./transition_axes":303,"d3":21}],293:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../constants/xmlns_namespaces":266,"../../lib":285,"../../registry":373,"../get_data":361,"../plots":366,"./attributes":329,"./axis_ids":334,"./constants":337,"./graph_interact":340,"./layout_attributes":345,"./layout_defaults":346,"./transition_axes":355,"@plotly/d3":20}],345:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('../font_attributes'); @@ -66512,8 +75159,10 @@ var dash = _dereq_('../../components/drawing/attributes').dash; var extendFlat = _dereq_('../../lib/extend').extendFlat; var templatedArray = _dereq_('../../plot_api/plot_template').templatedArray; -var FORMAT_LINK = _dereq_('../../constants/docs').FORMAT_LINK; -var DATE_FORMAT_LINK = _dereq_('../../constants/docs').DATE_FORMAT_LINK; +var docs = _dereq_('../../constants/docs'); +var FORMAT_LINK = docs.FORMAT_LINK; +var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK; + var ONEDAY = _dereq_('../../constants/numerical').ONEDAY; var constants = _dereq_('./constants'); var HOUR = constants.HOUR_PATTERN; @@ -66522,34 +75171,25 @@ var DAY_OF_WEEK = constants.WEEKDAY_PATTERN; module.exports = { visible: { valType: 'boolean', - editType: 'plot', - }, color: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, title: { text: { valType: 'string', - editType: 'ticks', - }, font: fontAttrs({ editType: 'ticks', - }), standoff: { valType: 'number', - min: 0, editType: 'ticks', - }, editType: 'ticks' }, @@ -66560,43 +75200,34 @@ module.exports = { // to gd.data like the others are. values: ['-', 'linear', 'log', 'date', 'category', 'multicategory'], dflt: '-', - editType: 'calc', // we forget when an axis has been autotyped, just writing the auto // value back to the input - so it doesn't make sense to template this. // Note: we do NOT prohibit this in `coerce`, so if someone enters a // type in the template explicitly it will be honored as the default. _noTemplating: true, - }, autotypenumbers: { valType: 'enumerated', values: ['convert types', 'strict'], dflt: 'convert types', - editType: 'calc', - }, autorange: { valType: 'enumerated', values: [true, false, 'reversed'], dflt: true, - editType: 'axrange', impliedEdits: {'range[0]': undefined, 'range[1]': undefined}, - }, rangemode: { valType: 'enumerated', values: ['normal', 'tozero', 'nonnegative'], dflt: 'normal', - editType: 'plot', - }, range: { valType: 'info_array', - items: [ {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true}, {valType: 'any', editType: 'axrange', impliedEdits: {'^autorange': false}, anim: true} @@ -66604,14 +75235,11 @@ module.exports = { editType: 'axrange', impliedEdits: {'autorange': false}, anim: true, - }, fixedrange: { valType: 'boolean', dflt: false, - editType: 'calc', - }, // scaleanchor: not used directly, just put here for reference // values are any opposite-letter axis id @@ -66621,32 +75249,24 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'plot', - }, scaleratio: { valType: 'number', min: 0, dflt: 1, - editType: 'plot', - }, constrain: { valType: 'enumerated', values: ['range', 'domain'], - editType: 'plot', - }, // constraintoward: not used directly, just put here for reference constraintoward: { valType: 'enumerated', values: ['left', 'center', 'right', 'top', 'middle', 'bottom'], - editType: 'plot', - }, matches: { valType: 'enumerated', @@ -66654,58 +75274,46 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'calc', - }, rangebreaks: templatedArray('rangebreak', { enabled: { valType: 'boolean', - dflt: true, editType: 'calc', - }, bounds: { valType: 'info_array', - items: [ {valType: 'any', editType: 'calc'}, {valType: 'any', editType: 'calc'} ], editType: 'calc', - }, pattern: { valType: 'enumerated', values: [DAY_OF_WEEK, HOUR, ''], - editType: 'calc', - }, values: { valType: 'info_array', freeLength: true, - editType: 'calc', items: { valType: 'any', editType: 'calc' }, - }, dvalue: { // TODO could become 'any' to add support for 'months', 'years' valType: 'number', - editType: 'calc', min: 0, dflt: ONEDAY, - }, /* @@ -66714,16 +75322,12 @@ module.exports = { min: 0, dflt: 0, // for *date* axes, maybe something else for *linear* editType: 'calc', - - }, gapmode: { valType: 'enumerated', values: ['pixels', 'fraction'], dflt: 'pixels', editType: 'calc', - - }, */ @@ -66740,65 +75344,49 @@ module.exports = { tickmode: { valType: 'enumerated', values: ['auto', 'linear', 'array'], - editType: 'ticks', impliedEdits: {tick0: undefined, dtick: undefined}, - }, nticks: { valType: 'integer', min: 0, dflt: 0, - editType: 'ticks', - }, tick0: { valType: 'any', - editType: 'ticks', impliedEdits: {tickmode: 'linear'}, - }, dtick: { valType: 'any', - editType: 'ticks', impliedEdits: {tickmode: 'linear'}, - }, tickvals: { valType: 'data_array', editType: 'ticks', - }, ticktext: { valType: 'data_array', editType: 'ticks', - }, ticks: { valType: 'enumerated', values: ['outside', 'inside', ''], - editType: 'ticks', - }, tickson: { valType: 'enumerated', values: ['labels', 'boundaries'], - dflt: 'labels', editType: 'ticks', - }, ticklabelmode: { valType: 'enumerated', values: ['instant', 'period'], dflt: 'instant', - editType: 'ticks', - }, // ticklabelposition: not used directly, as values depend on direction (similar to side) // left/right options are for x axes, and top/bottom options are for y axes @@ -66812,291 +75400,223 @@ module.exports = { 'outside bottom', 'inside bottom' ], dflt: 'outside', - editType: 'calc', - + }, + ticklabeloverflow: { + valType: 'enumerated', + values: [ + 'allow', + 'hide past div', + 'hide past domain' + ], + editType: 'calc', }, mirror: { valType: 'enumerated', values: [true, 'ticks', false, 'all', 'allticks'], dflt: false, - editType: 'ticks+layoutstyle', - }, ticklen: { valType: 'number', min: 0, dflt: 5, - editType: 'ticks', - }, tickwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'ticks', - }, tickcolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, showticklabels: { valType: 'boolean', dflt: true, - editType: 'ticks', - }, automargin: { valType: 'boolean', dflt: false, - editType: 'ticks', - }, showspikes: { valType: 'boolean', dflt: false, - editType: 'modebar', - }, spikecolor: { valType: 'color', dflt: null, - editType: 'none', - }, spikethickness: { valType: 'number', dflt: 3, - editType: 'none', - }, spikedash: extendFlat({}, dash, {dflt: 'dash', editType: 'none'}), spikemode: { valType: 'flaglist', flags: ['toaxis', 'across', 'marker'], - dflt: 'toaxis', editType: 'none', - }, spikesnap: { valType: 'enumerated', values: ['data', 'cursor', 'hovered data'], - dflt: 'data', - + dflt: 'hovered data', editType: 'none', - }, tickfont: fontAttrs({ editType: 'ticks', - }), tickangle: { valType: 'angle', dflt: 'auto', - editType: 'ticks', - }, tickprefix: { valType: 'string', dflt: '', - editType: 'ticks', - }, showtickprefix: { valType: 'enumerated', values: ['all', 'first', 'last', 'none'], dflt: 'all', - editType: 'ticks', - }, ticksuffix: { valType: 'string', dflt: '', - editType: 'ticks', - }, showticksuffix: { valType: 'enumerated', values: ['all', 'first', 'last', 'none'], dflt: 'all', - editType: 'ticks', - }, showexponent: { valType: 'enumerated', values: ['all', 'first', 'last', 'none'], dflt: 'all', - editType: 'ticks', - }, exponentformat: { valType: 'enumerated', values: ['none', 'e', 'E', 'power', 'SI', 'B'], dflt: 'B', - editType: 'ticks', - }, minexponent: { valType: 'number', dflt: 3, min: 0, - editType: 'ticks', - }, separatethousands: { valType: 'boolean', dflt: false, - editType: 'ticks', - }, tickformat: { valType: 'string', dflt: '', - editType: 'ticks', - }, tickformatstops: templatedArray('tickformatstop', { enabled: { valType: 'boolean', - dflt: true, editType: 'ticks', - }, dtickrange: { valType: 'info_array', - items: [ {valType: 'any', editType: 'ticks'}, {valType: 'any', editType: 'ticks'} ], editType: 'ticks', - }, value: { valType: 'string', dflt: '', - editType: 'ticks', - }, editType: 'ticks' }), hoverformat: { valType: 'string', dflt: '', - editType: 'none', - }, // lines and grids showline: { valType: 'boolean', dflt: false, - editType: 'ticks+layoutstyle', - }, linecolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'layoutstyle', - }, linewidth: { valType: 'number', min: 0, dflt: 1, - editType: 'ticks+layoutstyle', - }, showgrid: { valType: 'boolean', - editType: 'ticks', - }, gridcolor: { valType: 'color', dflt: colorAttrs.lightLine, - editType: 'ticks', - }, gridwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'ticks', - }, zeroline: { valType: 'boolean', - editType: 'ticks', - }, zerolinecolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, zerolinewidth: { valType: 'number', dflt: 1, - editType: 'ticks', - }, showdividers: { valType: 'boolean', dflt: true, - editType: 'ticks', - }, dividercolor: { valType: 'color', dflt: colorAttrs.defaultLine, - editType: 'ticks', - }, dividerwidth: { valType: 'number', dflt: 1, - editType: 'ticks', - }, // TODO dividerlen: that would override "to label base" length? @@ -67110,18 +75630,14 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'plot', - }, // side: not used directly, as values depend on direction // values are top, bottom for x axes, and left, right for y side: { valType: 'enumerated', values: ['top', 'bottom', 'left', 'right'], - editType: 'plot', - }, // overlaying: not used directly, just put here for reference // values are false and any other same-letter axis id that's not @@ -67133,37 +75649,29 @@ module.exports = { constants.idRegex.x.toString(), constants.idRegex.y.toString() ], - editType: 'plot', - }, layer: { valType: 'enumerated', values: ['above traces', 'below traces'], dflt: 'above traces', - editType: 'plot', - }, domain: { valType: 'info_array', - items: [ {valType: 'number', min: 0, max: 1, editType: 'plot'}, {valType: 'number', min: 0, max: 1, editType: 'plot'} ], dflt: [0, 1], editType: 'plot', - }, position: { valType: 'number', min: 0, max: 1, dflt: 0, - editType: 'plot', - }, categoryorder: { valType: 'enumerated', @@ -67177,54 +75685,34 @@ module.exports = { 'median ascending', 'median descending' ], dflt: 'trace', - editType: 'calc', - }, categoryarray: { valType: 'data_array', - editType: 'calc', - }, uirevision: { valType: 'any', - editType: 'none', - }, editType: 'calc', _deprecated: { autotick: { valType: 'boolean', - editType: 'ticks', - }, title: { valType: 'string', - editType: 'ticks', - }, titlefont: fontAttrs({ editType: 'ticks', - }) } }; -},{"../../components/color/attributes":104,"../../components/drawing/attributes":126,"../../constants/docs":209,"../../constants/numerical":212,"../../lib/extend":227,"../../plot_api/plot_template":268,"../font_attributes":307,"./constants":285}],294:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color/attributes":154,"../../components/drawing/attributes":176,"../../constants/docs":262,"../../constants/numerical":265,"../../lib/extend":279,"../../plot_api/plot_template":320,"../font_attributes":359,"./constants":337}],346:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -67427,7 +75915,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { } } - var hovermode = handleHoverModeDefaults(layoutIn, layoutOut, fullData); + var hovermode = handleHoverModeDefaults(layoutIn, layoutOut); var unifiedHover = isUnifiedHover(hovermode); // first pass creates the containers, determines types, and handles most of the settings @@ -67480,7 +75968,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { var spikethickness = coerce2('spikethickness', unifiedHover ? 1.5 : undefined); var spikedash = coerce2('spikedash', unifiedHover ? 'dot' : undefined); var spikemode = coerce2('spikemode', unifiedHover ? 'across' : undefined); - var spikesnap = coerce2('spikesnap', unifiedHover ? 'hovered data' : undefined); + var spikesnap = coerce2('spikesnap'); var showSpikes = coerce('showspikes', !!unifiedSpike || !!spikecolor || !!spikethickness || !!spikedash || !!spikemode || !!spikesnap); if(!showSpikes) { @@ -67602,15 +76090,7 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { }); }; -},{"../../components/color":105,"../../components/fx/helpers":141,"../../components/fx/hovermode_defaults":144,"../../lib":233,"../../plot_api/plot_template":268,"../../registry":326,"../layout_attributes":311,"./axis_defaults":281,"./axis_ids":282,"./constants":285,"./constraints":286,"./layout_attributes":293,"./position_defaults":296,"./type_defaults":304}],295:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx/helpers":191,"../../components/fx/hovermode_defaults":194,"../../lib":285,"../../plot_api/plot_template":320,"../../registry":373,"../layout_attributes":364,"./axis_defaults":333,"./axis_ids":334,"./constants":337,"./constraints":338,"./layout_attributes":345,"./position_defaults":348,"./type_defaults":356}],347:[function(_dereq_,module,exports){ 'use strict'; var colorMix = _dereq_('tinycolor2').mix; @@ -67667,16 +76147,7 @@ module.exports = function handleLineGridDefaults(containerIn, containerOut, coer } }; -},{"../../components/color/attributes":104,"../../lib":233,"tinycolor2":88}],296:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color/attributes":154,"../../lib":285,"tinycolor2":119}],348:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -67755,16 +76226,7 @@ module.exports = function handlePositionDefaults(containerIn, containerOut, coer return containerOut; }; -},{"../../lib":233,"fast-isnumeric":23}],297:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"fast-isnumeric":31}],349:[function(_dereq_,module,exports){ 'use strict'; var FROM_BL = _dereq_('../../constants/alignment').FROM_BL; @@ -67784,16 +76246,7 @@ module.exports = function scaleZoom(ax, factor, centerFraction) { ax.setScale(); }; -},{"../../constants/alignment":207}],298:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/alignment":260}],350:[function(_dereq_,module,exports){ 'use strict'; var polybool = _dereq_('polybooljs'); @@ -68142,9 +76595,9 @@ function prepSelect(e, startX, startY, dragOptions, mode) { } if(clickmode === 'event') { - // TODO: remove in v2 - this was probably never intended to work as it does, + // TODO: remove in v3 - this was probably never intended to work as it does, // but in case anyone depends on it we don't want to break it now. - // Note that click-to-select introduced pre v2 also emitts proper + // Note that click-to-select introduced pre v3 also emitts proper // event data when clickmode is having 'select' in its flag list. gd.emit('plotly_selected', undefined); } @@ -68727,18 +77180,10 @@ module.exports = { selectOnClick: selectOnClick }; -},{"../../components/color":105,"../../components/dragelement/helpers":123,"../../components/drawing":127,"../../components/fx":145,"../../components/fx/helpers":141,"../../components/shapes/draw_newshape/display_outlines":190,"../../components/shapes/draw_newshape/helpers":191,"../../components/shapes/draw_newshape/newshapes":192,"../../lib":233,"../../lib/clear_gl_canvases":221,"../../lib/polygon":245,"../../lib/throttle":256,"../../plot_api/subroutines":269,"../../registry":326,"./axis_ids":282,"./constants":285,"./handle_outline":289,"./helpers":290,"polybooljs":79}],299:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/dragelement/helpers":173,"../../components/drawing":177,"../../components/fx":195,"../../components/fx/helpers":191,"../../components/shapes/draw_newshape/display_outlines":243,"../../components/shapes/draw_newshape/helpers":244,"../../components/shapes/draw_newshape/newshapes":245,"../../lib":285,"../../lib/clear_gl_canvases":273,"../../lib/polygon":297,"../../lib/throttle":308,"../../plot_api/subroutines":321,"../../registry":373,"./axis_ids":334,"./constants":337,"./handle_outline":341,"./helpers":342,"polybooljs":73}],351:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var utcFormat = _dereq_('d3-time-format').utcFormat; var isNumeric = _dereq_('fast-isnumeric'); @@ -68788,7 +77233,7 @@ function isValidCategory(v) { * - category: calcdata format (c), and will stay that way because * the data format has no continuous mapping * - log: linearized (l) format - * TODO: in v2.0 we plan to change it to data format. At that point + * TODO: in v3.0 we plan to change it to data format. At that point * shapes will work the same way as ranges, tick0, and annotations * so they can use this conversion too. * @@ -68825,7 +77270,7 @@ module.exports = function setConvert(ax, fullLayout) { if((opts || {}).msUTC && isNumeric(v)) { // For now it is only used // to fix bar length in milliseconds & gl3d ticks - // It could be applied in other places in v2 + // It could be applied in other places in v3 return +v; } @@ -69685,16 +78130,7 @@ module.exports = function setConvert(ax, fullLayout) { delete ax._forceTick0; }; -},{"../../constants/numerical":212,"../../lib":233,"./axis_ids":282,"./constants":285,"d3":21,"d3-time-format":19,"fast-isnumeric":23}],300:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285,"./axis_ids":334,"./constants":337,"@plotly/d3":20,"d3-time-format":29,"fast-isnumeric":31}],352:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -69812,16 +78248,7 @@ function tickformatstopDefaults(valueIn, valueOut) { } } -},{"../../components/color":105,"../../lib":233,"../array_container_defaults":274,"./layout_attributes":293}],301:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"../../lib":285,"../array_container_defaults":326,"./layout_attributes":345}],353:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -69845,15 +78272,7 @@ module.exports = function handleTickDefaults(containerIn, containerOut, coerce, } }; -},{"../../lib":233,"./layout_attributes":293}],302:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./layout_attributes":345}],354:[function(_dereq_,module,exports){ 'use strict'; var cleanTicks = _dereq_('./clean_ticks'); @@ -69892,18 +78311,10 @@ module.exports = function handleTickValueDefaults(containerIn, containerOut, coe } }; -},{"../../lib":233,"./clean_ticks":284}],303:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./clean_ticks":336}],355:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -70105,15 +78516,7 @@ module.exports = function transitionAxes(gd, edits, transitionOpts, makeOnComple return Promise.resolve(); }; -},{"../../components/drawing":127,"../../lib":233,"../../registry":326,"./axes":279,"d3":21}],304:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../lib":285,"../../registry":373,"./axes":331,"@plotly/d3":20}],356:[function(_dereq_,module,exports){ 'use strict'; var traceIs = _dereq_('../../registry').traceIs; @@ -70245,15 +78648,7 @@ function isBoxWithoutPositionCoords(trace, axLetter) { ); } -},{"../../registry":326,"./axis_autotype":280}],305:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../registry":373,"./axis_autotype":332}],357:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -70672,15 +79067,7 @@ function crawl(attrs, callback, path, depth) { }); } -},{"../lib":233,"../registry":326}],306:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../registry":373}],358:[function(_dereq_,module,exports){ 'use strict'; var extendFlat = _dereq_('../lib/extend').extendFlat; @@ -70712,7 +79099,6 @@ exports.attributes = function(opts, extra) { var base = { valType: 'info_array', - editType: opts.editType, items: [ {valType: 'number', min: 0, max: 1, editType: opts.editType}, @@ -70727,10 +79113,8 @@ exports.attributes = function(opts, extra) { var out = { x: extendFlat({}, base, { - }), y: extendFlat({}, base, { - }), editType: opts.editType }; @@ -70740,17 +79124,13 @@ exports.attributes = function(opts, extra) { valType: 'integer', min: 0, dflt: 0, - editType: opts.editType, - }; out.column = { valType: 'integer', min: 0, dflt: 0, - editType: opts.editType, - }; } @@ -70784,15 +79164,7 @@ exports.defaults = function(containerOut, layout, coerce, dfltDomains) { if(!(y[0] < y[1])) containerOut.domain.y = dfltY.slice(); }; -},{"../lib/extend":227}],307:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib/extend":279}],359:[function(_dereq_,module,exports){ 'use strict'; /* @@ -70817,27 +79189,22 @@ module.exports = function(opts) { var attrs = { family: { valType: 'string', - noBlank: true, strict: true, editType: editType, - }, size: { valType: 'number', - min: 1, editType: editType }, color: { valType: 'color', - editType: colorEditType }, editType: editType, // blank strings so compress_attributes can remove // TODO - that's uber hacky... better solution? - }; if(opts.arrayOk) { @@ -70849,15 +79216,7 @@ module.exports = function(opts) { return attrs; }; -},{}],308:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],360:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -70865,45 +79224,25 @@ module.exports = { group: { valType: 'string', - - }, name: { valType: 'string', - - }, traces: { valType: 'any', - - }, baseframe: { valType: 'string', - - }, data: { valType: 'any', - - }, layout: { valType: 'any', - - } }; -},{}],309:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],361:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -71024,16 +79363,7 @@ exports.getSubplotData = function getSubplotData(data, type, subplotId) { return subplotData; }; -},{"../registry":326,"./cartesian/constants":285}],310:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../registry":373,"./cartesian/constants":337}],362:[function(_dereq_,module,exports){ 'use strict'; function xformMatrix(m, v) { @@ -71058,15 +79388,22 @@ function project(camera, v) { module.exports = project; -},{}],311:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{}],363:[function(_dereq_,module,exports){ +'use strict'; +var docs = _dereq_('../constants/docs'); +var FORMAT_LINK = docs.FORMAT_LINK; +var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK; + +module.exports = function axisHoverFormat(x, noDates) { + return { + valType: 'string', + dflt: '', + editType: 'none', + }; +}; + +},{"../constants/docs":262}],364:[function(_dereq_,module,exports){ 'use strict'; var fontAttrs = _dereq_('./font_attributes'); @@ -71078,7 +79415,6 @@ var extendFlat = _dereq_('../lib/extend').extendFlat; var globalFont = fontAttrs({ editType: 'calc', - }); globalFont.family.dflt = '"Open Sans", verdana, arial, sans-serif'; globalFont.size.dflt = 12; @@ -71089,66 +79425,50 @@ module.exports = { title: { text: { valType: 'string', - editType: 'layoutstyle', - }, font: fontAttrs({ editType: 'layoutstyle', - }), xref: { valType: 'enumerated', dflt: 'container', values: ['container', 'paper'], - editType: 'layoutstyle', - }, yref: { valType: 'enumerated', dflt: 'container', values: ['container', 'paper'], - editType: 'layoutstyle', - }, x: { valType: 'number', min: 0, max: 1, dflt: 0.5, - editType: 'layoutstyle', - }, y: { valType: 'number', min: 0, max: 1, dflt: 'auto', - editType: 'layoutstyle', - }, xanchor: { valType: 'enumerated', dflt: 'auto', values: ['auto', 'left', 'center', 'right'], - editType: 'layoutstyle', - }, yanchor: { valType: 'enumerated', dflt: 'auto', values: ['auto', 'top', 'middle', 'bottom'], - editType: 'layoutstyle', - }, pad: extendFlat(padAttrs({editType: 'layoutstyle'}), { - }), editType: 'layoutstyle' }, @@ -71157,217 +79477,134 @@ module.exports = { valType: 'enumerated', values: [false, 'hide', 'show'], dflt: false, - editType: 'plot', - }, minsize: { valType: 'number', min: 0, dflt: 0, - editType: 'plot', - }, editType: 'plot' }, autosize: { valType: 'boolean', - dflt: false, // autosize, width, and height get special editType treatment in _relayout // so we can handle noop resizes more efficiently editType: 'none', - }, width: { valType: 'number', - min: 10, dflt: 700, editType: 'plot', - }, height: { valType: 'number', - min: 10, dflt: 450, editType: 'plot', - }, margin: { l: { valType: 'number', - min: 0, dflt: 80, editType: 'plot', - }, r: { valType: 'number', - min: 0, dflt: 80, editType: 'plot', - }, t: { valType: 'number', - min: 0, dflt: 100, editType: 'plot', - }, b: { valType: 'number', - min: 0, dflt: 80, editType: 'plot', - }, pad: { valType: 'number', - min: 0, dflt: 0, editType: 'plot', - }, autoexpand: { valType: 'boolean', - dflt: true, editType: 'plot', - }, editType: 'plot' }, computed: { valType: 'any', - editType: 'none', - }, paper_bgcolor: { valType: 'color', - dflt: colorAttrs.background, editType: 'plot', - }, plot_bgcolor: { // defined here, but set in cartesian.supplyLayoutDefaults // because it needs to know if there are (2D) axes or not valType: 'color', - dflt: colorAttrs.background, editType: 'layoutstyle', - }, autotypenumbers: { valType: 'enumerated', values: ['convert types', 'strict'], dflt: 'convert types', - editType: 'calc', - }, separators: { valType: 'string', - editType: 'plot', - }, hidesources: { valType: 'boolean', - dflt: false, editType: 'plot', - }, showlegend: { // handled in legend.supplyLayoutDefaults // but included here because it's not in the legend object valType: 'boolean', - editType: 'legend', - }, colorway: { valType: 'colorlist', dflt: colorAttrs.defaults, - editType: 'calc', - }, datarevision: { valType: 'any', - editType: 'calc', - }, uirevision: { valType: 'any', - editType: 'none', - }, editrevision: { valType: 'any', - editType: 'none', - }, selectionrevision: { valType: 'any', - editType: 'none', - }, template: { valType: 'any', - editType: 'calc', - - }, - modebar: { - orientation: { - valType: 'enumerated', - values: ['v', 'h'], - dflt: 'h', - - editType: 'modebar', - - }, - bgcolor: { - valType: 'color', - - editType: 'modebar', - - }, - color: { - valType: 'color', - - editType: 'modebar', - - }, - activecolor: { - valType: 'color', - - editType: 'modebar', - - }, - uirevision: { - valType: 'any', - - editType: 'none', - - }, - editType: 'modebar' }, newshape: drawNewShapeAttrs.newshape, @@ -71376,38 +79613,24 @@ module.exports = { meta: { valType: 'any', arrayOk: true, - editType: 'plot', - }, transition: extendFlat({}, animationAttrs.transition, { - editType: 'none' }), _deprecated: { title: { valType: 'string', - editType: 'layoutstyle', - }, titlefont: fontAttrs({ editType: 'layoutstyle', - }) } }; -},{"../components/color/attributes":104,"../components/shapes/draw_newshape/attributes":187,"../lib/extend":227,"./animation_attributes":273,"./font_attributes":307,"./pad_attributes":312}],312:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color/attributes":154,"../components/shapes/draw_newshape/attributes":240,"../lib/extend":279,"./animation_attributes":325,"./font_attributes":359,"./pad_attributes":365}],365:[function(_dereq_,module,exports){ 'use strict'; /** @@ -71425,47 +79648,31 @@ module.exports = function(opts) { t: { valType: 'number', dflt: 0, - editType: editType, - }, r: { valType: 'number', dflt: 0, - editType: editType, - }, b: { valType: 'number', dflt: 0, - editType: editType, - }, l: { valType: 'number', dflt: 0, - editType: editType, - }, editType: editType }; }; -},{}],313:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],366:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var timeFormatLocale = _dereq_('d3-time-format').timeFormatLocale; var isNumeric = _dereq_('fast-isnumeric'); @@ -71514,15 +79721,9 @@ plots.hasSimpleAPICommandBindings = commandModule.hasSimpleAPICommandBindings; plots.redrawText = function(gd) { gd = Lib.getGraphDiv(gd); - var fullLayout = gd._fullLayout || {}; - var hasPolar = fullLayout._has && fullLayout._has('polar'); - var hasLegacyPolar = !hasPolar && gd.data && gd.data[0] && gd.data[0].r; - - // do not work if polar is present - if(hasLegacyPolar) return; - return new Promise(function(resolve) { setTimeout(function() { + if(!gd._fullLayout) return; Registry.getComponentMethod('annotations', 'draw')(gd); Registry.getComponentMethod('legend', 'draw')(gd); Registry.getComponentMethod('colorbar', 'draw')(gd); @@ -71588,7 +79789,7 @@ plots.previousPromises = function(gd) { /** * Adds the 'Edit chart' link. - * Note that now Plotly.plot() calls this so it can regenerate whenever it replots + * Note that now _doPlot calls this so it can regenerate whenever it replots * * Add source links to your graph inside the 'showSources' config argument. */ @@ -71925,15 +80126,6 @@ plots.supplyDefaults = function(gd, opts) { newFullLayout.images.length === 0 ); - // TODO remove in v2.0.0 - // add has-plot-type refs to fullLayout for backward compatibility - newFullLayout._hasCartesian = newFullLayout._has('cartesian'); - newFullLayout._hasGeo = newFullLayout._has('geo'); - newFullLayout._hasGL3D = newFullLayout._has('gl3d'); - newFullLayout._hasGL2D = newFullLayout._has('gl2d'); - newFullLayout._hasTernary = newFullLayout._has('ternary'); - newFullLayout._hasPie = newFullLayout._has('pie'); - // relink / initialize subplot axis objects plots.linkSubplots(newFullData, newFullLayout, oldFullData, oldFullLayout); @@ -72168,7 +80360,7 @@ function getFormatObj(gd, formatKeys) { /** * getFormatter: combine the final separators with the locale formatting object * we pulled earlier to generate number and time formatters - * TODO: remove separators in v2, only use locale, so we don't need this step? + * TODO: remove separators in v3, only use locale, so we don't need this step? * * @param {object} formatObj: d3.locale format object * @param {string} separators: length-2 string to override decimal and thousands @@ -72969,7 +81161,7 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { // layouts with no set width and height were set temporary set to 'initial' // to pass through the autosize routine // - // This behavior is subject to change in v2. + // This behavior is subject to change in v3. coerce('autosize', !(layoutIn.width && layoutIn.height)); coerce('width'); @@ -72997,12 +81189,10 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) { coerce('editrevision', uirevision); coerce('selectionrevision', uirevision); - coerce('modebar.orientation'); - coerce('modebar.bgcolor', Color.addOpacity(layoutOut.paper_bgcolor, 0.5)); - var modebarDefaultColor = Color.contrast(Color.rgb(layoutOut.modebar.bgcolor)); - coerce('modebar.color', Color.addOpacity(modebarDefaultColor, 0.3)); - coerce('modebar.activecolor', Color.addOpacity(modebarDefaultColor, 0.7)); - coerce('modebar.uirevision', uirevision); + Registry.getComponentMethod( + 'modebar', + 'supplyLayoutDefaults' + )(layoutIn, layoutOut); Registry.getComponentMethod( 'shapes', @@ -73213,7 +81403,6 @@ plots.purge = function(gd) { delete gd._fullData; delete gd._fullLayout; delete gd.calcdata; - delete gd.framework; delete gd.empty; delete gd.fid; @@ -73223,7 +81412,7 @@ plots.purge = function(gd) { delete gd.autoplay; // are we doing an action that doesn't go in undo queue? delete gd.changed; - // these get recreated on Plotly.plot anyway, but just to be safe + // these get recreated on _doPlot anyway, but just to be safe // (and to have a record of them...) delete gd._promises; delete gd._redrawTimer; @@ -73550,24 +81739,28 @@ plots.doAutoMargin = function(gd) { var maxNumberOfRedraws = 3 * (1 + Object.keys(pushMarginIds).length); if(fullLayout._redrawFromAutoMarginCount < maxNumberOfRedraws) { - return Registry.call('plot', gd); + return Registry.call('_doPlot', gd); } else { fullLayout._size = oldMargins; Lib.warn('Too many auto-margin redraws.'); } } - hideOutOfRangeInsideTickLabels(gd); + refineTicks(gd); }; -function hideOutOfRangeInsideTickLabels(gd) { +function refineTicks(gd) { var axList = axisIDs.list(gd, '', true); - for(var i = 0; i < axList.length; i++) { - var ax = axList[i]; - var hideFn = ax._hideOutOfRangeInsideTickLabels; - if(hideFn) hideFn(); - } + [ + '_adjustTickLabelsOverflow', + '_hideCounterAxisInsideTickLabels' + ].forEach(function(k) { + for(var i = 0; i < axList.length; i++) { + var hideFn = axList[i][k]; + if(hideFn) hideFn(); + } + }); } var marginKeys = ['l', 'r', 't', 'b', 'p', 'w', 'h']; @@ -73708,8 +81901,6 @@ plots.graphJson = function(gd, dataonly, mode, output, useDefaults, includeConfi } } - if(gd.framework && gd.framework.isPolar) obj = gd.framework.getConfig(); - if(frames) obj.frames = stripObj(frames); if(includeConfig) obj.config = stripObj(gd._context, true); @@ -74204,6 +82395,7 @@ plots.transitionFromReact = function(gd, restyleFlags, relayoutFlags, oldFullLay } function transitionAxes() { + if(!gd._fullLayout) return; for(var j = 0; j < basePlotModules.length; j++) { if(basePlotModules[j].transitionAxes) { basePlotModules[j].transitionAxes(gd, axEdits, axisTransitionOpts, makeCallback); @@ -74212,6 +82404,7 @@ plots.transitionFromReact = function(gd, restyleFlags, relayoutFlags, oldFullLay } function transitionTraces() { + if(!gd._fullLayout) return; for(var j = 0; j < basePlotModules.length; j++) { basePlotModules[j].plot(gd, transitionedTraces, traceTransitionOpts, makeCallback); } @@ -74881,1769 +83074,7 @@ plots.cleanBasePlot = function(desiredType, newFullData, newFullLayout, oldFullD } }; -},{"../components/color":105,"../constants/numerical":212,"../lib":233,"../plot_api/plot_schema":267,"../plot_api/plot_template":268,"../plots/get_data":309,"../registry":326,"./animation_attributes":273,"./attributes":275,"./cartesian/axis_ids":282,"./cartesian/handle_outline":289,"./command":305,"./font_attributes":307,"./frame_attributes":308,"./layout_attributes":311,"d3":21,"d3-time-format":19,"fast-isnumeric":23}],314:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -var scatterAttrs = _dereq_('../../../traces/scatter/attributes'); -var scatterMarkerAttrs = scatterAttrs.marker; -var extendFlat = _dereq_('../../../lib/extend').extendFlat; - -var deprecationWarning = [ - 'Area traces are deprecated!', - 'Please switch to the *barpolar* trace type.' -].join(' '); - -module.exports = { - r: extendFlat({}, scatterAttrs.r, { - - }), - t: extendFlat({}, scatterAttrs.t, { - - }), - marker: { - color: extendFlat({}, scatterMarkerAttrs.color, { - - }), - size: extendFlat({}, scatterMarkerAttrs.size, { - - }), - symbol: extendFlat({}, scatterMarkerAttrs.symbol, { - - }), - opacity: extendFlat({}, scatterMarkerAttrs.opacity, { - - }), - editType: 'calc' - } -}; - -},{"../../../lib/extend":227,"../../../traces/scatter/attributes":447}],315:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - -'use strict'; - -var axesAttrs = _dereq_('../../cartesian/layout_attributes'); -var extendFlat = _dereq_('../../../lib/extend').extendFlat; -var overrideAll = _dereq_('../../../plot_api/edit_types').overrideAll; - -var deprecationWarning = [ - 'Legacy polar charts are deprecated!', - 'Please switch to *polar* subplots.' -].join(' '); - -var domainAttr = extendFlat({}, axesAttrs.domain, { - -}); - -function mergeAttrs(axisName, nonCommonAttrs) { - var commonAttrs = { - showline: { - valType: 'boolean', - - - }, - showticklabels: { - valType: 'boolean', - - - }, - tickorientation: { - valType: 'enumerated', - values: ['horizontal', 'vertical'], - - - }, - ticklen: { - valType: 'number', - min: 0, - - - }, - tickcolor: { - valType: 'color', - - - }, - ticksuffix: { - valType: 'string', - - - }, - endpadding: { - valType: 'number', - - description: deprecationWarning, - }, - visible: { - valType: 'boolean', - - - } - }; - - return extendFlat({}, nonCommonAttrs, commonAttrs); -} - -module.exports = overrideAll({ - radialaxis: mergeAttrs('radial', { - range: { - valType: 'info_array', - - items: [ - { valType: 'number' }, - { valType: 'number' } - ], - - }, - domain: domainAttr, - orientation: { - valType: 'number', - - - } - }), - - angularaxis: mergeAttrs('angular', { - range: { - valType: 'info_array', - - items: [ - { valType: 'number', dflt: 0 }, - { valType: 'number', dflt: 360 } - ], - - }, - domain: domainAttr - }), - - // attributes that appear at layout root - layout: { - direction: { - valType: 'enumerated', - values: ['clockwise', 'counterclockwise'], - - - }, - orientation: { - valType: 'angle', - - - } - } -}, 'plot', 'nested'); - -},{"../../../lib/extend":227,"../../../plot_api/edit_types":261,"../../cartesian/layout_attributes":293}],316:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -var Polar = module.exports = _dereq_('./micropolar'); - -Polar.manager = _dereq_('./micropolar_manager'); - -},{"./micropolar":317,"./micropolar_manager":318}],317:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -var d3 = _dereq_('d3'); -var Lib = _dereq_('../../../lib'); -var extendDeepAll = Lib.extendDeepAll; -var MID_SHIFT = _dereq_('../../../constants/alignment').MID_SHIFT; - -var µ = module.exports = { version: '0.2.2' }; - -µ.Axis = function module() { - var config = { - data: [], - layout: {} - }, inputConfig = {}, liveConfig = {}; - var svg, container, dispatch = d3.dispatch('hover'), radialScale, angularScale; - var exports = {}; - function render(_container) { - container = _container || container; - var data = config.data; - var axisConfig = config.layout; - if (typeof container == 'string' || container.nodeName) container = d3.select(container); - container.datum(data).each(function(_data, _index) { - var dataOriginal = _data.slice(); - liveConfig = { - data: µ.util.cloneJson(dataOriginal), - layout: µ.util.cloneJson(axisConfig) - }; - var colorIndex = 0; - dataOriginal.forEach(function(d, i) { - if (!d.color) { - d.color = axisConfig.defaultColorRange[colorIndex]; - colorIndex = (colorIndex + 1) % axisConfig.defaultColorRange.length; - } - if (!d.strokeColor) { - d.strokeColor = d.geometry === 'LinePlot' ? d.color : d3.rgb(d.color).darker().toString(); - } - liveConfig.data[i].color = d.color; - liveConfig.data[i].strokeColor = d.strokeColor; - liveConfig.data[i].strokeDash = d.strokeDash; - liveConfig.data[i].strokeSize = d.strokeSize; - }); - var data = dataOriginal.filter(function(d, i) { - var visible = d.visible; - return typeof visible === 'undefined' || visible === true; - }); - var isStacked = false; - var dataWithGroupId = data.map(function(d, i) { - isStacked = isStacked || typeof d.groupId !== 'undefined'; - return d; - }); - if (isStacked) { - var grouped = d3.nest().key(function(d, i) { - return typeof d.groupId != 'undefined' ? d.groupId : 'unstacked'; - }).entries(dataWithGroupId); - var dataYStack = []; - var stacked = grouped.map(function(d, i) { - if (d.key === 'unstacked') return d.values; else { - var prevArray = d.values[0].r.map(function(d, i) { - return 0; - }); - d.values.forEach(function(d, i, a) { - d.yStack = [ prevArray ]; - dataYStack.push(prevArray); - prevArray = µ.util.sumArrays(d.r, prevArray); - }); - return d.values; - } - }); - data = d3.merge(stacked); - } - data.forEach(function(d, i) { - d.t = Array.isArray(d.t[0]) ? d.t : [ d.t ]; - d.r = Array.isArray(d.r[0]) ? d.r : [ d.r ]; - }); - var radius = Math.min(axisConfig.width - axisConfig.margin.left - axisConfig.margin.right, axisConfig.height - axisConfig.margin.top - axisConfig.margin.bottom) / 2; - radius = Math.max(10, radius); - var chartCenter = [ axisConfig.margin.left + radius, axisConfig.margin.top + radius ]; - var extent; - if (isStacked) { - var highestStackedValue = d3.max(µ.util.sumArrays(µ.util.arrayLast(data).r[0], µ.util.arrayLast(dataYStack))); - extent = [ 0, highestStackedValue ]; - } else extent = d3.extent(µ.util.flattenArray(data.map(function(d, i) { - return d.r; - }))); - if (axisConfig.radialAxis.domain != µ.DATAEXTENT) extent[0] = 0; - radialScale = d3.scale.linear().domain(axisConfig.radialAxis.domain != µ.DATAEXTENT && axisConfig.radialAxis.domain ? axisConfig.radialAxis.domain : extent).range([ 0, radius ]); - liveConfig.layout.radialAxis.domain = radialScale.domain(); - var angularDataMerged = µ.util.flattenArray(data.map(function(d, i) { - return d.t; - })); - var isOrdinal = typeof angularDataMerged[0] === 'string'; - var ticks; - if (isOrdinal) { - angularDataMerged = µ.util.deduplicate(angularDataMerged); - ticks = angularDataMerged.slice(); - angularDataMerged = d3.range(angularDataMerged.length); - data = data.map(function(d, i) { - var result = d; - d.t = [ angularDataMerged ]; - if (isStacked) result.yStack = d.yStack; - return result; - }); - } - var hasOnlyLineOrDotPlot = data.filter(function(d, i) { - return d.geometry === 'LinePlot' || d.geometry === 'DotPlot'; - }).length === data.length; - var needsEndSpacing = axisConfig.needsEndSpacing === null ? isOrdinal || !hasOnlyLineOrDotPlot : axisConfig.needsEndSpacing; - var useProvidedDomain = axisConfig.angularAxis.domain && axisConfig.angularAxis.domain != µ.DATAEXTENT && !isOrdinal && axisConfig.angularAxis.domain[0] >= 0; - var angularDomain = useProvidedDomain ? axisConfig.angularAxis.domain : d3.extent(angularDataMerged); - var angularDomainStep = Math.abs(angularDataMerged[1] - angularDataMerged[0]); - if (hasOnlyLineOrDotPlot && !isOrdinal) angularDomainStep = 0; - var angularDomainWithPadding = angularDomain.slice(); - if (needsEndSpacing && isOrdinal) angularDomainWithPadding[1] += angularDomainStep; - var tickCount = axisConfig.angularAxis.ticksCount || 4; - if (tickCount > 8) tickCount = tickCount / (tickCount / 8) + tickCount % 8; - if (axisConfig.angularAxis.ticksStep) { - tickCount = (angularDomainWithPadding[1] - angularDomainWithPadding[0]) / tickCount; - } - var angularTicksStep = axisConfig.angularAxis.ticksStep || (angularDomainWithPadding[1] - angularDomainWithPadding[0]) / (tickCount * (axisConfig.minorTicks + 1)); - if (ticks) angularTicksStep = Math.max(Math.round(angularTicksStep), 1); - if (!angularDomainWithPadding[2]) angularDomainWithPadding[2] = angularTicksStep; - var angularAxisRange = d3.range.apply(this, angularDomainWithPadding); - angularAxisRange = angularAxisRange.map(function(d, i) { - return parseFloat(d.toPrecision(12)); - }); - angularScale = d3.scale.linear().domain(angularDomainWithPadding.slice(0, 2)).range(axisConfig.direction === 'clockwise' ? [ 0, 360 ] : [ 360, 0 ]); - liveConfig.layout.angularAxis.domain = angularScale.domain(); - liveConfig.layout.angularAxis.endPadding = needsEndSpacing ? angularDomainStep : 0; - svg = d3.select(this).select('svg.chart-root'); - if (typeof svg === 'undefined' || svg.empty()) { - var skeleton = "' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '"; - var doc = new DOMParser().parseFromString(skeleton, 'application/xml'); - var newSvg = this.appendChild(this.ownerDocument.importNode(doc.documentElement, true)); - svg = d3.select(newSvg); - } - svg.select('.guides-group').style({ - 'pointer-events': 'none' - }); - svg.select('.angular.axis-group').style({ - 'pointer-events': 'none' - }); - svg.select('.radial.axis-group').style({ - 'pointer-events': 'none' - }); - var chartGroup = svg.select('.chart-group'); - var lineStyle = { - fill: 'none', - stroke: axisConfig.tickColor - }; - var fontStyle = { - 'font-size': axisConfig.font.size, - 'font-family': axisConfig.font.family, - fill: axisConfig.font.color, - 'text-shadow': [ '-1px 0px', '1px -1px', '-1px 1px', '1px 1px' ].map(function(d, i) { - return ' ' + d + ' 0 ' + axisConfig.font.outlineColor; - }).join(',') - }; - var legendContainer; - if (axisConfig.showLegend) { - legendContainer = svg.select('.legend-group').attr({ - transform: 'translate(' + [ radius, axisConfig.margin.top ] + ')' - }).style({ - display: 'block' - }); - var elements = data.map(function(d, i) { - var datumClone = µ.util.cloneJson(d); - datumClone.symbol = d.geometry === 'DotPlot' ? d.dotType || 'circle' : d.geometry != 'LinePlot' ? 'square' : 'line'; - datumClone.visibleInLegend = typeof d.visibleInLegend === 'undefined' || d.visibleInLegend; - datumClone.color = d.geometry === 'LinePlot' ? d.strokeColor : d.color; - return datumClone; - }); - - µ.Legend().config({ - data: data.map(function(d, i) { - return d.name || 'Element' + i; - }), - legendConfig: extendDeepAll({}, - µ.Legend.defaultConfig().legendConfig, - { - container: legendContainer, - elements: elements, - reverseOrder: axisConfig.legend.reverseOrder - } - ) - })(); - - var legendBBox = legendContainer.node().getBBox(); - radius = Math.min(axisConfig.width - legendBBox.width - axisConfig.margin.left - axisConfig.margin.right, axisConfig.height - axisConfig.margin.top - axisConfig.margin.bottom) / 2; - radius = Math.max(10, radius); - chartCenter = [ axisConfig.margin.left + radius, axisConfig.margin.top + radius ]; - radialScale.range([ 0, radius ]); - liveConfig.layout.radialAxis.domain = radialScale.domain(); - legendContainer.attr('transform', 'translate(' + [ chartCenter[0] + radius, chartCenter[1] - radius ] + ')'); - } else { - legendContainer = svg.select('.legend-group').style({ - display: 'none' - }); - } - svg.attr({ - width: axisConfig.width, - height: axisConfig.height - }).style({ - opacity: axisConfig.opacity - }); - chartGroup.attr('transform', 'translate(' + chartCenter + ')').style({ - cursor: 'crosshair' - }); - var centeringOffset = [ (axisConfig.width - (axisConfig.margin.left + axisConfig.margin.right + radius * 2 + (legendBBox ? legendBBox.width : 0))) / 2, (axisConfig.height - (axisConfig.margin.top + axisConfig.margin.bottom + radius * 2)) / 2 ]; - centeringOffset[0] = Math.max(0, centeringOffset[0]); - centeringOffset[1] = Math.max(0, centeringOffset[1]); - svg.select('.outer-group').attr('transform', 'translate(' + centeringOffset + ')'); - if (axisConfig.title && axisConfig.title.text) { - var title = svg.select('g.title-group text').style(fontStyle).text(axisConfig.title.text); - var titleBBox = title.node().getBBox(); - title.attr({ - x: chartCenter[0] - titleBBox.width / 2, - y: chartCenter[1] - radius - 20 - }); - } - var radialAxis = svg.select('.radial.axis-group'); - if (axisConfig.radialAxis.gridLinesVisible) { - var gridCircles = radialAxis.selectAll('circle.grid-circle').data(radialScale.ticks(5)); - gridCircles.enter().append('circle').attr({ - 'class': 'grid-circle' - }).style(lineStyle); - gridCircles.attr('r', radialScale); - gridCircles.exit().remove(); - } - radialAxis.select('circle.outside-circle').attr({ - r: radius - }).style(lineStyle); - var backgroundCircle = svg.select('circle.background-circle').attr({ - r: radius - }).style({ - fill: axisConfig.backgroundColor, - stroke: axisConfig.stroke - }); - function currentAngle(d, i) { - return angularScale(d) % 360 + axisConfig.orientation; - } - if (axisConfig.radialAxis.visible) { - var axis = d3.svg.axis().scale(radialScale).ticks(5).tickSize(5); - radialAxis.call(axis).attr({ - transform: 'rotate(' + axisConfig.radialAxis.orientation + ')' - }); - radialAxis.selectAll('.domain').style(lineStyle); - radialAxis.selectAll('g>text').text(function(d, i) { - return this.textContent + axisConfig.radialAxis.ticksSuffix; - }).style(fontStyle).style({ - 'text-anchor': 'start' - }).attr({ - x: 0, - y: 0, - dx: 0, - dy: 0, - transform: function(d, i) { - if (axisConfig.radialAxis.tickOrientation === 'horizontal') { - return 'rotate(' + -axisConfig.radialAxis.orientation + ') translate(' + [ 0, fontStyle['font-size'] ] + ')'; - } else return 'translate(' + [ 0, fontStyle['font-size'] ] + ')'; - } - }); - radialAxis.selectAll('g>line').style({ - stroke: 'black' - }); - } - var angularAxis = svg.select('.angular.axis-group').selectAll('g.angular-tick').data(angularAxisRange); - var angularAxisEnter = angularAxis.enter().append('g').classed('angular-tick', true); - angularAxis.attr({ - transform: function(d, i) { - return 'rotate(' + currentAngle(d, i) + ')'; - } - }).style({ - display: axisConfig.angularAxis.visible ? 'block' : 'none' - }); - angularAxis.exit().remove(); - angularAxisEnter.append('line').classed('grid-line', true).classed('major', function(d, i) { - return i % (axisConfig.minorTicks + 1) == 0; - }).classed('minor', function(d, i) { - return !(i % (axisConfig.minorTicks + 1) == 0); - }).style(lineStyle); - angularAxisEnter.selectAll('.minor').style({ - stroke: axisConfig.minorTickColor - }); - angularAxis.select('line.grid-line').attr({ - x1: axisConfig.tickLength ? radius - axisConfig.tickLength : 0, - x2: radius - }).style({ - display: axisConfig.angularAxis.gridLinesVisible ? 'block' : 'none' - }); - angularAxisEnter.append('text').classed('axis-text', true).style(fontStyle); - var ticksText = angularAxis.select('text.axis-text').attr({ - x: radius + axisConfig.labelOffset, - dy: MID_SHIFT + 'em', - transform: function(d, i) { - var angle = currentAngle(d, i); - var rad = radius + axisConfig.labelOffset; - var orient = axisConfig.angularAxis.tickOrientation; - if (orient == 'horizontal') return 'rotate(' + -angle + ' ' + rad + ' 0)'; else if (orient == 'radial') return angle < 270 && angle > 90 ? 'rotate(180 ' + rad + ' 0)' : null; else return 'rotate(' + (angle <= 180 && angle > 0 ? -90 : 90) + ' ' + rad + ' 0)'; - } - }).style({ - 'text-anchor': 'middle', - display: axisConfig.angularAxis.labelsVisible ? 'block' : 'none' - }).text(function(d, i) { - if (i % (axisConfig.minorTicks + 1) != 0) return ''; - if (ticks) { - return ticks[d] + axisConfig.angularAxis.ticksSuffix; - } else return d + axisConfig.angularAxis.ticksSuffix; - }).style(fontStyle); - if (axisConfig.angularAxis.rewriteTicks) ticksText.text(function(d, i) { - if (i % (axisConfig.minorTicks + 1) != 0) return ''; - return axisConfig.angularAxis.rewriteTicks(this.textContent, i); - }); - var rightmostTickEndX = d3.max(chartGroup.selectAll('.angular-tick text')[0].map(function(d, i) { - return d.getCTM().e + d.getBBox().width; - })); - legendContainer.attr({ - transform: 'translate(' + [ radius + rightmostTickEndX, axisConfig.margin.top ] + ')' - }); - var hasGeometry = svg.select('g.geometry-group').selectAll('g').size() > 0; - var geometryContainer = svg.select('g.geometry-group').selectAll('g.geometry').data(data); - geometryContainer.enter().append('g').attr({ - 'class': function(d, i) { - return 'geometry geometry' + i; - } - }); - geometryContainer.exit().remove(); - if (data[0] || hasGeometry) { - var geometryConfigs = []; - data.forEach(function(d, i) { - var geometryConfig = {}; - geometryConfig.radialScale = radialScale; - geometryConfig.angularScale = angularScale; - geometryConfig.container = geometryContainer.filter(function(dB, iB) { - return iB == i; - }); - geometryConfig.geometry = d.geometry; - geometryConfig.orientation = axisConfig.orientation; - geometryConfig.direction = axisConfig.direction; - geometryConfig.index = i; - geometryConfigs.push({ - data: d, - geometryConfig: geometryConfig - }); - }); - var geometryConfigsGrouped = d3.nest().key(function(d, i) { - return typeof d.data.groupId != 'undefined' || 'unstacked'; - }).entries(geometryConfigs); - var geometryConfigsGrouped2 = []; - geometryConfigsGrouped.forEach(function(d, i) { - if (d.key === 'unstacked') geometryConfigsGrouped2 = geometryConfigsGrouped2.concat(d.values.map(function(d, i) { - return [ d ]; - })); else geometryConfigsGrouped2.push(d.values); - }); - geometryConfigsGrouped2.forEach(function(d, i) { - var geometry; - if (Array.isArray(d)) geometry = d[0].geometryConfig.geometry; else geometry = d.geometryConfig.geometry; - var finalGeometryConfig = d.map(function(dB, iB) { - return extendDeepAll(µ[geometry].defaultConfig(), dB); - }); - µ[geometry]().config(finalGeometryConfig)(); - }); - } - var guides = svg.select('.guides-group'); - var tooltipContainer = svg.select('.tooltips-group'); - var angularTooltip = µ.tooltipPanel().config({ - container: tooltipContainer, - fontSize: 8 - })(); - var radialTooltip = µ.tooltipPanel().config({ - container: tooltipContainer, - fontSize: 8 - })(); - var geometryTooltip = µ.tooltipPanel().config({ - container: tooltipContainer, - hasTick: true - })(); - var angularValue, radialValue; - if (!isOrdinal) { - var angularGuideLine = guides.select('line').attr({ - x1: 0, - y1: 0, - y2: 0 - }).style({ - stroke: 'grey', - 'pointer-events': 'none' - }); - chartGroup.on('mousemove.angular-guide', function(d, i) { - var mouseAngle = µ.util.getMousePos(backgroundCircle).angle; - angularGuideLine.attr({ - x2: -radius, - transform: 'rotate(' + mouseAngle + ')' - }).style({ - opacity: .5 - }); - var angleWithOriginOffset = (mouseAngle + 180 + 360 - axisConfig.orientation) % 360; - angularValue = angularScale.invert(angleWithOriginOffset); - var pos = µ.util.convertToCartesian(radius + 12, mouseAngle + 180); - angularTooltip.text(µ.util.round(angularValue)).move([ pos[0] + chartCenter[0], pos[1] + chartCenter[1] ]); - }).on('mouseout.angular-guide', function(d, i) { - guides.select('line').style({ - opacity: 0 - }); - }); - } - var angularGuideCircle = guides.select('circle').style({ - stroke: 'grey', - fill: 'none' - }); - chartGroup.on('mousemove.radial-guide', function(d, i) { - var r = µ.util.getMousePos(backgroundCircle).radius; - angularGuideCircle.attr({ - r: r - }).style({ - opacity: .5 - }); - radialValue = radialScale.invert(µ.util.getMousePos(backgroundCircle).radius); - var pos = µ.util.convertToCartesian(r, axisConfig.radialAxis.orientation); - radialTooltip.text(µ.util.round(radialValue)).move([ pos[0] + chartCenter[0], pos[1] + chartCenter[1] ]); - }).on('mouseout.radial-guide', function(d, i) { - angularGuideCircle.style({ - opacity: 0 - }); - geometryTooltip.hide(); - angularTooltip.hide(); - radialTooltip.hide(); - }); - svg.selectAll('.geometry-group .mark').on('mouseover.tooltip', function(d, i) { - var el = d3.select(this); - var color = this.style.fill; - var newColor = 'black'; - var opacity = this.style.opacity || 1; - el.attr({ - 'data-opacity': opacity - }); - if (color && color !== 'none') { - el.attr({ - 'data-fill': color - }); - newColor = d3.hsl(color).darker().toString(); - el.style({ - fill: newColor, - opacity: 1 - }); - var textData = { - t: µ.util.round(d[0]), - r: µ.util.round(d[1]) - }; - if (isOrdinal) textData.t = ticks[d[0]]; - var text = 't: ' + textData.t + ', r: ' + textData.r; - var bbox = this.getBoundingClientRect(); - var svgBBox = svg.node().getBoundingClientRect(); - var pos = [ bbox.left + bbox.width / 2 - centeringOffset[0] - svgBBox.left, bbox.top + bbox.height / 2 - centeringOffset[1] - svgBBox.top ]; - geometryTooltip.config({ - color: newColor - }).text(text); - geometryTooltip.move(pos); - } else { - color = this.style.stroke || 'black'; - el.attr({ - 'data-stroke': color - }); - newColor = d3.hsl(color).darker().toString(); - el.style({ - stroke: newColor, - opacity: 1 - }); - } - }).on('mousemove.tooltip', function(d, i) { - if (d3.event.which != 0) return false; - if (d3.select(this).attr('data-fill')) geometryTooltip.show(); - }).on('mouseout.tooltip', function(d, i) { - geometryTooltip.hide(); - var el = d3.select(this); - var fillColor = el.attr('data-fill'); - if (fillColor) el.style({ - fill: fillColor, - opacity: el.attr('data-opacity') - }); else el.style({ - stroke: el.attr('data-stroke'), - opacity: el.attr('data-opacity') - }); - }); - }); - return exports; - } - exports.render = function(_container) { - render(_container); - return this; - }; - exports.config = function(_x) { - if (!arguments.length) return config; - var xClone = µ.util.cloneJson(_x); - xClone.data.forEach(function(d, i) { - if (!config.data[i]) config.data[i] = {}; - extendDeepAll(config.data[i], µ.Axis.defaultConfig().data[0]); - extendDeepAll(config.data[i], d); - }); - extendDeepAll(config.layout, µ.Axis.defaultConfig().layout); - extendDeepAll(config.layout, xClone.layout); - return this; - }; - exports.getLiveConfig = function() { - return liveConfig; - }; - exports.getinputConfig = function() { - return inputConfig; - }; - exports.radialScale = function(_x) { - return radialScale; - }; - exports.angularScale = function(_x) { - return angularScale; - }; - exports.svg = function() { - return svg; - }; - d3.rebind(exports, dispatch, 'on'); - return exports; -}; - -µ.Axis.defaultConfig = function(d, i) { - var config = { - data: [ { - t: [ 1, 2, 3, 4 ], - r: [ 10, 11, 12, 13 ], - name: 'Line1', - geometry: 'LinePlot', - color: null, - strokeDash: 'solid', - strokeColor: null, - strokeSize: '1', - visibleInLegend: true, - opacity: 1 - } ], - layout: { - defaultColorRange: d3.scale.category10().range(), - title: null, - height: 450, - width: 500, - margin: { - top: 40, - right: 40, - bottom: 40, - left: 40 - }, - font: { - size: 12, - color: 'gray', - outlineColor: 'white', - family: 'Tahoma, sans-serif' - }, - direction: 'clockwise', - orientation: 0, - labelOffset: 10, - radialAxis: { - domain: null, - orientation: -45, - ticksSuffix: '', - visible: true, - gridLinesVisible: true, - tickOrientation: 'horizontal', - rewriteTicks: null - }, - angularAxis: { - domain: [ 0, 360 ], - ticksSuffix: '', - visible: true, - gridLinesVisible: true, - labelsVisible: true, - tickOrientation: 'horizontal', - rewriteTicks: null, - ticksCount: null, - ticksStep: null - }, - minorTicks: 0, - tickLength: null, - tickColor: 'silver', - minorTickColor: '#eee', - backgroundColor: 'none', - needsEndSpacing: null, - showLegend: true, - legend: { - reverseOrder: false - }, - opacity: 1 - } - }; - return config; -}; - -µ.util = {}; - -µ.DATAEXTENT = 'dataExtent'; - -µ.AREA = 'AreaChart'; - -µ.LINE = 'LinePlot'; - -µ.DOT = 'DotPlot'; - -µ.BAR = 'BarChart'; - -µ.util._override = function(_objA, _objB) { - for (var x in _objA) if (x in _objB) _objB[x] = _objA[x]; -}; - -µ.util._extend = function(_objA, _objB) { - for (var x in _objA) _objB[x] = _objA[x]; -}; - -µ.util._rndSnd = function() { - return Math.random() * 2 - 1 + (Math.random() * 2 - 1) + (Math.random() * 2 - 1); -}; - -µ.util.dataFromEquation2 = function(_equation, _step) { - var step = _step || 6; - var data = d3.range(0, 360 + step, step).map(function(deg, index) { - var theta = deg * Math.PI / 180; - var radius = _equation(theta); - return [ deg, radius ]; - }); - return data; -}; - -µ.util.dataFromEquation = function(_equation, _step, _name) { - var step = _step || 6; - var t = [], r = []; - d3.range(0, 360 + step, step).forEach(function(deg, index) { - var theta = deg * Math.PI / 180; - var radius = _equation(theta); - t.push(deg); - r.push(radius); - }); - var result = { - t: t, - r: r - }; - if (_name) result.name = _name; - return result; -}; - -µ.util.ensureArray = function(_val, _count) { - if (typeof _val === 'undefined') return null; - var arr = [].concat(_val); - return d3.range(_count).map(function(d, i) { - return arr[i] || arr[0]; - }); -}; - -µ.util.fillArrays = function(_obj, _valueNames, _count) { - _valueNames.forEach(function(d, i) { - _obj[d] = µ.util.ensureArray(_obj[d], _count); - }); - return _obj; -}; - -µ.util.cloneJson = function(json) { - return JSON.parse(JSON.stringify(json)); -}; - -µ.util.validateKeys = function(obj, keys) { - if (typeof keys === 'string') keys = keys.split('.'); - var next = keys.shift(); - return obj[next] && (!keys.length || objHasKeys(obj[next], keys)); -}; - -µ.util.sumArrays = function(a, b) { - return d3.zip(a, b).map(function(d, i) { - return d3.sum(d); - }); -}; - -µ.util.arrayLast = function(a) { - return a[a.length - 1]; -}; - -µ.util.arrayEqual = function(a, b) { - var i = Math.max(a.length, b.length, 1); - while (i-- >= 0 && a[i] === b[i]) ; - return i === -2; -}; - -µ.util.flattenArray = function(arr) { - var r = []; - while (!µ.util.arrayEqual(r, arr)) { - r = arr; - arr = [].concat.apply([], arr); - } - return arr; -}; - -µ.util.deduplicate = function(arr) { - return arr.filter(function(v, i, a) { - return a.indexOf(v) == i; - }); -}; - -µ.util.convertToCartesian = function(radius, theta) { - var thetaRadians = theta * Math.PI / 180; - var x = radius * Math.cos(thetaRadians); - var y = radius * Math.sin(thetaRadians); - return [ x, y ]; -}; - -µ.util.round = function(_value, _digits) { - var digits = _digits || 2; - var mult = Math.pow(10, digits); - return Math.round(_value * mult) / mult; -}; - -µ.util.getMousePos = function(_referenceElement) { - var mousePos = d3.mouse(_referenceElement.node()); - var mouseX = mousePos[0]; - var mouseY = mousePos[1]; - var mouse = {}; - mouse.x = mouseX; - mouse.y = mouseY; - mouse.pos = mousePos; - mouse.angle = (Math.atan2(mouseY, mouseX) + Math.PI) * 180 / Math.PI; - mouse.radius = Math.sqrt(mouseX * mouseX + mouseY * mouseY); - return mouse; -}; - -µ.util.duplicatesCount = function(arr) { - var uniques = {}, val; - var dups = {}; - for (var i = 0, len = arr.length; i < len; i++) { - val = arr[i]; - if (val in uniques) { - uniques[val]++; - dups[val] = uniques[val]; - } else { - uniques[val] = 1; - } - } - return dups; -}; - -µ.util.duplicates = function(arr) { - return Object.keys(µ.util.duplicatesCount(arr)); -}; - -µ.util.translator = function(obj, sourceBranch, targetBranch, reverse) { - if (reverse) { - var targetBranchCopy = targetBranch.slice(); - targetBranch = sourceBranch; - sourceBranch = targetBranchCopy; - } - var value = sourceBranch.reduce(function(previousValue, currentValue) { - if (typeof previousValue != 'undefined') return previousValue[currentValue]; - }, obj); - if (typeof value === 'undefined') return; - sourceBranch.reduce(function(previousValue, currentValue, index) { - if (typeof previousValue == 'undefined') return; - if (index === sourceBranch.length - 1) delete previousValue[currentValue]; - return previousValue[currentValue]; - }, obj); - targetBranch.reduce(function(previousValue, currentValue, index) { - if (typeof previousValue[currentValue] === 'undefined') previousValue[currentValue] = {}; - if (index === targetBranch.length - 1) previousValue[currentValue] = value; - return previousValue[currentValue]; - }, obj); -}; - -µ.PolyChart = function module() { - var config = [ µ.PolyChart.defaultConfig() ]; - var dispatch = d3.dispatch('hover'); - var dashArray = { - solid: 'none', - dash: [ 5, 2 ], - dot: [ 2, 5 ] - }; - var colorScale; - function exports() { - var geometryConfig = config[0].geometryConfig; - var container = geometryConfig.container; - if (typeof container == 'string') container = d3.select(container); - container.datum(config).each(function(_config, _index) { - var isStack = !!_config[0].data.yStack; - var data = _config.map(function(d, i) { - if (isStack) return d3.zip(d.data.t[0], d.data.r[0], d.data.yStack[0]); else return d3.zip(d.data.t[0], d.data.r[0]); - }); - var angularScale = geometryConfig.angularScale; - var domainMin = geometryConfig.radialScale.domain()[0]; - var generator = {}; - generator.bar = function(d, i, pI) { - var dataConfig = _config[pI].data; - var h = geometryConfig.radialScale(d[1]) - geometryConfig.radialScale(0); - var stackTop = geometryConfig.radialScale(d[2] || 0); - var w = dataConfig.barWidth; - d3.select(this).attr({ - 'class': 'mark bar', - d: 'M' + [ [ h + stackTop, -w / 2 ], [ h + stackTop, w / 2 ], [ stackTop, w / 2 ], [ stackTop, -w / 2 ] ].join('L') + 'Z', - transform: function(d, i) { - return 'rotate(' + (geometryConfig.orientation + angularScale(d[0])) + ')'; - } - }); - }; - generator.dot = function(d, i, pI) { - var stackedData = d[2] ? [ d[0], d[1] + d[2] ] : d; - var symbol = d3.svg.symbol().size(_config[pI].data.dotSize).type(_config[pI].data.dotType)(d, i); - d3.select(this).attr({ - 'class': 'mark dot', - d: symbol, - transform: function(d, i) { - var coord = convertToCartesian(getPolarCoordinates(stackedData)); - return 'translate(' + [ coord.x, coord.y ] + ')'; - } - }); - }; - var line = d3.svg.line.radial().interpolate(_config[0].data.lineInterpolation).radius(function(d) { - return geometryConfig.radialScale(d[1]); - }).angle(function(d) { - return geometryConfig.angularScale(d[0]) * Math.PI / 180; - }); - generator.line = function(d, i, pI) { - var lineData = d[2] ? data[pI].map(function(d, i) { - return [ d[0], d[1] + d[2] ]; - }) : data[pI]; - d3.select(this).each(generator['dot']).style({ - opacity: function(dB, iB) { - return +_config[pI].data.dotVisible; - }, - fill: markStyle.stroke(d, i, pI) - }).attr({ - 'class': 'mark dot' - }); - if (i > 0) return; - var lineSelection = d3.select(this.parentNode).selectAll('path.line').data([ 0 ]); - lineSelection.enter().insert('path'); - lineSelection.attr({ - 'class': 'line', - d: line(lineData), - transform: function(dB, iB) { - return 'rotate(' + (geometryConfig.orientation + 90) + ')'; - }, - 'pointer-events': 'none' - }).style({ - fill: function(dB, iB) { - return markStyle.fill(d, i, pI); - }, - 'fill-opacity': 0, - stroke: function(dB, iB) { - return markStyle.stroke(d, i, pI); - }, - 'stroke-width': function(dB, iB) { - return markStyle['stroke-width'](d, i, pI); - }, - 'stroke-dasharray': function(dB, iB) { - return markStyle['stroke-dasharray'](d, i, pI); - }, - opacity: function(dB, iB) { - return markStyle.opacity(d, i, pI); - }, - display: function(dB, iB) { - return markStyle.display(d, i, pI); - } - }); - }; - var angularRange = geometryConfig.angularScale.range(); - var triangleAngle = Math.abs(angularRange[1] - angularRange[0]) / data[0].length * Math.PI / 180; - var arc = d3.svg.arc().startAngle(function(d) { - return -triangleAngle / 2; - }).endAngle(function(d) { - return triangleAngle / 2; - }).innerRadius(function(d) { - return geometryConfig.radialScale(domainMin + (d[2] || 0)); - }).outerRadius(function(d) { - return geometryConfig.radialScale(domainMin + (d[2] || 0)) + geometryConfig.radialScale(d[1]); - }); - generator.arc = function(d, i, pI) { - d3.select(this).attr({ - 'class': 'mark arc', - d: arc, - transform: function(d, i) { - return 'rotate(' + (geometryConfig.orientation + angularScale(d[0]) + 90) + ')'; - } - }); - }; - var markStyle = { - fill: function(d, i, pI) { - return _config[pI].data.color; - }, - stroke: function(d, i, pI) { - return _config[pI].data.strokeColor; - }, - 'stroke-width': function(d, i, pI) { - return _config[pI].data.strokeSize + 'px'; - }, - 'stroke-dasharray': function(d, i, pI) { - return dashArray[_config[pI].data.strokeDash]; - }, - opacity: function(d, i, pI) { - return _config[pI].data.opacity; - }, - display: function(d, i, pI) { - return typeof _config[pI].data.visible === 'undefined' || _config[pI].data.visible ? 'block' : 'none'; - } - }; - var geometryLayer = d3.select(this).selectAll('g.layer').data(data); - geometryLayer.enter().append('g').attr({ - 'class': 'layer' - }); - var geometry = geometryLayer.selectAll('path.mark').data(function(d, i) { - return d; - }); - geometry.enter().append('path').attr({ - 'class': 'mark' - }); - geometry.style(markStyle).each(generator[geometryConfig.geometryType]); - geometry.exit().remove(); - geometryLayer.exit().remove(); - function getPolarCoordinates(d, i) { - var r = geometryConfig.radialScale(d[1]); - var t = (geometryConfig.angularScale(d[0]) + geometryConfig.orientation) * Math.PI / 180; - return { - r: r, - t: t - }; - } - function convertToCartesian(polarCoordinates) { - var x = polarCoordinates.r * Math.cos(polarCoordinates.t); - var y = polarCoordinates.r * Math.sin(polarCoordinates.t); - return { - x: x, - y: y - }; - } - }); - } - exports.config = function(_x) { - if (!arguments.length) return config; - _x.forEach(function(d, i) { - if (!config[i]) config[i] = {}; - extendDeepAll(config[i], µ.PolyChart.defaultConfig()); - extendDeepAll(config[i], d); - }); - return this; - }; - exports.getColorScale = function() { - return colorScale; - }; - d3.rebind(exports, dispatch, 'on'); - return exports; -}; - -µ.PolyChart.defaultConfig = function() { - var config = { - data: { - name: 'geom1', - t: [ [ 1, 2, 3, 4 ] ], - r: [ [ 1, 2, 3, 4 ] ], - dotType: 'circle', - dotSize: 64, - dotVisible: false, - barWidth: 20, - color: '#ffa500', - strokeSize: 1, - strokeColor: 'silver', - strokeDash: 'solid', - opacity: 1, - index: 0, - visible: true, - visibleInLegend: true - }, - geometryConfig: { - geometry: 'LinePlot', - geometryType: 'arc', - direction: 'clockwise', - orientation: 0, - container: 'body', - radialScale: null, - angularScale: null, - colorScale: d3.scale.category20() - } - }; - return config; -}; - -µ.BarChart = function module() { - return µ.PolyChart(); -}; - -µ.BarChart.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'bar' - } - }; - return config; -}; - -µ.AreaChart = function module() { - return µ.PolyChart(); -}; - -µ.AreaChart.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'arc' - } - }; - return config; -}; - -µ.DotPlot = function module() { - return µ.PolyChart(); -}; - -µ.DotPlot.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'dot', - dotType: 'circle' - } - }; - return config; -}; - -µ.LinePlot = function module() { - return µ.PolyChart(); -}; - -µ.LinePlot.defaultConfig = function() { - var config = { - geometryConfig: { - geometryType: 'line' - } - }; - return config; -}; - -µ.Legend = function module() { - var config = µ.Legend.defaultConfig(); - var dispatch = d3.dispatch('hover'); - function exports() { - var legendConfig = config.legendConfig; - var flattenData = config.data.map(function(d, i) { - return [].concat(d).map(function(dB, iB) { - var element = extendDeepAll({}, legendConfig.elements[i]); - element.name = dB; - element.color = [].concat(legendConfig.elements[i].color)[iB]; - return element; - }); - }); - var data = d3.merge(flattenData); - data = data.filter(function(d, i) { - return legendConfig.elements[i] && (legendConfig.elements[i].visibleInLegend || typeof legendConfig.elements[i].visibleInLegend === 'undefined'); - }); - if (legendConfig.reverseOrder) data = data.reverse(); - var container = legendConfig.container; - if (typeof container == 'string' || container.nodeName) container = d3.select(container); - var colors = data.map(function(d, i) { - return d.color; - }); - var lineHeight = legendConfig.fontSize; - var isContinuous = legendConfig.isContinuous == null ? typeof data[0] === 'number' : legendConfig.isContinuous; - var height = isContinuous ? legendConfig.height : lineHeight * data.length; - var legendContainerGroup = container.classed('legend-group', true); - var svg = legendContainerGroup.selectAll('svg').data([ 0 ]); - var svgEnter = svg.enter().append('svg').attr({ - width: 300, - height: height + lineHeight, - xmlns: 'http://www.w3.org/2000/svg', - 'xmlns:xlink': 'http://www.w3.org/1999/xlink', - version: '1.1' - }); - svgEnter.append('g').classed('legend-axis', true); - svgEnter.append('g').classed('legend-marks', true); - var dataNumbered = d3.range(data.length); - var colorScale = d3.scale[isContinuous ? 'linear' : 'ordinal']().domain(dataNumbered).range(colors); - var dataScale = d3.scale[isContinuous ? 'linear' : 'ordinal']().domain(dataNumbered)[isContinuous ? 'range' : 'rangePoints']([ 0, height ]); - var shapeGenerator = function(_type, _size) { - var squareSize = _size * 3; - if (_type === 'line') { - return 'M' + [ [ -_size / 2, -_size / 12 ], [ _size / 2, -_size / 12 ], [ _size / 2, _size / 12 ], [ -_size / 2, _size / 12 ] ] + 'Z'; - } else if (d3.svg.symbolTypes.indexOf(_type) != -1) return d3.svg.symbol().type(_type).size(squareSize)(); else return d3.svg.symbol().type('square').size(squareSize)(); - }; - if (isContinuous) { - var gradient = svg.select('.legend-marks').append('defs').append('linearGradient').attr({ - id: 'grad1', - x1: '0%', - y1: '0%', - x2: '0%', - y2: '100%' - }).selectAll('stop').data(colors); - gradient.enter().append('stop'); - gradient.attr({ - offset: function(d, i) { - return i / (colors.length - 1) * 100 + '%'; - } - }).style({ - 'stop-color': function(d, i) { - return d; - } - }); - svg.append('rect').classed('legend-mark', true).attr({ - height: legendConfig.height, - width: legendConfig.colorBandWidth, - fill: 'url(#grad1)' - }); - } else { - var legendElement = svg.select('.legend-marks').selectAll('path.legend-mark').data(data); - legendElement.enter().append('path').classed('legend-mark', true); - legendElement.attr({ - transform: function(d, i) { - return 'translate(' + [ lineHeight / 2, dataScale(i) + lineHeight / 2 ] + ')'; - }, - d: function(d, i) { - var symbolType = d.symbol; - return shapeGenerator(symbolType, lineHeight); - }, - fill: function(d, i) { - return colorScale(i); - } - }); - legendElement.exit().remove(); - } - var legendAxis = d3.svg.axis().scale(dataScale).orient('right'); - var axis = svg.select('g.legend-axis').attr({ - transform: 'translate(' + [ isContinuous ? legendConfig.colorBandWidth : lineHeight, lineHeight / 2 ] + ')' - }).call(legendAxis); - axis.selectAll('.domain').style({ - fill: 'none', - stroke: 'none' - }); - axis.selectAll('line').style({ - fill: 'none', - stroke: isContinuous ? legendConfig.textColor : 'none' - }); - axis.selectAll('text').style({ - fill: legendConfig.textColor, - 'font-size': legendConfig.fontSize - }).text(function(d, i) { - return data[i].name; - }); - return exports; - } - exports.config = function(_x) { - if (!arguments.length) return config; - extendDeepAll(config, _x); - return this; - }; - d3.rebind(exports, dispatch, 'on'); - return exports; -}; - -µ.Legend.defaultConfig = function(d, i) { - var config = { - data: [ 'a', 'b', 'c' ], - legendConfig: { - elements: [ { - symbol: 'line', - color: 'red' - }, { - symbol: 'square', - color: 'yellow' - }, { - symbol: 'diamond', - color: 'limegreen' - } ], - height: 150, - colorBandWidth: 30, - fontSize: 12, - container: 'body', - isContinuous: null, - textColor: 'grey', - reverseOrder: false - } - }; - return config; -}; - -µ.tooltipPanel = function() { - var tooltipEl, tooltipTextEl, backgroundEl; - var config = { - container: null, - hasTick: false, - fontSize: 12, - color: 'white', - padding: 5 - }; - var id = 'tooltip-' + µ.tooltipPanel.uid++; - var tickSize = 10; - var exports = function() { - tooltipEl = config.container.selectAll('g.' + id).data([ 0 ]); - var tooltipEnter = tooltipEl.enter().append('g').classed(id, true).style({ - 'pointer-events': 'none', - display: 'none' - }); - backgroundEl = tooltipEnter.append('path').style({ - fill: 'white', - 'fill-opacity': .9 - }).attr({ - d: 'M0 0' - }); - tooltipTextEl = tooltipEnter.append('text').attr({ - dx: config.padding + tickSize, - dy: +config.fontSize * .3 - }); - return exports; - }; - exports.text = function(_text) { - var l = d3.hsl(config.color).l; - var strokeColor = l >= .5 ? '#aaa' : 'white'; - var fillColor = l >= .5 ? 'black' : 'white'; - var text = _text || ''; - tooltipTextEl.style({ - fill: fillColor, - 'font-size': config.fontSize + 'px' - }).text(text); - var padding = config.padding; - var bbox = tooltipTextEl.node().getBBox(); - var boxStyle = { - fill: config.color, - stroke: strokeColor, - 'stroke-width': '2px' - }; - var backGroundW = bbox.width + padding * 2 + tickSize; - var backGroundH = bbox.height + padding * 2; - backgroundEl.attr({ - d: 'M' + [ [ tickSize, -backGroundH / 2 ], [ tickSize, -backGroundH / 4 ], [ config.hasTick ? 0 : tickSize, 0 ], [ tickSize, backGroundH / 4 ], [ tickSize, backGroundH / 2 ], [ backGroundW, backGroundH / 2 ], [ backGroundW, -backGroundH / 2 ] ].join('L') + 'Z' - }).style(boxStyle); - tooltipEl.attr({ - transform: 'translate(' + [ tickSize, -backGroundH / 2 + padding * 2 ] + ')' - }); - tooltipEl.style({ - display: 'block' - }); - return exports; - }; - exports.move = function(_pos) { - if (!tooltipEl) return; - tooltipEl.attr({ - transform: 'translate(' + [ _pos[0], _pos[1] ] + ')' - }).style({ - display: 'block' - }); - return exports; - }; - exports.hide = function() { - if (!tooltipEl) return; - tooltipEl.style({ - display: 'none' - }); - return exports; - }; - exports.show = function() { - if (!tooltipEl) return; - tooltipEl.style({ - display: 'block' - }); - return exports; - }; - exports.config = function(_x) { - extendDeepAll(config, _x); - return exports; - }; - return exports; -}; - -µ.tooltipPanel.uid = 1; - -µ.adapter = {}; - -µ.adapter.plotly = function module() { - var exports = {}; - exports.convert = function(_inputConfig, reverse) { - var outputConfig = {}; - if (_inputConfig.data) { - outputConfig.data = _inputConfig.data.map(function(d, i) { - var r = extendDeepAll({}, d); - var toTranslate = [ - [ r, [ 'marker', 'color' ], [ 'color' ] ], - [ r, [ 'marker', 'opacity' ], [ 'opacity' ] ], - [ r, [ 'marker', 'line', 'color' ], [ 'strokeColor' ] ], - [ r, [ 'marker', 'line', 'dash' ], [ 'strokeDash' ] ], - [ r, [ 'marker', 'line', 'width' ], [ 'strokeSize' ] ], - [ r, [ 'marker', 'symbol' ], [ 'dotType' ] ], - [ r, [ 'marker', 'size' ], [ 'dotSize' ] ], - [ r, [ 'marker', 'barWidth' ], [ 'barWidth' ] ], - [ r, [ 'line', 'interpolation' ], [ 'lineInterpolation' ] ], - [ r, [ 'showlegend' ], [ 'visibleInLegend' ] ] - ]; - toTranslate.forEach(function(d, i) { - µ.util.translator.apply(null, d.concat(reverse)); - }); - - if (!reverse) delete r.marker; - if (reverse) delete r.groupId; - if (!reverse) { - if (r.type === 'scatter') { - if (r.mode === 'lines') r.geometry = 'LinePlot'; else if (r.mode === 'markers') r.geometry = 'DotPlot'; else if (r.mode === 'lines+markers') { - r.geometry = 'LinePlot'; - r.dotVisible = true; - } - } else if (r.type === 'area') r.geometry = 'AreaChart'; else if (r.type === 'bar') r.geometry = 'BarChart'; - delete r.mode; - delete r.type; - } else { - if (r.geometry === 'LinePlot') { - r.type = 'scatter'; - if (r.dotVisible === true) { - delete r.dotVisible; - r.mode = 'lines+markers'; - } else r.mode = 'lines'; - } else if (r.geometry === 'DotPlot') { - r.type = 'scatter'; - r.mode = 'markers'; - } else if (r.geometry === 'AreaChart') r.type = 'area'; else if (r.geometry === 'BarChart') r.type = 'bar'; - delete r.geometry; - } - return r; - }); - if (!reverse && _inputConfig.layout && _inputConfig.layout.barmode === 'stack') { - var duplicates = µ.util.duplicates(outputConfig.data.map(function(d, i) { - return d.geometry; - })); - outputConfig.data.forEach(function(d, i) { - var idx = duplicates.indexOf(d.geometry); - if (idx != -1) outputConfig.data[i].groupId = idx; - }); - } - } - if (_inputConfig.layout) { - var r = extendDeepAll({}, _inputConfig.layout); - var toTranslate = [ - [ r, [ 'plot_bgcolor' ], [ 'backgroundColor' ] ], - [ r, [ 'showlegend' ], [ 'showLegend' ] ], - [ r, [ 'radialaxis' ], [ 'radialAxis' ] ], - [ r, [ 'angularaxis' ], [ 'angularAxis' ] ], - [ r.angularaxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.angularaxis, [ 'showticklabels' ], [ 'labelsVisible' ] ], - [ r.angularaxis, [ 'nticks' ], [ 'ticksCount' ] ], - [ r.angularaxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.angularaxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.angularaxis, [ 'range' ], [ 'domain' ] ], - [ r.angularaxis, [ 'endpadding' ], [ 'endPadding' ] ], - [ r.radialaxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.radialaxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.radialaxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.radialaxis, [ 'range' ], [ 'domain' ] ], - [ r.angularAxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.angularAxis, [ 'showticklabels' ], [ 'labelsVisible' ] ], - [ r.angularAxis, [ 'nticks' ], [ 'ticksCount' ] ], - [ r.angularAxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.angularAxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.angularAxis, [ 'range' ], [ 'domain' ] ], - [ r.angularAxis, [ 'endpadding' ], [ 'endPadding' ] ], - [ r.radialAxis, [ 'showline' ], [ 'gridLinesVisible' ] ], - [ r.radialAxis, [ 'tickorientation' ], [ 'tickOrientation' ] ], - [ r.radialAxis, [ 'ticksuffix' ], [ 'ticksSuffix' ] ], - [ r.radialAxis, [ 'range' ], [ 'domain' ] ], - [ r.font, [ 'outlinecolor' ], [ 'outlineColor' ] ], - [ r.legend, [ 'traceorder' ], [ 'reverseOrder' ] ], - [ r, [ 'labeloffset' ], [ 'labelOffset' ] ], - [ r, [ 'defaultcolorrange' ], [ 'defaultColorRange' ] ] - ]; - toTranslate.forEach(function(d, i) { - µ.util.translator.apply(null, d.concat(reverse)); - }); - - if (!reverse) { - if (r.angularAxis && typeof r.angularAxis.ticklen !== 'undefined') r.tickLength = r.angularAxis.ticklen; - if (r.angularAxis && typeof r.angularAxis.tickcolor !== 'undefined') r.tickColor = r.angularAxis.tickcolor; - } else { - if (typeof r.tickLength !== 'undefined') { - r.angularaxis.ticklen = r.tickLength; - delete r.tickLength; - } - if (r.tickColor) { - r.angularaxis.tickcolor = r.tickColor; - delete r.tickColor; - } - } - if (r.legend && typeof r.legend.reverseOrder != 'boolean') { - r.legend.reverseOrder = r.legend.reverseOrder != 'normal'; - } - if (r.legend && typeof r.legend.traceorder == 'boolean') { - r.legend.traceorder = r.legend.traceorder ? 'reversed' : 'normal'; - delete r.legend.reverseOrder; - } - if (r.margin && typeof r.margin.t != 'undefined') { - var source = [ 't', 'r', 'b', 'l', 'pad' ]; - var target = [ 'top', 'right', 'bottom', 'left', 'pad' ]; - var margin = {}; - d3.entries(r.margin).forEach(function(dB, iB) { - margin[target[source.indexOf(dB.key)]] = dB.value; - }); - r.margin = margin; - } - if (reverse) { - delete r.needsEndSpacing; - delete r.minorTickColor; - delete r.minorTicks; - delete r.angularaxis.ticksCount; - delete r.angularaxis.ticksCount; - delete r.angularaxis.ticksStep; - delete r.angularaxis.rewriteTicks; - delete r.angularaxis.nticks; - delete r.radialaxis.ticksCount; - delete r.radialaxis.ticksCount; - delete r.radialaxis.ticksStep; - delete r.radialaxis.rewriteTicks; - delete r.radialaxis.nticks; - } - outputConfig.layout = r; - } - return outputConfig; - }; - return exports; -}; - -},{"../../../constants/alignment":207,"../../../lib":233,"d3":21}],318:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -/* eslint-disable new-cap */ - -'use strict'; - -var d3 = _dereq_('d3'); -var Lib = _dereq_('../../../lib'); -var Color = _dereq_('../../../components/color'); - -var micropolar = _dereq_('./micropolar'); -var UndoManager = _dereq_('./undo_manager'); -var extendDeepAll = Lib.extendDeepAll; - -var manager = module.exports = {}; - -manager.framework = function(_gd) { - var config, previousConfigClone, plot, convertedInput, container; - var undoManager = new UndoManager(); - - function exports(_inputConfig, _container) { - if(_container) container = _container; - d3.select(d3.select(container).node().parentNode).selectAll('.svg-container>*:not(.chart-root)').remove(); - - config = (!config) ? - _inputConfig : - extendDeepAll(config, _inputConfig); - - if(!plot) plot = micropolar.Axis(); - convertedInput = micropolar.adapter.plotly().convert(config); - plot.config(convertedInput).render(container); - _gd.data = config.data; - _gd.layout = config.layout; - manager.fillLayout(_gd); - return config; - } - exports.isPolar = true; - exports.svg = function() { return plot.svg(); }; - exports.getConfig = function() { return config; }; - exports.getLiveConfig = function() { - return micropolar.adapter.plotly().convert(plot.getLiveConfig(), true); - }; - exports.getLiveScales = function() { return {t: plot.angularScale(), r: plot.radialScale()}; }; - exports.setUndoPoint = function() { - var that = this; - var configClone = micropolar.util.cloneJson(config); - (function(_configClone, _previousConfigClone) { - undoManager.add({ - undo: function() { - if(_previousConfigClone) that(_previousConfigClone); - }, - redo: function() { - that(_configClone); - } - }); - })(configClone, previousConfigClone); - previousConfigClone = micropolar.util.cloneJson(configClone); - }; - exports.undo = function() { undoManager.undo(); }; - exports.redo = function() { undoManager.redo(); }; - return exports; -}; - -manager.fillLayout = function(_gd) { - var container = d3.select(_gd).selectAll('.plot-container'); - var paperDiv = container.selectAll('.svg-container'); - var paper = _gd.framework && _gd.framework.svg && _gd.framework.svg(); - var dflts = { - width: 800, - height: 600, - paper_bgcolor: Color.background, - _container: container, - _paperdiv: paperDiv, - _paper: paper - }; - - _gd._fullLayout = extendDeepAll(dflts, _gd.layout); -}; - -},{"../../../components/color":105,"../../../lib":233,"./micropolar":317,"./undo_manager":319,"d3":21}],319:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -// Modified from https://github.com/ArthurClemens/Javascript-Undo-Manager -// Copyright (c) 2010-2013 Arthur Clemens, arthur@visiblearea.com -module.exports = function UndoManager() { - var undoCommands = []; - var index = -1; - var isExecuting = false; - var callback; - - function execute(command, action) { - if(!command) return this; - - isExecuting = true; - command[action](); - isExecuting = false; - - return this; - } - - return { - add: function(command) { - if(isExecuting) return this; - undoCommands.splice(index + 1, undoCommands.length - index); - undoCommands.push(command); - index = undoCommands.length - 1; - return this; - }, - setCallback: function(callbackFunc) { callback = callbackFunc; }, - undo: function() { - var command = undoCommands[index]; - if(!command) return this; - execute(command, 'undo'); - index -= 1; - if(callback) callback(command.undo); - return this; - }, - redo: function() { - var command = undoCommands[index + 1]; - if(!command) return this; - execute(command, 'redo'); - index += 1; - if(callback) callback(command.redo); - return this; - }, - clear: function() { - undoCommands = []; - index = -1; - }, - hasUndo: function() { return index !== -1; }, - hasRedo: function() { return index < (undoCommands.length - 1); }, - getCommands: function() { return undoCommands; }, - getPreviousCommand: function() { return undoCommands[index - 1]; }, - getIndex: function() { return index; } - }; -}; - -},{}],320:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../components/color":155,"../constants/numerical":265,"../lib":285,"../plot_api/plot_schema":319,"../plot_api/plot_template":320,"../plots/get_data":361,"../registry":373,"./animation_attributes":325,"./attributes":327,"./cartesian/axis_ids":334,"./cartesian/handle_outline":341,"./command":357,"./font_attributes":359,"./frame_attributes":360,"./layout_attributes":364,"@plotly/d3":20,"d3-time-format":29,"fast-isnumeric":31}],367:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -76719,29 +83150,31 @@ module.exports = function handleSubplotDefaults(layoutIn, layoutOut, fullData, o } }; -},{"../lib":233,"../plot_api/plot_template":268,"./domain":306}],321:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/plot_template":320,"./domain":358}],368:[function(_dereq_,module,exports){ 'use strict'; -var FORMAT_LINK = _dereq_('../constants/docs').FORMAT_LINK; -var DATE_FORMAT_LINK = _dereq_('../constants/docs').DATE_FORMAT_LINK; +var docs = _dereq_('../constants/docs'); +var FORMAT_LINK = docs.FORMAT_LINK; +var DATE_FORMAT_LINK = docs.DATE_FORMAT_LINK; -var templateFormatStringDescription = [ - 'Variables are inserted using %{variable}, for example "y: %{y}".', - 'Numbers are formatted using d3-format\'s syntax %{variable:d3-format}, for example "Price: %{y:$.2f}".', - FORMAT_LINK, - 'for details on the formatting syntax.', - 'Dates are formatted using d3-time-format\'s syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}".', - DATE_FORMAT_LINK, - 'for details on the date formatting syntax.' -].join(' '); +function templateFormatStringDescription(opts) { + var supportOther = opts && opts.supportOther; + + return [ + 'Variables are inserted using %{variable},', + 'for example "y: %{y}"' + ( + supportOther ? + ' as well as %{xother}, {%_xother}, {%_xother_}, {%xother_}. When showing info for several points, *xother* will be added to those with different x positions from the first point. An underscore before or after *(x|y)other* will add a space on that side, only when this field is shown.' : + '.' + ), + 'Numbers are formatted using d3-format\'s syntax %{variable:d3-format}, for example "Price: %{y:$.2f}".', + FORMAT_LINK, + 'for details on the formatting syntax.', + 'Dates are formatted using d3-time-format\'s syntax %{variable|d3-time-format}, for example "Day: %{2019-01-01|%A}".', + DATE_FORMAT_LINK, + 'for details on the date formatting syntax.' + ].join(' '); +} function describeVariables(extra) { var descPart = extra.description ? ' ' + extra.description : ''; @@ -76769,10 +83202,8 @@ exports.hovertemplateAttrs = function(opts, extra) { var hovertemplate = { valType: 'string', - dflt: '', editType: opts.editType || 'none', - }; if(opts.arrayOk !== false) { @@ -76790,10 +83221,8 @@ exports.texttemplateAttrs = function(opts, extra) { var texttemplate = { valType: 'string', - dflt: '', editType: opts.editType || 'calc', - }; if(opts.arrayOk !== false) { @@ -76802,16 +83231,7 @@ exports.texttemplateAttrs = function(opts, extra) { return texttemplate; }; -},{"../constants/docs":209}],322:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../constants/docs":262}],369:[function(_dereq_,module,exports){ 'use strict'; var Ternary = _dereq_('./ternary'); @@ -76831,10 +83251,8 @@ exports.idRegex = exports.attrRegex = counterRegex(TERNARY); var attributes = exports.attributes = {}; attributes[attr] = { valType: 'subplotid', - dflt: 'ternary', editType: 'calc', - }; exports.layoutAttributes = _dereq_('./layout_attributes'); @@ -76886,15 +83304,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) } }; -},{"../../lib":233,"../../plots/get_data":309,"./layout_attributes":323,"./layout_defaults":324,"./ternary":325}],323:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/get_data":361,"./layout_attributes":370,"./layout_defaults":371,"./ternary":372}],370:[function(_dereq_,module,exports){ 'use strict'; var colorAttrs = _dereq_('../../components/color/attributes'); @@ -76948,9 +83358,7 @@ var ternaryAxesAttrs = { min: { valType: 'number', dflt: 0, - min: 0, - }, _deprecated: { title: axesAttrs._deprecated.title, @@ -76963,16 +83371,12 @@ var attrs = module.exports = overrideAll({ bgcolor: { valType: 'color', - dflt: colorAttrs.background, - }, sum: { valType: 'number', - dflt: 1, min: 0, - }, aaxis: ternaryAxesAttrs, baxis: ternaryAxesAttrs, @@ -76982,27 +83386,15 @@ var attrs = module.exports = overrideAll({ // set uirevisions outside of `overrideAll` so we can get `editType: none` attrs.uirevision = { valType: 'any', - editType: 'none', - }; attrs.aaxis.uirevision = attrs.baxis.uirevision = attrs.caxis.uirevision = { valType: 'any', - editType: 'none', - }; -},{"../../components/color/attributes":104,"../../lib/extend":227,"../../plot_api/edit_types":261,"../cartesian/layout_attributes":293,"../domain":306}],324:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color/attributes":154,"../../lib/extend":279,"../../plot_api/edit_types":313,"../cartesian/layout_attributes":345,"../domain":358}],371:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -77087,7 +83479,7 @@ function handleAxisDefaults(containerIn, containerOut, options, ternaryLayoutOut Lib.coerceFont(coerce, 'title.font', { family: options.font.family, - size: Math.round(options.font.size * 1.2), + size: Lib.bigFont(options.font.size), color: dfltFontColor }); @@ -77126,19 +83518,10 @@ function handleAxisDefaults(containerIn, containerOut, options, ternaryLayoutOut coerce('layer'); } -},{"../../components/color":105,"../../lib":233,"../../plot_api/plot_template":268,"../cartesian/line_grid_defaults":295,"../cartesian/tick_label_defaults":300,"../cartesian/tick_mark_defaults":301,"../cartesian/tick_value_defaults":302,"../subplot_defaults":320,"./layout_attributes":323}],325:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"../../lib":285,"../../plot_api/plot_template":320,"../cartesian/line_grid_defaults":347,"../cartesian/tick_label_defaults":352,"../cartesian/tick_mark_defaults":353,"../cartesian/tick_value_defaults":354,"../subplot_defaults":367,"./layout_attributes":370}],372:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Registry = _dereq_('../../registry'); @@ -77907,15 +84290,7 @@ function removeZoombox(gd) { .remove(); } -},{"../../components/color":105,"../../components/dragelement":124,"../../components/dragelement/helpers":123,"../../components/drawing":127,"../../components/fx":145,"../../components/titles":200,"../../lib":233,"../../lib/extend":227,"../../registry":326,"../cartesian/axes":279,"../cartesian/constants":285,"../cartesian/select":298,"../cartesian/set_convert":299,"../plots":313,"d3":21,"tinycolor2":88}],326:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/dragelement":174,"../../components/dragelement/helpers":173,"../../components/drawing":177,"../../components/fx":195,"../../components/titles":253,"../../lib":285,"../../lib/extend":279,"../../registry":373,"../cartesian/axes":331,"../cartesian/constants":337,"../cartesian/select":350,"../cartesian/set_convert":351,"../plots":366,"@plotly/d3":20,"tinycolor2":119}],373:[function(_dereq_,module,exports){ 'use strict'; var Loggers = _dereq_('./lib/loggers'); @@ -78054,7 +84429,7 @@ exports.traceIs = function(traceType, category) { var _module = exports.modules[traceType]; if(!_module) { - if(traceType && traceType !== 'area') { + if(traceType) { Loggers.log('Unrecognized trace type ' + traceType + '.'); } @@ -78373,15 +84748,7 @@ function getTraceType(traceType) { return traceType; } -},{"./lib/dom":225,"./lib/extend":227,"./lib/is_plain_object":234,"./lib/loggers":237,"./lib/noop":242,"./lib/push_unique":247,"./plots/attributes":275,"./plots/layout_attributes":311}],327:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./lib/dom":277,"./lib/extend":279,"./lib/is_plain_object":286,"./lib/loggers":289,"./lib/noop":294,"./lib/push_unique":299,"./plots/attributes":327,"./plots/layout_attributes":364}],374:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -78434,11 +84801,6 @@ function keyIsAxis(keyName) { module.exports = function clonePlot(graphObj, options) { - // Polar plot compatibility - if(graphObj.framework && graphObj.framework.isPolar) { - graphObj = graphObj.framework.getConfig(); - } - var i; var oldData = graphObj.data; var oldLayout = graphObj.layout; @@ -78546,15 +84908,7 @@ module.exports = function clonePlot(graphObj, options) { return plotTile; }; -},{"../lib":233,"../registry":326}],328:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../registry":373}],375:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -78618,15 +84972,7 @@ function downloadImage(gd, opts) { module.exports = downloadImage; -},{"../lib":233,"../plot_api/to_image":271,"./filesaver":329,"./helpers":330}],329:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"../plot_api/to_image":323,"./filesaver":376,"./helpers":377}],376:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -78652,10 +84998,6 @@ function fileSaver(url, name, format) { var blob; var objectUrl; - if(Lib.isIE9orBelow()) { - reject(new Error('IE < 10 unsupported')); - } - // Safari doesn't allow downloading of blob urls if(Lib.isSafari()) { var prefix = format === 'svg' ? ',' : ';base64,'; @@ -78698,15 +85040,7 @@ function fileSaver(url, name, format) { module.exports = fileSaver; -},{"../lib":233,"./helpers":330}],330:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"./helpers":377}],377:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../registry'); @@ -78723,13 +85057,7 @@ exports.getDelay = function(fullLayout) { exports.getRedrawFunc = function(gd) { return function() { - var fullLayout = gd._fullLayout || {}; - var hasPolar = fullLayout._has && fullLayout._has('polar'); - var hasLegacyPolar = !hasPolar && gd.data && gd.data[0] && gd.data[0].r; - - if(!hasLegacyPolar) { - Registry.getComponentMethod('colorbar', 'draw')(gd); - } + Registry.getComponentMethod('colorbar', 'draw')(gd); }; }; @@ -78781,16 +85109,7 @@ exports.IMAGE_URL_PREFIX = /^data:image\/\w+;base64,/; exports.MSG_IE_BAD_FORMAT = 'Sorry IE does not support downloading from canvas. Try {format:\'svg\'} instead.'; -},{"../registry":326}],331:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../registry":373}],378:[function(_dereq_,module,exports){ 'use strict'; var helpers = _dereq_('./helpers'); @@ -78807,15 +85126,7 @@ var Snapshot = { module.exports = Snapshot; -},{"./cloneplot":327,"./download":328,"./helpers":330,"./svgtoimg":332,"./toimage":333,"./tosvg":334}],332:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./cloneplot":374,"./download":375,"./helpers":377,"./svgtoimg":379,"./toimage":380,"./tosvg":381}],379:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../lib'); @@ -78855,7 +85166,7 @@ function svgToImg(opts) { var img = new Image(); var svgBlob, url; - if(format === 'svg' || Lib.isIE9orBelow() || Lib.isSafari()) { + if(format === 'svg' || Lib.isSafari()) { url = helpers.encodeSVG(svg); } else { svgBlob = helpers.createBlob(svg, 'svg'); @@ -78934,15 +85245,7 @@ function svgToImg(opts) { module.exports = svgToImg; -},{"../lib":233,"./helpers":330,"events":17}],333:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../lib":285,"./helpers":377,"events":27}],380:[function(_dereq_,module,exports){ 'use strict'; var EventEmitter = _dereq_('events').EventEmitter; @@ -78998,7 +85301,7 @@ function toImage(gd, opts) { var redrawFunc = helpers.getRedrawFunc(clonedGd); - Registry.call('plot', clonedGd, clone.data, clone.layout, clone.config) + Registry.call('_doPlot', clonedGd, clone.data, clone.layout, clone.config) .then(redrawFunc) .then(wait) .catch(function(err) { @@ -79011,19 +85314,10 @@ function toImage(gd, opts) { module.exports = toImage; -},{"../lib":233,"../registry":326,"./cloneplot":327,"./helpers":330,"./svgtoimg":332,"./tosvg":334,"events":17}],334:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../lib":285,"../registry":373,"./cloneplot":374,"./helpers":377,"./svgtoimg":379,"./tosvg":381,"events":27}],381:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../lib'); var Drawing = _dereq_('../components/drawing'); @@ -79056,7 +85350,7 @@ module.exports = function toSVG(gd, format, scale) { var toppaper = fullLayout._toppaper; var width = fullLayout.width; var height = fullLayout.height; - var i; + var i, k; // make background color a rect in the svg, then revert after scraping // all other alterations have been dealt with by properly preparing the svg @@ -79129,28 +85423,31 @@ module.exports = function toSVG(gd, format, scale) { } }); - + var queryParts = []; if(fullLayout._gradientUrlQueryParts) { - var queryParts = []; - for(var k in fullLayout._gradientUrlQueryParts) queryParts.push(k); + for(k in fullLayout._gradientUrlQueryParts) queryParts.push(k); + } - if(queryParts.length) { - svg.selectAll(queryParts.join(',')).each(function() { - var pt = d3.select(this); + if(fullLayout._patternUrlQueryParts) { + for(k in fullLayout._patternUrlQueryParts) queryParts.push(k); + } - // similar to font family styles above, - // we must remove " after the SVG DOM has been serialized - var fill = this.style.fill; - if(fill && fill.indexOf('url(') !== -1) { - pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); - } + if(queryParts.length) { + svg.selectAll(queryParts.join(',')).each(function() { + var pt = d3.select(this); - var stroke = this.style.stroke; - if(stroke && stroke.indexOf('url(') !== -1) { - pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); - } - }); - } + // similar to font family styles above, + // we must remove " after the SVG DOM has been serialized + var fill = this.style.fill; + if(fill && fill.indexOf('url(') !== -1) { + pt.style('fill', fill.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); + } + + var stroke = this.style.stroke; + if(stroke && stroke.indexOf('url(') !== -1) { + pt.style('stroke', stroke.replace(DOUBLEQUOTE_REGEX, DUMMY_SUB)); + } + }); } if(format === 'pdf' || format === 'eps') { @@ -79178,6 +85475,8 @@ module.exports = function toSVG(gd, format, scale) { // Fix quotations around font strings and gradient URLs s = s.replace(DUMMY_REGEX, '\''); + // Do we need this process now that IE9 and IE10 are not supported? + // IE is very strict, so we will need to clean // svg with the following regex // yes this is messy, but do not know a better way @@ -79200,15 +85499,7 @@ module.exports = function toSVG(gd, format, scale) { return s; }; -},{"../components/color":105,"../components/drawing":127,"../constants/xmlns_namespaces":213,"../lib":233,"d3":21}],335:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../components/color":155,"../components/drawing":177,"../constants/xmlns_namespaces":266,"../lib":285,"@plotly/d3":20}],382:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -79233,23 +85524,17 @@ module.exports = function arraysToCalcdata(cd, trace) { } }; -},{"../../lib":233}],336:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],383:[function(_dereq_,module,exports){ 'use strict'; var scatterAttrs = _dereq_('../scatter/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var fontAttrs = _dereq_('../../plots/font_attributes'); var constants = _dereq_('./constants'); +var pattern = _dereq_('../../components/drawing/attributes').pattern; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -79257,7 +85542,6 @@ var textFontAttrs = fontAttrs({ editType: 'calc', arrayOk: true, colorEditType: 'style', - }); var scatterMarkerAttrs = scatterAttrs.marker; @@ -79281,10 +85565,9 @@ var marker = extendFlat({ dflt: 1, min: 0, max: 1, - editType: 'style', - - } + }, + pattern: pattern }); module.exports = { @@ -79301,6 +85584,8 @@ module.exports = { yperiod0: scatterAttrs.yperiod0, xperiodalignment: scatterAttrs.xperiodalignment, yperiodalignment: scatterAttrs.yperiodalignment, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), text: scatterAttrs.text, texttemplate: texttemplateAttrs({editType: 'plot'}, { @@ -79313,80 +85598,62 @@ module.exports = { textposition: { valType: 'enumerated', - values: ['inside', 'outside', 'auto', 'none'], - dflt: 'none', + dflt: 'auto', arrayOk: true, editType: 'calc', - }, insidetextanchor: { valType: 'enumerated', values: ['end', 'middle', 'start'], dflt: 'end', - editType: 'plot', - }, textangle: { valType: 'angle', dflt: 'auto', - editType: 'plot', - }, textfont: extendFlat({}, textFontAttrs, { - }), insidetextfont: extendFlat({}, textFontAttrs, { - }), outsidetextfont: extendFlat({}, textFontAttrs, { - }), constraintext: { valType: 'enumerated', values: ['inside', 'outside', 'both', 'none'], - dflt: 'both', editType: 'calc', - }, cliponaxis: extendFlat({}, scatterAttrs.cliponaxis, { - }), orientation: { valType: 'enumerated', - values: ['v', 'h'], editType: 'calc+clearAxisTypes', - }, base: { valType: 'any', dflt: null, arrayOk: true, - editType: 'calc', - }, offset: { valType: 'number', dflt: null, arrayOk: true, - editType: 'calc', - }, width: { @@ -79394,26 +85661,20 @@ module.exports = { dflt: null, min: 0, arrayOk: true, - editType: 'calc', - }, marker: marker, offsetgroup: { valType: 'string', - dflt: '', editType: 'calc', - }, alignmentgroup: { valType: 'string', - dflt: '', editType: 'calc', - }, selected: { @@ -79435,29 +85696,16 @@ module.exports = { editType: 'style' }, - r: scatterAttrs.r, - t: scatterAttrs.t, - _deprecated: { bardir: { valType: 'enumerated', - editType: 'calc', values: ['v', 'h'], - } } }; -},{"../../components/colorscale/attributes":112,"../../lib/extend":227,"../../plots/font_attributes":307,"../../plots/template_attributes":321,"../scatter/attributes":447,"./constants":338}],337:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../components/drawing/attributes":176,"../../lib/extend":279,"../../plots/font_attributes":359,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../scatter/attributes":494,"./constants":385}],384:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -79528,16 +85776,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../../components/colorscale/calc":113,"../../components/colorscale/helpers":116,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"../scatter/calc_selection":449,"./arrays_to_calcdata":335}],338:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/calc":163,"../../components/colorscale/helpers":166,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"../scatter/calc_selection":496,"./arrays_to_calcdata":382}],385:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -79550,15 +85789,7 @@ module.exports = { eventDataKeys: ['value', 'label'] }; -},{}],339:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],386:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -80330,15 +86561,7 @@ module.exports = { setGroupPositions: setGroupPositions }; -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/axes":279,"../../plots/cartesian/constraints":286,"../../registry":326,"./sieve.js":349,"fast-isnumeric":23}],340:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/axes":331,"../../plots/cartesian/constraints":338,"../../registry":373,"./sieve.js":396,"fast-isnumeric":31}],387:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -80365,6 +86588,8 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { } handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); coerce('orientation', (traceOut.x && !traceOut.y) ? 'h' : 'v'); coerce('base'); @@ -80515,15 +86740,7 @@ module.exports = { handleText: handleText }; -},{"../../components/color":105,"../../lib":233,"../../plots/cartesian/constraints":286,"../../registry":326,"../scatter/period_defaults":467,"../scatter/xy_defaults":474,"./attributes":336,"./style_defaults":351}],341:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../../plots/cartesian/constraints":338,"../../registry":373,"../scatter/period_defaults":514,"../scatter/xy_defaults":521,"./attributes":383,"./style_defaults":398}],388:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace) { @@ -80544,15 +86761,7 @@ module.exports = function eventData(out, pt, trace) { return out; }; -},{}],342:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],389:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -80622,16 +86831,7 @@ exports.getLineWidth = function(trace, di) { return w; }; -},{"../../lib":233,"fast-isnumeric":23,"tinycolor2":88}],343:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"fast-isnumeric":31,"tinycolor2":119}],390:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -80643,8 +86843,8 @@ var getLineWidth = _dereq_('./helpers').getLineWidth; var hoverLabelText = _dereq_('../../plots/cartesian/axes').hoverLabelText; var BADNUM = _dereq_('../../constants/numerical').BADNUM; -function hoverPoints(pointData, xval, yval, hovermode) { - var barPointData = hoverOnBars(pointData, xval, yval, hovermode); +function hoverPoints(pointData, xval, yval, hovermode, opts) { + var barPointData = hoverOnBars(pointData, xval, yval, hovermode, opts); if(barPointData) { var cd = barPointData.cd; @@ -80658,20 +86858,46 @@ function hoverPoints(pointData, xval, yval, hovermode) { } } -function hoverOnBars(pointData, xval, yval, hovermode) { +function hoverOnBars(pointData, xval, yval, hovermode, opts) { var cd = pointData.cd; var trace = cd[0].trace; var t = cd[0].t; var isClosest = (hovermode === 'closest'); var isWaterfall = (trace.type === 'waterfall'); var maxHoverDistance = pointData.maxHoverDistance; + var maxSpikeDistance = pointData.maxSpikeDistance; var posVal, sizeVal, posLetter, sizeLetter, dx, dy, pRangeCalc; - function thisBarMinPos(di) { return di[posLetter] - di.w / 2; } - function thisBarMaxPos(di) { return di[posLetter] + di.w / 2; } + if(trace.orientation === 'h') { + posVal = yval; + sizeVal = xval; + posLetter = 'y'; + sizeLetter = 'x'; + dx = sizeFn; + dy = positionFn; + } else { + posVal = xval; + sizeVal = yval; + posLetter = 'x'; + sizeLetter = 'y'; + dy = sizeFn; + dx = positionFn; + } - var minPos = isClosest ? + var period = trace[posLetter + 'period']; + + function thisBarMinPos(di) { return thisBarExtPos(di, -1); } + function thisBarMaxPos(di) { return thisBarExtPos(di, 1); } + + function thisBarExtPos(di, sgn) { + if(period) { + return di.p + sgn * Math.abs(di.p - di.orig_p); + } + return di[posLetter] + sgn * di.w / 2; + } + + var minPos = isClosest || period ? thisBarMinPos : function(di) { /* @@ -80689,60 +86915,62 @@ function hoverOnBars(pointData, xval, yval, hovermode) { return Math.min(thisBarMinPos(di), di.p - t.bardelta / 2); }; - var maxPos = isClosest ? + var maxPos = isClosest || period ? thisBarMaxPos : function(di) { return Math.max(thisBarMaxPos(di), di.p + t.bardelta / 2); }; - function _positionFn(_minPos, _maxPos) { + function inbox(_minPos, _maxPos, maxDistance) { + if(opts.finiteRange) maxDistance = 0; + // add a little to the pseudo-distance for wider bars, so that like scatter, // if you are over two overlapping bars, the narrower one wins. return Fx.inbox(_minPos - posVal, _maxPos - posVal, - maxHoverDistance + Math.min(1, Math.abs(_maxPos - _minPos) / pRangeCalc) - 1); + maxDistance + Math.min(1, Math.abs(_maxPos - _minPos) / pRangeCalc) - 1); } function positionFn(di) { - return _positionFn(minPos(di), maxPos(di)); + return inbox(minPos(di), maxPos(di), maxHoverDistance); } function thisBarPositionFn(di) { - return _positionFn(thisBarMinPos(di), thisBarMaxPos(di)); + return inbox(thisBarMinPos(di), thisBarMaxPos(di), maxSpikeDistance); + } + + function getSize(di) { + var s = di[sizeLetter]; + + if(isWaterfall) { + var rawS = Math.abs(di.rawS) || 0; + if(sizeVal > 0) { + s += rawS; + } else if(sizeVal < 0) { + s -= rawS; + } + } + + return s; } function sizeFn(di) { var v = sizeVal; var b = di.b; - var s = di[sizeLetter]; - - if(isWaterfall) { - var rawS = Math.abs(di.rawS) || 0; - if(v > 0) { - s += rawS; - } else if(v < 0) { - s -= rawS; - } - } + var s = getSize(di); // add a gradient so hovering near the end of a // bar makes it a little closer match return Fx.inbox(b - v, s - v, maxHoverDistance + (s - v) / (s - b) - 1); } - if(trace.orientation === 'h') { - posVal = yval; - sizeVal = xval; - posLetter = 'y'; - sizeLetter = 'x'; - dx = sizeFn; - dy = positionFn; - } else { - posVal = xval; - sizeVal = yval; - posLetter = 'x'; - sizeLetter = 'y'; - dy = sizeFn; - dx = positionFn; + function thisBarSizeFn(di) { + var v = sizeVal; + var b = di.b; + var s = getSize(di); + + // add a gradient so hovering near the end of a + // bar makes it a little closer match + return Fx.inbox(b - v, s - v, maxSpikeDistance + (s - v) / (s - b) - 1); } var pa = pointData[posLetter + 'a']; @@ -80787,12 +87015,12 @@ function hoverOnBars(pointData, xval, yval, hovermode) { var hasPeriod = di.orig_p !== undefined; pointData[posLetter + 'LabelVal'] = hasPeriod ? di.orig_p : di.p; - pointData.labelLabel = hoverLabelText(pa, pointData[posLetter + 'LabelVal']); - pointData.valueLabel = hoverLabelText(sa, pointData[sizeLetter + 'LabelVal']); - pointData.baseLabel = hoverLabelText(sa, di.b); + pointData.labelLabel = hoverLabelText(pa, pointData[posLetter + 'LabelVal'], trace[posLetter + 'hoverformat']); + pointData.valueLabel = hoverLabelText(sa, pointData[sizeLetter + 'LabelVal'], trace[sizeLetter + 'hoverformat']); + pointData.baseLabel = hoverLabelText(sa, di.b, trace[sizeLetter + 'hoverformat']); // spikelines always want "closest" distance regardless of hovermode - pointData.spikeDistance = (sizeFn(di) + thisBarPositionFn(di)) / 2 - maxHoverDistance; + pointData.spikeDistance = (thisBarSizeFn(di) + thisBarPositionFn(di)) / 2; // they also want to point to the data value, regardless of where the label goes // in case of bars shifted within groups pointData[posLetter + 'Spike'] = pa.c2p(di.p, true); @@ -80818,15 +87046,7 @@ module.exports = { getTraceColor: getTraceColor }; -},{"../../components/color":105,"../../components/fx":145,"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"./helpers":342}],344:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx":195,"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"./helpers":389}],391:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -80852,19 +87072,10 @@ module.exports = { categories: ['bar-like', 'cartesian', 'svg', 'bar', 'oriented', 'errorBarsOK', 'showLegend', 'zoomScale'], animatable: true, meta: { - } }; -},{"../../plots/cartesian":292,"../scatter/marker_colorbar":465,"./arrays_to_calcdata":335,"./attributes":336,"./calc":337,"./cross_trace_calc":339,"./defaults":340,"./event_data":341,"./hover":343,"./layout_attributes":345,"./layout_defaults":346,"./plot":347,"./select":348,"./style":350}],345:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../scatter/marker_colorbar":512,"./arrays_to_calcdata":382,"./attributes":383,"./calc":384,"./cross_trace_calc":386,"./defaults":387,"./event_data":388,"./hover":390,"./layout_attributes":392,"./layout_defaults":393,"./plot":394,"./select":395,"./style":397}],392:[function(_dereq_,module,exports){ 'use strict'; @@ -80873,46 +87084,30 @@ module.exports = { valType: 'enumerated', values: ['stack', 'group', 'overlay', 'relative'], dflt: 'group', - editType: 'calc', - }, barnorm: { valType: 'enumerated', values: ['', 'fraction', 'percent'], dflt: '', - editType: 'calc', - }, bargap: { valType: 'number', min: 0, max: 1, - editType: 'calc', - }, bargroupgap: { valType: 'number', min: 0, max: 1, dflt: 0, - editType: 'calc', - } }; -},{}],346:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],393:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -80964,18 +87159,10 @@ module.exports = function(layoutIn, layoutOut, fullData) { coerce('bargroupgap'); }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"./layout_attributes":345}],347:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"./layout_attributes":392}],394:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var isNumeric = _dereq_('fast-isnumeric'); var Lib = _dereq_('../../lib'); @@ -81622,11 +87809,11 @@ function calcTexttemplate(fullLayout, cd, index, xa, ya) { } function formatLabel(u) { - return tickText(pAxis, u, true).text; + return tickText(pAxis, pAxis.c2l(u), true).text; } function formatNumber(v) { - return tickText(vAxis, +v, true).text; + return tickText(vAxis, vAxis.c2l(v), true).text; } var cdi = cd[index]; @@ -81749,15 +87936,7 @@ module.exports = { toMoveInsideBar: toMoveInsideBar }; -},{"../../components/color":105,"../../components/drawing":127,"../../components/fx/helpers":141,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../registry":326,"./attributes":336,"./constants":338,"./helpers":342,"./style":350,"./uniform_text":352,"d3":21,"fast-isnumeric":23}],348:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"../../components/fx/helpers":191,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../registry":373,"./attributes":383,"./constants":385,"./helpers":389,"./style":397,"./uniform_text":399,"@plotly/d3":20,"fast-isnumeric":31}],395:[function(_dereq_,module,exports){ 'use strict'; module.exports = function selectPoints(searchInfo, selectionTester) { @@ -81813,15 +87992,7 @@ function getCentroid(d, xa, ya, isHorizontal, isFunnel) { } } -},{}],349:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],396:[function(_dereq_,module,exports){ 'use strict'; module.exports = Sieve; @@ -81927,18 +88098,10 @@ Sieve.prototype.getLabel = function getLabel(position, value) { return prefix + label; }; -},{"../../constants/numerical":212,"../../lib":233}],350:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285}],397:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../../components/color'); var Drawing = _dereq_('../../components/drawing'); var Lib = _dereq_('../../lib'); @@ -82096,7 +88259,7 @@ function getBarColor(cd, trace) { if(trace.type === 'waterfall') { return trace[cd.dir].marker.color; } - return cd.mc || trace.marker.color; + return cd.mcc || cd.mc || trace.marker.color; } module.exports = { @@ -82109,20 +88272,13 @@ module.exports = { resizeText: resizeText }; -},{"../../components/color":105,"../../components/drawing":127,"../../lib":233,"../../registry":326,"./attributes":336,"./helpers":342,"./uniform_text":352,"d3":21}],351:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"../../lib":285,"../../registry":373,"./attributes":383,"./helpers":389,"./uniform_text":399,"@plotly/d3":20}],398:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale; var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); +var coercePattern = _dereq_('../../lib').coercePattern; module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, defaultColor, layout) { coerce('marker.color', defaultColor); @@ -82143,22 +88299,16 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, default coerce('marker.line.width'); coerce('marker.opacity'); + coercePattern(coerce, 'marker.pattern'); + coerce('selected.marker.color'); coerce('unselected.marker.color'); }; -},{"../../components/color":105,"../../components/colorscale/defaults":115,"../../components/colorscale/helpers":116}],352:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/colorscale/defaults":165,"../../components/colorscale/helpers":166,"../../lib":285}],399:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); function resizeText(gd, gTrace, traceType) { @@ -82233,20 +88383,13 @@ module.exports = { resizeText: resizeText }; -},{"../../lib":233,"d3":21}],353:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"@plotly/d3":20}],400:[function(_dereq_,module,exports){ 'use strict'; var scatterAttrs = _dereq_('../scatter/attributes'); var barAttrs = _dereq_('../bar/attributes'); var colorAttrs = _dereq_('../../components/color/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -82257,37 +88400,27 @@ module.exports = { y: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, x: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, x0: { valType: 'any', - editType: 'calc+clearAxisTypes', - }, y0: { valType: 'any', - editType: 'calc+clearAxisTypes', - }, dx: { valType: 'number', - editType: 'calc', - }, dy: { valType: 'number', - editType: 'calc', - }, xperiod: scatterAttrs.xperiod, @@ -82296,65 +88429,49 @@ module.exports = { yperiod0: scatterAttrs.yperiod0, xperiodalignment: scatterAttrs.xperiodalignment, yperiodalignment: scatterAttrs.yperiodalignment, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), name: { valType: 'string', - editType: 'calc+clearAxisTypes', - }, q1: { valType: 'data_array', - editType: 'calc+clearAxisTypes', - }, median: { valType: 'data_array', - editType: 'calc+clearAxisTypes', - }, q3: { valType: 'data_array', - editType: 'calc+clearAxisTypes', - }, lowerfence: { valType: 'data_array', - editType: 'calc', - }, upperfence: { valType: 'data_array', - editType: 'calc', - }, notched: { valType: 'boolean', - editType: 'calc', - }, notchwidth: { valType: 'number', min: 0, max: 0.5, dflt: 0.25, - editType: 'calc', - }, notchspan: { valType: 'data_array', - editType: 'calc', - }, // TODO @@ -82365,80 +88482,60 @@ module.exports = { boxpoints: { valType: 'enumerated', values: ['all', 'outliers', 'suspectedoutliers', false], - editType: 'calc', - }, jitter: { valType: 'number', min: 0, max: 1, - editType: 'calc', - }, pointpos: { valType: 'number', min: -2, max: 2, - editType: 'calc', - }, boxmean: { valType: 'enumerated', values: [true, 'sd', false], - editType: 'calc', - }, mean: { valType: 'data_array', - editType: 'calc', - }, sd: { valType: 'data_array', - editType: 'calc', - }, orientation: { valType: 'enumerated', values: ['v', 'h'], - editType: 'calc+clearAxisTypes', - }, quartilemethod: { valType: 'enumerated', values: ['linear', 'exclusive', 'inclusive'], dflt: 'linear', - editType: 'calc', - }, width: { valType: 'number', min: 0, - dflt: 0, editType: 'calc', - }, marker: { outliercolor: { valType: 'color', dflt: 'rgba(0, 0, 0, 0)', - editType: 'style', - }, symbol: extendFlat({}, scatterMarkerAttrs.symbol, {arrayOk: false, editType: 'plot'}), @@ -82457,17 +88554,13 @@ module.exports = { ), outliercolor: { valType: 'color', - editType: 'style', - }, outlierwidth: { valType: 'number', min: 0, dflt: 1, - editType: 'style', - }, editType: 'style' }, @@ -82477,17 +88570,13 @@ module.exports = { line: { color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', - min: 0, dflt: 2, editType: 'style', - }, editType: 'plot' }, @@ -82499,9 +88588,7 @@ module.exports = { min: 0, max: 1, dflt: 0.5, - editType: 'calc', - }, offsetgroup: barAttrs.offsetgroup, @@ -82517,34 +88604,21 @@ module.exports = { }, text: extendFlat({}, scatterAttrs.text, { - }), hovertext: extendFlat({}, scatterAttrs.hovertext, { - }), hovertemplate: hovertemplateAttrs({ - }), hoveron: { valType: 'flaglist', flags: ['boxes', 'points'], dflt: 'boxes+points', - editType: 'style', - } }; -},{"../../components/color/attributes":104,"../../lib/extend":227,"../../plots/template_attributes":321,"../bar/attributes":336,"../scatter/attributes":447}],354:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color/attributes":154,"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../bar/attributes":383,"../scatter/attributes":494}],401:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -82990,15 +89064,7 @@ function computeNotchSpan(cdi, N) { return 1.57 * (cdi.q3 - cdi.q1) / Math.sqrt(N); } -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"fast-isnumeric":23}],355:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"fast-isnumeric":31}],402:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -83222,15 +89288,7 @@ module.exports = { setPositionOffset: setPositionOffset }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../plots/cartesian/constraints":286}],356:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../plots/cartesian/constraints":338}],403:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -83250,6 +89308,8 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { if(traceOut.visible === false) return; handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); var hasPreCompStats = traceOut._hasPreCompStats; @@ -83538,15 +89598,7 @@ module.exports = { handlePointsDefaults: handlePointsDefaults }; -},{"../../components/color":105,"../../lib":233,"../../plots/cartesian/axis_autotype":280,"../../registry":326,"../bar/defaults":340,"../scatter/period_defaults":467,"./attributes":353}],357:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../../plots/cartesian/axis_autotype":332,"../../registry":373,"../bar/defaults":387,"../scatter/period_defaults":514,"./attributes":400}],404:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -83563,15 +89615,7 @@ module.exports = function eventData(out, pt) { return out; }; -},{}],358:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],405:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -83740,7 +89784,7 @@ function hoverOnBoxes(pointData, xval, yval, hovermode) { pointData2.attr = attr; pointData2[vLetter + '0'] = pointData2[vLetter + '1'] = valPx; pointData2[vLetter + 'LabelVal'] = val; - pointData2[vLetter + 'Label'] = (t.labels ? t.labels[attr] + ' ' : '') + Axes.hoverLabelText(vAxis, val); + pointData2[vLetter + 'Label'] = (t.labels ? t.labels[attr] + ' ' : '') + Axes.hoverLabelText(vAxis, val, trace[vLetter + 'hoverformat']); // Note: introduced to be able to distinguish a // clicked point from a box during click-to-select @@ -83850,15 +89894,7 @@ module.exports = { hoverOnPoints: hoverOnPoints }; -},{"../../components/color":105,"../../components/fx":145,"../../lib":233,"../../plots/cartesian/axes":279}],359:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx":195,"../../lib":285,"../../plots/cartesian/axes":331}],406:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -83881,19 +89917,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', 'symbols', 'oriented', 'box-violin', 'showLegend', 'boxLayout', 'zoomScale'], meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":353,"./calc":354,"./cross_trace_calc":355,"./defaults":356,"./event_data":357,"./hover":358,"./layout_attributes":360,"./layout_defaults":361,"./plot":362,"./select":363,"./style":364}],360:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./attributes":400,"./calc":401,"./cross_trace_calc":402,"./defaults":403,"./event_data":404,"./hover":405,"./layout_attributes":407,"./layout_defaults":408,"./plot":409,"./select":410,"./style":411}],407:[function(_dereq_,module,exports){ 'use strict'; @@ -83902,39 +89929,25 @@ module.exports = { valType: 'enumerated', values: ['group', 'overlay'], dflt: 'overlay', - editType: 'calc', - }, boxgap: { valType: 'number', min: 0, max: 1, dflt: 0.3, - editType: 'calc', - }, boxgroupgap: { valType: 'number', min: 0, max: 1, dflt: 0.3, - editType: 'calc', - } }; -},{}],361:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],408:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -83972,18 +89985,10 @@ module.exports = { _supply: _supply }; -},{"../../lib":233,"../../registry":326,"./layout_attributes":360}],362:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"./layout_attributes":407}],409:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Drawing = _dereq_('../../components/drawing'); @@ -84322,15 +90327,7 @@ module.exports = { plotBoxMean: plotBoxMean }; -},{"../../components/drawing":127,"../../lib":233,"d3":21}],363:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../lib":285,"@plotly/d3":20}],410:[function(_dereq_,module,exports){ 'use strict'; module.exports = function selectPoints(searchInfo, selectionTester) { @@ -84371,18 +90368,10 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; -},{}],364:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],411:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../../components/color'); var Drawing = _dereq_('../../components/drawing'); @@ -84445,19 +90434,12 @@ module.exports = { styleOnSelect: styleOnSelect }; -},{"../../components/color":105,"../../components/drawing":127,"d3":21}],365:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"@plotly/d3":20}],412:[function(_dereq_,module,exports){ 'use strict'; var heatmapAttrs = _dereq_('../heatmap/attributes'); var scatterAttrs = _dereq_('../scatter/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); var dash = _dereq_('../../components/drawing/attributes').dash; var fontAttrs = _dereq_('../../plots/font_attributes'); @@ -84492,39 +90474,34 @@ module.exports = extendFlat({ transpose: heatmapAttrs.transpose, xtype: heatmapAttrs.xtype, ytype: heatmapAttrs.ytype, - zhoverformat: heatmapAttrs.zhoverformat, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), hovertemplate: heatmapAttrs.hovertemplate, hoverongaps: heatmapAttrs.hoverongaps, connectgaps: extendFlat({}, heatmapAttrs.connectgaps, { - }), fillcolor: { valType: 'color', - editType: 'calc', - }, autocontour: { valType: 'boolean', dflt: true, - editType: 'calc', impliedEdits: { 'contours.start': undefined, 'contours.end': undefined, 'contours.size': undefined }, - }, ncontours: { valType: 'integer', dflt: 15, min: 1, - editType: 'calc', - }, contours: { @@ -84532,83 +90509,62 @@ module.exports = extendFlat({ valType: 'enumerated', values: ['levels', 'constraint'], dflt: 'levels', - editType: 'calc', - }, start: { valType: 'number', dflt: null, - editType: 'plot', impliedEdits: {'^autocontour': false}, - }, end: { valType: 'number', dflt: null, - editType: 'plot', impliedEdits: {'^autocontour': false}, - }, size: { valType: 'number', dflt: null, min: 0, - editType: 'plot', impliedEdits: {'^autocontour': false}, - }, coloring: { valType: 'enumerated', values: ['fill', 'heatmap', 'lines', 'none'], dflt: 'fill', - editType: 'calc', - }, showlines: { valType: 'boolean', dflt: true, - editType: 'plot', - }, showlabels: { valType: 'boolean', dflt: false, - editType: 'plot', - }, labelfont: fontAttrs({ editType: 'plot', colorEditType: 'style', - }), labelformat: { valType: 'string', dflt: '', - editType: 'plot', - }, operation: { valType: 'enumerated', values: [].concat(COMPARISON_OPS2).concat(INTERVAL_OPS), - dflt: '=', editType: 'calc', - }, value: { valType: 'any', dflt: 0, - editType: 'calc', - }, editType: 'calc', impliedEdits: {'autocontour': false} @@ -84617,18 +90573,14 @@ module.exports = extendFlat({ line: { color: extendFlat({}, scatterLineAttrs.color, { editType: 'style+colorbars', - }), width: { valType: 'number', min: 0, - editType: 'style+colorbars', - }, dash: dash, smoothing: extendFlat({}, scatterLineAttrs.smoothing, { - }), editType: 'plot' } @@ -84640,15 +90592,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":112,"../../components/drawing/attributes":126,"../../constants/docs":209,"../../constants/filter_ops":210,"../../lib/extend":227,"../../plots/font_attributes":307,"../heatmap/attributes":387,"../scatter/attributes":447}],366:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../components/drawing/attributes":176,"../../constants/docs":262,"../../constants/filter_ops":263,"../../lib/extend":279,"../../plots/font_attributes":359,"../../plots/hoverformat_attributes":363,"../heatmap/attributes":434,"../scatter/attributes":494}],413:[function(_dereq_,module,exports){ 'use strict'; var Colorscale = _dereq_('../../components/colorscale'); @@ -84693,15 +90637,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../../components/colorscale":117,"../heatmap/calc":388,"./end_plus":376,"./set_contours":384}],367:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"../heatmap/calc":435,"./end_plus":423,"./set_contours":431}],414:[function(_dereq_,module,exports){ 'use strict'; module.exports = function(pathinfo, contours) { @@ -84783,15 +90719,7 @@ module.exports = function(pathinfo, contours) { } }; -},{}],368:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],415:[function(_dereq_,module,exports){ 'use strict'; var Colorscale = _dereq_('../../components/colorscale'); @@ -84834,15 +90762,7 @@ module.exports = { calc: calc }; -},{"../../components/colorscale":117,"./end_plus":376,"./make_color_map":381}],369:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"./end_plus":423,"./make_color_map":428}],416:[function(_dereq_,module,exports){ 'use strict'; module.exports = { // some constants to help with marching squares algorithm @@ -84912,16 +90832,7 @@ module.exports = { } }; -},{}],370:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],417:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -85006,15 +90917,7 @@ function handleConstraintValueDefaults(coerce, contours) { } } -},{"../../components/color":105,"../../constants/filter_ops":210,"./label_defaults":380,"fast-isnumeric":23}],371:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../constants/filter_ops":263,"./label_defaults":427,"fast-isnumeric":31}],418:[function(_dereq_,module,exports){ 'use strict'; var filterOps = _dereq_('../../constants/filter_ops'); @@ -85085,15 +90988,7 @@ function makeInequalitySettings(operation) { }; } -},{"../../constants/filter_ops":210,"fast-isnumeric":23}],372:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/filter_ops":263,"fast-isnumeric":31}],419:[function(_dereq_,module,exports){ 'use strict'; module.exports = function handleContourDefaults(traceIn, traceOut, coerce, coerce2) { @@ -85114,15 +91009,7 @@ module.exports = function handleContourDefaults(traceIn, traceOut, coerce, coerc if(autoContour || !contourSize) coerce('ncontours'); }; -},{}],373:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],420:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85214,15 +91101,7 @@ function copyPathinfo(pi) { }); } -},{"../../lib":233}],374:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],421:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85251,6 +91130,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); coerce('text'); coerce('hovertext'); @@ -85268,15 +91149,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } }; -},{"../../lib":233,"../heatmap/xyz_defaults":401,"../scatter/period_defaults":467,"./attributes":365,"./constraint_defaults":370,"./contours_defaults":372,"./style_defaults":386}],375:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../heatmap/xyz_defaults":448,"../scatter/period_defaults":514,"./attributes":412,"./constraint_defaults":417,"./contours_defaults":419,"./style_defaults":433}],422:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85332,16 +91205,7 @@ module.exports = function emptyPathinfo(contours, plotinfo, cd0) { return pathinfo; }; -},{"../../lib":233,"./constraint_mapping":371,"./end_plus":376}],376:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"./constraint_mapping":418,"./end_plus":423}],423:[function(_dereq_,module,exports){ 'use strict'; /* @@ -85352,15 +91216,7 @@ module.exports = function endPlus(contours) { return contours.end + contours.size / 1e6; }; -},{}],377:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],424:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85646,24 +91502,18 @@ function getInterpPx(pi, loc, step) { } } -},{"../../lib":233,"./constants":369}],378:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"./constants":416}],425:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); var heatmapHoverPoints = _dereq_('../heatmap/hover'); -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer) { - var hoverData = heatmapHoverPoints(pointData, xval, yval, hovermode, hoverLayer, true); +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + if(!opts) opts = {}; + opts.isContour = true; + + var hoverData = heatmapHoverPoints(pointData, xval, yval, hovermode, opts); if(hoverData) { hoverData.forEach(function(hoverPt) { @@ -85681,15 +91531,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay return hoverData; }; -},{"../../components/color":105,"../heatmap/hover":394}],379:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../heatmap/hover":441}],426:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -85706,20 +91548,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'contour', 'showLegend'], meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":365,"./calc":366,"./colorbar":368,"./defaults":374,"./hover":378,"./plot":383,"./style":385}],380:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian":344,"./attributes":412,"./calc":413,"./colorbar":415,"./defaults":421,"./hover":425,"./plot":430,"./style":432}],427:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -85740,18 +91572,10 @@ module.exports = function handleLabelDefaults(coerce, layout, lineColor, opts) { if(opts.hasHover !== false) coerce('zhoverformat'); }; -},{"../../lib":233}],381:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],428:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Colorscale = _dereq_('../../components/colorscale'); var endPlus = _dereq_('./end_plus'); @@ -85824,15 +91648,7 @@ module.exports = function makeColorMap(trace) { ); }; -},{"../../components/colorscale":117,"./end_plus":376,"d3":21}],382:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"./end_plus":423,"@plotly/d3":20}],429:[function(_dereq_,module,exports){ 'use strict'; var constants = _dereq_('./constants'); @@ -85916,19 +91732,10 @@ function getMarchingIndex(val, corners) { return (mi === 15) ? 0 : mi; } -},{"./constants":369}],383:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./constants":416}],430:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Drawing = _dereq_('../../components/drawing'); @@ -86607,15 +92414,7 @@ function makeClipMask(cd0) { return z; } -},{"../../components/colorscale":117,"../../components/drawing":127,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/cartesian/axes":279,"../../plots/cartesian/set_convert":299,"../heatmap/plot":398,"./close_boundaries":367,"./constants":369,"./convert_to_constraints":373,"./empty_pathinfo":375,"./find_all_paths":377,"./make_crossings":382,"d3":21}],384:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"../../components/drawing":177,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/cartesian/axes":331,"../../plots/cartesian/set_convert":351,"../heatmap/plot":445,"./close_boundaries":414,"./constants":416,"./convert_to_constraints":420,"./empty_pathinfo":422,"./find_all_paths":424,"./make_crossings":429,"@plotly/d3":20}],431:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -86711,19 +92510,10 @@ function autoContours(start, end, ncontours) { return dummyAx; } -},{"../../lib":233,"../../plots/cartesian/axes":279}],385:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331}],432:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Drawing = _dereq_('../../components/drawing'); var heatmapStyle = _dereq_('../heatmap/style'); @@ -86792,16 +92582,7 @@ module.exports = function style(gd) { heatmapStyle(gd); }; -},{"../../components/drawing":127,"../heatmap/style":399,"./make_color_map":381,"d3":21}],386:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/drawing":177,"../heatmap/style":446,"./make_color_map":428,"@plotly/d3":20}],433:[function(_dereq_,module,exports){ 'use strict'; var colorscaleDefaults = _dereq_('../../components/colorscale/defaults'); @@ -86837,22 +92618,14 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce, layout, handleLabelDefaults(coerce, layout, lineColor, opts); }; -},{"../../components/colorscale/defaults":115,"./label_defaults":380}],387:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/defaults":165,"./label_defaults":427}],434:[function(_dereq_,module,exports){ 'use strict'; var scatterAttrs = _dereq_('../scatter/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); -var FORMAT_LINK = _dereq_('../../constants/docs').FORMAT_LINK; var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -86860,7 +92633,6 @@ module.exports = extendFlat({ z: { valType: 'data_array', editType: 'calc', - }, x: extendFlat({}, scatterAttrs.x, {impliedEdits: {xtype: 'array'}}), x0: extendFlat({}, scatterAttrs.x0, {impliedEdits: {xtype: 'scaled'}}), @@ -86879,78 +92651,57 @@ module.exports = extendFlat({ text: { valType: 'data_array', editType: 'calc', - }, hovertext: { valType: 'data_array', editType: 'calc', - }, transpose: { valType: 'boolean', dflt: false, - editType: 'calc', - }, xtype: { valType: 'enumerated', values: ['array', 'scaled'], - editType: 'calc+clearAxisTypes', - }, ytype: { valType: 'enumerated', values: ['array', 'scaled'], - editType: 'calc+clearAxisTypes', - }, zsmooth: { valType: 'enumerated', values: ['fast', 'best', false], dflt: false, - editType: 'calc', - }, hoverongaps: { valType: 'boolean', dflt: true, - editType: 'none', - }, connectgaps: { valType: 'boolean', - editType: 'calc', - }, xgap: { valType: 'number', dflt: 0, min: 0, - editType: 'plot', - }, ygap: { valType: 'number', dflt: 0, min: 0, - editType: 'plot', - - }, - zhoverformat: { - valType: 'string', - dflt: '', - - editType: 'none', - }, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), + hovertemplate: hovertemplateAttrs(), showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, { @@ -86959,15 +92710,7 @@ module.exports = extendFlat({ colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":112,"../../constants/docs":209,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"../scatter/attributes":447}],388:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../scatter/attributes":494}],435:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -87168,15 +92911,7 @@ function dropZonBreaks(x, y, z) { return newZ; } -},{"../../components/colorscale/calc":113,"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"../../registry":326,"../histogram2d/calc":416,"./clean_2d_array":389,"./convert_column_xyz":391,"./find_empties":393,"./interp2d":396,"./make_bound_array":397}],389:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/calc":163,"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"../../registry":373,"../histogram2d/calc":463,"./clean_2d_array":436,"./convert_column_xyz":438,"./find_empties":440,"./interp2d":443,"./make_bound_array":444}],436:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -87245,15 +92980,7 @@ module.exports = function clean2dArray(zOld, trace, xa, ya) { return zNew; }; -},{"../../constants/numerical":212,"../../lib":233,"fast-isnumeric":23}],390:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"fast-isnumeric":31}],437:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -87261,16 +92988,7 @@ module.exports = { max: 'zmax' }; -},{}],391:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],438:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -87351,16 +93069,7 @@ module.exports = function convertColumnData(trace, ax1, ax2, var1Name, var2Name, trace._after2before = after2before; }; -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276}],392:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328}],439:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -87384,6 +93093,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout } handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); coerce('text'); coerce('hovertext'); @@ -87397,15 +93108,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); }; -},{"../../components/colorscale/defaults":115,"../../lib":233,"../scatter/period_defaults":467,"./attributes":387,"./style_defaults":400,"./xyz_defaults":401}],393:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/defaults":165,"../../lib":285,"../scatter/period_defaults":514,"./attributes":434,"./style_defaults":447,"./xyz_defaults":448}],440:[function(_dereq_,module,exports){ 'use strict'; var maxRowLength = _dereq_('../../lib').maxRowLength; @@ -87502,15 +93205,7 @@ module.exports = function findEmpties(z) { return empties.sort(function(a, b) { return b[2] - a[2]; }); }; -},{"../../lib":233}],394:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],441:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -87518,7 +93213,10 @@ var Lib = _dereq_('../../lib'); var Axes = _dereq_('../../plots/cartesian/axes'); var extractOpts = _dereq_('../../components/colorscale').extractOpts; -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer, contour) { +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + if(!opts) opts = {}; + var isContour = opts.isContour; + var cd0 = pointData.cd[0]; var trace = cd0.trace; var xa = pointData.xa; @@ -87551,7 +93249,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay Fx.inbox(yval - y[0], yval - y[y.length - 1], 0) > 0) { return; } else { - if(contour) { + if(isContour) { var i2; x2 = [2 * x[0] - x[1]]; @@ -87576,7 +93274,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay var y1 = ya.c2p(y[ny + 1]); var _x, _y; - if(contour) { + if(isContour) { _x = cd0.orig_x || x; _y = cd0.orig_y || y; @@ -87640,15 +93338,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay })]; }; -},{"../../components/colorscale":117,"../../components/fx":145,"../../lib":233,"../../plots/cartesian/axes":279}],395:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale":167,"../../components/fx":195,"../../lib":285,"../../plots/cartesian/axes":331}],442:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -87665,19 +93355,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'showLegend'], meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":387,"./calc":388,"./colorbar":390,"./defaults":392,"./hover":394,"./plot":398,"./style":399}],396:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./attributes":434,"./calc":435,"./colorbar":437,"./defaults":439,"./hover":441,"./plot":445,"./style":446}],443:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -87802,15 +93483,7 @@ function iterateInterp2d(z, emptyPoints, overshoot) { return maxFractionalChange; } -},{"../../lib":233}],397:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],444:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -87890,19 +93563,10 @@ module.exports = function makeBoundArray(trace, arrayIn, v0In, dvIn, numbricks, return arrayOut; }; -},{"../../lib":233,"../../registry":326}],398:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373}],445:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var tinycolor = _dereq_('tinycolor2'); var Registry = _dereq_('../../registry'); @@ -88295,19 +93959,10 @@ function putColor(pixels, pxIndex, c) { pixels[pxIndex + 3] = Math.round(c[3] * 255); } -},{"../../components/colorscale":117,"../../constants/xmlns_namespaces":213,"../../lib":233,"../../registry":326,"d3":21,"tinycolor2":88}],399:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale":167,"../../constants/xmlns_namespaces":266,"../../lib":285,"../../registry":373,"@plotly/d3":20,"tinycolor2":119}],446:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); module.exports = function style(gd) { d3.select(gd).selectAll('.hm image') @@ -88316,16 +93971,7 @@ module.exports = function style(gd) { }); }; -},{"d3":21}],400:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"@plotly/d3":20}],447:[function(_dereq_,module,exports){ 'use strict'; module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { @@ -88339,15 +93985,7 @@ module.exports = function handleStyleDefaults(traceIn, traceOut, coerce) { coerce('zhoverformat'); }; -},{}],401:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],448:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -88386,10 +94024,7 @@ module.exports = function handleXYZDefaults(traceIn, traceOut, coerce, layout, x traceOut._length = null; } - if( - traceIn.type === 'heatmapgl' || - traceIn.type === 'contourgl' - ) return true; // skip calendars until we handle them in those traces + if(traceIn.type === 'heatmapgl') return true; // skip calendars until we handle them in those traces var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleTraceDefaults'); handleCalendarDefaults(traceIn, traceOut, [xName, yName], layout); @@ -88441,18 +94076,11 @@ function isValidZ(z) { return (allRowsAreArrays && oneRowIsFilled && hasOneNumber); } -},{"../../lib":233,"../../registry":326,"fast-isnumeric":23}],402:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373,"fast-isnumeric":31}],449:[function(_dereq_,module,exports){ 'use strict'; var barAttrs = _dereq_('../bar/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var makeBinAttrs = _dereq_('./bin_attributes'); var constants = _dereq_('./constants'); @@ -88462,64 +94090,53 @@ module.exports = { x: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, y: { valType: 'data_array', editType: 'calc+clearAxisTypes', - }, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + text: extendFlat({}, barAttrs.text, { - }), hovertext: extendFlat({}, barAttrs.hovertext, { - }), orientation: barAttrs.orientation, histfunc: { valType: 'enumerated', values: ['count', 'sum', 'avg', 'min', 'max'], - dflt: 'count', editType: 'calc', - }, histnorm: { valType: 'enumerated', values: ['', 'percent', 'probability', 'density', 'probability density'], dflt: '', - editType: 'calc', - }, cumulative: { enabled: { valType: 'boolean', dflt: false, - editType: 'calc', - }, direction: { valType: 'enumerated', values: ['increasing', 'decreasing'], dflt: 'increasing', - editType: 'calc', - }, currentbin: { valType: 'enumerated', values: ['include', 'exclude', 'half'], dflt: 'include', - editType: 'calc', - }, editType: 'calc' }, @@ -88527,9 +94144,7 @@ module.exports = { valType: 'integer', min: 0, dflt: 0, - editType: 'calc', - }, xbins: makeBinAttrs('x', true), @@ -88537,32 +94152,24 @@ module.exports = { valType: 'integer', min: 0, dflt: 0, - editType: 'calc', - }, ybins: makeBinAttrs('y', true), autobinx: { valType: 'boolean', dflt: null, - editType: 'calc', - }, autobiny: { valType: 'boolean', dflt: null, - editType: 'calc', - }, bingroup: { valType: 'string', - dflt: '', editType: 'calc', - }, hovertemplate: hovertemplateAttrs({}, { @@ -88582,16 +94189,7 @@ module.exports = { } }; -},{"../../lib/extend":227,"../../plots/template_attributes":321,"../bar/attributes":336,"./bin_attributes":404,"./constants":408}],403:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../bar/attributes":383,"./bin_attributes":451,"./constants":455}],450:[function(_dereq_,module,exports){ 'use strict'; @@ -88607,51 +94205,28 @@ module.exports = function doAvg(size, counts) { return total; }; -},{}],404:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],451:[function(_dereq_,module,exports){ 'use strict'; module.exports = function makeBinAttrs(axLetter, match) { return { start: { valType: 'any', // for date axes - editType: 'calc', - }, end: { valType: 'any', // for date axes - editType: 'calc', - }, size: { valType: 'any', // for date axes - editType: 'calc', - }, editType: 'calc' }; }; -},{}],405:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],452:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -88716,16 +94291,7 @@ module.exports = { } }; -},{"fast-isnumeric":23}],406:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"fast-isnumeric":31}],453:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -88892,15 +94458,7 @@ function dateParts(v, pa, calendar) { return parts; } -},{"../../constants/numerical":212,"../../plots/cartesian/axes":279}],407:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../plots/cartesian/axes":331}],454:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -89471,31 +95029,14 @@ module.exports = { calcAllAutoBins: calcAllAutoBins }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../../registry":326,"../bar/arrays_to_calcdata":335,"./average":403,"./bin_functions":405,"./bin_label_vals":406,"./norm_functions":414,"fast-isnumeric":23}],408:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../../registry":373,"../bar/arrays_to_calcdata":382,"./average":450,"./bin_functions":452,"./bin_label_vals":453,"./norm_functions":461,"fast-isnumeric":31}],455:[function(_dereq_,module,exports){ 'use strict'; module.exports = { eventDataKeys: ['binNumber'] }; -},{}],409:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],456:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -89764,15 +95305,7 @@ module.exports = function crossTraceDefaults(fullData, fullLayout) { } }; -},{"../../lib":233,"../../plots/cartesian/axis_ids":282,"../../plots/cartesian/constraints":286,"../../registry":326,"../bar/defaults":340}],410:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axis_ids":334,"../../plots/cartesian/constraints":338,"../../registry":373,"../bar/defaults":387}],457:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -89799,6 +95332,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('text'); coerce('hovertext'); coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); var orientation = coerce('orientation', (y && !x) ? 'h' : 'v'); var sampleLetter = orientation === 'v' ? 'x' : 'y'; @@ -89838,15 +95373,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout errorBarsSupplyDefaults(traceIn, traceOut, lineColor || Color.defaultLine, {axis: 'x', inherit: 'y'}); }; -},{"../../components/color":105,"../../lib":233,"../../registry":326,"../bar/style_defaults":351,"./attributes":402}],411:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../../registry":373,"../bar/style_defaults":398,"./attributes":449}],458:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -89887,23 +95414,14 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],412:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],459:[function(_dereq_,module,exports){ 'use strict'; var barHover = _dereq_('../bar/hover').hoverPoints; var hoverLabelText = _dereq_('../../plots/cartesian/axes').hoverLabelText; -module.exports = function hoverPoints(pointData, xval, yval, hovermode) { - var pts = barHover(pointData, xval, yval, hovermode); +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + var pts = barHover(pointData, xval, yval, hovermode, opts); if(!pts) return; @@ -89914,21 +95432,13 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { if(!trace.cumulative.enabled) { var posLetter = trace.orientation === 'h' ? 'y' : 'x'; - pointData[posLetter + 'Label'] = hoverLabelText(pointData[posLetter + 'a'], di.ph0, di.ph1); + pointData[posLetter + 'Label'] = hoverLabelText(pointData[posLetter + 'a'], [di.ph0, di.ph1], trace[posLetter + 'hoverformat']); } return pts; }; -},{"../../plots/cartesian/axes":279,"../bar/hover":343}],413:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/axes":331,"../bar/hover":390}],460:[function(_dereq_,module,exports){ 'use strict'; /** @@ -89966,20 +95476,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['bar-like', 'cartesian', 'svg', 'bar', 'histogram', 'oriented', 'errorBarsOK', 'showLegend'], meta: { - } }; -},{"../../plots/cartesian":292,"../bar/cross_trace_calc":339,"../bar/layout_attributes":345,"../bar/layout_defaults":346,"../bar/plot":347,"../bar/select":348,"../bar/style":350,"../scatter/marker_colorbar":465,"./attributes":402,"./calc":407,"./cross_trace_defaults":409,"./defaults":410,"./event_data":411,"./hover":412}],414:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian":344,"../bar/cross_trace_calc":386,"../bar/layout_attributes":392,"../bar/layout_defaults":393,"../bar/plot":394,"../bar/select":395,"../bar/style":397,"../scatter/marker_colorbar":512,"./attributes":449,"./calc":454,"./cross_trace_defaults":456,"./defaults":457,"./event_data":458,"./hover":459}],461:[function(_dereq_,module,exports){ 'use strict'; @@ -90005,21 +95505,14 @@ module.exports = { } }; -},{}],415:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],462:[function(_dereq_,module,exports){ 'use strict'; var histogramAttrs = _dereq_('../histogram/attributes'); var makeBinAttrs = _dereq_('../histogram/bin_attributes'); var heatmapAttrs = _dereq_('../heatmap/attributes'); var baseAttrs = _dereq_('../../plots/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); @@ -90033,13 +95526,11 @@ module.exports = extendFlat( z: { valType: 'data_array', editType: 'calc', - }, marker: { color: { valType: 'data_array', editType: 'calc', - }, editType: 'calc' }, @@ -90054,34 +95545,25 @@ module.exports = extendFlat( autobiny: histogramAttrs.autobiny, bingroup: extendFlat({}, histogramAttrs.bingroup, { - }), xbingroup: extendFlat({}, histogramAttrs.bingroup, { - }), ybingroup: extendFlat({}, histogramAttrs.bingroup, { - }), xgap: heatmapAttrs.xgap, ygap: heatmapAttrs.ygap, zsmooth: heatmapAttrs.zsmooth, - zhoverformat: heatmapAttrs.zhoverformat, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), hovertemplate: hovertemplateAttrs({}, {keys: 'z'}), showlegend: extendFlat({}, baseAttrs.showlegend, {dflt: false}) }, colorScaleAttrs('', {cLetter: 'z', autoColorDflt: false}) ); -},{"../../components/colorscale/attributes":112,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"../heatmap/attributes":387,"../histogram/attributes":402,"../histogram/bin_attributes":404}],416:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"../heatmap/attributes":434,"../histogram/attributes":449,"../histogram/bin_attributes":451}],463:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90292,16 +95774,7 @@ function getRanges(edges, uniqueVals, gapLow, gapHigh, ax, calendar) { return out; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"../histogram/average":403,"../histogram/bin_functions":405,"../histogram/bin_label_vals":406,"../histogram/calc":407,"../histogram/norm_functions":414}],417:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../histogram/average":450,"../histogram/bin_functions":452,"../histogram/bin_label_vals":453,"../histogram/calc":454,"../histogram/norm_functions":461}],464:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90323,25 +95796,18 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleStyleDefaults(traceIn, traceOut, coerce, layout); colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: '', cLetter: 'z'}); coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); }; -},{"../../components/colorscale/defaults":115,"../../lib":233,"../heatmap/style_defaults":400,"./attributes":415,"./sample_defaults":420}],418:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/defaults":165,"../../lib":285,"../heatmap/style_defaults":447,"./attributes":462,"./sample_defaults":467}],465:[function(_dereq_,module,exports){ 'use strict'; var heatmapHover = _dereq_('../heatmap/hover'); var hoverLabelText = _dereq_('../../plots/cartesian/axes').hoverLabelText; -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer, contour) { - var pts = heatmapHover(pointData, xval, yval, hovermode, hoverLayer, contour); +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + var pts = heatmapHover(pointData, xval, yval, hovermode, opts); if(!pts) return; @@ -90350,24 +95816,17 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay var ny = indices[0]; var nx = indices[1]; var cd0 = pointData.cd[0]; + var trace = cd0.trace; var xRange = cd0.xRanges[nx]; var yRange = cd0.yRanges[ny]; - pointData.xLabel = hoverLabelText(pointData.xa, xRange[0], xRange[1]); - pointData.yLabel = hoverLabelText(pointData.ya, yRange[0], yRange[1]); + pointData.xLabel = hoverLabelText(pointData.xa, [xRange[0], xRange[1]], trace.xhoverformat); + pointData.yLabel = hoverLabelText(pointData.ya, [yRange[0], yRange[1]], trace.yhoverformat); return pts; }; -},{"../../plots/cartesian/axes":279,"../heatmap/hover":394}],419:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/axes":331,"../heatmap/hover":441}],466:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -90387,20 +95846,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'histogram', 'showLegend'], meta: { - - } }; -},{"../../plots/cartesian":292,"../heatmap/calc":388,"../heatmap/colorbar":390,"../heatmap/plot":398,"../heatmap/style":399,"../histogram/cross_trace_defaults":409,"../histogram/event_data":411,"./attributes":415,"./defaults":417,"./hover":418}],420:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../heatmap/calc":435,"../heatmap/colorbar":437,"../heatmap/plot":445,"../heatmap/style":446,"../histogram/cross_trace_defaults":456,"../histogram/event_data":458,"./attributes":462,"./defaults":464,"./hover":465}],467:[function(_dereq_,module,exports){ 'use strict'; var Registry = _dereq_('../../registry'); @@ -90437,20 +95886,13 @@ module.exports = function handleSampleDefaults(traceIn, traceOut, coerce, layout coerce('autobiny'); }; -},{"../../lib":233,"../../registry":326}],421:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373}],468:[function(_dereq_,module,exports){ 'use strict'; var histogram2dAttrs = _dereq_('../histogram2d/attributes'); var contourAttrs = _dereq_('../contour/attributes'); var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; @@ -90480,13 +95922,14 @@ module.exports = extendFlat({ color: contourAttrs.line.color, width: extendFlat({}, contourAttrs.line.width, { dflt: 0.5, - }), dash: contourAttrs.line.dash, smoothing: contourAttrs.line.smoothing, editType: 'plot' }, - zhoverformat: histogram2dAttrs.zhoverformat, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + zhoverformat: axisHoverFormat('z', 1), hovertemplate: histogram2dAttrs.hovertemplate }, colorScaleAttrs('', { @@ -90495,16 +95938,7 @@ module.exports = extendFlat({ }) ); -},{"../../components/colorscale/attributes":112,"../../lib/extend":227,"../contour/attributes":365,"../histogram2d/attributes":415}],422:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/attributes":162,"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../contour/attributes":412,"../histogram2d/attributes":462}],469:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90530,17 +95964,11 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout handleContoursDefaults(traceIn, traceOut, coerce, coerce2); handleStyleDefaults(traceIn, traceOut, coerce, layout); coerce('hovertemplate'); + coerce('xhoverformat'); + coerce('yhoverformat'); }; -},{"../../lib":233,"../contour/contours_defaults":372,"../contour/style_defaults":386,"../histogram2d/sample_defaults":420,"./attributes":421}],423:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../contour/contours_defaults":419,"../contour/style_defaults":433,"../histogram2d/sample_defaults":467,"./attributes":468}],470:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -90559,20 +95987,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', '2dMap', 'contour', 'histogram', 'showLegend'], meta: { - - } }; -},{"../../plots/cartesian":292,"../contour/calc":366,"../contour/colorbar":368,"../contour/hover":378,"../contour/plot":383,"../contour/style":385,"../histogram/cross_trace_defaults":409,"./attributes":421,"./defaults":422}],424:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../contour/calc":413,"../contour/colorbar":415,"../contour/hover":425,"../contour/plot":430,"../contour/style":432,"../histogram/cross_trace_defaults":456,"./attributes":468,"./defaults":469}],471:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -90592,22 +96010,22 @@ for(var i = 0; i < cm.length; i++) { module.exports = extendFlat({ source: { valType: 'string', - editType: 'calc', - }, z: { valType: 'data_array', - editType: 'calc', - }, colormodel: { valType: 'enumerated', values: cm, - editType: 'calc', - + }, + zsmooth: { + valType: 'enumerated', + values: ['fast', false], + dflt: false, + editType: 'plot', }, zmin: { valType: 'info_array', @@ -90617,9 +96035,7 @@ module.exports = extendFlat({ {valType: 'number', editType: 'calc'}, {valType: 'number', editType: 'calc'} ], - editType: 'calc', - }, zmax: { valType: 'info_array', @@ -90629,47 +96045,35 @@ module.exports = extendFlat({ {valType: 'number', editType: 'calc'}, {valType: 'number', editType: 'calc'} ], - editType: 'calc', - }, x0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', - }, y0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', - }, dx: { valType: 'number', dflt: 1, - editType: 'calc', - }, dy: { valType: 'number', dflt: 1, - editType: 'calc', - }, text: { valType: 'data_array', editType: 'plot', - }, hovertext: { valType: 'data_array', editType: 'plot', - }, hoverinfo: extendFlat({}, baseAttrs.hoverinfo, { flags: ['x', 'y', 'z', 'color', 'name', 'text'], @@ -90682,15 +96086,7 @@ module.exports = extendFlat({ transforms: undefined }); -},{"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"./constants":426}],425:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plots/attributes":327,"../../plots/template_attributes":368,"./constants":473}],472:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90780,15 +96176,7 @@ function makeScaler(trace) { }; } -},{"../../lib":233,"../../plots/cartesian/axes":279,"./constants":426,"./helpers":429,"fast-isnumeric":23}],426:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"./constants":473,"./helpers":476,"fast-isnumeric":31}],473:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -90838,18 +96226,23 @@ module.exports = { }, suffix: ['°', '%', '%', ''] } - } + }, + // For pixelated image rendering + // http://phrogz.net/tmp/canvas_image_zoom.html + // https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering + pixelatedStyle: [ + 'image-rendering: optimizeSpeed', + 'image-rendering: -moz-crisp-edges', + 'image-rendering: -o-crisp-edges', + 'image-rendering: -webkit-optimize-contrast', + 'image-rendering: optimize-contrast', + 'image-rendering: crisp-edges', + 'image-rendering: pixelated', + '' + ].join('; ') }; -},{}],427:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],474:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -90891,6 +96284,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) { traceOut.zmax = cm.zmaxDflt; } + coerce('zsmooth'); coerce('text'); coerce('hovertext'); coerce('hovertemplate'); @@ -90898,15 +96292,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) { traceOut._length = null; }; -},{"../../lib":233,"../../snapshot/helpers":330,"./attributes":424,"./constants":426}],428:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../snapshot/helpers":377,"./attributes":471,"./constants":473}],475:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt) { @@ -90920,36 +96306,20 @@ module.exports = function eventData(out, pt) { return out; }; -},{}],429:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],476:[function(_dereq_,module,exports){ 'use strict'; -var sizeOf = _dereq_('image-size'); +var probeSync = _dereq_('probe-image-size/sync'); var dataUri = _dereq_('../../snapshot/helpers').IMAGE_URL_PREFIX; var Buffer = _dereq_('buffer/').Buffer; // note: the trailing slash is important! exports.getImageSize = function(src) { var data = src.replace(dataUri, ''); var buff = new Buffer(data, 'base64'); - return sizeOf(buff); + return probeSync(buff); }; -},{"../../snapshot/helpers":330,"buffer/":18,"image-size":58}],430:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../snapshot/helpers":377,"buffer/":28,"probe-image-size/sync":95}],477:[function(_dereq_,module,exports){ 'use strict'; var Fx = _dereq_('../../components/fx'); @@ -91041,15 +96411,7 @@ module.exports = function hoverPoints(pointData, xval, yval) { })]; }; -},{"../../components/fx":145,"../../lib":233,"./constants":426}],431:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/fx":195,"../../lib":285,"./constants":473}],478:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -91067,22 +96429,13 @@ module.exports = { categories: ['cartesian', 'svg', '2dMap', 'noSortingByValue'], animatable: false, meta: { - } }; -},{"../../plots/cartesian":292,"./attributes":424,"./calc":425,"./defaults":427,"./event_data":428,"./hover":430,"./plot":432,"./style":433}],432:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./attributes":471,"./calc":472,"./defaults":474,"./event_data":475,"./hover":477,"./plot":479,"./style":480}],479:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var strTranslate = Lib.strTranslate; var xmlnsNamespaces = _dereq_('../../constants/xmlns_namespaces'); @@ -91100,8 +96453,11 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { var plotGroup = d3.select(this); var cd0 = cd[0]; var trace = cd0.trace; - var fastImage = supportsPixelatedImage && !trace._hasZ && trace._hasSource && xa.type === 'linear' && ya.type === 'linear'; - trace._fastImage = fastImage; + var realImage = ( + ((trace.zsmooth === 'fast') || (trace.zsmooth === false && supportsPixelatedImage)) && + !trace._hasZ && trace._hasSource && xa.type === 'linear' && ya.type === 'linear' + ); + trace._realImage = realImage; var z = cd0.z; var x0 = cd0.x0; @@ -91147,7 +96503,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { } // Reduce image size when zoomed in to save memory - if(!fastImage) { + if(!realImage) { var extra = 0.5; // half the axis size left = Math.max(-extra * xa._length, left); right = Math.min((1 + extra) * xa._length, right); @@ -91210,11 +96566,9 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { image3.exit().remove(); - // Pixelated image rendering - // http://phrogz.net/tmp/canvas_image_zoom.html - // https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering - var style = 'image-rendering: optimizeSpeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; image-rendering: optimize-contrast; image-rendering: crisp-edges; image-rendering: pixelated;'; - if(fastImage) { + var style = (trace.zsmooth === false) ? constants.pixelatedStyle : ''; + + if(realImage) { var xRange = Lib.simpleMap(xa.range, xa.r2l); var yRange = Lib.simpleMap(ya.range, ya.r2l); @@ -91270,7 +96624,7 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { canvas = drawMagnifiedPixelsOnCanvas(function(i, j) {return z[j][i];}); href = canvas.toDataURL('image/png'); } else if(trace._hasSource) { - if(fastImage) { + if(realImage) { href = trace.source; } else { var context = trace._canvas.el.getContext('2d'); @@ -91301,18 +96655,10 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) { }); }; -},{"../../constants/xmlns_namespaces":213,"../../lib":233,"./constants":426,"d3":21}],433:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/xmlns_namespaces":266,"../../lib":285,"./constants":473,"@plotly/d3":20}],480:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); module.exports = function style(gd) { d3.select(gd).selectAll('.im image') @@ -91321,15 +96667,7 @@ module.exports = function style(gd) { }); }; -},{"d3":21}],434:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"@plotly/d3":20}],481:[function(_dereq_,module,exports){ 'use strict'; var baseAttrs = _dereq_('../../plots/attributes'); @@ -91345,61 +96683,49 @@ var textFontAttrs = fontAttrs({ editType: 'plot', arrayOk: true, colorEditType: 'plot', - }); module.exports = { labels: { valType: 'data_array', editType: 'calc', - }, // equivalent of x0 and dx, if label is missing label0: { valType: 'number', - dflt: 0, editType: 'calc', - }, dlabel: { valType: 'number', - dflt: 1, editType: 'calc', - }, values: { valType: 'data_array', editType: 'calc', - }, marker: { colors: { valType: 'data_array', // TODO 'color_array' ? editType: 'calc', - }, line: { color: { valType: 'color', - dflt: colorAttrs.defaultLine, arrayOk: true, editType: 'style', - }, width: { valType: 'number', - min: 0, dflt: 0, arrayOk: true, editType: 'style', - }, editType: 'calc' }, @@ -91409,15 +96735,12 @@ module.exports = { text: { valType: 'data_array', editType: 'plot', - }, hovertext: { valType: 'string', - dflt: '', arrayOk: true, editType: 'style', - }, // 'see eg:' @@ -91426,20 +96749,16 @@ module.exports = { // 'of its own. but the point is the size of the whole pie is important.)' scalegroup: { valType: 'string', - dflt: '', editType: 'calc', - }, // labels (legend is handled by plots.attributes.showlegend and layout.hiddenlabels) textinfo: { valType: 'flaglist', - flags: ['label', 'text', 'value', 'percent'], extras: ['none'], editType: 'calc', - }, hoverinfo: extendFlat({}, baseAttrs.hoverinfo, { flags: ['label', 'text', 'value', 'percent', 'name'] @@ -91452,48 +96771,36 @@ module.exports = { }), textposition: { valType: 'enumerated', - values: ['inside', 'outside', 'auto', 'none'], dflt: 'auto', arrayOk: true, editType: 'plot', - }, textfont: extendFlat({}, textFontAttrs, { - }), insidetextorientation: { valType: 'enumerated', - values: ['horizontal', 'radial', 'tangential', 'auto'], dflt: 'auto', editType: 'plot', - }, insidetextfont: extendFlat({}, textFontAttrs, { - }), outsidetextfont: extendFlat({}, textFontAttrs, { - }), automargin: { valType: 'boolean', dflt: false, - editType: 'plot', - }, title: { text: { valType: 'string', dflt: '', - editType: 'plot', - }, font: extendFlat({}, textFontAttrs, { - }), position: { valType: 'enumerated', @@ -91502,9 +96809,7 @@ module.exports = { 'middle center', 'bottom left', 'bottom center', 'bottom right' ], - editType: 'plot', - }, editType: 'plot' @@ -91515,21 +96820,17 @@ module.exports = { hole: { valType: 'number', - min: 0, max: 1, dflt: 0, editType: 'calc', - }, // ordering and direction sort: { valType: 'boolean', - dflt: true, editType: 'calc', - }, direction: { /** @@ -91541,42 +96842,33 @@ module.exports = { */ valType: 'enumerated', values: ['clockwise', 'counterclockwise'], - dflt: 'counterclockwise', editType: 'calc', - }, rotation: { valType: 'number', - min: -360, max: 360, dflt: 0, editType: 'calc', - }, pull: { valType: 'number', - min: 0, max: 1, dflt: 0, arrayOk: true, editType: 'calc', - }, _deprecated: { title: { valType: 'string', dflt: '', - editType: 'calc', - }, titlefont: extendFlat({}, textFontAttrs, { - }), titleposition: { valType: 'enumerated', @@ -91585,22 +96877,12 @@ module.exports = { 'middle center', 'bottom left', 'bottom center', 'bottom right' ], - editType: 'calc', - } } }; -},{"../../components/color/attributes":104,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/domain":306,"../../plots/font_attributes":307,"../../plots/template_attributes":321}],435:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color/attributes":154,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/domain":358,"../../plots/font_attributes":359,"../../plots/template_attributes":368}],482:[function(_dereq_,module,exports){ 'use strict'; var plots = _dereq_('../../plots/plots'); @@ -91615,15 +96897,7 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout) plots.cleanBasePlot(exports.name, newFullData, newFullLayout, oldFullData, oldFullLayout); }; -},{"../../plots/plots":313}],436:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/plots":366}],483:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -91798,15 +97072,7 @@ module.exports = { generateExtendedColors: generateExtendedColors }; -},{"../../components/color":105,"fast-isnumeric":23,"tinycolor2":88}],437:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"fast-isnumeric":31,"tinycolor2":119}],484:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -91929,15 +97195,7 @@ module.exports = { supplyDefaults: supplyDefaults }; -},{"../../lib":233,"../../plots/domain":306,"../bar/defaults":340,"./attributes":434,"fast-isnumeric":23}],438:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/domain":358,"../bar/defaults":387,"./attributes":481,"fast-isnumeric":31}],485:[function(_dereq_,module,exports){ 'use strict'; var appendArrayMultiPointValues = _dereq_('../../components/fx/helpers').appendArrayMultiPointValues; @@ -91978,15 +97236,7 @@ module.exports = function eventData(pt, trace) { return out; }; -},{"../../components/fx/helpers":141}],439:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/fx/helpers":191}],486:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -92026,15 +97276,7 @@ exports.getRotationAngle = function(rotation) { return (rotation === 'auto' ? 0 : rotation) * Math.PI / 180; }; -},{"../../lib":233}],440:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],487:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -92055,52 +97297,29 @@ module.exports = { basePlotModule: _dereq_('./base_plot'), categories: ['pie-like', 'pie', 'showLegend'], meta: { - } }; -},{"./attributes":434,"./base_plot":435,"./calc":436,"./defaults":437,"./layout_attributes":441,"./layout_defaults":442,"./plot":443,"./style":444,"./style_one":445}],441:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./attributes":481,"./base_plot":482,"./calc":483,"./defaults":484,"./layout_attributes":488,"./layout_defaults":489,"./plot":490,"./style":491,"./style_one":492}],488:[function(_dereq_,module,exports){ 'use strict'; module.exports = { hiddenlabels: { valType: 'data_array', - editType: 'calc', - }, piecolorway: { valType: 'colorlist', - editType: 'calc', - }, extendpiecolors: { valType: 'boolean', dflt: true, - editType: 'calc', - } }; -},{}],442:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],489:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -92117,18 +97336,10 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { coerce('extendpiecolors'); }; -},{"../../lib":233,"./layout_attributes":441}],443:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"./layout_attributes":488}],490:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Plots = _dereq_('../../plots/plots'); var Fx = _dereq_('../../components/fx'); @@ -93297,18 +98508,10 @@ module.exports = { computeTransform: computeTransform }; -},{"../../components/color":105,"../../components/drawing":127,"../../components/fx":145,"../../lib":233,"../../lib/svg_text_utils":255,"../../plots/plots":313,"../bar/constants":338,"../bar/uniform_text":352,"./event_data":438,"./helpers":439,"d3":21}],444:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/drawing":177,"../../components/fx":195,"../../lib":285,"../../lib/svg_text_utils":307,"../../plots/plots":366,"../bar/constants":385,"../bar/uniform_text":399,"./event_data":485,"./helpers":486,"@plotly/d3":20}],491:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var styleOne = _dereq_('./style_one'); var resizeText = _dereq_('../bar/uniform_text').resizeText; @@ -93330,15 +98533,7 @@ module.exports = function style(gd) { }); }; -},{"../bar/uniform_text":352,"./style_one":445,"d3":21}],445:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../bar/uniform_text":399,"./style_one":492,"@plotly/d3":20}],492:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -93354,16 +98549,7 @@ module.exports = function styleOne(s, pt, trace) { .call(Color.stroke, lineColor); }; -},{"../../components/color":105,"./helpers":439}],446:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/color":155,"./helpers":486}],493:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -93406,17 +98592,10 @@ module.exports = function arraysToCalcdata(cd, trace) { } }; -},{"../../lib":233}],447:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],494:[function(_dereq_,module,exports){ 'use strict'; +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); var texttemplateAttrs = _dereq_('../../plots/template_attributes').texttemplateAttrs; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; var colorScaleAttrs = _dereq_('../../components/colorscale/attributes'); @@ -93432,18 +98611,14 @@ function axisPeriod(axis) { return { valType: 'any', dflt: 0, - editType: 'calc', - }; } function axisPeriod0(axis) { return { valType: 'any', - editType: 'calc', - }; } @@ -93454,9 +98629,7 @@ function axisPeriodAlignment(axis) { 'start', 'middle', 'end' ], dflt: 'middle', - editType: 'calc', - }; } @@ -93465,45 +98638,35 @@ module.exports = { valType: 'data_array', editType: 'calc+clearAxisTypes', anim: true, - }, x0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', anim: true, - }, dx: { valType: 'number', dflt: 1, - editType: 'calc', anim: true, - }, y: { valType: 'data_array', editType: 'calc+clearAxisTypes', anim: true, - }, y0: { valType: 'any', dflt: 0, - editType: 'calc+clearAxisTypes', anim: true, - }, dy: { valType: 'number', dflt: 1, - editType: 'calc', anim: true, - }, xperiod: axisPeriod('x'), @@ -93512,45 +98675,37 @@ module.exports = { yperiod0: axisPeriod0('y0'), xperiodalignment: axisPeriodAlignment('x'), yperiodalignment: axisPeriodAlignment('y'), + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), stackgroup: { valType: 'string', - dflt: '', editType: 'calc', - }, orientation: { valType: 'enumerated', - values: ['v', 'h'], editType: 'calc', - }, groupnorm: { valType: 'enumerated', values: ['', 'fraction', 'percent'], dflt: '', - editType: 'calc', - }, stackgaps: { valType: 'enumerated', values: ['infer zero', 'interpolate'], dflt: 'infer zero', - editType: 'calc', - }, text: { valType: 'string', - dflt: '', arrayOk: true, editType: 'calc', - }, texttemplate: texttemplateAttrs({}, { @@ -93558,71 +98713,56 @@ module.exports = { }), hovertext: { valType: 'string', - dflt: '', arrayOk: true, editType: 'style', - }, mode: { valType: 'flaglist', flags: ['lines', 'markers', 'text'], extras: ['none'], - editType: 'calc', - }, hoveron: { valType: 'flaglist', flags: ['points', 'fills'], - editType: 'style', - }, hovertemplate: hovertemplateAttrs({}, { keys: constants.eventDataKeys }), + line: { color: { valType: 'color', - editType: 'style', anim: true, - }, width: { valType: 'number', min: 0, dflt: 2, - editType: 'style', anim: true, - }, shape: { valType: 'enumerated', values: ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'], dflt: 'linear', - editType: 'plot', - }, smoothing: { valType: 'number', min: 0, max: 1.3, dflt: 1, - editType: 'plot', - }, dash: extendFlat({}, dash, {editType: 'style'}), simplify: { valType: 'boolean', dflt: true, - editType: 'plot', - }, editType: 'plot' }, @@ -93630,31 +98770,23 @@ module.exports = { connectgaps: { valType: 'boolean', dflt: false, - editType: 'calc', - }, cliponaxis: { valType: 'boolean', dflt: true, - editType: 'plot', - }, fill: { valType: 'enumerated', values: ['none', 'tozeroy', 'tozerox', 'tonexty', 'tonextx', 'toself', 'tonext'], - editType: 'calc', - }, fillcolor: { valType: 'color', - editType: 'style', anim: true, - }, marker: extendFlat({ symbol: { @@ -93662,60 +98794,46 @@ module.exports = { values: Drawing.symbolList, dflt: 'circle', arrayOk: true, - editType: 'style', - }, opacity: { valType: 'number', min: 0, max: 1, arrayOk: true, - editType: 'style', anim: true, - }, size: { valType: 'number', min: 0, dflt: 6, arrayOk: true, - editType: 'calc', anim: true, - }, maxdisplayed: { valType: 'number', min: 0, dflt: 0, - editType: 'plot', - }, sizeref: { valType: 'number', dflt: 1, - editType: 'calc', - }, sizemin: { valType: 'number', min: 0, dflt: 0, - editType: 'calc', - }, sizemode: { valType: 'enumerated', values: ['diameter', 'area'], dflt: 'diameter', - editType: 'calc', - }, line: extendFlat({ @@ -93723,10 +98841,8 @@ module.exports = { valType: 'number', min: 0, arrayOk: true, - editType: 'style', anim: true, - }, editType: 'calc' }, @@ -93738,16 +98854,12 @@ module.exports = { values: ['radial', 'horizontal', 'vertical', 'none'], arrayOk: true, dflt: 'none', - editType: 'calc', - }, color: { valType: 'color', arrayOk: true, - editType: 'calc', - }, editType: 'calc' }, @@ -93761,31 +98873,23 @@ module.exports = { valType: 'number', min: 0, max: 1, - editType: 'style', - }, color: { valType: 'color', - editType: 'style', - }, size: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'style' }, textfont: { color: { valType: 'color', - editType: 'style', - }, editType: 'style' }, @@ -93797,31 +98901,23 @@ module.exports = { valType: 'number', min: 0, max: 1, - editType: 'style', - }, color: { valType: 'color', - editType: 'style', - }, size: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'style' }, textfont: { color: { valType: 'color', - editType: 'style', - }, editType: 'style' }, @@ -93837,38 +98933,16 @@ module.exports = { ], dflt: 'middle center', arrayOk: true, - editType: 'calc', - }, textfont: fontAttrs({ editType: 'calc', colorEditType: 'style', arrayOk: true, - }), - - r: { - valType: 'data_array', - editType: 'calc', - - }, - t: { - valType: 'data_array', - editType: 'calc', - - } }; -},{"../../components/colorscale/attributes":112,"../../components/drawing":127,"../../components/drawing/attributes":126,"../../lib/extend":227,"../../plots/font_attributes":307,"../../plots/template_attributes":321,"./constants":451}],448:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/colorscale/attributes":162,"../../components/drawing":177,"../../components/drawing/attributes":176,"../../lib/extend":279,"../../plots/font_attributes":359,"../../plots/hoverformat_attributes":363,"../../plots/template_attributes":368,"./constants":498}],495:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -94159,15 +99233,7 @@ module.exports = { getStackOpts: getStackOpts }; -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/align_period":276,"../../plots/cartesian/axes":279,"./arrays_to_calcdata":446,"./calc_selection":449,"./colorscale_calc":450,"./subtypes":472,"fast-isnumeric":23}],449:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/align_period":328,"../../plots/cartesian/axes":331,"./arrays_to_calcdata":493,"./calc_selection":496,"./colorscale_calc":497,"./subtypes":519,"fast-isnumeric":31}],496:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94178,15 +99244,7 @@ module.exports = function calcSelection(cd, trace) { } }; -},{"../../lib":233}],450:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],497:[function(_dereq_,module,exports){ 'use strict'; var hasColorscale = _dereq_('../../components/colorscale/helpers').hasColorscale; @@ -94221,16 +99279,7 @@ module.exports = function calcMarkerColorscale(gd, trace) { } }; -},{"../../components/colorscale/calc":113,"../../components/colorscale/helpers":116,"./subtypes":472}],451:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/calc":163,"../../components/colorscale/helpers":166,"./subtypes":519}],498:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -94250,16 +99299,7 @@ module.exports = { eventDataKeys: [] }; -},{}],452:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],499:[function(_dereq_,module,exports){ 'use strict'; var calc = _dereq_('./calc'); @@ -94431,16 +99471,7 @@ function getInterp(calcTrace, index, position, posAttr) { return pt0.s + (pt1.s - pt0.s) * (position - pt0[posAttr]) / (pt1[posAttr] - pt0[posAttr]); } -},{"./calc":448}],453:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"./calc":495}],500:[function(_dereq_,module,exports){ 'use strict'; @@ -94470,15 +99501,7 @@ module.exports = function crossTraceDefaults(fullData) { } }; -},{}],454:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],501:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94507,6 +99530,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(!traceOut.visible) return; handlePeriodDefaults(traceIn, traceOut, layout, coerce); + coerce('xhoverformat'); + coerce('yhoverformat'); var stackGroupOpts = handleStackDefaults(traceIn, traceOut, layout, coerce); @@ -94563,16 +99588,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":233,"../../registry":326,"./attributes":447,"./constants":451,"./fillcolor_defaults":455,"./line_defaults":460,"./line_shape_defaults":462,"./marker_defaults":466,"./period_defaults":467,"./stack_defaults":470,"./subtypes":472,"./text_defaults":473,"./xy_defaults":474}],455:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285,"../../registry":373,"./attributes":494,"./constants":498,"./fillcolor_defaults":502,"./line_defaults":507,"./line_shape_defaults":509,"./marker_defaults":513,"./period_defaults":514,"./stack_defaults":517,"./subtypes":519,"./text_defaults":520,"./xy_defaults":521}],502:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -94600,15 +99616,7 @@ module.exports = function fillColorDefaults(traceIn, traceOut, defaultColor, coe )); }; -},{"../../components/color":105,"../../lib":233}],456:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285}],503:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -94620,22 +99628,13 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { var xa = Axes.getFromTrace(mockGd, trace, 'x'); var ya = Axes.getFromTrace(mockGd, trace, 'y'); - labels.xLabel = Axes.tickText(xa, cdi.x, true).text; - labels.yLabel = Axes.tickText(ya, cdi.y, true).text; + labels.xLabel = Axes.tickText(xa, xa.c2l(cdi.x), true).text; + labels.yLabel = Axes.tickText(ya, ya.c2l(cdi.y), true).text; return labels; }; -},{"../../plots/cartesian/axes":279}],457:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/cartesian/axes":331}],504:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -94675,15 +99674,7 @@ module.exports = function getTraceColor(trace, di) { } }; -},{"../../components/color":105,"./subtypes":472}],458:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"./subtypes":519}],505:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -94714,13 +99705,14 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { var rad = Math.max(3, di.mrc || 0); var kink = 1 - 1 / rad; var dxRaw = Math.abs(xa.c2p(di.x) - xpx); - var d = (dxRaw < rad) ? (kink * dxRaw / rad) : (dxRaw - rad + kink); - return d; + if(di.orig_x !== undefined) dxRaw += xa.c2p(di.orig_x) - xa.c2p(di.x); + return (dxRaw < rad) ? (kink * dxRaw / rad) : (dxRaw - rad + kink); }; var dy = function(di) { var rad = Math.max(3, di.mrc || 0); var kink = 1 - 1 / rad; var dyRaw = Math.abs(ya.c2p(di.y) - ypx); + if(di.orig_y !== undefined) dyRaw += ya.c2p(di.orig_y) - ya.c2p(di.y); return (dyRaw < rad) ? (kink * dyRaw / rad) : (dyRaw - rad + kink); }; var dxy = function(di) { @@ -94870,15 +99862,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { } }; -},{"../../components/color":105,"../../components/fx":145,"../../lib":233,"../../registry":326,"./get_trace_color":457}],459:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/fx":195,"../../lib":285,"../../registry":373,"./get_trace_color":504}],506:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -94912,19 +99896,10 @@ module.exports = { 'zoomScale' ], meta: { - } }; -},{"../../plots/cartesian":292,"./arrays_to_calcdata":446,"./attributes":447,"./calc":448,"./cross_trace_calc":452,"./cross_trace_defaults":453,"./defaults":454,"./format_labels":456,"./hover":458,"./marker_colorbar":465,"./plot":468,"./select":469,"./style":471,"./subtypes":472}],460:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"./arrays_to_calcdata":493,"./attributes":494,"./calc":495,"./cross_trace_calc":499,"./cross_trace_defaults":500,"./defaults":501,"./format_labels":503,"./hover":505,"./marker_colorbar":512,"./plot":515,"./select":516,"./style":518,"./subtypes":519}],507:[function(_dereq_,module,exports){ 'use strict'; var isArrayOrTypedArray = _dereq_('../../lib').isArrayOrTypedArray; @@ -94947,16 +99922,7 @@ module.exports = function lineDefaults(traceIn, traceOut, defaultColor, layout, if(!(opts || {}).noDash) coerce('line.dash'); }; -},{"../../components/colorscale/defaults":115,"../../components/colorscale/helpers":116,"../../lib":233}],461:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/defaults":165,"../../components/colorscale/helpers":166,"../../lib":285}],508:[function(_dereq_,module,exports){ 'use strict'; var numConstants = _dereq_('../../constants/numerical'); @@ -95408,16 +100374,7 @@ module.exports = function linePoints(d, opts) { return segments; }; -},{"../../constants/numerical":212,"../../lib":233,"./constants":451}],462:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285,"./constants":498}],509:[function(_dereq_,module,exports){ 'use strict'; @@ -95427,15 +100384,7 @@ module.exports = function handleLineShapeDefaults(traceIn, traceOut, coerce) { if(shape === 'spline') coerce('line.smoothing'); }; -},{}],463:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],510:[function(_dereq_,module,exports){ 'use strict'; var LINKEDFILLS = {tonextx: 1, tonexty: 1, tonext: 1}; @@ -95517,16 +100466,7 @@ module.exports = function linkTraces(gd, plotinfo, cdscatter) { return cdscatterSorted; }; -},{}],464:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],511:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -95559,16 +100499,7 @@ module.exports = function makeBubbleSizeFn(trace) { }; }; -},{"fast-isnumeric":23}],465:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"fast-isnumeric":31}],512:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -95577,15 +100508,7 @@ module.exports = { max: 'cmax' }; -},{}],466:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],513:[function(_dereq_,module,exports){ 'use strict'; var Color = _dereq_('../../components/color'); @@ -95658,15 +100581,7 @@ module.exports = function markerDefaults(traceIn, traceOut, defaultColor, layout } }; -},{"../../components/color":105,"../../components/colorscale/defaults":115,"../../components/colorscale/helpers":116,"./subtypes":472}],467:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../components/colorscale/defaults":165,"../../components/colorscale/helpers":166,"./subtypes":519}],514:[function(_dereq_,module,exports){ 'use strict'; var dateTick0 = _dereq_('../../lib').dateTick0; @@ -95705,19 +100620,10 @@ module.exports = function handlePeriodDefaults(traceIn, traceOut, layout, coerce } }; -},{"../../constants/numerical":212,"../../lib":233}],468:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../constants/numerical":265,"../../lib":285}],515:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Registry = _dereq_('../../registry'); var Lib = _dereq_('../../lib'); @@ -96266,16 +101172,7 @@ function selectMarkers(gd, idx, plotinfo, cdscatter, cdscatterAll) { }); } -},{"../../components/drawing":127,"../../lib":233,"../../lib/polygon":245,"../../registry":326,"./line_points":461,"./link_traces":463,"./subtypes":472,"d3":21}],469:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/drawing":177,"../../lib":285,"../../lib/polygon":297,"../../registry":373,"./line_points":508,"./link_traces":510,"./subtypes":519,"@plotly/d3":20}],516:[function(_dereq_,module,exports){ 'use strict'; var subtypes = _dereq_('./subtypes'); @@ -96320,15 +101217,7 @@ module.exports = function selectPoints(searchInfo, selectionTester) { return selection; }; -},{"./subtypes":472}],470:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"./subtypes":519}],517:[function(_dereq_,module,exports){ 'use strict'; var perStackAttrs = ['orientation', 'groupnorm', 'stackgaps']; @@ -96425,19 +101314,10 @@ module.exports = function handleStackDefaults(traceIn, traceOut, layout, coerce) } }; -},{}],471:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{}],518:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Drawing = _dereq_('../../components/drawing'); var Registry = _dereq_('../../registry'); @@ -96496,16 +101376,7 @@ module.exports = { styleOnSelect: styleOnSelect }; -},{"../../components/drawing":127,"../../registry":326,"d3":21}],472:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/drawing":177,"../../registry":373,"@plotly/d3":20}],519:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96535,16 +101406,7 @@ module.exports = { } }; -},{"../../lib":233}],473:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../lib":285}],520:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96565,15 +101427,7 @@ module.exports = function(traceIn, traceOut, layout, coerce, opts) { } }; -},{"../../lib":233}],474:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],521:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96609,15 +101463,7 @@ module.exports = function handleXYDefaults(traceIn, traceOut, layout, coerce) { return len; }; -},{"../../lib":233,"../../registry":326}],475:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../registry":373}],522:[function(_dereq_,module,exports){ 'use strict'; var hovertemplateAttrs = _dereq_('../../plots/template_attributes').hovertemplateAttrs; @@ -96637,35 +101483,28 @@ module.exports = { a: { valType: 'data_array', editType: 'calc', - }, b: { valType: 'data_array', editType: 'calc', - }, c: { valType: 'data_array', editType: 'calc', - }, sum: { valType: 'number', - dflt: 0, min: 0, editType: 'calc', - }, mode: extendFlat({}, scatterAttrs.mode, {dflt: 'markers'}), text: extendFlat({}, scatterAttrs.text, { - }), texttemplate: texttemplateAttrs({editType: 'plot'}, { keys: ['a', 'b', 'c', 'text'] }), hovertext: extendFlat({}, scatterAttrs.hovertext, { - }), line: { color: scatterLineAttrs.color, @@ -96681,7 +101520,6 @@ module.exports = { fill: extendFlat({}, scatterAttrs.fill, { values: ['none', 'toself', 'tonext'], dflt: 'none', - }), fillcolor: scatterAttrs.fillcolor, marker: extendFlat({ @@ -96717,16 +101555,7 @@ module.exports = { hovertemplate: hovertemplateAttrs(), }; -},{"../../components/colorscale/attributes":112,"../../components/drawing/attributes":126,"../../lib/extend":227,"../../plots/attributes":275,"../../plots/template_attributes":321,"../scatter/attributes":447}],476:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../components/colorscale/attributes":162,"../../components/drawing/attributes":176,"../../lib/extend":279,"../../plots/attributes":327,"../../plots/template_attributes":368,"../scatter/attributes":494}],523:[function(_dereq_,module,exports){ 'use strict'; var isNumeric = _dereq_('fast-isnumeric'); @@ -96798,16 +101627,7 @@ module.exports = function calc(gd, trace) { return cd; }; -},{"../scatter/arrays_to_calcdata":446,"../scatter/calc":448,"../scatter/calc_selection":449,"../scatter/colorscale_calc":450,"fast-isnumeric":23}],477:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../scatter/arrays_to_calcdata":493,"../scatter/calc":495,"../scatter/calc_selection":496,"../scatter/colorscale_calc":497,"fast-isnumeric":31}],524:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -96902,15 +101722,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout Lib.coerceSelectionMarkerOpacity(traceOut, coerce); }; -},{"../../lib":233,"../scatter/constants":451,"../scatter/fillcolor_defaults":455,"../scatter/line_defaults":460,"../scatter/line_shape_defaults":462,"../scatter/marker_defaults":466,"../scatter/subtypes":472,"../scatter/text_defaults":473,"./attributes":475}],478:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../scatter/constants":498,"../scatter/fillcolor_defaults":502,"../scatter/line_defaults":507,"../scatter/line_shape_defaults":509,"../scatter/marker_defaults":513,"../scatter/subtypes":519,"../scatter/text_defaults":520,"./attributes":522}],525:[function(_dereq_,module,exports){ 'use strict'; module.exports = function eventData(out, pt, trace, cd, pointNumber) { @@ -96934,15 +101746,7 @@ module.exports = function eventData(out, pt, trace, cd, pointNumber) { return out; }; -},{}],479:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{}],526:[function(_dereq_,module,exports){ 'use strict'; var Axes = _dereq_('../../plots/cartesian/axes'); @@ -96958,15 +101762,7 @@ module.exports = function formatLabels(cdi, trace, fullLayout) { return labels; }; -},{"../../plots/cartesian/axes":279}],480:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian/axes":331}],527:[function(_dereq_,module,exports){ 'use strict'; var scatterHover = _dereq_('../scatter/hover'); @@ -97032,15 +101828,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { return scatterPointData; }; -},{"../scatter/hover":458}],481:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../scatter/hover":505}],528:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -97061,21 +101849,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/ternary'), categories: ['ternary', 'symbols', 'showLegend', 'scatter-like'], meta: { - - } }; -},{"../../plots/ternary":322,"../scatter/marker_colorbar":465,"../scatter/select":469,"../scatter/style":471,"./attributes":475,"./calc":476,"./defaults":477,"./event_data":478,"./format_labels":479,"./hover":480,"./plot":482}],482:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - - +},{"../../plots/ternary":369,"../scatter/marker_colorbar":512,"../scatter/select":516,"../scatter/style":518,"./attributes":522,"./calc":523,"./defaults":524,"./event_data":525,"./format_labels":526,"./hover":527,"./plot":529}],529:[function(_dereq_,module,exports){ 'use strict'; var scatterPlot = _dereq_('../scatter/plot'); @@ -97099,19 +101876,12 @@ module.exports = function plot(gd, ternary, moduleCalcData) { scatterPlot(gd, plotinfo, moduleCalcData, scatterLayer); }; -},{"../scatter/plot":468}],483:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../scatter/plot":515}],530:[function(_dereq_,module,exports){ 'use strict'; var boxAttrs = _dereq_('../box/attributes'); var extendFlat = _dereq_('../../lib/extend').extendFlat; +var axisHoverFormat = _dereq_('../../plots/hoverformat_attributes'); module.exports = { y: boxAttrs.y, @@ -97119,44 +101889,37 @@ module.exports = { x0: boxAttrs.x0, y0: boxAttrs.y0, + xhoverformat: axisHoverFormat('x'), + yhoverformat: axisHoverFormat('y'), + name: extendFlat({}, boxAttrs.name, { - }), orientation: extendFlat({}, boxAttrs.orientation, { - }), bandwidth: { valType: 'number', min: 0, - editType: 'calc', - }, scalegroup: { valType: 'string', - dflt: '', editType: 'calc', - }, scalemode: { valType: 'enumerated', values: ['width', 'count'], dflt: 'width', - editType: 'calc', - }, spanmode: { valType: 'enumerated', values: ['soft', 'hard', 'manual'], dflt: 'soft', - editType: 'calc', - }, span: { valType: 'info_array', @@ -97164,42 +101927,32 @@ module.exports = { {valType: 'any', editType: 'calc'}, {valType: 'any', editType: 'calc'} ], - editType: 'calc', - }, line: { color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', - min: 0, dflt: 2, editType: 'style', - }, editType: 'plot' }, fillcolor: boxAttrs.fillcolor, points: extendFlat({}, boxAttrs.boxpoints, { - }), jitter: extendFlat({}, boxAttrs.jitter, { - }), pointpos: extendFlat({}, boxAttrs.pointpos, { - }), width: extendFlat({}, boxAttrs.width, { - }), marker: boxAttrs.marker, @@ -97211,38 +101964,28 @@ module.exports = { visible: { valType: 'boolean', dflt: false, - editType: 'plot', - }, width: { valType: 'number', min: 0, max: 1, dflt: 0.25, - editType: 'plot', - }, fillcolor: { valType: 'color', - editType: 'style', - }, line: { color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'style' }, @@ -97253,22 +101996,16 @@ module.exports = { visible: { valType: 'boolean', dflt: false, - editType: 'plot', - }, color: { valType: 'color', - editType: 'style', - }, width: { valType: 'number', min: 0, - editType: 'style', - }, editType: 'plot' }, @@ -97277,9 +102014,7 @@ module.exports = { valType: 'enumerated', values: ['both', 'positive', 'negative'], dflt: 'both', - editType: 'calc', - }, offsetgroup: boxAttrs.offsetgroup, @@ -97293,21 +102028,11 @@ module.exports = { flags: ['violins', 'points', 'kde'], dflt: 'violins+points+kde', extras: ['all'], - editType: 'style', - } }; -},{"../../lib/extend":227,"../box/attributes":353}],484:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib/extend":279,"../../plots/hoverformat_attributes":363,"../box/attributes":400}],531:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97475,15 +102200,7 @@ function calcSpan(trace, cdi, valAxis, bandwidth) { return spanOut; } -},{"../../constants/numerical":212,"../../lib":233,"../../plots/cartesian/axes":279,"../box/calc":354,"./helpers":487}],485:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../constants/numerical":265,"../../lib":285,"../../plots/cartesian/axes":331,"../box/calc":401,"./helpers":534}],532:[function(_dereq_,module,exports){ 'use strict'; var setPositionOffset = _dereq_('../box/cross_trace_calc').setPositionOffset; @@ -97518,15 +102235,7 @@ module.exports = function crossTraceCalc(gd, plotinfo) { } }; -},{"../box/cross_trace_calc":355}],486:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../box/cross_trace_calc":402}],533:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97579,15 +102288,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout if(!meanLineVisible) traceOut.meanline = {visible: false}; }; -},{"../../components/color":105,"../../lib":233,"../box/defaults":356,"./attributes":483}],487:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/color":155,"../../lib":285,"../box/defaults":403,"./attributes":530}],534:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97652,15 +102353,7 @@ exports.getKdeValue = function(calcItem, trace, valueDist) { exports.extractVal = function(o) { return o.v; }; -},{"../../lib":233}],488:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285}],535:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97668,7 +102361,10 @@ var Axes = _dereq_('../../plots/cartesian/axes'); var boxHoverPoints = _dereq_('../box/hover'); var helpers = _dereq_('./helpers'); -module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLayer) { +module.exports = function hoverPoints(pointData, xval, yval, hovermode, opts) { + if(!opts) opts = {}; + var hoverLayer = opts.hoverLayer; + var cd = pointData.cd; var trace = cd[0].trace; var hoveron = trace.hoveron; @@ -97713,7 +102409,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay kdePointData[pLetter + '0'] = pOnPath[0]; kdePointData[pLetter + '1'] = pOnPath[1]; kdePointData[vLetter + '0'] = kdePointData[vLetter + '1'] = vValPx; - kdePointData[vLetter + 'Label'] = vLetter + ': ' + Axes.hoverLabelText(vAxis, vVal) + ', ' + cd[0].t.labels.kde + ' ' + kdeVal.toFixed(3); + kdePointData[vLetter + 'Label'] = vLetter + ': ' + Axes.hoverLabelText(vAxis, vVal, trace[vLetter + 'hoverformat']) + ', ' + cd[0].t.labels.kde + ' ' + kdeVal.toFixed(3); // move the spike to the KDE point kdePointData.spikeDistance = closeBoxData[0].spikeDistance; @@ -97764,15 +102460,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode, hoverLay return closeData; }; -},{"../../lib":233,"../../plots/cartesian/axes":279,"../box/hover":358,"./helpers":487}],489:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../../plots/cartesian/axes":331,"../box/hover":405,"./helpers":534}],536:[function(_dereq_,module,exports){ 'use strict'; module.exports = { @@ -97794,19 +102482,10 @@ module.exports = { basePlotModule: _dereq_('../../plots/cartesian'), categories: ['cartesian', 'svg', 'symbols', 'oriented', 'box-violin', 'showLegend', 'violinLayout', 'zoomScale'], meta: { - } }; -},{"../../plots/cartesian":292,"../box/defaults":356,"../box/select":363,"../scatter/style":471,"./attributes":483,"./calc":484,"./cross_trace_calc":485,"./defaults":486,"./hover":488,"./layout_attributes":490,"./layout_defaults":491,"./plot":492,"./style":493}],490:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../plots/cartesian":344,"../box/defaults":403,"../box/select":410,"../scatter/style":518,"./attributes":530,"./calc":531,"./cross_trace_calc":532,"./defaults":533,"./hover":535,"./layout_attributes":537,"./layout_defaults":538,"./plot":539,"./style":540}],537:[function(_dereq_,module,exports){ 'use strict'; var boxLayoutAttrs = _dereq_('../box/layout_attributes'); @@ -97814,25 +102493,14 @@ var extendFlat = _dereq_('../../lib').extendFlat; module.exports = { violinmode: extendFlat({}, boxLayoutAttrs.boxmode, { - }), violingap: extendFlat({}, boxLayoutAttrs.boxgap, { - }), violingroupgap: extendFlat({}, boxLayoutAttrs.boxgroupgap, { - }) }; -},{"../../lib":233,"../box/layout_attributes":360}],491:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../box/layout_attributes":407}],538:[function(_dereq_,module,exports){ 'use strict'; var Lib = _dereq_('../../lib'); @@ -97846,18 +102514,10 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) { boxLayoutDefaults._supply(layoutIn, layoutOut, fullData, coerce, 'violin'); }; -},{"../../lib":233,"../box/layout_defaults":361,"./layout_attributes":490}],492:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../lib":285,"../box/layout_defaults":408,"./layout_attributes":537}],539:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Lib = _dereq_('../../lib'); var Drawing = _dereq_('../../components/drawing'); @@ -98036,18 +102696,10 @@ module.exports = function plot(gd, plotinfo, cdViolins, violinLayer) { }); }; -},{"../../components/drawing":127,"../../lib":233,"../box/plot":362,"../scatter/line_points":461,"./helpers":487,"d3":21}],493:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - +},{"../../components/drawing":177,"../../lib":285,"../box/plot":409,"../scatter/line_points":508,"./helpers":534,"@plotly/d3":20}],540:[function(_dereq_,module,exports){ 'use strict'; -var d3 = _dereq_('d3'); +var d3 = _dereq_('@plotly/d3'); var Color = _dereq_('../../components/color'); var stylePoints = _dereq_('../scatter/style').stylePoints; @@ -98091,21 +102743,1077 @@ module.exports = function style(gd) { }); }; -},{"../../components/color":105,"../scatter/style":471,"d3":21}],494:[function(_dereq_,module,exports){ -/** -* Copyright 2012-2020, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ +},{"../../components/color":155,"../scatter/style":518,"@plotly/d3":20}],541:[function(_dereq_,module,exports){ +'use strict'; +var Axes = _dereq_('../plots/cartesian/axes'); +var Lib = _dereq_('../lib'); +var PlotSchema = _dereq_('../plot_api/plot_schema'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; +var BADNUM = _dereq_('../constants/numerical').BADNUM; + +exports.moduleType = 'transform'; + +exports.name = 'aggregate'; + +var attrs = exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + groups: { + // TODO: groupby should support string or array grouping this way too + // currently groupby only allows a grouping array + valType: 'string', + strict: true, + noBlank: true, + arrayOk: true, + dflt: 'x', + editType: 'calc', + }, + aggregations: { + _isLinkedToArray: 'aggregation', + target: { + valType: 'string', + editType: 'calc', + }, + func: { + valType: 'enumerated', + values: ['count', 'sum', 'avg', 'median', 'mode', 'rms', 'stddev', 'min', 'max', 'first', 'last', 'change', 'range'], + dflt: 'first', + editType: 'calc', + }, + funcmode: { + valType: 'enumerated', + values: ['sample', 'population'], + dflt: 'sample', + editType: 'calc', + }, + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + editType: 'calc' + }, + editType: 'calc' +}; + +var aggAttrs = attrs.aggregations; + +/** + * Supply transform attributes defaults + * + * @param {object} transformIn + * object linked to trace.transforms[i] with 'func' set to exports.name + * @param {object} traceOut + * the _fullData trace this transform applies to + * @param {object} layout + * the plot's (not-so-full) layout + * @param {object} traceIn + * the input data trace this transform applies to + * + * @return {object} transformOut + * copy of transformIn that contains attribute defaults + */ +exports.supplyDefaults = function(transformIn, traceOut) { + var transformOut = {}; + var i; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, attrs, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(!enabled) return transformOut; + + /* + * Normally _arrayAttrs is calculated during doCalc, but that comes later. + * Anyway this can change due to *count* aggregations (see below) so it's not + * necessarily the same set. + * + * For performance we turn it into an object of truthy values + * we'll use 1 for arrays we haven't aggregated yet, 0 for finished arrays, + * as distinct from undefined which means this array isn't present in the input + * missing arrays can still be aggregate outputs for *count* aggregations. + */ + var arrayAttrArray = PlotSchema.findArrayAttributes(traceOut); + var arrayAttrs = {}; + for(i = 0; i < arrayAttrArray.length; i++) arrayAttrs[arrayAttrArray[i]] = 1; + + var groups = coerce('groups'); + + if(!Array.isArray(groups)) { + if(!arrayAttrs[groups]) { + transformOut.enabled = false; + return transformOut; + } + arrayAttrs[groups] = 0; + } + + var aggregationsIn = transformIn.aggregations || []; + var aggregationsOut = transformOut.aggregations = new Array(aggregationsIn.length); + var aggregationOut; + + function coercei(attr, dflt) { + return Lib.coerce(aggregationsIn[i], aggregationOut, aggAttrs, attr, dflt); + } + + for(i = 0; i < aggregationsIn.length; i++) { + aggregationOut = {_index: i}; + var target = coercei('target'); + var func = coercei('func'); + var enabledi = coercei('enabled'); + + // add this aggregation to the output only if it's the first instance + // of a valid target attribute - or an unused target attribute with "count" + if(enabledi && target && (arrayAttrs[target] || (func === 'count' && arrayAttrs[target] === undefined))) { + if(func === 'stddev') coercei('funcmode'); + + arrayAttrs[target] = 0; + aggregationsOut[i] = aggregationOut; + } else aggregationsOut[i] = {enabled: false, _index: i}; + } + + // any array attributes we haven't yet covered, fill them with the default aggregation + for(i = 0; i < arrayAttrArray.length; i++) { + if(arrayAttrs[arrayAttrArray[i]]) { + aggregationsOut.push({ + target: arrayAttrArray[i], + func: aggAttrs.func.dflt, + enabled: true, + _index: -1 + }); + } + } + + return transformOut; +}; + + +exports.calcTransform = function(gd, trace, opts) { + if(!opts.enabled) return; + + var groups = opts.groups; + + var groupArray = Lib.getTargetArray(trace, {target: groups}); + if(!groupArray) return; + + var i, vi, groupIndex, newGrouping; + + var groupIndices = {}; + var indexToPoints = {}; + var groupings = []; + + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + + var len = groupArray.length; + if(trace._length) len = Math.min(len, trace._length); + + for(i = 0; i < len; i++) { + vi = groupArray[i]; + groupIndex = groupIndices[vi]; + if(groupIndex === undefined) { + groupIndices[vi] = groupings.length; + newGrouping = [i]; + groupings.push(newGrouping); + indexToPoints[groupIndices[vi]] = originalPointsAccessor(i); + } else { + groupings[groupIndex].push(i); + indexToPoints[groupIndices[vi]] = (indexToPoints[groupIndices[vi]] || []).concat(originalPointsAccessor(i)); + } + } + + opts._indexToPoints = indexToPoints; + + var aggregations = opts.aggregations; + + for(i = 0; i < aggregations.length; i++) { + aggregateOneArray(gd, trace, groupings, aggregations[i]); + } + + if(typeof groups === 'string') { + aggregateOneArray(gd, trace, groupings, { + target: groups, + func: 'first', + enabled: true + }); + } + + trace._length = groupings.length; +}; + +function aggregateOneArray(gd, trace, groupings, aggregation) { + if(!aggregation.enabled) return; + + var attr = aggregation.target; + var targetNP = Lib.nestedProperty(trace, attr); + var arrayIn = targetNP.get(); + var conversions = Axes.getDataConversions(gd, trace, attr, arrayIn); + var func = getAggregateFunction(aggregation, conversions); + + var arrayOut = new Array(groupings.length); + for(var i = 0; i < groupings.length; i++) { + arrayOut[i] = func(arrayIn, groupings[i]); + } + targetNP.set(arrayOut); + + if(aggregation.func === 'count') { + // count does not depend on an input array, so it's likely not part of _arrayAttrs yet + // but after this transform it most definitely *is* an array attribute. + Lib.pushUnique(trace._arrayAttrs, attr); + } +} + +function getAggregateFunction(opts, conversions) { + var func = opts.func; + var d2c = conversions.d2c; + var c2d = conversions.c2d; + + switch(func) { + // count, first, and last don't depend on anything about the data + // point back to pure functions for performance + case 'count': + return count; + case 'first': + return first; + case 'last': + return last; + + case 'sum': + // This will produce output in all cases even though it's nonsensical + // for date or category data. + return function(array, indices) { + var total = 0; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) total += vi; + } + return c2d(total); + }; + + case 'avg': + // Generally meaningless for category data but it still does something. + return function(array, indices) { + var total = 0; + var cnt = 0; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + total += vi; + cnt++; + } + } + return cnt ? c2d(total / cnt) : BADNUM; + }; + + case 'min': + return function(array, indices) { + var out = Infinity; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) out = Math.min(out, vi); + } + return (out === Infinity) ? BADNUM : c2d(out); + }; + + case 'max': + return function(array, indices) { + var out = -Infinity; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) out = Math.max(out, vi); + } + return (out === -Infinity) ? BADNUM : c2d(out); + }; + + case 'range': + return function(array, indices) { + var min = Infinity; + var max = -Infinity; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + min = Math.min(min, vi); + max = Math.max(max, vi); + } + } + return (max === -Infinity || min === Infinity) ? BADNUM : c2d(max - min); + }; + + case 'change': + return function(array, indices) { + var first = d2c(array[indices[0]]); + var last = d2c(array[indices[indices.length - 1]]); + return (first === BADNUM || last === BADNUM) ? BADNUM : c2d(last - first); + }; + + case 'median': + return function(array, indices) { + var sortCalc = []; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) sortCalc.push(vi); + } + if(!sortCalc.length) return BADNUM; + sortCalc.sort(Lib.sorterAsc); + var mid = (sortCalc.length - 1) / 2; + return c2d((sortCalc[Math.floor(mid)] + sortCalc[Math.ceil(mid)]) / 2); + }; + + case 'mode': + return function(array, indices) { + var counts = {}; + var maxCnt = 0; + var out = BADNUM; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + var counti = counts[vi] = (counts[vi] || 0) + 1; + if(counti > maxCnt) { + maxCnt = counti; + out = vi; + } + } + } + return maxCnt ? c2d(out) : BADNUM; + }; + + case 'rms': + return function(array, indices) { + var total = 0; + var cnt = 0; + for(var i = 0; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + total += vi * vi; + cnt++; + } + } + return cnt ? c2d(Math.sqrt(total / cnt)) : BADNUM; + }; + + case 'stddev': + return function(array, indices) { + // balance numerical stability with performance: + // so that we call d2c once per element but don't need to + // store them, reference all to the first element + var total = 0; + var total2 = 0; + var cnt = 1; + var v0 = BADNUM; + var i; + for(i = 0; i < indices.length && v0 === BADNUM; i++) { + v0 = d2c(array[indices[i]]); + } + if(v0 === BADNUM) return BADNUM; + + for(; i < indices.length; i++) { + var vi = d2c(array[indices[i]]); + if(vi !== BADNUM) { + var dv = vi - v0; + total += dv; + total2 += dv * dv; + cnt++; + } + } + + // This is population std dev, if we want sample std dev + // we would need (...) / (cnt - 1) + // Also note there's no c2d here - that means for dates the result + // is a number of milliseconds, and for categories it's a number + // of category differences, which is not generically meaningful but + // as in other cases we don't forbid it. + var norm = (opts.funcmode === 'sample') ? (cnt - 1) : cnt; + // this is debatable: should a count of 1 return sample stddev of + // 0 or undefined? + if(!norm) return 0; + return Math.sqrt((total2 - (total * total / cnt)) / norm); + }; + } +} + +function count(array, indices) { + return indices.length; +} + +function first(array, indices) { + return array[indices[0]]; +} + +function last(array, indices) { + return array[indices[indices.length - 1]]; +} + +},{"../constants/numerical":265,"../lib":285,"../plot_api/plot_schema":319,"../plots/cartesian/axes":331,"./helpers":544}],542:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../lib'); +var Registry = _dereq_('../registry'); +var Axes = _dereq_('../plots/cartesian/axes'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; + +var filterOps = _dereq_('../constants/filter_ops'); +var COMPARISON_OPS = filterOps.COMPARISON_OPS; +var INTERVAL_OPS = filterOps.INTERVAL_OPS; +var SET_OPS = filterOps.SET_OPS; + +exports.moduleType = 'transform'; + +exports.name = 'filter'; + +exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + target: { + valType: 'string', + strict: true, + noBlank: true, + arrayOk: true, + dflt: 'x', + editType: 'calc', + }, + operation: { + valType: 'enumerated', + values: [] + .concat(COMPARISON_OPS) + .concat(INTERVAL_OPS) + .concat(SET_OPS), + dflt: '=', + editType: 'calc', + }, + value: { + valType: 'any', + dflt: 0, + editType: 'calc', + }, + preservegaps: { + valType: 'boolean', + dflt: false, + editType: 'calc', + }, + editType: 'calc' +}; + +exports.supplyDefaults = function(transformIn) { + var transformOut = {}; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(enabled) { + var target = coerce('target'); + + if(Lib.isArrayOrTypedArray(target) && target.length === 0) { + transformOut.enabled = false; + return transformOut; + } + + coerce('preservegaps'); + coerce('operation'); + coerce('value'); + + var handleCalendarDefaults = Registry.getComponentMethod('calendars', 'handleDefaults'); + handleCalendarDefaults(transformIn, transformOut, 'valuecalendar', null); + handleCalendarDefaults(transformIn, transformOut, 'targetcalendar', null); + } + + return transformOut; +}; + +exports.calcTransform = function(gd, trace, opts) { + if(!opts.enabled) return; + + var targetArray = Lib.getTargetArray(trace, opts); + if(!targetArray) return; + + var target = opts.target; + + var len = targetArray.length; + if(trace._length) len = Math.min(len, trace._length); + + var targetCalendar = opts.targetcalendar; + var arrayAttrs = trace._arrayAttrs; + var preservegaps = opts.preservegaps; + + // even if you provide targetcalendar, if target is a string and there + // is a calendar attribute matching target it will get used instead. + if(typeof target === 'string') { + var attrTargetCalendar = Lib.nestedProperty(trace, target + 'calendar').get(); + if(attrTargetCalendar) targetCalendar = attrTargetCalendar; + } + + var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); + var filterFunc = getFilterFunc(opts, d2c, targetCalendar); + var originalArrays = {}; + var indexToPoints = {}; + var index = 0; + + function forAllAttrs(fn, index) { + for(var j = 0; j < arrayAttrs.length; j++) { + var np = Lib.nestedProperty(trace, arrayAttrs[j]); + fn(np, index); + } + } + + var initFn; + var fillFn; + if(preservegaps) { + initFn = function(np) { + originalArrays[np.astr] = Lib.extendDeep([], np.get()); + np.set(new Array(len)); + }; + fillFn = function(np, index) { + var val = originalArrays[np.astr][index]; + np.get()[index] = val; + }; + } else { + initFn = function(np) { + originalArrays[np.astr] = Lib.extendDeep([], np.get()); + np.set([]); + }; + fillFn = function(np, index) { + var val = originalArrays[np.astr][index]; + np.get().push(val); + }; + } + + // copy all original array attribute values, and clear arrays in trace + forAllAttrs(initFn); + + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + + // loop through filter array, fill trace arrays if passed + for(var i = 0; i < len; i++) { + var passed = filterFunc(targetArray[i]); + if(passed) { + forAllAttrs(fillFn, i); + indexToPoints[index++] = originalPointsAccessor(i); + } else if(preservegaps) index++; + } + + opts._indexToPoints = indexToPoints; + trace._length = index; +}; + +function getFilterFunc(opts, d2c, targetCalendar) { + var operation = opts.operation; + var value = opts.value; + var hasArrayValue = Array.isArray(value); + + function isOperationIn(array) { + return array.indexOf(operation) !== -1; + } + + var d2cValue = function(v) { return d2c(v, 0, opts.valuecalendar); }; + var d2cTarget = function(v) { return d2c(v, 0, targetCalendar); }; + + var coercedValue; + + if(isOperationIn(COMPARISON_OPS)) { + coercedValue = hasArrayValue ? d2cValue(value[0]) : d2cValue(value); + } else if(isOperationIn(INTERVAL_OPS)) { + coercedValue = hasArrayValue ? + [d2cValue(value[0]), d2cValue(value[1])] : + [d2cValue(value), d2cValue(value)]; + } else if(isOperationIn(SET_OPS)) { + coercedValue = hasArrayValue ? value.map(d2cValue) : [d2cValue(value)]; + } + + switch(operation) { + case '=': + return function(v) { return d2cTarget(v) === coercedValue; }; + + case '!=': + return function(v) { return d2cTarget(v) !== coercedValue; }; + + case '<': + return function(v) { return d2cTarget(v) < coercedValue; }; + + case '<=': + return function(v) { return d2cTarget(v) <= coercedValue; }; + + case '>': + return function(v) { return d2cTarget(v) > coercedValue; }; + + case '>=': + return function(v) { return d2cTarget(v) >= coercedValue; }; + + case '[]': + return function(v) { + var cv = d2cTarget(v); + return cv >= coercedValue[0] && cv <= coercedValue[1]; + }; + + case '()': + return function(v) { + var cv = d2cTarget(v); + return cv > coercedValue[0] && cv < coercedValue[1]; + }; + + case '[)': + return function(v) { + var cv = d2cTarget(v); + return cv >= coercedValue[0] && cv < coercedValue[1]; + }; + + case '(]': + return function(v) { + var cv = d2cTarget(v); + return cv > coercedValue[0] && cv <= coercedValue[1]; + }; + + case '][': + return function(v) { + var cv = d2cTarget(v); + return cv <= coercedValue[0] || cv >= coercedValue[1]; + }; + + case ')(': + return function(v) { + var cv = d2cTarget(v); + return cv < coercedValue[0] || cv > coercedValue[1]; + }; + + case '](': + return function(v) { + var cv = d2cTarget(v); + return cv <= coercedValue[0] || cv > coercedValue[1]; + }; + + case ')[': + return function(v) { + var cv = d2cTarget(v); + return cv < coercedValue[0] || cv >= coercedValue[1]; + }; + + case '{}': + return function(v) { + return coercedValue.indexOf(d2cTarget(v)) !== -1; + }; + + case '}{': + return function(v) { + return coercedValue.indexOf(d2cTarget(v)) === -1; + }; + } +} + +},{"../constants/filter_ops":263,"../lib":285,"../plots/cartesian/axes":331,"../registry":373,"./helpers":544}],543:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../lib'); +var PlotSchema = _dereq_('../plot_api/plot_schema'); +var Plots = _dereq_('../plots/plots'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; + +exports.moduleType = 'transform'; + +exports.name = 'groupby'; + +exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + groups: { + valType: 'data_array', + dflt: [], + editType: 'calc', + }, + nameformat: { + valType: 'string', + editType: 'calc', + }, + styles: { + _isLinkedToArray: 'style', + target: { + valType: 'string', + editType: 'calc', + }, + value: { + valType: 'any', + dflt: {}, + editType: 'calc', + _compareAsJSON: true + }, + editType: 'calc' + }, + editType: 'calc' +}; + +/** + * Supply transform attributes defaults + * + * @param {object} transformIn + * object linked to trace.transforms[i] with 'type' set to exports.name + * @param {object} traceOut + * the _fullData trace this transform applies to + * @param {object} layout + * the plot's (not-so-full) layout + * @param {object} traceIn + * the input data trace this transform applies to + * + * @return {object} transformOut + * copy of transformIn that contains attribute defaults + */ +exports.supplyDefaults = function(transformIn, traceOut, layout) { + var i; + var transformOut = {}; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(!enabled) return transformOut; + + coerce('groups'); + coerce('nameformat', layout._dataLength > 1 ? '%{group} (%{trace})' : '%{group}'); + + var styleIn = transformIn.styles; + var styleOut = transformOut.styles = []; + + if(styleIn) { + for(i = 0; i < styleIn.length; i++) { + var thisStyle = styleOut[i] = {}; + Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'target'); + var value = Lib.coerce(styleIn[i], styleOut[i], exports.attributes.styles, 'value'); + + // so that you can edit value in place and have Plotly.react notice it, or + // rebuild it every time and have Plotly.react NOT think it changed: + // use _compareAsJSON to say we should diff the _JSON_value + if(Lib.isPlainObject(value)) thisStyle.value = Lib.extendDeep({}, value); + else if(value) delete thisStyle.value; + } + } + + return transformOut; +}; + + +/** + * Apply transform !!! + * + * @param {array} data + * array of transformed traces (is [fullTrace] upon first transform) + * + * @param {object} state + * state object which includes: + * - transform {object} full transform attributes + * - fullTrace {object} full trace object which is being transformed + * - fullData {array} full pre-transform(s) data array + * - layout {object} the plot's (not-so-full) layout + * + * @return {object} newData + * array of transformed traces + */ +exports.transform = function(data, state) { + var newTraces, i, j; + var newData = []; + + for(i = 0; i < data.length; i++) { + newTraces = transformOne(data[i], state); + + for(j = 0; j < newTraces.length; j++) { + newData.push(newTraces[j]); + } + } + + return newData; +}; + +function transformOne(trace, state) { + var i, j, k, attr, srcArray, groupName, newTrace, transforms, arrayLookup; + var groupNameObj; + + var opts = state.transform; + var transformIndex = state.transformIndex; + var groups = trace.transforms[transformIndex].groups; + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + + if(!(Lib.isArrayOrTypedArray(groups)) || groups.length === 0) { + return [trace]; + } + + var groupNames = Lib.filterUnique(groups); + var newData = new Array(groupNames.length); + var len = groups.length; + + var arrayAttrs = PlotSchema.findArrayAttributes(trace); + + var styles = opts.styles || []; + var styleLookup = {}; + for(i = 0; i < styles.length; i++) { + styleLookup[styles[i].target] = styles[i].value; + } + + if(opts.styles) { + groupNameObj = Lib.keyedContainer(opts, 'styles', 'target', 'value.name'); + } + + // An index to map group name --> expanded trace index + var indexLookup = {}; + var indexCnts = {}; + + for(i = 0; i < groupNames.length; i++) { + groupName = groupNames[i]; + indexLookup[groupName] = i; + indexCnts[groupName] = 0; + + // Start with a deep extend that just copies array references. + newTrace = newData[i] = Lib.extendDeepNoArrays({}, trace); + newTrace._group = groupName; + newTrace.transforms[transformIndex]._indexToPoints = {}; + + var suppliedName = null; + if(groupNameObj) { + suppliedName = groupNameObj.get(groupName); + } + + if(suppliedName || suppliedName === '') { + newTrace.name = suppliedName; + } else { + newTrace.name = Lib.templateString(opts.nameformat, { + trace: trace.name, + group: groupName + }); + } + + // In order for groups to apply correctly to other transform data (e.g. + // a filter transform), we have to break the connection and clone the + // transforms so that each group writes grouped values into a different + // destination. This function does not break the array reference + // connection between the split transforms it creates. That's handled in + // initialize, which creates a new empty array for each arrayAttr. + transforms = newTrace.transforms; + newTrace.transforms = []; + for(j = 0; j < transforms.length; j++) { + newTrace.transforms[j] = Lib.extendDeepNoArrays({}, transforms[j]); + } + + // Initialize empty arrays for the arrayAttrs, to be split in the next step + for(j = 0; j < arrayAttrs.length; j++) { + Lib.nestedProperty(newTrace, arrayAttrs[j]).set([]); + } + } + + // For each array attribute including those nested inside this and other + // transforms (small note that we technically only need to do this for + // transforms that have not yet been applied): + for(k = 0; k < arrayAttrs.length; k++) { + attr = arrayAttrs[k]; + + // Cache all the arrays to which we'll push: + for(j = 0, arrayLookup = []; j < groupNames.length; j++) { + arrayLookup[j] = Lib.nestedProperty(newData[j], attr).get(); + } + + // Get the input data: + srcArray = Lib.nestedProperty(trace, attr).get(); + + // Send each data point to the appropriate expanded trace: + for(j = 0; j < len; j++) { + // Map group data --> trace index --> array and push data onto it + arrayLookup[indexLookup[groups[j]]].push(srcArray[j]); + } + } + + for(j = 0; j < len; j++) { + newTrace = newData[indexLookup[groups[j]]]; + + var indexToPoints = newTrace.transforms[transformIndex]._indexToPoints; + indexToPoints[indexCnts[groups[j]]] = originalPointsAccessor(j); + indexCnts[groups[j]]++; + } + + for(i = 0; i < groupNames.length; i++) { + groupName = groupNames[i]; + newTrace = newData[i]; + + Plots.clearExpandedTraceDefaultColors(newTrace); + + // there's no need to coerce styleLookup[groupName] here + // as another round of supplyDefaults is done on the transformed traces + newTrace = Lib.extendDeepNoArrays(newTrace, styleLookup[groupName] || {}); + } + + return newData; +} + +},{"../lib":285,"../plot_api/plot_schema":319,"../plots/plots":366,"./helpers":544}],544:[function(_dereq_,module,exports){ +'use strict'; + +exports.pointsAccessorFunction = function(transforms, opts) { + var tr; + var prevIndexToPoints; + for(var i = 0; i < transforms.length; i++) { + tr = transforms[i]; + if(tr === opts) break; + if(!tr._indexToPoints || tr.enabled === false) continue; + prevIndexToPoints = tr._indexToPoints; + } + var originalPointsAccessor = prevIndexToPoints ? + function(i) {return prevIndexToPoints[i];} : + function(i) {return [i];}; + return originalPointsAccessor; +}; + +},{}],545:[function(_dereq_,module,exports){ +'use strict'; + +var Lib = _dereq_('../lib'); +var Axes = _dereq_('../plots/cartesian/axes'); +var pointsAccessorFunction = _dereq_('./helpers').pointsAccessorFunction; + +var BADNUM = _dereq_('../constants/numerical').BADNUM; + +exports.moduleType = 'transform'; + +exports.name = 'sort'; + +exports.attributes = { + enabled: { + valType: 'boolean', + dflt: true, + editType: 'calc', + }, + target: { + valType: 'string', + strict: true, + noBlank: true, + arrayOk: true, + dflt: 'x', + editType: 'calc', + }, + order: { + valType: 'enumerated', + values: ['ascending', 'descending'], + dflt: 'ascending', + editType: 'calc', + }, + editType: 'calc' +}; + +exports.supplyDefaults = function(transformIn) { + var transformOut = {}; + + function coerce(attr, dflt) { + return Lib.coerce(transformIn, transformOut, exports.attributes, attr, dflt); + } + + var enabled = coerce('enabled'); + + if(enabled) { + coerce('target'); + coerce('order'); + } + + return transformOut; +}; + +exports.calcTransform = function(gd, trace, opts) { + if(!opts.enabled) return; + + var targetArray = Lib.getTargetArray(trace, opts); + if(!targetArray) return; + + var target = opts.target; + + var len = targetArray.length; + if(trace._length) len = Math.min(len, trace._length); + + var arrayAttrs = trace._arrayAttrs; + var d2c = Axes.getDataToCoordFunc(gd, trace, target, targetArray); + var indices = getIndices(opts, targetArray, d2c, len); + var originalPointsAccessor = pointsAccessorFunction(trace.transforms, opts); + var indexToPoints = {}; + var i, j; + + for(i = 0; i < arrayAttrs.length; i++) { + var np = Lib.nestedProperty(trace, arrayAttrs[i]); + var arrayOld = np.get(); + var arrayNew = new Array(len); + + for(j = 0; j < len; j++) { + arrayNew[j] = arrayOld[indices[j]]; + } + + np.set(arrayNew); + } + + for(j = 0; j < len; j++) { + indexToPoints[j] = originalPointsAccessor(indices[j]); + } + + opts._indexToPoints = indexToPoints; + trace._length = len; +}; + +function getIndices(opts, targetArray, d2c, len) { + var sortedArray = new Array(len); + var indices = new Array(len); + var i; + + for(i = 0; i < len; i++) { + sortedArray[i] = {v: targetArray[i], i: i}; + } + + sortedArray.sort(getSortFunc(opts, d2c)); + + for(i = 0; i < len; i++) { + indices[i] = sortedArray[i].i; + } + + return indices; +} + +function getSortFunc(opts, d2c) { + switch(opts.order) { + case 'ascending': + return function(a, b) { + var ac = d2c(a.v); + var bc = d2c(b.v); + if(ac === BADNUM) { + return 1; + } + if(bc === BADNUM) { + return -1; + } + return ac - bc; + }; + case 'descending': + return function(a, b) { + var ac = d2c(a.v); + var bc = d2c(b.v); + if(ac === BADNUM) { + return 1; + } + if(bc === BADNUM) { + return -1; + } + return bc - ac; + }; + } +} + +},{"../constants/numerical":265,"../lib":285,"../plots/cartesian/axes":331,"./helpers":544}],546:[function(_dereq_,module,exports){ 'use strict'; // package version injected by `npm run preprocess` -exports.version = '1.58.4'; +exports.version = '2.0.0'; -},{}]},{},[11])(11) +},{}]},{},[15])(15) }); var locale={moduleType:"locale",name:"de",dictionary:{Autoscale:"Automatische Skalierung","Box Select":"Rechteckauswahl","Click to enter Colorscale title":"Klicken, um den Farbskalatitel einzugeben","Click to enter Component A title":"Klicken, um den Titel der Komponente A einzugeben","Click to enter Component B title":"Klicken, um den Titel der Komponente B einzugeben","Click to enter Component C title":"Klicken, um den Titel der Komponente C einzugeben","Click to enter Plot title":"Klicken, um den Titel des Graphen einzugeben","Click to enter X axis title":"Klicken, um den Titel der X-Achse einzugeben","Click to enter Y axis title":"Klicken, um den Titel der Y-Achse einzugeben","Compare data on hover":"\xdcber die Daten fahren, um sie zu vergleichen","Double-click on legend to isolate one trace":"Daten isolieren durch Doppelklick in der Legende","Double-click to zoom back out":"Herauszoomen durch Doppelklick","Download plot as a png":"Graphen als PNG herunterladen","Download plot":"Graphen herunterladen","Edit in Chart Studio":"Im Chart Studio bearbeiten","IE only supports svg. Changing format to svg.":"IE unterst\xfctzt nur SVG-Dateien. Format wird zu SVG gewechselt.","Lasso Select":"Lassoauswahl","Orbital rotation":"Orbitalrotation",Pan:"Verschieben","Produced with Plotly":"Erstellt mit Plotly",Reset:"Zur\xfccksetzen","Reset axes":"Achsen zur\xfccksetzen","Reset camera to default":"Kamera auf Standard zur\xfccksetzen","Reset camera to last save":"Kamera auf letzte Speicherung zur\xfccksetzen","Reset view":"Ansicht zur\xfccksetzen","Reset views":"Ansichten zur\xfccksetzen","Show closest data on hover":"Zeige n\xe4heste Daten beim \xdcberfahren","Snapshot succeeded":"Snapshot erfolgreich","Sorry, there was a problem downloading your snapshot!":"Es gab ein Problem beim Herunterladen des Snapshots","Taking snapshot - this may take a few seconds":"Erstelle einen Snapshot - dies kann einige Sekunden dauern",Zoom:"Zoom","Zoom in":"Hineinzoomen","Zoom out":"Herauszoomen","close:":"Schluss:",trace:"Datenspur","lat:":"Lat.:","lon:":"Lon.:","q1:":"q1:","q3:":"q3:","source:":"Quelle:","target:":"Ziel:","lower fence:":"Untere Schranke:","upper fence:":"Obere Schranke:","max:":"Max.:","mean \xb1 \u03c3:":"Mittelwert \xb1 \u03c3:","mean:":"Mittelwert:","median:":"Median:","min:":"Min.:","Turntable rotation":"Drehscheibenorbit","Toggle Spike Lines":"Bezugslinien an-/abschalten","open:":"Er\xf6ffnung:","high:":"H\xf6chstkurs:","low:":"Tiefstkurs:","Toggle show closest data on hover":"Anzeige der n\xe4hesten Daten an-/abschalten","incoming flow count:":"Anzahl eingehender Verbindungen:","outgoing flow count:":"Anzahl ausgehender Verbindungen:","kde:":"Dichte:"},format:{days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],shortDays:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],shortMonths:["Jan","Feb","M\xe4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],date:"%d.%m.%Y",decimal:",",thousands:"."}};"undefined"==typeof Plotly?(window.PlotlyLocales=window.PlotlyLocales||[],window.PlotlyLocales.push(locale)):Plotly.register(locale); diff --git a/static/babybuddy/js/graph.js.gz b/static/babybuddy/js/graph.js.gz index 3c37ceaae1d431d7c81b84e85cf32e70a40a61f0..62dd672bb7fa6dbd11f699b6a4202dc69143175c 100644 GIT binary patch literal 824232 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�|a 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%0Adei^q6Y-euOXSNZhmrHRg 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 Um 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 z⁡&BDB)_w{*6m4&!{;aAAJGNEf41{CGHDWoL6b zhzt>HEor?PEerkmk{FnI{g}?l{M!<%w)sV4m9@HBQ>|xM%Sa`)j#@#jnpR6|6s^ph zR(mn#?tl0K317ePdlt(9J0g}untVA-zRZ#@|0AJ=(XA~RS}$kY!I!1x{BiK*i@}#~ z{XE$yKf_77)%VlW0k%W{QhML@-t+whUyvQ%^(rS05u-IK&tYTzny+a`MA?3Qc%I

XF99V)!0;b7>QYw8|>JZT`up` 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¬B7&c?F`Of)k-l$!lFYA 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

`4qxis})QXNM|&2mX(MY4bBy9yJBCP!%&7%lraR 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 A761SM literal 749718 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

1uY~ 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%0A^_jkS;*9F{E!5i)gCgSdVX( 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νrgS`Y``ceqMXJ@)4f?XYZm@=N8wsfBLEt~c$n%D0cEVnG3YbH};uw}_p z6E!>fakBlEb#1o!*2vrxj)T5prbJUmr;^eIg-PKG^*C{ArzNztiW$UvuEx{G>7#Fu zZ}<<|@f9?nK^3-B+JGET-GE>udtq(O2QBGj@9p5r-t)7?wiWN4w#qD_n0{r1|MHY8 zAYGn%{(z@kJ>D%>Nfexe|8UNHIna^mLoSt(XicerK)c)hx#M!rujT$ z5MJSGfq#@~nx54vss&3WyM|=JPS7J%dZuU$vc?pB?mt4~#mhXMp#voxWZjuX*05D7dP>Q4@=Z&w48};KxZk`5VJTyng z=}6}&#gbQ3Z7aan&!F{)L$qukFV!klyG@GD^ZEK~$;ERUdKFSfNd^HLfS! z=3JkN@wx+3bPp~*lUQDpYAE1%8Ctj5cs?x5jGM5pY2!> ze0=JH;5Vet^Jx-5zT02Cep@eg6~i12eI%u?AD|ifiy47D(9%~Bc;kV8WdY82r>?vC z*#)^P_5Q5lXbIS&S?<)W1lnE{?3WJmNX~=O`L+0XpMHJNobf7Nh9gu9<^q z+>g|u4!wPbdKfSZA4A33AyLGmxn$|!pS3uopQQbM!n!`9hUS-?MjOsvpU<=H%=2%g zOz=B1Bn;7nB(us!u7C@U84~Y73Yt+IFUT;tNX701kAtuvzg03y?Quj_oBeYZ`C%I?gXoPk#7=~(OpUz_>cPdC1-qxqaMPxyS?vn@t zj@RMH?saE_&PCM&B0*nshwAgHM3hX~ras)MEbIG@9~g;j&Jr=Rg%)Ud%(>d+ZDi{Tk!bD+NfIrb0Ul z(1JaaR>ZNhZ`^8CJ+1NCi$ya>GFfDn1iOs@n=8N6l`9*dV@$H>LbIc~WX%aTbIp4Z zIg^@nH)G6B0Rx$>iAixPjmFV=oWdxXsl?XSAt}EUb?qyJW#G_NVP*yy9VXYD3tbX) z8e1F&VkEY#5c^x@JXR4(pGulr;Av**WIOMH)3@s4g_4YzV$>9Gkb;6+hMA(zxyU9e zvos!N7tmFZ)iL_#Fbf3^Jd6!mSeg!5U{kUcQaxePEBn(jbdAzfEUfJ;j#2U{3wXlP zm>7G6GZx;tfs>kqt*5PM@Xb63+2o4f@e((I;Lr8e8ESVyDq=lajtZ7(f3+{JTUyl~ zv{*@}sH4;!dXh1S+4=g!9PUd+sHVuOr(crPk+epJp{P&`5qoCINeHnrXz?I;i={*_ z#iL`gk5Kj)5(6z3h7r4gJdOMMb)g<%0nj{gQJ`GC#rkxRYVdvG%h@7UFe?o*;ti0R zg-&Z$v0D3E($j*MfZKd){JTEo{K>f;ml@Nxh<+!AOdXfa|{=l5mgpq3{h{(v}u^~ zHld(7vhZes?P2yW+Zr-|<4Z0ba(J5Qr$!Mv6Gd%<0xXa}LQ;#=_Q+^Ys+PM^W~h~% zjYfdsPGHM*Q>|_n91HSQuo6N9S8S)VNp8l^c+~v=MdP%tEPnM8--{+>Dz=SbA8Z^v z;Nz8GRncz+^sG+UL1%So%AWi1@DYC`A*k#tISLY0bo2>D4c=(*BMH>;5yi0gYuKgR zL{KR*6$KXems$?d)>T72C8Mx3i$wqJ?P+ugG|eg)00Oj?s)~48kc|q3zCkLu^W*vr z+-R%9e5X49=thJ#KrlwH^!-d2ns9u!iO{W=q|9D9x3QkB_^+uPv#`=meSF0N$k-wP z@o*JEnwm?;P`9oI9|<~+(B@e$HheE=51j0>W}lpYvO?lh5OybIL8q@M)pk}(Ec5LB zES>hxtQwq^>|vZVTgJ#6x0n<|nOu=g6e@ZcAr*Y{j86;(?>TUeYvq6Go?~oh_BGBf z=w`Mx4!VF)L#prk6;{UbRlaqgrvd6^z|Q*v*O>Z(0(&dZ5;RscP=y-}+!sY-T-&iS zyH4N(7mNWe9YfHTwim%hm|p0G2{2pls;+ib7*NJKQE?&@YR)STf@orti8zBcwVl5N z|2twC8P_5CEin>=Yz$}?P&i3<)&Dzkyx15_P|Wc5MZ31Kx2t57rE3}vO~>qM+O>Fa z4$q)H699c8nYSwnBBG6@#V4L32Tvfm9Ap#Ar} zZsDD$AP{oWk$sLwxFKCCVoR8<*f7zxGH9+;Chu^ZWCMf{f$CEU7*u{cU%h86(Bn++^2)Wd- z%5yue-p;67%3L%I;S8I!lpzIzSM7@WN_$zTzHC;!Fz`BCQ{DjV4uxLvnhx3zd{KZf{4mWZuAnrJQz%XCW}fVBi)Dpfs2~)rWxip9UOeeq$}OArhFp63Xs|}lPSiDf(;n%pAlf( zjibzsw^I_Rx!~0f$%ZwHDVD{2+9s$$y@ zvlN&Bbhe>9q52tqqe1B%kE#|tsIt<1&KBNAs;iij9NM>{6B|B`x=1y7?RBw6m_nzK zuNu<8@%<==Q`72(3bn<)y;W%nUM3GPbvi|M)5n%K+s4cZPqM!`Se(oTsK9*NdEgLD zD3+X#mnNICzn}r{Apt*~F-Kfnum`k+S%?K~;|-2N_LKvJZF`xrJzV3&&$6P-!s3?^ zgR;j@oj$9j#UY6#`}R_yHg~h+S2FTa>Un(enxjKaI1;7xO8KlT+8r_j7JG)GJhB18 zGTJ2+YX(3yog@A6U`E?y2-iF0AlGEje{;K6U9MeLu5F!Cc`}082H8a@)0W5d8y`9W z(PytlBe`+hs+T}+&xXvKvfF{izRpBixlFwS)*5ts4(J(Z8~HYmyZHjV7x(azkjsTb zK2l~!bK1EPp4!uhk{D;kW2ZbO>SUmNxy*cO!x1jMqlW^)>>)1aoy1(volv{!WgHhl zgUKl zXvQ=mui0hd2zzA(M<1`QDENm);kgk{(4l#92dlRWtG7z4w{7(l2D7;JT$2V`)2-fK zqr^!m@cl2Tm#GOu~OBg2EMVQ&kqyo{6yx1*8B}dzGS;(lhZEU<+SIn#MERhV4WQ63eir8-$I@; z`bbL?QA9x@X^J1T7@OR=vq4BrJ-7%(&V!bel!Wn9ZqlrMsvFMQr_(Mto-|@OW9@Uv zRZ|KfQCg6T#^jddGSq52L$LR9HNA;SuY zov@r6kGT~5Fa!($f2b;kb8vd;M`P!CxL*`dp zV@$NX&D)=&tEBdAYVm^si8IBAFI;)p66)QdRq1RNe}AD&m_fBmk(!_?m1pq3o5qB z8*N)uw2y|^)S$petMM15rm?R-i2k#~(F&8yo%5JNQ=YUF<)4o#q+`Caq6lRL#-x(d z$p%eX6<^y294e*;5~0OiYVof&|H9zM!T*Y)(Q_{_&QD=N)?n=1qZtInf1W;r{|wV0 z_pdp-ZcEp_iZb_Y6h>q&soV0}6?J)DVwu@>TerfwRovf&aBh7?e_O@u+o3 z_|B$tYv%agrrp+8w0o!iw(i2ut(oI{o4T#9Xm`>68rynrxup1O&05f=F!OvD-lm^T z{nG@Y=bufLMPN^a>`{g~#zgrRlIpwvAW3zbx~;Eh_ghM;JJkKRORCxJw!UI~|D2L) zp}K#7q*{p1t*_|sHYT^I8Vy#$G^-PG|TZpRqe?`@wR;jv!xM_Zc znESUYRd*0K&94x1|8}M74&tWy6=Lq2iYhIqtWwo-1zC%8=ZUHh_zrrmw6gxS>soUC zcMJF@Q>?y`v?}j!>njwEKR~g%jY9V=rPXa_{(rZC&2ml3)3eIAfS2j`78=z*|9edJ zf2BtCjW&O`mQnw%W2*l|8TFs0QF+HyT1?qvDk-DNHLBtlR^Fkzy<2;{;N4nw77ysX z%ap9ijNiRs&>5!}Su|eaH;A14G{|A_1@R&`Z)90TMvlg(S3gNRA(@$s#!-fMHacX= zB+4fAvOXHC2R7Mc+QG-;0E<0Zk-q zvdQ2Cy-1b`0Yo~Q#Dn111^?j=z; zHtF`t5Ks%J$%HFGUZom*S)zbKzE7acz$N#7>_R*ms?PQBozzVZu530ahuxLM%AuQE zNdXGRhrjS2Id;1mMRa>=(8ar~6XqyefR1Y4Et>euqZT;S-=8S%Wg2=RRQD?4Vc~}=P3JB z4zR>wZEc9&?Gl()=P^hd^$HUm=%S75WUB7mb$KJ7C!*~dT|3+E>R?c&{fm%fLUPGm0dD4gv8IaHjk>5%#nYQn2(h?a|9cA6M!Xe2ThK3(nHf z=@hMB@XahbW5H+I-E@pbme%eWS3+{orhIv8fDy{{#e0rz7WG^)*pggTV46!|P=PJe z=V+Xt?t8u%lydDGO!;mB68TB*2;)0W`&>_o7FIj=_ndyh>@Vy1Eu{Z~eg4-;fxU7} z?Ar3j3xaPX31n}iEO0tj+PVJ-VbJi=Jw)Ga3aiYZMaWop?PJ&uWQ2+{k<^RUQ+qT|;dWVU@{jA)=4h(-B zy#>-8#of;pDY5Pw_%w|LSUF$y`xA?C9xWpS1q@|kEkWu2ImMJ&IpvwjbNlb{GLB)Ig8qs%1em_LyXVBoy6D_JM1V>0bp> z9O)@Yr)zEJ2#gG*)0FF+)m1^nCxHjHXaN0uzxiVe@T39#uL#z*WOBa>2NM645rM0E zy=K=0<*ev0)@qn&C%2^b{p0}#$49uK38V^7uZzchJP*MA;?8&+UR5Ar%I2!}rBBuJ ze=hqO1{Jbobo?Q-*dKylhg~9gv`0jaV}8y1)K(!63BEWnbY@#nME+nB4OnkQKvjXU zq&VAb;@W+`a0*x!w-d+CD?Tzg-wcxYb3}(Dy%?y93J1&f%uYOs50KUF&f}~B$vh<6 zHjPSA$KfxIA_8c@NKR7Rej@id!{`HSkdt<`yjh6I5Zi_!Ch>%V0j#J~q7|E^Qq0`d z>7cu*<072`^gUM-P$%g%5FoG6gOdmyq|wO@#|a71G8@g!qsvhcXW2B${L1E3%JgxV z;sYs2v>Z)sV7fr3N3M#ZAtCSPQCyH*;^}EFjbF}{!r|R$AGZq%5ptgQrsTe@excD>h7$(>@B>9+c^V+_201vld2h(S z1LX|jp-2xeO?r4KV1>h8IxxWKmzp2) z7KZ}#2eh&;G*C)+JvfC8!w7>MWZL~Po)haPYkGL&2|B5@N*OhQqz_>#VR$B8Lr8ZM ze>uSucV|C&VB)r@ods(9hOa2tNurM0ky+IkTP>5+-{SW38Wz9f)CC+OYP8JiJnnbM z*%FZCDE;tiS5Z~08z0kg+>eK0azJ!@%KfW}0yr7~r{N^_RbpQzc2r_VCWb08bYLQn z?Xc%2=Dtd+*?gdCRD(72*DEV&P_AFfZuN zA&Gda2;AC_aLaStthFCLJYhf96s-tm0VK9g8oK8D6r}1TruSa>uAd$UO>lke#O#?E zHenP>hkYIL#*bnQ#g}Rgv%vi4l{c&VMQc0IzgtFdo+bng~VU*AZUO8eXz=M4}Lw|e5`(T z;8&})q2yN6NB#8_R?g71-dzCmcC)#;_F;do{`20>t9G-Fzgz8AYwfS&2p_qfM~Md9 zi%u8r6y|@(U@@o#ulUa{|M>t3@WYm*Qd;`2fk3obuS8bg&Ds@N9nNxY!x-ulP(T{Z z_3zu8K#31foRfio?Z)@*ZGFD+K`RoY^rBKxbyu@}OO;JG3@qc~xrLE40w!y|**SC35f;?z zOHHpL`lFMduU~?*Ev()+16r&z3*CO&+mB+IxOm^r)IcH-RJ! zdX~$}P_Q&H?>v`xuJZEY%8VriY<@0|NtU5vWjO$5IfMT#*MepEli}yz`1_o`tINTb zS1YV6&#MLBt1gQ`YIQkB+hitH6HC?P4uhU}gP!1^C;XMn8T4d`d63KG==&UW9YIp@vNLXQQmm;tp*r*rClzIdsqrX6s^Kg7H>?j$aG< zTLn5i>~XdVbo80C4p5jm>lR>dpf$619#PA=d2Gw`I#p(3cRt{dR+hhcGn_Yf2EC8Q z7+5XrN4Fg`TF;v;%ZP1MHCT+$6khg*)2+}itk5a1&?&4ig9V(f{Q=A{mjM3o%q76= z3IzmMfS3LRST4wlZ^J>^PR8!uLmg`9OVKs(GDS|sU`4~pvb>)ug!II{A`)=Kjh0tm z6*!A75#8)~k!6K^I-lUNl7MTv{gQmZIL`&}F~FX8Ovnqq5!-mDK@yo)gdO;^*s9>E z5Zu@g60U8;E$W?q6@50+oKg<3fFTfy?Ow^=LcqrplYs_;>yEbLx%7GPgQ6($MO zgNfl$B0s>(qjB1gds{F5elP$DLa|lw=%Mi@?vB$eJ)M}7zsmBeq{8YlIdLI$v&s1B z@~S21>T)eoJ>e|B1FQLIk&|3}0^+jQhsxk*93yjfl=ITM>Aw4hJRJ`#D3yBqA$ zt$-J32#YmS%8d&*Z8j7OH@JQm;3^E{LJe%(s)5Zrw6J-n78Zie^LA0_K8Mf1I!kVW zwBG733j6#vu+NKN`|FlpUkmyIj#Dd4H%W)loTGEI6f0O7kcC8lKa#P>o3t07#@*11 zM0ToeV7!G(-^`x6wj#&a)QPrHJ3eV-=;@TL`q-2ve}Jg38R65<>)X7(pVzT@9WPHG zaaL4*Se<_Wnc#&&G+gL5!lze7Rjye}BX_hqTY19QRm$I(>=40uQQrg}O4qxg=r$C`y;#k}0JA)e<&SFl2QQL1mipgn!Nca?R1LfpYf>sEI>ke$yln)tL>;e{b6X4lYwDcqD)=9) zV9g41Hg4LW(3(Tgxpd}ir$uQbyaW`v~g87zvm;QW>}rS0v%ib}~> zQYo2PIw_%2lBZH~dnzU6Hx-4eIf~O~`GF@fQ5A<{cex zDe(6En7?c}bvgJZ9`cHzjJes!4cC>bE!&?_w(phg%qZLO%7$A($ekuDOceclG^%7T z`%(#Y^5ju3_(v5!X)}yZHS>Lr-+H|Hn`g);^#1|dFy*TRSN!0Kvbr1m8vh!0KWFKX ztn@#Jif)#G9P*YG^#$Ewc+ zx@1)gzkXolmj*fu)`F2?Wezu~-n{^H96tPnd8A}|Hj26uf7fcTn`P^a;o37S^qa4YFfdVvZTZt7I&xtz zG7At)2^K@JmQO7-8Pe3!>d9D7cS|1@41JN&ml++A(a{-3+ZfQZ3^VssYcLz>8Hb*r zI^Ak18u_O|1wpK01vKSr8-<0^VUeW_JH8Y>nPV5DM>MmE7B3{cod&(zC1fsxI)by3 z5CJ8@v!K~{2n%@++OM>+j4p}M7%0`^C@NpX=#Bxh^6pds0boSLwbBPr9qd{UZ6?t; zy#sAM;+PbHinp7q-B-0cP?4wSxwlm|@CkOkip zf}A_~9(j9&N|wK2L^(tv2WQ}|rt)tzXP>A!iw2677Mcp;TusPkuuiF&d&N8oFo?+m z$g0b(A|CEop!s17dTz_~^JPSCrvO4-K=9`l$c3?5aB!CQ^*1g${GDH7&KFx^e!9&H z<4=vbE6w?=mFE0UzS6Kg^QC}Suq0$EiMSP*tEt4ltvGX8T6{_R&s;i+SB}z!<9rKQ zMl2lXWedko-+tjZFIK6(YV8oxTW^H*7FaWV!CGNOWa)ZwE;7!Y^+J0lpf?<+Nt%u; zXJTK2FT+vV#5M`#+&K%yItWFZ@te#zMFA-?Co+>uRJ|gw|G>AM!QX;MHAj3NpOe%Z z(f?0?8Yjn4_N3;>&tuG>|5ru*LOA)4EetNog|@$5f<~7!Bq&}EM3o=1$-F}L-)VLC;|ThZll^8{mrj&~-NCZ3&nX|1X**D5I2 zDk#@3DAyL{3T~NlXsqU2T+IP5TEwAD<5vvUy1ZPKj24!1+KytiQ8LB1uxRBa?X^l- zaFKNz*c2;n01KW-pDZi+FZ^LC#pL!T?1M*@E;#`FrR)43N>Hy(rucO#s^z8j0O z@5aBAeRa9@f^zGB1e>d*^}BPvGOC@${peX`80?_rMLRBa%RurI*gUxkrdibEm+R^p zwx?_+l{Ivwy6m&9w&k^~JD*)kc&7Fzk+!pF4P*(EjENkgdtmJXf?VjKS7Gb$g6^oq z?KIbQoSRTaOI?q&9am(W#g52yu4@PHDu3P$YOCs6X(IP}McP&0kP~lPExu#z+9PK> z;5TV6-YZ}HgJ*USQpuk(=QBEP2J^o{i{iTq)0+9G#`QY+XgLdqpEG3r1f9VA%3kcy z3!-+i&SzD=ezm zb$abh=MCt7tZU;xgX*Ll`kYN8I>4atD_M|EC*<3oBz~MJ$3NPb%mxpjSkpScA%q>^ zSWN3hDM#hVRikY!tX8o?*jA`7JLh=k?s=t>;Ilc zg9WURrZWR}|ld zP0u8$TboUX&I`ypvZ}mW^V$UfweB=%^fdj==b;z^z#gV|15-j+@8^uxrBhd(yZD=bT9_v72}f+Bg#WP zvQy8jo<+%MMy9@Ch0-UtR1$BV`2%v+o8pLeQBsb=F|La!RM!+Np^eZR&0`;m-W8I; zuaPY33)XOg`M@Ck4DSc4L}(*(K=i8Y?ZCOT@Z}W3as-tcaQ0j4imPhD1pxeUiSO9C zdjqft;jQPJLgJq1`ShF&uGFWx_#yW-IYOVviwk#ivjH zBIHIsOG2C~=)^|0i*#=low;bD!dmy^B!)?SwaB_E_R)j*GG~u&_WXBN-X1!a6rduu z@}t!9lxbD69h9C0R3uQm%WyS42_-b1^VDv?f{JRJv~ffSjY}Wkef6sP>6`$l!hK!1 z?-uSmrvj>QM;Gq6g*%R=nJOIW!l7H(7^0Qx+Mzgd_yC*!u(R-}mzrsnJ9pDw>gx0| zq8FV86)Y3{q^#rGRX%yr<>>5b2ZZX??;I|m&78#dZew-uOzJRcak`$4YJpB4b1jHN zAJO4brj^TBw~+5FzjX__%~{JT+O2G*+iFM$dX;Le+xAkbtLQxq?@24#OYJSHnHL40 z;*7^OiHM^6!)!W^_!$9+`lwGHG58KD?0!~1HA#(%odtsk#2Jlh(4T^eoNyE{(yI|( zJnoqnH2R^;2&;xkz?R(&Z3<7Lwvt5WQL>_5$dFs?Z~|-I%FfOTZj0bAeAMxfa1dvi zdJYi}&(Zp}hR#4$SQ66cvDUT=KZ}2l3cx3TWW+6G7$)NuZE*R9dJ=? z?qu}($x__`@r63QwY;;lTtob}mI>zaO@jvO!Tx24iqr$u6U(j^US;{O`0SzrAFS=phnK14QE1Y@$bhERGpuG>r16bEMd>q*Z zPyGi6wjACps zg3<;32xsg;Sie>h@&^i8@k0?9S=OUAO0o)})f};p4XYj`sv(-1@08R@u1xXW1brO? zsGrZ`2^s&F0Kh3c9qP2k>^UiWUMWe23D;hSiFb@28$1Ks50_7BU*cgmnf9WWfGGBy zow95ZZ{JkC_wsnNh*P)Se)w?tUxEid8OWo-c%0I|Ie0ApHQa2r9){fJX?VJRx<0$P znh{DlsZ>Y~1@m8khLX`GXeeqFBOoOvvhW^nO{gHoHgF$5qvY#E*+f6YbYEd%&f))I z?_JxRIFf|X@BJ&v%-N9yl92ias0Z_6z+>LS?Ez+XyzSn0NmWu8sH{2D;Z+Y7!fJv_n!=f16=-?!kxG1}vEFomOhMoBO z=nz1QU|(BKV!ncISx8Tu#|KtBzpj|Kg^q182-A8y`h1JQxBqC;Xx3l&SJq>TEM1qhhIcw7nkS5m@I3k-wFVum-{e^EM zJ6VkUsr)qIpWjk|3G~+D`1tDT6m>a8k;!nnOb2KoJHC(LDxU(2?3ZPFg~tfy#py7) zr}KVU!maF9&lZM+%NU3S7QF{!P7Za>ufT(I+hbFFm}V17JQ^P*Bb}I)zc3i%^l+r> z5Ai(1zL2TYDLIB9i>H@Go^bi$C^5OzMz1#(37@iJnl2#ue!M?S_jS&^xXK|hKH87> zW1YC1PuEvPfek0=@c#XKHX~n@S(@iK^fbPg9_c)$uTgm?MgMO+rig`SxLERf4^=x83o)%Z>T=jB%_~0l_L~fZ)KT@sneS^@^ zJi9E>1I4Xm)IU5h$?G_GCJ$ep4BFrlI~3` zob)v1){YMiCR9eS!pDpFV}?B>!+XcF2XqvdFK{C64?T#BDKKTar=z3e;l3PaLGM6> zsrw@bhGIUtK>z%=9y~bMAB{xLJWW(bPKA;dAg+Z6503A}GAE5S0Qbkk(R~R(iIc9d zeR%&MabTxRg}wdpA^fRkrol|0N53qKtmH`?rAc38n&tlh(4HLVoHU)yvYeMq|L}oK zFF&r$iWu5`n`D;?y5k48 z)Z`JLOXHkZ=qNcF9gRfB1P6bJ8$@F&`&7)=j9J^X-eu!ndVF8kpT=;tNzhy7t@JoO z9>-ofOlx_;E%nAnCi5!SNVqo|+YL5NVXMIY8joqm;KUk=O^Ow2mBdMMKRuQih8{{J zaSoHFR30ppVdl(W9hOm?>^o(6`jP|u<7P1U4|*xAST84B#mvj_c+{5}hC;w_dxk=A zmL(DUz2ScBW}4l1|K2DayLo~{+`IoEkd=nA7HK+FZ4P^*!z7it7EkbBY6pEu1Yj%^ zG|)gIlLL# z@zIf)8qS+7=QH#ob?d>wy zkq_@DeRHI6Hq&Iaaqsny?(02tnI*Z{5&Z}K2lou7vV1WDuKbdDr?FWYm%u)*=S8X6 zr__w47>(jG%T@YN_man-;tz!-vVyRXCe2aUzo>?j;)ev*Ic-XXdb%+Wll!@_jimaE_)h!zT0i_~78d1CvQeH5i2j zvery5vL%KwnHTF=lZV6p@dLAbN+8J7RM)vbJUr?jm@G});`_aO`zAF{OdsRJ`0!YF zE-7Ame|U7yrk58$fSCLonOQNccHBGK-%m{H^b;LQfJgYFQyqetY6QzId>kLyBgY}4 zfJ{T^9TMtf{zw6=VWP<_BOYP!MlJUIl*Q4{#>qGQIQw}|shPj3++9WD zc$&>9q$OUc#ZzvUy4PnG-F}W5Shn97M2%1JwBLxXe}-!)Mu#gYml6lM6y(|$cj~E- zf-6ix^|FT?yRhm!tngj+6x$t!sYXwW)9ehLc4gtHw_0DEOY3KBV~jx$1IiwTjsM8H zR4KDhr~1iopMuc(1!kr%ltZNh6D=zMsAloJOuwHN@xnSbVGlE};#XMopZ|>EK`#2L`Lr7OK2Sz8I8`xcVBqnn`7teF(DY_jIApM>byy@EXuDq3u5ip$a z8R8?NCkXtcIP#_GmY-qcVF@jF7@uezPE1?SLZsbD{>65yXXSfXzGwzh?cU7WCkzGIKQ^7dN;%e}a;%7s z_yJq>ky%_TpIHMoSjG?jZKclvbH?5IBp= zlFj@GXLiF$7@bXC3t=sY|E59om#AGeG^?LTwL=@rm2%CX4VBmP$c8MB`q87P(ZhHP zBMPL8KP>H^A#)DhsmWkspDh}tq%Q=A)X1&+;L0W4%rPQf-={f5YiwAU5G~KG-mTWtlR+=(ykl^!?eD_a^q?F&9bLq*ucjwPvy?^%CXBbZL)@kRb zpYEJJ`st_S&c8jnb#jxo)!wB~xBXXtd-Q;JrjJ%%F>%VK1`W4uBxr=V3 zLi57yWWjnkX_RJ2tM1~{&WB~Wa1=|Hs9KwL9hm<1>iK(wsQGAsfo%ks7}n;WB3WZc zg}X7ZjuuN;b~G!nG;Hi&iWY$i@2q46U0-5MT?9lusq0ohUS!=NLgt z6d^y6&_xBWZk@PNDGt>-6tyle*rBY1UIe%FgsxF5m3HXqlV9o6_MSdfdiu1zr*w5N zi0=O9pB^<&dz}YyXZ*PH{n_XKb!*$Vjzh0nIS#b4@6`%?d#xOP87y01yZ>ddRbe$Q z>RO~p%Zi55G3L+W-hvK|VY^%Z#CJ8DN>s*UQGhd>7RARhnr0vI{6-IfOK1@rY+{+8 z^>OlZ6c2%2qiZH+Mfyg&t2)E##F0rVX&b;hYUHi$el`;X>wT zB&a_NH+^oxCwXbFcekt0V(pk$D^w8iM%U|?FVgX%-DtF&#J4DvZAX~AC|=-O>=S@q zs$rw(AaT716CXu_4eI4A3ES{j?LNTwZr&Bn zw*aell{6X44-Es^MI%$OJ6jv#M2;>_`)4`^Bz)|j>G+QDad2j5c4KexSL%+I7k?b? z)HmA7Z0-6&c3sM@r#BlZp2c6OyDu2&r{B``r<;!SQ~Z^>yZK1r1m4=W>*{$>5uIqb z1n;73O~NJj{gT7Fk_Udtco4h+>LGijHRWU~{YX>Lfr`Cl1-CmP>iB;WqBaiwrXxT6 zY9j}hm!u*$$Anw+CYW(+-gHU1wSVU&cJTjaMBj8t?p5Q@N(;+?ZN&`#)>ylHS6Akj z6t)ziBE+9ttyaTTn6Nrr3dIb@^hQsBR&^y)l}M?&YK3eYvBIh~pQs0Fwg};WQLlMp zL$2yF4@}vHKwYeY{O#XnGncSDeyT;rYy&~aHL%c+6^ zxLP*GBiJ|x_8itV3&%~B51UF{`S|72yGq#f0Z!tl)S@!rz^Z$O`&STfpCp=YXb2k! z0B3aLOCv<(l%{o51sT2`^U1XqoPIYiu1b7p$KjVGGrh|4q`2A>O4FRuwH&ZFBD^xA z&=#-F*X_^OXYKnB2B$_UdY+^(*z-1zt*w#udGGG++k3a8C&g?{9%`cfUVp!{-`j^P z%bRJjn6BH=^L*5WGLJESD=9c3ub$37p^y$M6B}O^OBBP8U>=b`UING$(=}EnS12iIYqj}yqCZhyiPsc* zaiv7K0n_~{<;z;Uh?*3!2q+qjr`-@J$dkjB%-TlAA|6g$W0d#b9RNIq|bm5{5w?HSE$5(khy7qA> z&`S@0nLaU{lKX&9>>H5DADx355NeUS9g0J2cfZ?5D30Bcw<#H6*hdIz```C^=XG1t zAvEwv^(UeCP6YJ1-QduRWL&i>!`zoe7BGjr5E z==~9oI%H8FzkU1q-`_lb|HC_=GHT?_M)xkQw{toH8^989WVL+pc(I`8Qd_cn7ydVc z;g@%@z6T7Y-{s$d^@^C z;VK+G=_($1xsHiY?gqzCZ)eDZe#~5xKyt4o2+BRq3^<_S>>KSm%6P(%FlHa+|rW)qP3|*Tj*h zpb|Az%9adJ*pt(Q1OMaDY@iW#nU0rJS&}Tl=fElvZx-h{(ixIiJ6r*}0m*V!Xi#qR zQrQg4z2~@vxjB?u=h3f40oP=7XkEo+Jv@wqwf4)mfa!syG)4r|Qp+`*sbbo?4R#&H z4tE<-!}G>Q3-Cz+s}=ojr2Z0bM`Z8Tj+S^8tzYo((gm?ljdsM<8t9;_$WeXIUFvZ* zRWAxQ5t%h-lHj8Lv%i{%$Nib+9oRqN(XgpiA6l{r+dm<{gpZ_Dj+(hw!Vh55!7;Gj z4K-RA#G+^z3^bYukp7??Du&>-c7q-nQ8fZ$#UUxQoqzW0w%zrFFC66V#84LABj{TW zxnP`U`H_sL3qI{_W}0LRRTHjnqdPJ7ip-SXfQ}H3J15*TzZHc#zDXy#j~HK} z!yQqUsLJE&eT9zkxE|P3UAT_kr6m#^JhKJsds6~Hy8VX7$j^LR}h(&2>m zN*Gkis%-BDzVJ4CZTi#tt^E^|`L6)OEKa^~t?#t9ciM9d$&HE8?*a>kEiu9zU=*+D zYuBSLbi#cxDAe-}*2ovp7A!eZ z1f5%n+L%N%5N;Sq`Dn0`@BuS2kEuisd~tvzQpK+U^{?rT_Fwnl_t=4Uvj0T@vJV9} z1Li9sBTq#63BW`ITbq zVaJ#Eb+hCx(92bKW$iv%rq0>+QP!gFUubOWuRAv24TP+Rl5RMYb;F8h&c^w#owDC| zFRjqqR2>VmDQxc>;I1B^p$tX?@K$^Utu}ze%bt5 z%W3`Jvz$iLZ1iza;5Ft;5JtLPfSw|UGrz$a$Us)TFb32{)4V$Do;w*MjTcc`tcx77R^cG_=H(br!V3)dmEo5 z-E*5@O~mYD6ghl-h~w*yDG=-5`BAEAt98Z8uXVN3blcEA0{;AG)9KTA5v$~YqBr(f zuJh6B`D6U2d5XhEb+X)y3~hT7$4#vW{gZzY0`&c3tOAW$JFsDaQ;2WK=ub<%*_O_; zcf+b(+n07Il_5frn^J0my4bQ5>W4=4ke;lEXtg%t$1y7~WhK0;3!r|~Z*&>2wO{Dy z0@$oH=j!N10+z%OfTqejPhS@X_zcEpeF8vk%OS#ZxM~3Aa7AOF3)F#so&b(%Zn}6; zlksk#_A?^$O`ZO=9y#i`Izyq-vO3Da-?5VZ0hjI?k*WM9u_c-s^xV2{ zczmXrI}DIp=%pHyDb?{ykyP-9DlD!HcN;*a6$O>s>Ydt7HGFRQ3XpnBi6elP!b9}X zK9)oTXjzI&J5j+Tq$YI}W-;MdK_;=~Y+$Q-ezij4a_{XEBUmV26m1FLwh0z6QdVjGZv)4KzQXyR8nvp?~!0{8$!Hg3?__` zN@=^3-Krg%tVl_1Z{AzMK}+)KG)=PTQ-6vuRMKe=;1^?7X=g5I^mr7gAFrzQDebIc zH|6`w_m@3Uxkp~|9Znv&$tTrD^k(o|;q*?W8A=Z#?l&#k>V%tR{2Qj;tn}@xK$)jG zhv_MvIp`D6l7ee_jRA%jE*J*~b=MH&f1$v=2YA0ge(%=c!7*Me_W!6l%G>T0Z_^1d z*Yki@@Lc8Sl5`tJr6sa|+Es;E)H(^=ICynl#N`td{JbyTkp#^BR{B2q6P69BAMA9K zj8^>WNs%(6JE5>eB$C0q0y`#q{OZSmswpb!l7S3f9bUge*(8+cR2m z=T!Q3RLrp*{7+{PXty;OYN7nh_k*7!bKO=Dsi;YVNJ&1(RK~E2E&_?SHc(2Au}o>w zfIWU+OyFXHI;mc1CpaFK?-sefx_!&eGAR`mptDi7cs(AAY_>=wh|PS@(mC3_^2vzZ z;$^Cd-c)&0c9%0WVr@kkEV_)Rh>$~1Ker=ov}9oX*Po;}aL38Y)Y^&h5RsU0R9>ng zCQu=(e&!ZtzIK{FtWxCfDA=j33R5Yv$Kz@~Oy;P_NAaR5QpHq@=GBnw?a37zl&=HV zYkAWYago|29Qz@i!cq~;<2Owjf?i&*@)%|Dl7zjam^Wee!kDQEjuqtu#;~1WeO) zTP@I*AW6=?8CVfd_%z|81UDyb7EOm7QuD7*iav8Y=m4Fqhni%80S7E_A#&g-sp0{* z+NuufpLmr_DL}|D9mUA7z{-J(J*n;!^klq4@LlSr1PR%-$>=s*9&cA$#0IZj>bZ#? zN_mMG?QWDwlTaBi+R#mzD8^UKBw${o#M3jPP9G!kRJE;^S*&~~49fXp6r7QGf<}mf z#pus}t`y}a-LmTqWue_$;ZKs-<<@sx%YA zv=Um7lag=LQc{NDW--)Nf?GvAPp0S>zZjE@Su70n{*czyL?@->O0WS{@qL?0w`t#_ zz0M_XpO~|_HOsN}`w<1{v%Wvr|v1MR&@Gd^7ZG|KVP7Qa9hig_O5B`5H40(M+ zdz))>(D|$tuI&Y#4L5r2?g>EK2f~-$ry(4(4L-Z==>Ys_l|_Cz+_e+E{{DOAOA(7? z<4{95Ntfz|t>$QN%e0d-mEhbe&L@bK>u`Wa?Oz2?Mw*E>A9&nU+dZ<}$v2KytOxXI zF^N!k5iRpYHjO^*OYiP>za~In;;m?azZ3esgDhpstFIOb z+!`G0lUU{8f5j?cv5F2FDoe1Mg>tQGB8a00W#ml?mv^S+FH;VZ#)b!5UPg~i@h8;k zQ`HIXg6BDL1+S4yw|ommQbo7udQI_Hv!Sf38sfq>oIEj(M7faCYH73t`@sq)m6BEs z#c7g~UvpnjoT_zI-%Zh!?!j$u7AJwe|D7H#{J!ZqL-vh?fW*V1s4*jH_#LABz0nqx z9z_lKGZ3iko}-f0`)mO-WamxwDBEGHM3sSe8P5E^$kB5v{%oTua*iE}<}t+w%NdnU zB;zgzF%lhY!PhX(tI)N(&imw6RYxHW*nh$`<`bf6lh*LwSIs-jNvI7IIM_V;sAg>3 z0W_Rwk^iYq-#=LF%Z~>MrZqfbZlAg;VE^iXeZ37Nw*IIC%B(2IAO>&5=1J;gO9g_c zZ6U5i8g}N~m>@wFcUwJD+rBF{AuL?pYl;lL$a2}f(<-mAcGPUT?ZROyHXOyn=~IY; zKttLdp%Kor1`7@Ms&1}7>W#}RVy($1cl2ah4CCn!#DAay9??g$eXL@hj)`qHfbPIw zv}e;8q41^o>H zELMgGG(&+N80K-gXeyM1L8+r<0uV*kyqjKpnN8P&DqL8)%en3&6dN3c%VVCWQqAg* z;o^GK5{Y$hRT{I7h9L~+n{VtII-!S&8a9hMyEW+dj*xpg{KIOyW#uc>XU;~FMH<5b z>ttolImUTS@uHZ#rHD!)hU@O4I0vTpTxrUfHzDPal>Ba#19k|a(#X$S&OR4(=pf?1 z(Tz6jvzTOOC_>6rn4%aJpCEtj$bh6X2rTsxJ%OW)39D<@7mkh8Qry<%NadNje? z0bQFX>0+T?MUny^jpIRN^|Tg?Imd=#_jp-O$2+Q`t=X9f45d_FNUXrHs|AgJE0qv{ zJgKWdAq*2ax*!PRD{=`sCS;Na9aBUtHq{#8%k+&RTI~%6ciJ2wqt2|qb9Vo>L8no! z2-Y84wKb;N8X+bG+=?`yoU_6#M+y(b745YPr7%&`y^Yaol4lfRHrRkF8E6BWmX8_? z0l=l&^4~GOOjH@KURb>^lvRZ^zo4f0fEDm&o{qDX79o0=rWNI%siWl_{rCSpo+=$I zEOh4bg@75(M^_OpZ%Bi0*%FpIG;PZ`vt1$x@|gi8E2bW)F3gInW*_LNttn44xTIxc z$De)-)DMQ>%yI3(i@1-KjJx1#HZ&PDVTb>=cuc021fJkA~GQ!gZ~uE#=8T2n2%G*l^9`O&KU z?beE0)=}hj4q)eyfYbQsUi+4N+Tan5NAl7CDxiNA1$5#{Stfz6HBW%kLU(6#Es>~e ziJrL5N4ogA7LypI_RWG0SKXaOD^44laIq0S*BV*yC3dJn^ z3$9!(qu)}GiBLVsAft=#f%mRz!~amj_+F};8&oi)bF8AU)N`*ZT`w}ygA(MPxMC(x zCN2zWT4pULnKTv)NsEy&1qnVn8RoWW9s?7#wdHKf zJASA|6v*iOioMmG8M}%xf$rq3V;jJXVE3G0qSt1AB2Y7TPQswD&K5E$^8Xt!UtCo}*7gW8{MVF6mWhsJ!uMr+#=3GVU8u4GgXv?84G-^!@9nuLp1_ zUZ#uel7h@$(lI{d$c}Ri4~yO(@!p34ATx5U$^G4id&_O=Y%lOUNmryRx}_-Z_DYL{ zE=8!1iVgocinV1CpZ$38yo}dF^nO22{b#jUE^9&=UJ^tquiC(Ko0&YGrc*gPsAQ{} zJK6NEM+*d3M|Ei^N}~aMXaPi-mZV2O5+Zc8a_Dw-qdlQFg|os4hWZW2MpJEVi|&ga zC6mb|8r}tfy$iIJS@@>p8HG z{!X)`UxeKDdzk@0M*2ClWt9F~ZGUy-WD6WI0TMGLV${%_JWPGlFH%$#hcl}&_%8-) zzu4Lolk+pvPEI-cDXZ&}lm&Mz>1P!j$9gu;J|WgEyCK_w8{Ac@Lb4HZaJv@FJx{a6 z0(gXBMks}AL^eW7fIfX4U0`{yqSJv#hC4(L8g_^Yp8?T-Jb zkJZV6yyzqc<}$Ur@;{Ef_R>aw>yq2?E?O(Fe6-i%u+1&Wxjs>2o)7LGc z&SYKa`<0hJUKzMQO;Eo7w?#HB!;)wyagJ|N=SwVO>ZOY(WE@aaDP6GbfG!UZO`c8D zOZ2N;fpwB{&eycb(5B+j9L}>DKW9^Y{h&$_e1wD%MY<(4#*U7SHn0>lwv|)pm{zWG zI)LpE3r$=d$;FZI;t7@kxV-W?+(^7`W9f+a!MvlSHe`K)ieKv}P7(~snqFabU9{8Z zC@rW|jLck=0^>#!a41mB7TS9{?k~IrsgT&E0#=cNaKaKN`BxBb-HvsMiHW7yaARbf?j5-raQnBJU8E=Y8C>3F7urW_D zJWYd+GA*%09vRS6XNQ9j59sf<`F@?J1O3CMzSRZchp@!44G_8=#prCo(R}hXO%u%u zx^l-{S05Ma-`M6}Dq>{$xPUd7&buXye6&FRr6HChMZ87qG+XsI-mt{HPM8W@Pq+f` zzIAGc3aj)MkyW1eT|F}*z}?wA{gf5UQW=QgGlo=9cjn7RXf_lR*9Bd+I;ehXfkge_ z1%{`GNn5i{xj#J|zXZA`%QHs%>e1Hd{aLXdOtjj>adH=p6O?rZ4L%h zbCOruC(pyxIk=;GI9zHEDfq8q2{%tsB6kloMRjh)s;iCy)pmh9N5V#3d zCE9M|X;jM+OW(w2L)&J{tY*rAB_X4P(|yd|DiOQMM*AU{p@@aMnl}w+HAgOx+ zH*fgo%B<0N6?=qB^y!l*m>0BuR9F!!113e?EAgI*Q`tIZngUB5 z>|=mEwIXaV?w)J2ijA7tMgceO&QO^i{+;j7n$$%L`oIP&RNZfAXSis3#m!0u+jCB1 zOY?6`-2cxkp2wHb=clh$;X1Cjo)*Y5W`e$w3 z5o7RTj+vXD!;^p>!MTmiN;XVMw$P<;{?Nk$rHSW{(KIg0SMg=qwp09WF&Fx#8d6D! zOfB~%x`SeEQ$Z>g+LqDjh*=aso+aJ;Z+25gs{O}g39uUcZoLgrNtB2?_^h#aj$uyfie~NQ7f?rr&!m`Y0QQ-TI zY1t0cw@QJp3El=f(JxEjpYUBG9^nh9Ie@*87Z($@Olh8pFM%F5f2BX0#wds^I|s7;zcT_2$-}t zE9GDb?QYR6?X}?LjmkWfxuXYf6WK$Nfq0(AN;k)Zr!v4^#`xHxPsquX zH$8Zbht1=ahXnTAnOM_#hc08&`jViCUwNv>Wgh0y*u%E?9+op&euyO9gyj6O-)C%W zZEgx(M{yXJF7+r5CDLO?;SMjVXq-rS08AMUEGu0pmy>aoH{2Xa^_ z44$w&n~493Un0HC767O){&xbzxeEx63mQsG-dBXgLoWhjcj4&~x|no_b6LPKi1juN z$yhPGHUb}~PqH3330Fa518w%Ls*`GewfOM60#6zwxyamnr(AQwu?S;-3#VnX6|Tg$ zalmSAEvMS|tL_wz9x^p(R^R1Uy#ck_rRd`w-2;7Al_gevRhl29wiSotvq{Al#SBh; z`pIt7@e;W&>O+BQb#{+kneS>rWmMr{T^YVq3ky>|zlt?IsaC^T{9YM{n5hmLgy_=m z$S}l~tr~;qk`kEjjUkAu3egTIRTxg)wf$486p!M(NPxGh_6p??2f^xe$*iqO{y`EK zHfN`XcHDBYX~U@{`nQ|_Z*CllM-)6lD(ox8t`(`iz2}UcnB0Q1IPr_o<@ur0{GCXY z_9;0TYE@{FA>;UP+Nf|o#4%80fe@K57xUs{+R+wpE+~!Js^L?2wwB^*ZEuLQzQPs8 z8M2;*yNe{Rl9jlyDI&z2!vu4QI*jTtcrh@HNAmjW6_ zovfDW4M>LysWLG%0`Y|3RSzHUi}xk^NN$$w`3bM$e??bJD1%k+@MYzq9F?y9g%rY7 zYBxR4wJagwRds=}#ZjN}Hry4b8NLo1+bMN*ELN<+#QClYEn)S*E)ltX8SS3U^?sy9zhoTfle`}q(0a@!2jK2 zJa(|PW4bP8-6dx(1BMjv}MSlTGa5p+==_msaRV1&f4csXbzXL)bDb*pO?921OV)8TlKx;8A2Ge|QRrrZSEE7H3FfN9C!7h)6E*6c zN<7fB+U;&P@$>TacwCO=DfxEuuJP6tzi;ueCq1NjN-L^Hot8?#ZeuE}Hmb$8JaprR z2^$vBHjcBY+dz$R-$~d?10}-rUNwl;@wNXFFN-JH44Hhl9O7IOc7uVNVi^JIOnqIL6Cq4l=Xj0Bu44@a$Qv|62zzCv{@d5)|y z>XjH$Wr>LbVpNn(J&J%3LbPFNm!K%Bl`_lgS}`UH{4Rs98KlOcN3eiJIVHymb)9Rn z6%Wbi$r%$qcZV_=yx@QoIS8#S#VrOV8n33ng}zfk8A6p+2nIk&X!iR!`~3hwGxZFi zUnDjyw_#kSZ&rZ?j}qHBd1u2KI73D@)e3Yg*+8NnV-ZcVCzQfp^?X(6e8y}DJ?vckI)eX+s{Lg-2O|Iyn zBnTC4vC3w0$z%1oY91<^LEYEEowFJ0M}FH5z&+g>{S9!20H^=7nV6X)HpBKVge4SK|QHCRnEc zX`a$7fMcVg4_HQ5>68=>FnkVNWcfAS*j)NYNo5#e=fc1ebd{Gmef)>_A~x}Y=c$hI zJqy&;ss(H(QCzj{!N_mpXa_-W=d9CKcUG!59L*tBn9tkZ4HB<5Rxes#COdmI1k~d~ zH@2qCE?Z&u$vYoifSKoP-7rG^CsmI~8~T1#l#Og2R6u3Ri!{o*CiTL?HgJQ*=yM4; zYP9e&JPn4m%u3Xrdfwe&8F9U; zVfs{V%>i!lUpXSSI7fC5i*;k`3GeI&q?jV*rboQpilkKZa1({x*2}dKW>hc{_8#!x zgNVwIJxab4GPiL?p-$wP`Q=EE9J}}hj1CMh$XXcf~Nr%{86O5 z`=Y9ua@u=V!@gVh3mXZS!^E&h9)*CW&1z$mO9rtM^;^3zhu&dsoIrf8J-XOBhok9r zY#2E^cb({h`6G%JMxW2)DRA`YByOT|P^~SQbv`w?kc~Q?c1J8ULQuEtrS!7&B zxGq7Q5EV}FWwKV4QJi<-w=0Zs1VdenJK`bP0pyc_L}{zkKq5i0kM4fw&fC7$6evGU>QyaP1F2zmM`ICA`=B{7pktc`Y{0~}tgjLHB^SNIua z{WDR^-dNg+sgaYB+H^(_!+^&^k>MY9d}ZVp29vTVJ6!5x54SkoM}rn&wz|$X%8eTC#r@nDwhv zk0>4%isKR>3Za&G+jGq?h1#bP9jG6Qf~+J^uWG^1^!aa>+Wt zHqazi318SBONX%2nFIu)zP7HTJFK#!lk`t zb?J5Z)bZQqRhQJL68LSa((8bqOdX0eO;Btm6ii`RpgbF2;;+&MdeKKcTf2-0epA|l zQg1wDFylC#Igr`13csn(qK3Je>VN$BlG?LsI($n0ga7$4q$+~Wmfw5r zQR4nnliV~NZf#+|rip#0jS60jb_BgV8E|TEhNLE|^nLEwQ<9ZYoxn}*QdQbLl`3xF zCWpO#k(!I*Kj73sX7YCA=~bG-Z&e3e>rP#{_4{I`+WgV9>1$w`!rze^9h9ePcWMjb z`Xqg}%0@pWc-quJJJKKA?peFOIG1Rvac!>R77=xz&y5uvn6R)@_N;pu&zjyM3oN0x z)^Z->J#aM3D9w{n2iw3bSVvusrZM-tuF@)GgL^zf)X9z&(sB@$X{sKs7|EoxT%r?+ z*l&e;H=<{&v;%v5jN1iHeQlY(9HlH^S$V<|4qr(2-WTL?6iucT<;ja=$TP@VSa?|u6Fz}Mxt){&~~Lthf&3-w40y9zif@+Dx;);#dS=-;jb!W_mV ztcqvx=)$5hh)2>}(ykXP=%OQ#AK5j!H1d8sinQKPoeWc-zq4+Qcvc^|v+jCpfYK1l zz@}Ngv6^MsPQuQ#wRcIU0x@u;BCoywA^aP?VIJv zIrYu*Hks$ysA~da{@5MQm`x>OHd8EJwN$91@ma3kkMI#Kj>=1lW%SDuxo&zcj=8tW@#Mi#>+kxH@3Q`J26a(@m=r9(@-PpD#SPv;1 z+Wk?r`{UMjuQ#LrM*Dm-QK?uS)>gw^vSVpB&FYYU(~UK1B%o$<4}dfsv=4sh9Q?g= z@Wa7>yzI4mM32loxwG0bB+4M%ot{?xAt^)|(&2H_?V;^A7=DMV8E=?CHeCvN+^Qv$ zb)>QZR5ES?a_~=Uhl*^`>{qK(nalH4kHm}XUihV6Q&8jTlBn6AX|)fm_FyUOCKng} zbBk(=HuPPbzPtP$jFi;zJLA!R?T)#NE=+1xlk%81u(MZd%x?|)!+EoLI{Q8!)SK=H zbkK#>-bBban-zIzXbObXX4PXAiaPd76y7H+s~C@nRopdidfRlQtT(eJdST3! z4=~$+}YqI96^tMS&P7%K{jrJ)ZCV2&Rnr@>!0l7@2P{+<5QO>)mUE`w{Zlml& zmRz~PIgXZY_=>IM&#XLwUE~|p`RLhzwXTfAl|D3Es62@A{_jt}F1G^%1YX3cQk)qbr%=MELS#j|)X>TDxuDZQPZ|^nCgI zjg~MdQlnY0wf$~2>Jd|?>>1v&Ns*^JpT0VN22-%c`DB^BRUvB|>`p?u&}_E0P++t- zE!jm?QjC_wbNsSQ=j(U$YEr<|bw89HD%Kems}9`$P|s1ndZCfaMI+cN0~GM z70Bc*+$jTPvTi_nJgnw+g zGHydX>RC!;+pUzY(h>SqrR)OG9HwGO8ng}I^6?TL1qlTS>u-yi}lxCmFusxD%U%%%5}}Eti6bSg;mK4 z0HI~Mw#)Kj`?9o}1%^JuVrz=ll+}>QmJ9QOB;pPv+gIj#!^+g)bWneayV$-qT?qWe zx!z%M?kMumn`(Elg&yqYJH$6YNB{ZH=$q~PfH^aXw~2Om+}w&M=tXNn>qBE}owcpA z-nEWL7AjM*v4PeXT0lA>#ed7Sy6zo8v(0y^jQU>P#W=D17WwDfN3@7jT5_d9QOlsk(HHXya8|F0xm`1*o{uOU>pu6Jha#S#vA z$PaiQ4`}4mltb-!h)RZ^G3LeukQKNyx7Fo1Xv$#yp?bOKY8j!EZkEq|=jcAoQMOv= z!r7~{xzRPb-)*3rB;(4#>$&vi`o%9Xzu^TYXc)Tti_33#X$f#|zj5~%KiArMp;%;!m)oFg~Ki5H96M>61XHFPT!IljM3Ok_Vc@2$Z>-*l}*`$FRWF(r~B)2%_j z$Nh^qvyixds1xyd1{3a4!gvM053z6>|jS zw{Ktn`r}I!!_$TbdNDkt=1$( z&(Y+v7y(6vM^Zdei^>Z)XF?Uh`oQgW00bH^*U<-vQJSQ-!fogPaHvZ=h#DBR9@Wm2 zPib}@%~5eF=?;FA^h_ztq6#jmvYG+-QSrRccLOruz%_#G6`f1n=p~AR*&GHn3NWT{ zF`X8;Z3eO}){eb)l>=Fm0RYkV8rXb?lzN>>-_#I|O|-_U{$Jjn(ptob3dSayE^kWB z*FgKJbTrF$fp9~!0_>YKOsY@=*sAz@lqxS36#rR=E6ddqRWXxE0~-DGK!-51FOg9s_%uCeN`=W!0|b%)!XJ>Lu-7)@*NRw@xNEn<*A8;rHLN5i4M9Z zIfnagqn9mUfUG>618=Di7rIfXJ}h7?M)5t?3kThw>rPN}A>+uR*+RMAApenhV-Zcr zDrK$<>y}xbLP4ZBXvM5cQ4uTgtsM{TR-Y57O`CRqFcfTxzEYrwdQ!0gDiHQ}w4)vh zLVa4<&=j0Z#Dt=?@x$iI?k29Zpy+tBx?-?s-?e$x8;!F(INsf)DR<-g?Ip!KTJ;YJ zmo~sH)8AI~t+D*(($DgwQWi9lIv{QGUepYX4Zn3PUw)o>U|GGK>=?^uqP3T5c!_ztcz<)*&hXpzff zk+z035h^Ps^!fGn1NHW)o@>Up(wOL?hZkr|Dtl3hwJEVyC8Wuj9QpsM6Y)_fnEY;7e{QN!@F8@UnA$$FY-Ur{^Xi6wc z%uA?=O_O7`xm(qnBeT^Xx*gU|RezvchRHG?>+8B;*CBGq%H&?GLQI^JOI|3Cimd39 zoORgcJdl7nTD>w(lfl3_0?SoO(N>XFM+*&X$W<<8YguCF z7lo{x6w#0!t^l8uGh=iC{bFF|%XmFZStsN&&X;JwEvt@-%OTlyT#z$)m+Artk1;qf zYBn@n9U6_7zeHgg=r7>9#T#(bvR7GeJ%j!?$i6;as0rwK0WA`JfCUS8`>m~K26sn? zOrqA1I#PRdHmO8;s%+}hIRBEUY3oJhXjeMO?#))DPv-0{(vWXAyu%a7QXP79Hy)Ds ztlm(8Y-=54nUhnX3Oi;*5oIKPLm`Q%X3OUe>Jb#LQ0>b0u1~R+H`ek3c;__d7?T!Z zk9<7oB{|T)P6B9#6F>~uHr>*QhJSTF8z)GF0O@fp8?a%Dqz$)v(@85FlgVy|=<}AQ zXeso2J+zHD2?lq%FjioOj|5z{(H2*mg&`X$HzdBFxiz{t(pF_RqEjZfTwbs!riJZ$ zZjy}H1Zk@^%4%&g*QpJ@#9{CTmdLA=fErn%Y#iLt1frvuXR7dfh2x5h1*^C1P&_Kf24@iU!s2CfUr<-5 zmR)7;ZKbX69rns$Z!M}dY6k9BqLB+*pDrv+TiSegLhRHCks<)i5`N%5fuXKvsNp8baj zRsP(@V{f#Y4&W^XIcl~%)~`Jd4489nAA%Glh~|Nqgf9NHS+Dc7lKWbRBEgThf$DFu z1uAh7mrrnt-WTsK3MeQhvg_t?i$zXJZb6l(2gor8pP+Yd7s)E;oE(1xM!b!=9jCAv zAM|OXni;+|c+kTX7kQ9M@ubTD4m=GBl4JH+6HzEz4qa2^7#TbJk;xoD%^&C223>PTGx#8Xb3I26+;9^ z^wo4r%bnWL@sO2wnAA#1oK4DXGM5q*vMP1gvhLciyH<56m*ae!JR9TNnC5u7?5l}6;v$!I zDH80SQNk2C>;-Ml>cELSPEe#%JF+mjDn;QKRqsS5eYcfB*30`OGF2dDk?RB~7h#!Y z5kDZg2{~OU1ZlE}KYHoDkdInzh9C-=G&NN5f@8;P-N@NO{KV&$ArBIJ=AIlX=VplZ z&^w9W9;P`(ehn1S0oMJuy+D_?uzcup8b5M}pnp5QfUd<2O2qEIfGqM_ZkH#m@ z4j!_^-@1H^chaF!OMh3rm+&Erj1KT5aB=@bFeL$=WSa&E28RhV4896c_(Ec2Ac|3J zmN2SRzLlci*ms!7HwhG0<5$;9Kat_hOBDn`A38u%mJ4t;RK@2T_s5iseYD-=;zi|C35cuXC6cvn%{!FL`Qk^ z(Z?C$1(f4SMfb*7ilh@#(_~rS}`R_Kya19VCE?H7o>P00fPO6qfs#N%ts9FfQ&u{q3hRIiMrRn}mdW)6& zRC)7bzmm;9yW{Pi(}KbV@5=9kvzF-ri<_SNXD9-6qlDpUel`NqefJ)(w=3nJOxxowy}X#V1P6L z%rWrk^IV^S{P`NaQWrC8;jsxl+uE^PDJUT|FQn83>d#x5r;kCMV{6$1bU*-$6Ln9E z^_`=?u1TaR&nW~9Bs659YG9-Yf6_wO2a7zP^}d6#-@jC`Z_GM3e9i-Bt{`A9HRd10!QUVNhQPH`zDqc=2yhONl;a7m7yN-33 zJ;?KwAW?r#)c8x(L-lo;^erm8SM@&XaEM}ts#551p2i<{(;MC?^x7`+DNjySFQh_r zp5p54kiPxHTbP+)>aDZQL02|9ez12@^askDlQ&j(GR1w{9Ra5`kKdrV3b3Bls1N?W zSmC6@gcAAhuJC?qHWfOU-`c?1X<+R((BGkfU!4YibsO0C0zZVjg}>Frr3;+x?BZ$m zi4L)Ll(o%#v?C*kait5=0y?AuAju$Fb@nO;lz61?_YVH3XOK4ktsW=Z{8b+!n{M}C zNi*jl(eli4bdg@h^2J!WQ7Q+a?GK5fnOa4jYk%o{nI@2XVZWIUkV^RLi-V`Gu1iSE z#ns=b=uNp-XwhG?p>_oqjx%>;xWe zr)MqIkAJEli#=PG7k|sMUzTapps{;CRCCFSOF*m%JtsTX)~F^Fx1*0Ca<++A_l?p$ zhFa(-p+;iQ)lTa7`c^#&7;hqdhkr!Uw+HvI=P%#9e*6CMtM{ZF&i6o49+3Ay=;i`e zxV}rn(ivt`G^|v(=_Xci$ftJWPyO+|d&5Iuut}=3q|iffy;Qm5@x5^`Rk>w6PSI}E z2J&tEX@3;=_D8C~s3<-{{kTL+*2%I&1J5*9C6nX*d;9lQ$svsGBSs=pnGX(+?+p_N zirI2Lo9b@vkB*KHhq{{!*f2RT^Fz3U>gLmfd-q2Bs>B>X7^ZW;@w%8S;l?`4@{g+E zy)pjLT~Vx7lvb@(_HZ;z_H{d>CAE>FIY~zjrhjjkj>ZkXBO|^#i!`3@;SI&ZH7cp& z-TqI9hldT3J;h~bGSf7bnKn)&<&MW=Czn)EOx^FEJ-Pq%0T$3^h9}C%v1F2Q!db6mFpI0){QaI(!~`r&9<98a$lJk zYaInUgTVbj%{6^@FSAvbyVblpR-a^_(vm7i=?apkYYUok(i#J#Y_w5vz*aB|Gu*F`!`FUleO)(^FBR~dP_$UaRF*FSpxELDun0B=PfemfJ zXY?rY8bSN2$B46LD;gk+XPb_Plrtz|qrtAUQ@koP4W(s= zV%>Pg#zv7L=Rk6a7^5=>vihL{BRu|*VqIn>lJzz>?Ck^LN_m)GU=-7Ap^&J75EvZK zQPq@sb0l{z7O9knM&P2yqi#&Lr+v-z*VN%XVj|AcW_Ej^;R2s+2jX?db;fWCqBXVY z7#0zndkI&&RygDNb7w&p&cKie^pJ9XOe6al&ys8zrYvE*4I6(GF!jzJ#TLfxj_Z zeIPHw4!@DTO2|}rxK>`rXZXO9FXBmxkIuK5i@C};Qum}Veud~2wLs@Z3-XLKoTB}) zpxt_qRq`VMYYVvKc3K38l6}PjiZ2M?H@u(xDsls>j>TS)J1b93a7Ac2E1v>L(5`)u zYD!c-!a`~)WJXI_pQ;WbYjfBXxTo4YRZThcfn*6ZaB8(__+XK_D{LeJWJxr`&3Uv5 zn~Fk|+T2hX3N{A*ku_?yjTNCfqo9z3{%Z#o($f14kQkgbu%#eCZjm~$99;;~wTtJY z3+oq1T|4Pqp-qTuI!R~1l2SlhWFE9czidV9VoP5fMp~T^_5V=y4hr`=NbdNtv!%BH z>K8ieUw5x@f-)cr6OeOMK?HW#rs3*tu)Y#DsW$f?@^{^bQ3Hryo#< zgJ$$K5EM@FJvQPWDrW>eH=R!P;^v*{F_E+Aw*?>P{+unPs0CGjZMfq&GNrWTyd zeDifE$V$x$44?=%sRe_!tOJJEs8wu`B5-F3TjFJI*_>_(7bqbP4i9ib?VG z{XDy5)OMlhrQnuTrrsH_Vh{MV$D2r9i{wg<+oQ_#-MsssczJpBQ+fNRX7ltvo2|3k zt)E)|&t0MZLFv&ZgO-c^8^J{i$r9!M}F}(ZwzWB%_NMF5Arm zwWVX)$<(sm@R)vRA)@+z865vX0L*}_U)HNobnJi%06{l`dfBQ`uUCbj-B)B#*wiU4 zm(+h_GRTEmXd@!?$hf>DrZbK5BJbqr6B#`)vcaOa`$90eZ`m0k?jYD7FazKA*@9p+ z&1N%p?$@tA&l}K@mlR{}hv>B&Xg@@7+7XIG%qaf?_pWA^!rw|}nX&3VdHzY0)-EF! z<5r6cm_hBKg|E~M7HPr*GqU+!&Sm>ID7&xAT1FgKXsaq8P_UWHJ=Z@t(^veEl*ZN} zA%J?Qao%A1y~Fk`SA>TTIPF_j`gdz^|31k_kN>Ez&ZssPvJDStnDN`$dDT)Jt!X#5 zfdvBftWiVoIr}c>H(J8_;p>>DZ!stTyr)zX2h3LTY$HOKGb|5Ng>NTt?VYZ%DA@zg zGYW3@Stq!*)hR7Nyec%>vV>Q9i7(!#jcGb2AHdWx{#X<<{AWm!JQ` zgI>5BIH~@NMr%vg0kY#r!vpMZG3wvdBY`%W=oun%3oV-*8gfiJ+H z)hu2|#tuHt`I*)QR@qQ0&y7if?^X0-jCufMiC+fXH`GDyxMuhoXs^M#@ih_Zg9R=1 zD~6c2UYq{38nx3(7+_Q^09&(pF-zx*3{6pEd_lo1b7|C19Va? zTBC8@vh`@;%#}->0%T%_SNwn@w462=pc5`ft>`2CNyg~%6M98+Nc1h!OE_~8(b0}Z) z3vsGns)VU1!$m2}mY>bjaklb{a;iJX!+`g7L81zy4HBd;6egPh--oG?5 z_paOOYzD5V+~l{$UZ8Ic_Ei9+9o^Y%y!4~jKF?mwyWZa#9Q5vyROQ|uQL0j-fIo7M za6N?sJDXzWN5kO+bKoB*mEF2F_(vtDG+CvShwLR~Q9K7fr!-k^E!2OcEV5~mIkZcb zx$@Q4a1*K}Z4oC=vD=iZe#`uMR?aXF{}t&U$~V(^lwK55m{iFBPH;X zx_aH_1meB&RkgcYM%6G|UA%__{qIQhwz+|@!~}VOb0U;Az96v8m+}1L4V%1#DjQmS zfjry|n*PsI@n&?67bzzJCOE=6j%yp1Wvkd#BMU-aBO-l;5(X; z(@Bk;19Z-K3WYkgU@517mWO;X5NtsKfodfokE%k(y>`?%&Qhbmh8G$wBYr*V` z4izlyld=L^HD&0)XB+`kJOk7?44B19#a+OT&IZ<^u4^w}yF!d<^qCK^l>Yb~NePah zCqysdtZ=P~Q-k%%y_>mQn0}t|rBFjM>oK66c4+Tna$%v@4CE_dyy^TsOBmQ+n7TZu zna7W7^FCYw&IYnl@&JAH}%69o7|TC!K5$iAx+d$rHR1EMzdl7U92ZU~^(Fn>Y7qHq)LwD*Y3k zy?X(qKAq#^w<+u}@Q>kQw>wvi*T6atZjhy2F74i+K8C7p+@QG^#t!^T6%)8A^sJ4m z5ZGgMt{j4Eq_ggt(q_#*fA#GA-J8cxp1=Al`t7K+)|Dl=&i8L$zdV2cB3xW$ijv>G z-B9wox7wa8_X2U~axl50Tq@p?qnJtJdxFO^j&&L^b^s696_5d|o+@)3*oWHqNu;gmkg@jHCqN>e5?r(?$!L2sa>3 z2%z2Cw{@vjnl!~QOx$)KhIn+*^jmj5zhUSp6X*y}1gZB%zC81CIZxkZ_!7{Z;M+GU zR<;R?!{J1zXa-A9bWxJ@>|B~8JUf@hJt)vfI4m7Rp5QxG z-krp#x)u1b!jggvwQ#@a^@&w+O3`&*%W-Ewh5!6#s?>$EKW{}%+)1-}aha8=@nC?S z2B@&7>xgCXo(*KYi-OnEEHq6weXT&;H_w!t;2OBDjnRU?NLSgSDb{yz(J~LwMVG@b z>4peEw#^1V zG_nDPV2{zs4dVh9nEuHzFv4ij53=l6T_LH7)10nibZptic-M=|c*ZLWR|7gytQwi* z3%DNviI}z6@d1Wr2Yg>lbi#uPN1E5|E2Eko z8q|D3>zO{A(zMx@=2@PcomI!8!KfL{6`W1VCxr!>3^y^P1}`t9s>*%*EFEQIj9{i+_AI0noxjNJ`7Zv=$U6YppDd!1`;V(B2HDWV%lO0(wRgg))Dm7dUxaF zOX5ihxZwo*1b3m7G5@G)NuzH_BtGxjS&}kd`*`ORISGKkc*7G43!n0cfGnJ`j9(|j ztFyBjrTu_`hCT&1Ib<4{u|N*+SFn^p^2GY==h6{S`xRe8ktKh+6m(Li$=A!|9R z4rr%^iE1mQAJNrcq0pJ(KJ0R~V$4t-(5a>ZPp@5t2fm_<-#|lwFGsVqI2`}PSk+=Ds_&(^_aVjP0e1W#D(e&k!miq zGKYrx)wBk;X}TX2)m2>$$9}z;Dv*0}c}-{EEUVPnaB5iz_u?Ntd)v(`#=5dusT~*W z(rxvoORT!IK86Z7v-^>zvTpvId6N+HZH(X_xHyt(HhjdZ#&yMfQ(y#* zr^v!kF+V{oO+$D^y?%gb$n&v={!*@Q!nwE0Dy&<5&g#-q61<3AdqSn)CHbbex{1Gr zyqG?Ca%-uoJ<6lW&CPp z=$o3Q5%4-34Gwkb7~8o zI9^mVlupm}!`hP(rl0K4uPJw8BHZxXI5Nznf1u`(5>C7VtmlAh`UQO(8AV&oR?8g< zmx3y$I=Pr|*G`}iuOfYm2W}a=T+&knS^m)7sHBKH2}W?D+o)ll$!Tt6BL%7;cJvfF zS}fyf)XZ`Yo>Ue}k2+$3z*K)`(mHmnbS3r#Qth z^pYk=in8}Cf97ln{B*bkF})d^rCCKoEQy?#SA1UVhWtXl&cYo4+y zL5Ul4QADS`cK=L8h3*QSB(nP5hIuSto8)V~_)0o64bhyCoLvW%e}a#$nCWj5t*bd!cngs9k!!B`Els`V1FN@LJJ-;ym&b_pZeW9BPX*= znAyq>X^jDaf)CIS_W@0}8VFp$y#g{cQJNK3%|3ugALD5OcV7BAEheTRgn|-Zyz2K_ z-ereTfBT_o_BLUKNZsFN7L>c3-HuN8+YwOHe$RK0!=56Uh2nW3XLz^^Nj>P21s?RU zlG0-cu8WH79J!x#-Iyb_N5-dGzZ<>Qe)B3K-H&NHV^%Di!{N(hN%5eZWGEJ{H2=2B zsEdbX(_O5HKxb*k1k!&q@rDuU!^ZpP|G-= z3xJx1#hR{9l>Pzv62&6}D5}(6YPyH*wAJ>G-$l#05EA8k!qS_G4V9vGEu2^MiV{RE z5S=O%osD3`s~4#GQ3C`Xel72Q{cP$b{J{Fjv{>BN0u(Bcf)vyFC-~go=1Q*vdKE_F zQc0rRm5I_JqXLgceCQ*%3;=jW50Lxdq4(tNBcEg)-%wEK6XHj(K7;YhD#!NX9Wxs^)i}xiQM94JD+M0j9 zh({l@l%1`s-^gYsDMqu4(0%31`b3lsT+Iu76UP4S1sIOfX{Pio&As$0E@?SnxMtZx z93>fCY3Y$3H+nmIPVj$x)NkxAy0tbBt z%Drl%>y|a@-^1?dDEkz$D+U&*;XS$3iN#$x`0&ej&%@yE`H}_2<#a&rJM^JE{u!B1 z-8z@|L>3bm@k$dj?S+dinOlMP@_x@W24m$w?|g+X6=Rx@$y6I%Yatbrc&=wY}E^wxQtit*qT@{NF*SvzLK`TeA6p0 zM}Z~`%M2~>GJxWp2R$?iBIwZz&=(L35(a(MbJjZ_>DXHoBxBBHMqG+bQeLNi)>>k8H2 z!w$~1aW+}bjYPk0Aa@={M`4wv9r<5JrlaOgb|Bx;Hc$F(B&dO@tz&oHo_l9FmR)heqfQttZJF3{gmyf?RsuF%y>{KRmRv+Fmzz{luA8;paiwKa38AbxTG?J_FK|u~GVo>4 zEgT#>9S+Doct;nTTUjLtF&Wfx#e9lvWV|*Un;X*lXOkNbXbQfeqksS?Xwl!Oc1UI@ zAt?uG+kA(3L|px9LoS*wF5?+q2S)p|RyD&;gAZ6SUsywz7|sZxi4tR6Az@f10CntR zl6I7Zu4unHB4rb-g}sTx3H``Ek-&{b%mh0Az7xrB4AnsIDEsZY25oT>-a&NI-`>d` z-H96j`pXbqy?v>>Cp}^#9gmX_aD;26k{nq@Tw>(#PQQUv+JJ+78lxRq5zSCV8^aCd zsB4hLq{KdnXRfH|R}TK*K66nb++OM5Z=npnQt|b(({JmgMg&d&rf3nBF+I_T;E2N0 zS~t(y^>f7WV^9P|A}+rHe6&EdoLT(KQW;C&s93y3?&YJ=1+`Pafr6CEd28;DjC>% zm6opqvF)o``k|v=vp~8`lktLjht^IFh>zwC8|{Gle_KTcYV9cGBA2Dw2A^N(*~Z!U z9z^*-5~`<7ft2+Xkv&|(*@A9o=)vEJvqx#SMrR!QRRIqlI?8#?1Su&!CNvvqhYx`2 zam+YUM+JKc^MhP*^B98chjgU_MAaYNKHb)AP3VLRo!H`po8j7V3Wts`_radN_)hpp zYVQru-txrJgRCBL*x|+_4yzecU#~6y^zyRZGvohb?@b%qxRFKC@A?&;%sWHUZc-#A z*|HSJ&uijyyj|PlSu{FwliiX!;ubb3k;&-(_E!s*0vb(HUNSQ;bMDPpY!rY(0Vos- zwfGCz+q&gTCeIKi1+KkBlCbR)3P80A{i%FIWR4Bp;sbtN&ZgkJ3n3Uo)4e^ z>vT}pyA0bP0r4Fk?y;bI?3kz4(S4f=(Th$hK^pGk6Npg#jPyB}2^n7p(4>{sdO9|8 zQIf&dXscqL(JGmO-b1xPkR7{6(0W8_iTA}Ipit&Kafn@>9 z0&OEHA`eVa!!@kH7T>|`RfC>ov-j!~K_7Lc6+MBlmJnM*o|i1*a#%_Vn<}wYv3vko zMre>vp2C4w$Jz*wx#MgEV-Zb?-%V*6ycf&_4-sk&85tt<20l@X%8y%*txbKBctjh|yNq*nF1h*jYy718T$Pnn`QjaH>l@4-|-%AmnKDbsU|r|;bIRT^;k z`nn+aw6P|rLd)s&ykJX~&(KmE+UaSp)-Ya`QCTILq0{w&$xAmM z;Cl<20-@rMjW;RXD8E1hhD97|rJgPN*+lKd@nl;)87o~R@R%N)Ese0gjPE;FSw2nq zJq@<8HP2L9cV(Cp6fU)PfpbjpIhNuJlO)m&$Z3~{UeHse)8s?2NocOr6v`cH#C!WS z7QHuu8%4!q(3a@;;TXLo%-C-`+cDb2a^2+yru}oR9xaIBVL ze4970u6Gw0K0C3Ubki8?yAb}3%#y8qbt+xCBn@s8kxeI1SsXoEu8jBC9yQZzVIb5LHq)na?@cz_U-RBjI6+~;gO z&c0kIHPHR2{wrtm*~C=>>19^FG^tvngC&;R)Sbo=D`DLcpcJEgnpC#xq13YQ35%uL zknq}*)0NABiq+-%Rk)x%3Hs=56{uEuI37bPqf|NWk4CMvG%g^ARUk-rxfE|jGuOJ_ zgYT8#doFzN^z}OQ+G|(#wwy^P7U4j(8p&nPR%^;?KCYf(A~bJ{;Ji&k^R}p*w}6w` z`q{H?50wKQ=-J>i<`xg35`5}|PdAu56*Y01yf?mcPAg3iOI4;Tt1Jf6 z1*_!kx4OT@RQi~dDo-od&B_>9vFO6R&52mo#d6etJ$;D()Q`M&QKOxY=fxWpB}`<) zaV#<2?`SjPeo-c8@y5;D`xslUtH5D?jILmOu`lG(ZMbPWjuxkJv^-T@S_BPkp|QU> z(^SMzG<9ZS){f{bJwUy$9pN;a;00c~9J^QiHt8t+^TfLonXsUB8Fo(?2%&iH^pk>g zkS_h+LI>9jP2`-@OV#x?;)_#`LubfBMhDcimBK8nVAb-FD~w-7AvMP#+Ji#iE;T>t{HbV z_!nfDCcN)rxZqO|qf)#jFTHP}t1ymsK1n&O?XTBmojn&Gg*+1$HGJ$^oZhI?k}54v zgN8e$@G5KZ$N$q&gjs5>ot(|{x0!y4MxM#fgW#tkhlf*o;uSEr|&$4~M2->R4b zf(5RRQy>Eh935ALBaj8cLnfCI5gdO)be+EK`DblMopxKaQ-qxhIg~}4thHP1b_WhX z`!J0T!OpkNaYI(?1gdoc)!HU7KSrbxF{(P*UMVispyVluIsrV@3rE<35q%%E;nr3k zV5aOr8+Fz2_jmMnBkE1F0sn@W5e|4VD7l2Let&c)uB~QH7=3Y! z3@<#%ijZdRY7lG5#-?)>i4xe~k+e)CfLbcfCx5w^%7tIKY+k;>e9C!sTdSDcPoLw` zT{IBkrD1}R18UI&~ zCTbgtmD0Br754Iry~bty-vDKzOpb+OX#832(T zRD-A}u?9pW2PKivOAtzMq1>PbBR6TQ#Z7*9t8mU11BpLf0F_A8K!_ZowhhjRDO$0K zFzIgPrOqV4P}WSk^~lVb1X)U&$?|e3g(uS|oV`=i(`&k%W>XSgCn$9YFLRS>3OIlv zAU{2+)1u5wYSx_u3Y?nC)8kgAbI<0r@bec(}ExX(3)RCo&{6W;&k`BI> zDR6|W^<3cuU5DUmp!Fm0yVN2+O21a&m1Ua)a%!ULr8K4X;_t58(fCK??f&>jW3p$! z5rqn9moS%di_xZPlqRkVwf<-v3_y0kAVs6BpA|(iT}Jg~HdDUBpPkK2@!;4JKK4^p zRHrj5XWR%ksPhGhsffjpokT~Wv>O|@s>OFTPyl>^T+OJSbSaSCxkdV~hd7-FwvlBAE$5?tfPP(-k>Q5c-Y_P5=At z!A{4tqBHTp$1VfYDTH~F_Uun5sSA{K7*wR%fsfr?{Slvt@dHzr{h@JEFxQivFzf>$ z(j6!Q8rW1r-yZDmV~(ay`#mpkgb=^!u=5|7Q)(el5)IOq2N4`@ZYjk?!EJnAYmw4wE=?2UgqcrOeP(UX^ z?-a93P=%&|j`>5q|Bqi9_&gT#pKuM(e^H1Xgu!A_F_Mw?6^IEiO_ntjO?0qqh(7)A zSoHtmC1Qx_Do{gk9jW{|QC%fVufnjIs4ls~jT zn5S$&$3P$D8jXM&qQNFbf_Z-WYCg=S7H}M+EZ( z@G5u`q%pP2agQ*bokdYmQgn=WHa+>4 zN64+vI%}z2BRY}$0js^Uq^?HST?jssqD9Qlg`&i3MU`@+HL=5o<3i{6DKeQJJQ=`k zG+hEa{CS>Z&_L99CWC%#tVqX{UkLY5N~F+Do?`+gjYV{ep4o08E4YPMhg)!p4$!Uv z?j>gCqB=U0&4)=3Rsd;aZ((1z5p{sGjrVO-TyiIa|;PG`k@)k}*0iM9JRktEDx z6!(Gkd*5n!ATUl3l$o4Y=^%QXI+?s7%j7TxuX?K)q| zt-BQtENQThUus^`_d+x+p9B0t@gx8pX=&sr0E>R8m>tM=RN6plmP+5nWb1?}K%E~k zxsqKG4PT$d>{2hMc%7>(PF@HWIg!D5(&3qT+lUXwKk$PVc13w&=VX);2xYDzd zZ1~q-i1h%D=J2~dQgd}&-A@hh<;*E*R+j|2Z9!d46U_j{fqw$$7^3Q}XB*6^7X6q| z6nTc{2y4JBYqE7h1Sn5|HdMN|k!dWUtUWam-^rO9vczFYN2%(fGCT84F1g7J&4xx zAx61N(LPIBsQN`mm{1BMft9`|3;b?)yN^#r`{lwTY#N)Q^HNT%x=k6bZ1SSea!2-| zG9k;r%2-Kfv?#lAnfp7|bM1;~nZ3U7wZiy+&JWFE4x%8lQ5GxV`q%CwJne8i2K^^r zF$yY=IPFzMI4FWPWRyk$dc5jH7HHY0H6z1_ha5A+8XobYS}rE;ptLBw=JjY9KedoT z=)qp^Wz%Zx+%$A+CIAJPN{q|PZ#B-m$p5`?&eJcA^Osu%;$W}9(E^0CVAO5ydL`m+m7DJ~j&@tHI892ckxl6o{Sg?)e0rMnLAJxYNH6JMTqV;KlSK|E zEpL>}H=LUr#q*#G#{>26r*7(BC1DJEUrih*^Wi75Ai_F`uD3g!{(*~rqlDk`F<|d| z)ki@YuM)>+{2U=Tt~e5W(pGYRu^TWJ$bDCb=o_JYqlEm&oZc%hDvmsrE23(w#k_~K z1OaBnXi4XI;3y}Rbc?O~u^dB;<7Ol&+ruPGg3`kTt3$s%=8g_6vr!uT{PX3e}%Vm7@ut$UC%ejfdq@@tZh3;bwUYqSK&;i@;RVDibWyLH@-%Q6a(Al!C(3TY%XklKL zp=f1BP3lTfP7p~v;2oB3HLo?RCnIVlB6~NR*UEaPbf@8hWKp`!s2Zt24C;R%^+hPd z8je0WJA-9ZaEK66(sN2@3i#k8e1jfu(iHkb`%P)aMNPh7$?%*%MFWa z-#>L?NiY9#hADk)?lSafTBi|puVU7ZPL}ag0$pHZEBQJb=v!GMSDC5PBm+x zR?L}NnMh4J0>bX^RX|vG=xc)lElUTFeFx~v3k%b6QM|{))R>{+ z5_*!%632K=?Eq6x$1_8w7)KZW4!KMQ>dZf?olst2*Ebi-S9&i|)eF3EU&@sp4%a=+ z2Kk5$xB10_oMaypYLuC`lxbb%>~?c|d$IBZqKV(Gty`8*=p97Emoqn)!rq*UOv{OP z6_G*2De>JjJLMqt^s2kai*TZQb5J>nq}_gwH;m!3O3G@4)2QdgLtoqqM-*0o|M-U$ zx~dOu_fjR7AzJy)Os`_0eFs$u2S!~+xx<&@xcL;rhA-_a)sQT2;Tl26=od5qs91qErzg=tTNYgjU^8q zJ3lRgRMoXMn+A8d8|CS{vi!t)DiDMe2zSKJ%|&?(+Kd}2C>UwHH=4Xmmc6V#Nid=? zpa1NlBK0bsVuS%&1GqbP^F=NbFr*&I=WWA6##5~MWU-IMxdQm*$_qtZ2G9C%b2enkajiVpSn~_XiRKN z7&3cQqrsi4tSNn~MC4~=M)*rjNqTIHxUu<;5$WZ$#V&DUMI!5I;_D05V3ewle;uwd z=MjGLqxVW~s40Pf3^^Pe0?I{lm@Mx*LZ5eDpb|S&m21&3OVwuCa5CV~4#6s|69YjT z%kFt;(zLxDAh=#dsEZwBm?pT1FF9y1i5c{8VW_0DjuD|rl4?!SbXIE`pE5bS0@j6I ztry%XD$O-VTTBZz_XF3F|_YPoCZ=-*Io+_tHEB+XCXN4j`Ss#-=Y5)rIu0o zBBulgbo};(2|Z7N3UoOo->`{^y&>LW{OcOk3B~)=?DIoj%vobz4<)F=1I1sDHI@3e zhT%p_l~!_pr@nfkA`fsr2b{)ewVDUfKr|P=P~NwsJW_uhm*c1qY)GW0f}`#+`@-|G zYlQE54B9@X`@cuODrw!+aa8ponq4K+QT-@bOcqYh&qhQmdkh`awDH*jh+1&w)LLBK zL_+D?No=!Q5TBEiS>7AS{amza!DfzIm~Nq7i)xKezh-D%z(J^_X%F^GB5hPdlfl{= z*s<~;g(0DUjEq{#bL0mTu0F`wj&=nf)chx;r|_2@#tZP)MTuz~@e(^eUKJgc8B)bv zM7_<>IU`P;BhQ}g*m-_g2@N-oW9I=aPhaMvm!tr9-a;@ki2rh+zHu=s)ag_C-O6KH zzI9$4eIq&+YHj~LV?{$~h}Wnzi(FA{BsCJNAc0b)5Zf$w7MKKa!J0|lC7S&;#Rgt#^$2AEuri8XI*I44<+1tD^O_3AqZ+LOpHOz zp`Ir0&C`sQ;h~3b_wmD-(Ep4n25pq(%))Dz@^X^mdU;-&JD>(1|0f0XV>bxOLU zl{z*Tk0`cI>Kg1zs-GVF-RYVAB!$sd$t&DZ#!3Z@k|6&lTLu+EU&{Q&*Y7AJ80Rt~ z`#RECv3Cto;#kjo#<=jcLg@J zu6R^1k1$#eBIu+1IH>NgK-RV2*8dj>MON_`qHe8qXG$vE`&mTWT8q^`{;?HQw@bsx z`;58|>rlf)6(GY3M`V7P8+ozVJLiq5C}N{N1D(KdVVupF>09!{l(PF;VL z?(@}H`^my}?`k|Bz`>qHqr9K7{)V3AC~L(px7cy7e=9YLyPeIwdX0ojk(;H(k;#5*>rL{S2#bE)W$L1aqtGFpdY+(bHsDEs~YTDNkhaT%t$ygs zrK`PFX){Egv%C9gG< zgXxdrT7w{uLdF~Y%1%GFAX#i9=k*I57Y^f&UhSBTb<|iH3DXdcS9~k8NPE~jJaVGpJxPZUzGUGHOQDCL)lK3-uC?*2eC2J>AJ=zcWHt|Ask zUy1QBsr=F^+m}~CYnLMDz8y}Z(opBL&XH)h0S@)jx1xHV?P2?_`4Pvsr3wJqIS$4t z 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 kH6Fk+}K5jfQsaO2+N zQe?k)VPcQmv62V|Rk9(9B}DL@BLXIUi!ucXmnP47bctezp@k~28Y#1kNIPO|XI2}K zJrFPJrW~L#L=4BEO0mdkn!B}1Q@&qoCunG~Zu;}JKIr?kuIELIoiDacEyc{Th$^AJ zZq`uc%8RH~4s%7N4=E1wde68S%v{Q@YU@t|*KMGGr}x>p^*^K@B`1qBfmzKmHc0!t0%#1hT}0z&tE@Fs_bBRmj|^OMNr{q8)$s^+ z#%t)X@$$_N1K)zX^2Dg>?(1$Ura-YovsvJ0vCcGHz>jpMyJAj=$2AS0mbYz@6%0hL zi#&S3B2zU+swAg4!P-*o zhFjldz9_645RCTZVa@H{M^+rNa|S%~(3Qr5WXZst#>9$@+Ew0~860u`xVaUoxIhss z)BGKMTA`tWnyB@pX~vxX6wN7_OGh+I@Qi8~E-p0-eF`9TNJApUJN0SCO;6gcrd9L@(CMqVER~OBg;y zxdP+Jh-!zG1Nxh53&aCQjrq}V^or+h;QRxc#;N|L2z%7<6vqaq7ll~`?HOj1lXM!3 zC!*avUl@hkpeQSjvF+rsfzrp+^T(izay$lnhNg*&0vKpcC4?mcD70Je{8xoA;_ep) z8|leH)HmVzP}aFOHKs**#xeptv2Z%;jY@o)<{`L!K8wZFc%4)SHZBLK=?A8PrkmBa z9elWb4Fo&9u>^jCQ<0jTk%NtQ^cY$J@s6dQ;cz1p9mlaM=;^OW< z@A_Np*|>v1-e;-hi=4h=1uCPh; zbmu}uoxqjjs(V;6GX(sDCsAPeEUg$DW6fI-JK`i=sLF-ek{p_S6_X=Dj5HY%*oukWd5C zBMe2L&`%9pu51`JDrgOQv^=nj)fHb_Ce5YS$Z{840ghBxbf}VaZTH$hP}|z>)N8`zTc6ISgWhjFqIf?_e;#ri1_dwWfB%<1 z4_rBQGGFx$v+4(&y6UB0U2um=?krm#gcrZfLMv?NnS%g{m8Is6!oW=)bI~lmko?ZB zZ72DLAa&EN=65hQ=FQj+8Vdw=p4|?%#h{GUDHyE=61PrmmcRRvzWbman=_ojtsya* zhx%0{C5JuprO&T&{-agRJlaOnN}(FL7<~5hvwsBAYB@ZG9kX-PjClVRBhJIU)ZvcU zVJ+3%ULFY>6OMHMe|)4_+BJeaopm2t6wN_45|3)yQxbTjra&|Av!`j)sTGpA2 z#|0w%QD}8xl}h13RKFeFwJrm7h)h$|k=oNdukMKxk4u_VepA+vtg0?2~n7Whf_jEjt>FRv8 zl}tN7?Qe~;VZQZCa8}gK4D^ z?z^1(p5*QY369pn^ts0Nv}V5oQ)4Nt(h!qTt9EBC)JfF8HSi1)al*~>5ud_XpfX|J zm6UT>!e2vkPD#SNbjYn&$|#^7LBkWS7uWGau!NW(eD?ISub(?d9z($??`q6F{k*TA z|EQ$=R%0HRvTY^3O4^>Ou(xBrn2LJ$j*k3cg=j#Diy+XGqmFaoPJIuH=THTt2ZdK{o>atYDW*N+kGy0U*&s^LZwF4@ zC#)E5tJ)Dh``1V8=E=NxjIyW(MS;E5G@wFG&FjW8gm8GI*%WcyL$FJWJQ*v=&`!YZ zABlJidHE66~QI_sY#(mrwH?-fKtr@2GXd z(@v=zi|5qliP|sb9;<1WMbpH!Oe*KX)kK9zmg)@Fq%OIp4Ol2m(`A=ib5owVxO9kP zR$L?=p^Ed`#!2iMKxrKnkFp;^2{6*Xjb&(T{WT6>nV60FuLh*UB(KU5!7#Ip78b*d zi&ljLj5wCrd78`tu(s3_XU_7`6X^9dQ$vSlWyph+_-cjZ);73a9tfpru6deGJ11DH z@Mmxy!}l;dScXxU1L!{dkN-G|PR7~rqtlzvu7(rKRUUqz8y-9IX>R>D{IVYYb_B1i zP5RP#e7N0taJ2c`QR`0YZ(FUV4hNdav!JaunZh z)#MQBJUVQY4cST}QEk9Ywp$5;vw2$$nmxy zM^B^XT1~_4pns}6Rok_nn|YfQ;7n@?P+P*5f%Br)$(~J83$f4RE-mLb@-k$IdpoGZw<*1f>6qCS^I^4t zG;WN%OX&njP72a#QaMk`{$^UMY}Lf300m(I$OXCO^+!Fu-)zWc#7~;@v6f}7KWqK% znZ@XhvvJst=eMtF_*c{4))zo#l;_`2sg9sFqe=&^nViGlF<4{Ql(Yu<$**hw>-Go z$0!osHUKoL9Z3wP>N%o+g_tO`#O!NsKUkQN>_v9e23J>QtntdUBf>)*)(Idl8H3NU zx@N^D+Sr45TbvZbWC9FBPXchB#Q>Fs`i}RvC~(U&b%ww$k8&8FW{P+eYsHh9t7ssG z+g%%0n?6$wP!q^tX^c2@9d0Ay9jYH&Je9z8%3Z*IwoLbM_lDH>CcOK(*fe@T0n{l)J1JN2-2c265746I_deOJ#iPkY49MKx z5@-!grjAW32r&BIM}aY_8N2J+9DOfGXpw9bL0gho1l#L4x-(w%xwBci{00Ij{Z`dL zOb`G?K)S!N*0~agG`5LBKJbDJ(FrYE21ixy!c&gY=MRQ?{o3kTjTB=;#PtTPZnEQ1 zmo?AVD)(Kz9?ChA4udrz!7IQc!ww3{`CJcJvlCxrsE7+;|24W7-Jn@{r(z!?jj67e zpyOzp`V4=y+`||IpmvVm6G|i28{ry)XP_n0absCIrZ;S@)v48W{oM5`SKC?*BaFHM zhN`SbYU3SF+@=ohn3i{9k!HAY{>>>LykI0+u0}n#r=}*vSYNKErko>8c&ECdr$u@J&$`rZuI{W5l-NxaG~H28XiMK z$dw$WJvl2qI{hI2n&p{S(wBDjz?YnlT{bSO2^hZNdYWSnc1@(&&?SnPtm!`+g%`

+kgC-RF+Pu;pQAcIPV#e~kaaSw7S`phrxUh>FFNam z`IREy=vQmGtk_a{JuXlFB%hNt9INPma zo{sb7nkDBj0Xs&vs4rTcw<+fGK2NSVY81XdWA)Shq&_Q6=D04$W;OHH63|;$o1y_f zH+0qXoLqx5V0b6WgH`iK+M)9f>LGPZ+ za&irxS3`#T$Rnn2)i_}L-e~czyz_4R;e+jy>p@-xLgYG#S7MBvWbOuF(TcRieJ|%J z4G+il6^xP)$RVzgj4)7zGKmF!sP=TDBE@lqyI<~XNLHK8gPS5z|DL+kIMj7@i6*{j zso1sK#+)dcWYawL^hlkm=Xawd{>2|wM5JTXcPo<8DsXP}dd#m~Sh@X2Z@+)EzyAgb zE^LUsGNpEDDh;Le>gc<_zIpqK(|qzt%Yyk_6pQy7Jq%vC-@SdCNJb0z(1shvxGcAi zRvU!V3KqDQEeh0>RFB~&hn*~c#*MLtY(|LYhzT+Xm~f;H=5?jK(w>z-7a-Spt<9U*ny%H zg85(vrDJ76FQd`$c$uS-p>zoDCv8hu!6Z5obE{)axsuimfVhR+bzE9XMyZ-13dW5F zO-n1Kw4~d6t&TB=i*If94q{jgW5f1!XA^VLU76B%MQhU8yRq)tba`ZiVs(wx(=MVL z7_8aV>n2UrA-iGlVu8Jujx~lVWxqBAJDr7ch510=s) zp5?P{a(R{_5C2~C@A*Cs1|F zm!<|@AMuuxmCH~m;uFC+VtKk2gBLR%*=5RhJcSSXoFO&)Pz2PZ&a0UhI1FYsn6>GI zI}Z9fGdAoKD~NmSlu;ukP8yS9HKL80=}Hfwa6$H?M^rak_Jho37L1AlLEdpa#C;;u z${Vz#EjS)hHMmGH^-^36G!chb%zVtqMBcP{Li+peT+Hq9S`8q)%O}i1`3guP|IP{X z5_lezz`a}t$p?r27f!wolAC)gN-z2#$ymW!8L06~GhUvqRH7%O-xv&NmX4%DXhfd(g5=Y@f>U zVyK4JmS0vRF*{SlG-3%CcDAGaO@Ksj?{iu#e(id{tD*&R?FKaN@{<>FJ2>W=+2$u7 zY)n1~lJD{`#g5sgd*Y_dwO;a7rt_r-j5c5Tt&x?KTc`B`p=(o{2AMz*Gk4dEp-wE*gYnVP&F9EK95 zgoaZQ1~5s)y_iMu?+3z!==ZvkZVd<@O}D0WYu?Cf2mrEE(#p0wgWcmt#U&dIneDx9 zZe6(@53bY0jrH@->qCNZXuNI>u0msdKK{@Cu7nrJW$W;^wy+xp^}W~j#h|{?+C%38 zm~b=3DB0QQGICk@yskW>8!K7XOg&vbylIV>>&iBvYBfRM#@qx1AW$&!ONrxwd9+dvcH}bf#7V{49#paNx9oEmOdo*_|VTH8-%40~wi`x(tJ zWAm#0;+TNx(CD_p`7$w!8` zxw)gUlWZk48a*a`CutKK>CxLxvYnt%ejhhLt}s2EFNZZw=TA(_N_qW4Z4{yEox{bY zhAqoT4q&6QJl;F9X-lIvL?6r*ON*qIiewSrh$CBdTr9o16|dDjQz;aA!zth3(?)EM z`ht#wC&hA^sq@!yx*#EGGV!)D(Q!!UbIhojCzw>lFqiGKWLG+;b`Z^$j7=c|jQA#< zF#7m1^Q>6StD2oGfaG5paJjNZEB~;*J9f2JaqJN2G%1Vj-2<`t9xTMFVaA zDTt_8ntE)?KLxptclD=CD1c7d!bjnlEN!uAOvTK#i$q}On5^bY6Tf$iOOpB=OWp{p zin1sA^3)Wd3uwn@EOczj-lP}CjBh9WVzPRlLnRaUuILN>ec0SDbgB-(*}0Gu#^hBl zs*%Z`r>vOtE4k;FV{@y~V7<;;NpLv#%?pJ3)(vE*&;c=UKV;4j+gD^vxD5J(V*C+` z$<}^*?EOs5a?I(OD_zF`Nq+wVL#IK6uZ()W*O;n010v=2lEF=II?Q0^H&PvkcOS91 zfu1;AbrY0XDJiZ&#o?qw`QwB=TG16z(yY><-vhq%r!ko#x8^Vu+eJtwxp;?-m_TZN z^+yfJ^ifcQFNzVB`f9Nchqb_zAuoGp{E=LwgpF=m4;61+_h$goJGhVh-;>y$zz^7A#HMdHm)?YqrR+elsZQ{#Dxa1fBk~{{bge1=D>upL0 z{=DV9CVq=+P-qQEQs}kHs>QuuYlJDv1tsD=v8x{b_IgeH*KCHbD;0l#*a((nk{gpV zTK|7mP{6-Q-L_ksJgQOTIlG*ObpG7&K>upG@ahg|{X@=a?t|Rc`Nj}0Vb*?HTtnC;QD7;S$u7^io? z8ILEEFUH5?FSE(<=*zp`46@xX2Vai9*}a>7eRt=0l%?A|)B3-ZpFSUa(R)7lI^Z%D zZ^`sLKS`ng<)vlRDRX(TZziSr?R98O{q^#E4}HrkdKIuQn93~PmAI#TaV#?TO@|H|Fh zRwFyk=pnqKy7^2LSkxtNvXdv5^XdkMRN}PH(F>P_B7`>VU^dd|1}p&IzaRJ;wK_lq zF<-qBd0}dOHekJJB(v*Gex-_h;NXs_+WSiX&@qSqs+F{P zW>UihOQy`|fwoCKfvPE@t5t=NY*DVNa{tRQ)5RVEZkLL)!b4mvxFfpwksn(N4mdEZ z;5+6sr5>N2q5_|`3C`v70U3SSqX8^wXKj zbs7qg`_nCV^}^itQ^Y$dBfFAe z>AV#E!FSBv)cBvsQ{$`IH%!?$GZm)Ewf-%!ryDl@JGo6GCV3}4rg_N`M8K+elUZXw z;i*iys6zp%NU{;&BsK~kv z(aEY8?s@q#ec7(B!cH||gk|5WIQ}+lmYgNhDE*R=8xudM~j@M0ciL4tuhD|nF z6m4u-<1E7zccOuI?4|)eovQ)|Ug$6vJcZ$I!BlTuzr)lEJapx$Esf4V#5-d98kn^4 zX;9tsv_-P@PgZPz0HWLAy|HG!jj@dibYg5{X*k}=jK#s@alsO8Brl@?)^{H->hd)e z4OeMhs`8fQn@ktmc(qutNtX#hW!I)!uLGaPZo2weTC-tk@`2#K?@06CVQF$9|NmH; z5AHXMXV)*;Kja$n@QQ5s@A+8`+u`(C?FS8vr$Bl4l7AR_w~3 zUHv=Q>G!KQK&4_Y;(l+)wZt!L9-J-#pxH&-zt&|-%FGbAvDKx2cKP4IPAkclW9NC_ zx?H!!6wd%tv+Fb}J*IO_R_5sp5WB2b9Ac_Ey1VPUOwF(3D-93dmdbXnl4Y7thin~* zFmCfaqyFRbgIMM{lfKM$&l_}HyH(O?0V%E3=g^3(;Q?L^D#zb;{SUTXrYdTldS`KO{O0?H-Tb61m4i+JlR^^BuslFcBlC2qcm8 zk}PLetb=>A2Zzv3_V2yV)(_|dZj7-&C%1Up%N$s?6s_jAXL@~%uX2%!#sdx(bMRnr zC{cR2K8VlrQ@eks(|*@K_~~7rgFSA2pg)s$hn+udE9&sG7q6c`0n*V>ta?RByqfhi z8m+C!L)>P==)6SDHA-XI5g0T}g-dnCNih;BH=T}GP|q=+pK^3%ubILGy1reDmyTHV zX#;N`5%+yWWQM{PeV}ni)I{X=?W@iJ+llqFC`Nt@v#4r;bf(c9+0~+g$Hf=(#o62?+R6 zs=N@W*a4m_7Igk%Y3``y)qM|3|{73x(HH+RxMj zCdiwYM{|5TGA0YYu4s7t+v6YN=i^jO5)V-zJA`8%tomSSCur#qgNIk`+!(#PPHF zcUsmNrNpi$I-V5_(cCZ?7ywo3S7 zx}g;T6=Bo}dv~7E=@AZ_3Ut6a97Ui&xGUD-R4K6k{{=&6Er5xT04!V3`O^hf9((y~ zB*najuq5{$h1a=}_DUE!ztZTW8b;w^{clWO+MfB@#xKE-HWvfSFh= zHExZR4Anx(tGoc%whdbvKyA=4t`_LUS-(D1Je|g?a#@_AwLIhWZ9XYmjblfZadeGM zXz7?uS@QuPxzh7?1r&+)fNDXz(lzfF&MOP!Gg!ZBWb-Lak`o=lhu4KDFUUenF05Mz{*{%vewP_SFlc4JZ9Ygoye)p zwCZ6UnP8md({@|tmq#So)+a29UO00*?Cm_P)1s9|yXQ5;wkpILEaW&K%Ak&;H`|30 zz|GJK0AD==rG1NX?vZTlGjq{hzRn9m92)8m zB8c%z!P2yyp8%+7A2VUdKVL1LfEU$-&}*oiu&BJy+(b)XfN~6A62q}|-}b|u3LCnU zv>k0)??bfxP7<_?zTiX8S1{nh4{U%}8sxI`BFFASbC^U}wj(V4(1+CQ39K<7UjWc?RIMZo#-$f-$Ra9N-KhA(u_U)Z`FXicuLJ0 zusO#xWxk;r>F(91zwOrZ0z8R%hcb?Szu&6aNub!CgMSJ<63tv_r?k91jMbF7V6;c6 zgOobhk;L~aslCZiPyHaCxRLq;rEVEiN&jYxN9EXOQMGJ6&b3#`^*Adxn~RyiNycoJ&nCPDfR`IGB$bvGhF(6Kb(5OYIW3zP`Rp-K z2d`qkbC?=lb^6{X&(-@}2n#)nATCgO=#7h9;1JRK5rlcZ=N0xKBh;=9GEpO9&YDLz zP?aSC2i22fpu}LI3H9vBU~ntIDRUMoQvrS8@;tl0BYZiO!9 zf7=|QTU#mC*5?&2EZLLun0|%JePFt^O4f~zJ-q9yF4wpg4(%hW5kmk${|*hMuBpP% z{0K4KJVsHT!5#?6iW(P)HKc7`J`?qPlz*Sim@5HcHODq0@*qSz4*Ii5+8pVp%sP4< zwm9+WN*_GSm0 zc*clg>}0seda}Ay3+U|h^ju7f7{{tbaZzH9w#}9Gcc-*8iB*2Rvn3H)j3X23F~_1= z&3P%#>V;?sSQyqUGOKtwE&yM~C)N29Kx?TQ%+Inh32b_*)UEP(h5H9%SM{P;LdnI^ zSy(lWn2Xk-3eJ4kv9)lVd>xcnE_WC}9A?SJDBnl2&1aK-@~vsSx|n6+`>2hKwvf3{ zD!L;85S#9T6$2YaQh9euKGfdfa#)*E>nCPUb86_6+rA)*uyo~*bOL|M^bC3&6i3;@ z=$I`QrlTsVL)I2*P+$xsvM~}aV@LB5oRt#a%X(o8UcP>qGO7V6XnoVfs5G*#q`aZ$ zV8R}FZ_)2hUna?i#B{+3lLgOIefwL#EqNmAM}DY9rQ!c5!TDEz?(Yyc7~AK8Jb$Pq z293Ih?AC_ot&NFghnXO)% z$fFY4vdppi!kZ>xasShZ>rzCk2;!f3+JbqFtSZLTf)HbLUn20#BH07 z5t9yvUN%i+n-ep6pV`PiO#5Pyvi_!+iJ6bT4seNyqURZj+DpZ_zR+2m1BwQCu~R;e z2r~OI?oQ1dWWfUS(Cmt0Tf<4&L=qL?-CODNeGb-telkO}nN$E!s|yQvL#AftAh*wI)Z3U$aFK#tE0^4x^F3 zDs2tLCY~GqG1}#M8ibc3hWScocOdi7`!{A4+Yd3stxb3(0=1PdxC8*Va`6_wq-(HB zSicqu94^~EsLX`Gu8~SsdMKlIfg3n*h394 zMd?(esfT@&4+LGLR#QBC_u>rny}7BE1XnfH^fN(tc@b);snVcrZ6Ej}$96Hr>;>m@ z`ut1;-nEAoJezC+`B-e4i051&>JegOGUymz-$qWE;kl5L&n6)zS&fh9nCJADM@@tUgv88Pf(-1wBy+c6A?t>c=uCqby`x zmJw9f%K}pZ0$bJX$H`U4(DP~y7;4(op`GUZQ-sWl#LLBWx{PNBS2FR;;nhvE8fI(`Y+I`eAoKLHi%Rlk_m1RQ zot=q&b4(OPs}0tj8-O+x0i!Gt%YMFaW)WP?U%K%#AWP5ik5gt;%5}EI$3c8any~Z< z_?^*?oHCHJK~+~(7YCH^>lf_gCTq`|O~=8^af%QgiSuC3*NN$G_Q&1ioTR%h%J-$s z+<^j(oZ=l-Mo1C*^B_sBZO)Xfv(n%O7s>0GqMqw$gK1t`HLe4Q8tl~MGpe~)ibenumV>($&ETSu5!?GbhS#hc}j$J%O`L6bm-NO`ids4S2=l6bE!|{y&nyB#~yKP!l3f) zYVA#^If=~PO-$KaNjxQD@CGSal^nK-_&}akAXRLicX?8NT+fG#hVyq49aVpjy^#&! zC9fN^>U}-Nj@vsgF50+}2KBC0nO`%ewA`}u8#G=EbFo;e9aziQsjTh^yknX5>%{@d zqIi}tAEjvO%q8_aMG!FqZ=B8g7y0{q4jTPpak7o4?H5e))2B@Bh^QSE$47?R9dGGs z*$u0g?QIaHf!>)LX*q7k*AfSio3}^Qul+B>M(U>yyM?WmnW)qj2;K)dul@H`%D*}W z$B!?)aOuwGSWujS%nur+ZeFm{oVnjOX_7XB;c^LyAt_d5qTo+pxn4|?PX{}Ei^U#a z=u7I#i;IhXdPW=Qk~>mi0hrNl|59e#=Yub1cekgs%&Cf#{^{~;+7X|H^<3}+{9sE9 zXhPp7?U|?@?Ph7j4PvHxFlQQ18JkYWcnA%h+|Z4u`Ft+Cnl*QqBB(fsRJ79m@i#sdNHn?btAQusFZ9X1*Py zVMW3<)Lm}IW>@}%rfN_HEq|Yh7SQSEEbcsid=Taw1S!K$o~;G!db!}wjE2yJP{IeU z&4Dw1oOKT2u|80P;Eta_49+OUUW280gBIt@Kc*JvPI59WMs(0a=lxrHITROuq~+`M zyZ-5Ta+f{Qu7y4(`uoH<%BjQ}1Rk#cN)lb3O=smxAY07SaaJ}OjB~o9nN4U4dH(F> zlcTq{&aY!(?0mq z;THeIkB+|G_T(0=^M0{UeKHG{8S+YV9n;+%v7@{0HjPK6fc^Y@zi{dmN zzB$w8%K`(7GWb64Wo!-!6cl8?1K(5o3+oGdXt z@38!VxpEKXJTP;OuW?&rNb1v8ovgLwz|k5SI0+bQ0CrCbgKWhY3QO^qI!o)Z*2O(< zc~Kqa7%%P$dsZQf?q`XNSpQ$`UygBH_d2}=D`iU4C zeuwO=)#?PK&5XM^C4r~M8wsEh<_ifw<=;)6rsZ?ELEk5-H=j=4{_QW^2bJZG;G&BP z9DwGGINDho8k&Y;ilQKs*`jCspbOULi1|-#Uh$3kX#uZVmIR1NPAAk`*y+QmUPh)j z&t%bDLh;PAuDt4_b<5CXwYoVE5X3u8zO@pcRP0DUE*ohDto2U}MnS?`2{Hp3lon7u1 zG>6d}2fK$|&FtA%9MSrEG9^*rWV)W8KF*HmFpYQL5_^e8I{fGzV{`5s?H;#c5wU2z z-kx)G4Q>JkSAO{{q!kar_=#qw@zdln^2ckxSQp2=DIM_n|fs!&llNmgFU0Ns)stsyUjUnvK2LNOFy>aVa8%J z!S5=wjHIK!1CwlrqZ=Ur9=XibyFTGn0PRK@n>KEd@NBbB*G!(E4t)uw^etO1wQDqJ z5UFn=H@11in)|Hbzp$|5d{HjBCptHpeVTj2jL>a-XxD7KhNl^hzeCGQ`tl;4*q~ZI zf-~;&4ODV84K82gvmar*a+YPw`joh;&t_%Ezrl|Em`)r-bYOEWBKn6_i8g9LWo&}7T=Jx_< zU?iRZ)2jCk4MAiC>o2JuhsjnmukP@U?P+w{Ju?Tklie=5pl7EU{1+Oz`3C+at-Kt@ ztGph@Y8@l#{FrL}J#AgXux%Y0s=y6x`z`&*8l)}kBj&X;9U=y}L}*-AQS98bmOEOh z4VAbVAuM;M)sA#BJWQ$se08(U&>4c<|x#6G^cvDZG$s0Ec~2 zj?;NoJ}nkhmv&jvDV8MrvMF)f6ia;P-Mi^B@kBqH<}ZGllO;#yz48jQhkzsc^;Q8D zkIYFRsv|VIwm0lQlX;Sx`66Lg>hI|U1$Uaaq7r?a(W%IbO?)Gq`@H9=&-(+)=_QSi1dD$Els|*H%7$H8gC<>O62{onO|nvQ{s` zI2}g|&UTRjfdv{3N?Urzod<6+6zs0gjsTOxc!!5_UvQ<%IY2hYE-^)RSRH4dB ziAqY=WHg*IF&P--VxN`Q7pe0?HTQ$KDJj>pCG`c3mDg!|6|I(T1?|o?7$yO<+uHPm$kdCR(oA-}! z=k<)$^#XJM(O-_TjOBeG;iR)pB=GsrgR-i(Rcba{kvRZ(be!@a*ya_k7>~1Uu-v)$Y#D$VJ}x0XIQ_ zM?tk{2`!6pF=cZrpl9}MK$O*DTK1C{;)@B(aYfD)9DrZa^Ryf<^7+y@WHV;6AebY} z+c{fgl;RR99VVWdsRVjh$erG^CtdZV2VBGgruFO>kS$8K0$u|4rwno7OL$eErW^*^ zAlv{uk7_1h53|BHtSe9i?C8m+S=Qm+*s}vxR59ZK{WzmUxq6Q(4HrJ-gmbKMH_E`F zcec6PU%z>^|LVI}&%p=|T5M?snNaK)@#`$jr^|wWwz`hF(c=*M9VYVf$qz8pcE&*IPZ!zoFqy9; z($1N2v{n2(ad=|vykdo5$$wuJ%Z%pBqiM-_0lj1iY>_3M#g9hQboTxO>`jh89Lb%) zhofaN|G?qDU?O8ZF`Ts?OasR$_$tz6+oD_-prSpwVezx>~w$96Q zzG+Yxi)iH6L7RaP zDM{}ER9`>vo2RrY0aM+Tovwv5#VB3eU(+k*g7?4N+3AYD@cx%y?zHN|6T2G5IGD}u zM8ZXABD6$fJ*}-L^h}MtBt}EAaI2IDi)+n+OVQS4irry-k*@nNwN;y0iH<3J%GpZDHX`e)jXmyjFnoAvUBVZ&S)4=}Z~4-#A%PKxmgxAuL(>3$-2`0dtQLUT}}em1q|=}M^x@!LdAoJk;eLNt z-nmczZ{H@~eVbVK-ox7;TJ*cczgrzJXb}1S&6B4Q8sNcI5{`h&zW?aWU!Lqo2ngE@ zNW3c@5&rGSyngliudgFic!Ouhjo=N)PtW?=LmYPH_ZNqu%YkMBWRk3&C%Smr^2HrNNalF;#_#XF z4)w6iw{1UyF$rpxO&(+2mJPvm(2!)P5I&{d4@@$F&%I(qz+@_eY)NMF{1!7pkgj68tk@lp8v!M^ zw;3+KuDzPeG?|CJFU-~~aEV`T+aiA{#aj#wIyp_A zft%!GJqWRNw;Uc-ww|o!?4BoxzS~eREr5_&vP<;sJq}ivoeY!PpOf^vce^V;`0t|^ zukiw%#1FUGmH#ZAqiMH4zpb8zvm(I(He1;9mWBpS)IZ1#33N4GuXZy!Hi;iL2PP#! zT+WSs2@5pIUPI5f%}=N40&ldtAIZUBX+Xj}4CDn+B-qa|KSS>uWfLFLRAnSnMT4+% zgh3)-Cil9@18MN*bd1pRlvI}s;B&)5z)Vd9S5+NroF^I$@k3?dkYg`%aCGai#;~-E zkmHm-^1NUCb(XU`lTp^4t%gbK|Nh^N`tuBGy3h4#x}=AD`f!4W2l_A@l}PyC{ug~_ zphbG|fBnz;0%rARP?-L=|4rXaFauiu?SHj8Q4*D&41L@-JA^@W9>Bo~JX=w)Gs{8R z`}I-pzaDlh@&hcQ0Xw7dbIgiZl{#>YuLv6bWfY;|Cio;?XNX`wc} zmZoe+E~Be88E8!|Ta~a0p7F7mU3+?n6meyGugU$MY7mKbL5+JigUhu_QYO;v1UG2mc13rGQ00i5NQ{B!TwqCYd)Qd zS9dn+{q^nkq!^dmKV+lre@oBPw|rZ%{l++=Z~uk;KaV6ZQ@Je#Zr2N}^oMR~mG02D zdqEGAoVj!9cW{J`=?C8is-DO>bI8y=z|tc*ap&^!*Wc}QE1y53_h0Oo1mErK+|tE) zWh5`(!)ItG3c$?#GdRyaN~QN+#?eMLTX9*GjaH*8+CXP7-JWk14Cg1Z5S7YRn0n|t zug!RQLnJ8~=Zx2bEMmbDu4*mluMqHSujezVmjO(pYJ|~qONm;3H55lA56;SLn9#7Y zg8U&1PAV>m1Y~RsY_miS43X{va*fqHNmMafi717E0eG3d&$2m$+3|bpx_oh(%|zOS zLbeov!!nk@H7n>ram+GYMop3dI8Bo9RLp^KXNHRf1puHWhk;~$Gk{_llNxuP5=g=+ ztA}&rop(p-NJ2HB)VW3yZjWe<(#5e|mM0{SpX*WqF*mAspElXnZoz{2GhHilGgSFP&*j2hlIRDAwu>_RaTST}ItZZWhKnt%J2`qTn>)Dut4)m}Gg zB`x2<)_LJ6pwun5Es9qrPXWRAmATigOe3zDbvBkv8r+*!R6fZJNvyNCd|PWSw>)^Z zy?l;)d#G5dj-52W@hz}M@$zhKRa_#m7+wmqk6$ai zeA}+L^Y@9v(4aEM^iAKK^^_sniP^KWiwVpF^O}9)1ZK&83-1I_0PI}~TY#7;aKI@7 zFCkkSujyXjYB(q9=1@qUPF{LrW5>xA8VnuJrlBQvRS5{|Q!_{z902RLXvj+s{5O)b zreU;>m#{x!4_p6jXPGSo}PFKPj{ zwz|ZgJCuK6x!$7LZ(6~DfaT(wqXF~lYEbZ_7S!`CTJtS{0x0Kg@ZB@E2Flv5uM%2D zRl=XTN-gSn$vxDh8f2-K)*Ty{@({3^OWJF~069R$znO?U1mlBJAXI4gYNCeC(q7H> z&E>UTv`+K0T(w=>2XyqO1NTnvo1^>P!|k|Q(F|9=n2o17ujrO%8_>pP%rm7AyD7v% zqeH~{i$NH1xRC6mj11v|~d0WA@{5>Tb>YtHRX0v{gUR>IUFlUuMvv{uB1U zYRwJlYpd-xPLri$;7;ImZj9v)&}mgZ?go~f(~R|XKW}YyUaCF z<%W(J+#?BcGM*N!#)U14SbO13=D?x2B1TO)<10Ki(LvyeKxqW{!ZHYFbV(w0P=GZz zFk$*6-uq-&<1W4&gOxmJv|WD&5-4Cb%P!#roJ}}h9m>164W9>Q2gDd3z=U1UH#T|L zUxnO?^=$qukU^H4tr{P~&S`V>mywH6Tk*GWPnBw-mSHZguV{3ZdLL^W725?|8 zcvzo6_}(lY2T89EYqgx~o&1K|`^W|S{My@h04odJ!lvtYr21!F!B?`q)s5E~)gLIa z!{~LrY>%TwD-!I_ADHmU*%h?O$Dnb8t=>U!hjgxE^? zMvpC)4XOn}^h!N`jV?^=zBM&!a;H~*4|!Zp?^@PX95@0h59%kQ7hw3QQK23QXfB(? zvYv3ZHk`C9W29hWZj5K4C8T7+Xjg2fEoOvZ_2S}gLejCC2a3LKj3}gB_K{~}C}eUb zVC@w`Gyq+o(@&mfqW6@-grD>7(2w@hnBko&Mq}K(u4l*>hh9Mlhz9Xr$kM-7LF7!k z;A=SG>JD2Cp5xxs?l3K&o$c}7p|3YNXNOtudwCjL5z5C>^?34Ny{3(R=T7Yf?2ibk z%JDQl0@ez$(?DUvk<`DuJI#nIm+7(d0Vo^OGxWjg>}>r=K+c*iP}8R2W7*D;=xZD6 zC+|vAtlxn(G4iRHs&BG4sx-6^L2#(`sNuOLVr+; z4!*#XzekKPMr@!W zTCp3c)%3KlEWo>^DpLS0|C-?rc$lyW0__w26-biiXY6x?(LT@BO^e-SIiQ|kjT;;7 z#%rVMeG&49cSM?HXsFvIptma%(9Rtoq8#NegEg#jjbFkK;qIR$9=>G>4S7Rb*KJ&!YDtEm`q>G#r8)bv| z;ilO*@t-Xl{%)D4s^$ivhgeID!9Y(}$ zXagIL*o{_ZUU(r42Ec@gU0Bbo)*gh!yr1=*>oOcT*^#U#zz~7!jqYs+MCdRKnSz_k z@7Mvr+l=kY2#}En^~u_BrU29opsKNSHwa7c;b8qj0+`scn_PC2b*;242+&u%juet^ z`rw4?&lNvZ;H$-7vSl0dsw*+pYdagg-K;{9a^V-^AhhsL{9tUzF&K6O3kd0Slbr^h zBBk!!a9^xaMRQ}?ReWgFu%a&k5@@@wb=jg(stOyF>c=1zt}oVA*#epetVG`4W`d>=7OvWR;V zN35icDgPB&rVMtp7pDB1ml8`IhcZsb=bdFS_Z*8xfJ}k666$dyTosmAG?%URjdP-x z@Xo!VEc?Ygcz&K8FP%!*w29S`#d2Ak1!E=oeUCIR{uVc{FS+3FuB9tr=$^SpcA6T$ zFu|1k*utoP5kX|+l~XTS0%lc;|1DwPO!hpd`Bcn5vRFqi?7Q!!ISYZ73|oV)-bi;* zZ2&u;H}#wrC5V_GT^10#T;B=SN44Y|^c={1bh*{eGZ*ABes5|7=4-ggrpX_0smmRa z=TNIQFiyv=4ne}TCfvs<#HL#o^Dx=T#9Qts6XS8|TmIOORUQYxa+qX4PuGa~38_c(hehPGbNjK=z67phb)(@Psuf^k z0h#~S@nnO;IBF9HN>Rc>K3~j-pe5j7p{g5$GDLl1A6vin_`uK_CW9Td0IphvS*Pi| z)Y;`JU!F|zCF4afBB!rDu~Gy_TvhN$QKT5e{87d(GZR>u^wkCxc7d=~6rG47Zy=}y zjJ^f?L1Q$DE=Qw{Qm3%mWL^t?>Nz9h(@+T8TIT0h-pm^&CyR7``ZzzYBnuj2(og6W zLX-{}w1&eFAm+A)ELavMT)BgfF!W$doTVPA{EP!&fffV$a<8C8xIz)6Yg`I3JSHq_ z+HCdGH4LK@k~gX=LtSx`y_*iHSXwgN=WKIsK#Tw-9f-v4_wS)3Q@{kz6|2;bB2W<; zhKY?}WHf5%Hx2-Iu~_!`&4_CoSY9`g4MSR3G zGuOQD=9NnYn`qT*(Tp`u?H1|{SRqz7;)lk1@q`+&RA1uQRfpefRIpZz+!mu;;>9E;XGah;hbXce9}( zf+Xy_??->A#4s{(Vl;$7CGKvO(g9cL&V4V-VJoPGpQF0Vx-(&O94C_^ptHHZV=Sk&6o}tDn<}#L8`R(H(!_`o~mTo1tb`>2cm---511CTT z;!$fDku&6w53yL-ORSL95_$~ktWS^mzq@yn!JHU%G0i8D^k?aU#%P!v^z5A4PX3I5 z+Z+R#{?{8ED*gbGkuY2}d0D(&8R!wXim@&x@c=zcDG)(pMDjfCjP$Z~YeR4jRmO~k z^_clHGm#2BZC$z8nVVB=r?A%cxpVvX}InxDa# zXndNfyQjfs+&^6u%OxO_6B`vM`PuyZIms@wF{8ki>)Dvn&S-~V=p;rI0EIKLSWaij z&u97U8T2*h>GbD>&J5GM%xJ78igs;nE2rrk9Z}}9ai-qcxDaPdC77kPbNC;wJN@Jp z{9!I~L8!e*^Ck5jqGX3f!I>KfKro5Z3QJVgJL30knnR;B&S;;R2r4%d1cU~IR7$LC z4%^3sIHzh{8O0Z%Uo&=wOs5y=x->;ik~Sw>LC4$?c#8m5%cFuPxj8cdyn&)S$GnLH zVj?aGCCmYZn;++xI0zfNc<(8Lmu3u?1#QEph{)myS!7JtVM9FRXR9-w7C<5j2CHij z8bqa;&(4c63r`Gg?&gMHidj`xwy%c@U}i!gxoQUUD_;UtTVX3sjU{cG%vXzyrkFSD zEUkWEr)V4RSuB`$?R?Vp8{SP~A(zIwEZiD7$R~%sdEo_peN0o7gpiB2r)T_xvj&b~ zUMxOYTo(d7KAkB3{D{L(0=7boMWK%@X7FGu7}pN+52Js9v`_3rV&?EnCrSQd*7XsH z#RUSzK=q;?47}<_z}hg_Vtt?D0DXhC0?2B_@LP;>n&gYMpUQdUT2skM&QsZTSHwai z=*#@DPc^#79ob91+S%EOMplDr7YjGcy4i%61*_=zu_sB%vDx^;kY)Gq8uJLYw2OWE zOk>oR!Q89)0A}M5upttvg|qhA*3_RTzS{z)C}xjotgDUpzg2g1|66k3ga555IoYK1 zB6;8{v*piyzffsY^&&3l8YP0B6QdE+OHq-fN-)grDt#3!$4+Q}G?6CS0`kdCSE*f! z9Kpvc+#W+Tyma4-7F>aeyio*dgF%Zp5wFac_(N3f0y}VaKAB;zubGf=r&3V6W*8KW zd%StR>;+agDgu0mMIeq-hL=ib9`n5*2T5R5KJ;jK1IjXEYHZhex6)1H*xaHL2j*2K zUQ>dl1VT0)^*WTGCYdV7;X|15I!l`0wiN}=0HgsTy@${CgtZ~0)p;D?~0QX_+{W7wrT-Qn&I{m zp(R8vD=nrN$H1l!Gr2b62`-)9*G>;4oZ@+LB3C^u*T{X3n=>#&e1HI^UVJHbo93NB z;vn{)zZ~p1fG3>eSsu{}N@ErVuP!l-O43W}&YrC2xd7xE8VX&ODr#{a%hzrm{09D2ifhO;X##y|fN7h`SW zE4D4a-WPPQDV<8D<{}Fk0D8x`iw2)I=T0MW)(@%KV%>y zk|4qyU*h>COxV_@_1W3>XOr#Eer$OR-!Ry3{&P$}W=#JT1G@UC5nY#vgz%QSCWX~> z>qTLH?XR*@fBuk7X7*wKluFRwPZzoVdW*0{_mz zWk-mmm$Y8dG|-@@kt)Ny-tEDxHR%TB8 zwwQ4DKYD?LuV45*i}ehl3Trw|J{u*UWyxp%k)@Uypm zo@|_-K^fEP`{_?f;zxj4df)Zl^W7a^4j@HXN4ZFN1h7l? zTC@1Cxd)tPe1hkS*$oj)l$tOX_6%+qH1lCah4@wvWhwg^r?VPejh=RgvBE{e$F8T@ zDqrB-l?lMix3bVaR|5Bvx@?q`(qvqe!Bm)6u(k`H`bQHDdZShQNg(D*7#RGy)& zKlGE63~{kviYl{fBeA(eSDZT+ZE~&uG=P(o-c|o-qRBBHbmRqh6f$W`qQ$9bdU0Az z^=n5!@lIVRI7c8|YTigbCZ|=9*J3){xkkv3Op|u%xm+7x>hDZC4AVO+T`qcSVw+`4$!Sl62W*VGItSWchm=?u*9vG>J2HPq{0UrcX zfUV>jTHydhR+g&fGDNcz1^!1sK)7c2X&Nk{xu#_mX7|!HIf7TasL3bXczmaR6s|C9 zi1BHhv#rOsIM?$1UQIP>deS;dS55sZ@lpb%phD%i&aQSE4mzfUj$c+du@1sV>kMpW zL+8-biaUCt5rFe^O7p3mKLY1(@)&1ycML;fOUWGZ2(NNJ_c0e|pJe{UX^{sI)_EeYi8UfjK+mbZF zJ99I-NXOZ$xpyKtPp5huIi98`hz4YWM8mP10eKhivjuDgIRlO?qjXUkk~|?80Gb)`KcjZ;ykx3rDm5imHRA)ul1@on z-}I7o7@i2&lA5>%&;%KYXg;Q6+9Ks_SOk+rdJ#72mM3qUSTS5J=17K{XH0t=k(ODw zG4X)XsEmJO;BHijuTGT5w8?CR60iR8bTo*lU2;$ zOLLhiD-I6fd{@TN2INL_Iz^Zsl0?r|OZadgR2Fr$f6>UKpUR|dv`?Z1+^&yJXAejC z-_tDVm48KZgz`<=6PX;*25DfUpSk`&%LGSte$F)O&l=O#ap#}0GJX!~B~-jBF}W_U zp_(s*62^{ApZn%HkY{Wn5^3yj#=&N8)QJQFG|5b$NAqk%%B`x2ZA3&1Xj})s&TTvh zvXESM7`2kDVMXac;P!n%4C@j6-n@tKLdTBk`)nP!VS%$by!A+fkRfabWdR(7sj6pT z=pqQI-=qYUD}w0FHon;uMw-(#alARAF|)k@Zn7k9f?is%VxGZJIiDWp7z|5;a4{kV zan?l!PLGQK(+j2bWaGg<&a>$R8$MQ^S0NP)WL;H`tj47h$;)AQm}65HQx?G7G(0x# z0J8qrhNfmfW9suta|%_gY+F;JyD9@0)0UhSS|3{IrXGZt)|D;X$-#PP?Ik9IM*h}> zUS|{wbN(2+BbNy}Z3LyhCFhD2ihMOvCu?p$io(+dC>8H$H_9Z|I4~^5|AX&Nrifjn z+#Kgq-FZQ+lRSPUv1U>=1F~hpL`4s|YYPqkGw~b|tA6Hba8_p1a~iTXoydMJ#}W%s zq@JJEr8Ep;!x7E#$Cd{Z9!(PNv4kPG= zxbYS>qjC^etj?isWGd8GxsyoSzg-DyEi0&Fz>CRw1y`9aQp5E~7XM-BcI1n(f@@M` zcP1Z5XjNa$GDR7=Npld?W!->u18dP*2EjIP^OhM`-`hK?rG^J7!^CRC@O!H5?m>CO zQjs|lW-mTUUbAo31}%&gCUnT)zfv^Ye8ombz6c&tQq2$^f;Vh`wJeQ$pDmKMk;tU5 z-(ubDkLva2SpI-U?InOl!BLKkpFOb7eMX6OPshGFtd^3bVrPEsxm(#7@Aw1%-d zpTYHB3+w9}p>>ii(K-9P0lPH*>pgc6eHQ3w^_3i_$JT^vE>>*G-&fg+)$(k>#k=)c zazX>X$bOMcFR)EgiEl|2@;5lXXlbr*7wHngnp5 zbhd_G|Af<|&TP8obG9_nI znf_NVSORJSP(;2$AzE$bOHg<-kFhJ+@)|)W5-(HE7 zeCA4o&_tDj6>SnchV;B-6--Z<WTiomBm-7Yfjj0UtOeW3V!Oxcxae_0!UN!VKRa04; zY42X+$B6|9s(;nNMpSAs3w4q0kKDJ~w3;tg#C5Z?Iqk2L;!NDF7I3vXOA&5PW|Gn0 zh{*n0uhpu3%~b5ckh-4EF+#Hik78R@c~_s}=v-WgB)ta-{+<<+tYJJk*(cZGkxF_) z>U#WA9Y2>L@r$D)3x4x~B|7=y9`&x>hEjDdRKkH0KiG$f9MwG<(x$R8(Mk#5d;~{@ z;KiA5MZ!H!*}}h(nR*rFv^4D}c{*h|A{vROx(!mrtM5Lt>YBY?d9#n+tooX|pH}ML zkZg3bWaGx3sO;g?58<1S?1j6JC4Xc)3}q_qg(^jfoq+x2JHA&WsT;tBHDYq>Xpn8- zq6F&w@O6cJ?FbX5?ud_t|LS1p(2t__MH42&LhYy68>m7c4ih3Ep!M{FhV+=vtFoSc z_plL$1O_Aa@ZCOuWx7_g0lFkxXMO~Qs_y9*5x{;S0qpKxvbFU~6W1a-2fskeB#p%H zEz^KIsM*0Tz4(HD|8lr@6P$B@Y#SrCQmMlPsKY28cKB=gIiR1v%Fo@yt9WQtsiTk`` z9U46D$}u7=CVG;fB<>XG+euc>6`$1XOWKs2cqWvW`D|5D71OtVB@7Q;^u$I+=@?!NKHt8?CF>f>`>pLBV39k1qa{cGGI@~Pt*$=%?S3-o@9geHKU%Fo z3&_l^n6PK*+)H}98w%;|+@KVJOph*JSJZk#bJm-hvvvh3uKk7vtv5Ajy|F=FIS%|k zW=AXAr5H#EBz3sAS%p=_VCO|~ZppHoEC98@Q)aSAPu$s3&2ya2(tK8wdM41a zYD)JtX)(!`QxKa#UCH8P)IMIMW8EpCnxR*z|Bj74Aav8(TJsf#r6Oh@@Xuyz1v+=z zG~%)#HW0-1x=?4ZSzV^Hkh#0&?G(F1FO}>yZ}g5&Y=1 z@S|f>l#6US?Np;-qd$XM_N6#x1yT&_4X;frrPhPEL^DJLKLyy2B)?TTpG5Y8MRt)d zSf9{taUQ^=!a|t;1}G$zgl6+(Yi09$QwCTPvz;~mZc11jAD0DB6}HWDc~>S z;&d^^%|p$qMAE&L$Y4R29e6Yo>A?4$=K@|ey-!{kNdtuoF^ zyp6|ii5U#+nmgt`NeFC{RyvAeV68!+)l9~)(PwAa!qOSy9UQ}04jb-Cp|L|bD0YFn z8N6V7I^NvROc|+^Ag*w?oIx=nVL-frDS}!!vqc@d#es{k(IzZ9XIZ}nzrr2mUv8ri zGb@bY61Pf^3i|sV*T&xE$=mv|VW}1pNPHlPDhnw0=04452qTxHT<+=UuQZzeUUpdk zTF1Vv0|tyz^nM3C^pqAuaY7r|x`pM`V(Kkc*l^{r#M-TO__n4q6{=FYx)Su6QhegZ zzF!3m%@E4qXx&%vPlm#SjVH4AlCx}aqPD$GstX#Z`MF6-!&TpWjahF`VEZFdo!Z!! z^*}i5%$Umr^!g$`($>{hGZy*V1&TNJsfRUg5|s3u)^Red>%zu5H8$ znXU*eW|9MJ#*=ek5_}1x>}9J=9EzdiC&s@97nT0(X-SdZRF8nbaZ|KzvWR%?Gz|KO z5A{97E<)ocxYJF(=~Px^s}tRSIIq_q30EL;^J^j=U!?Q@_z{duD%QDy2Fq_^(;&eC z^CA;V9mdUsa6EXN*!r^oC!=+7ssN5IJ1{R{=cL*L9!HXdGr(#VvwAac$izA~Y4;`) zmm+&^Dj~-E%#FDly{3LE$J5>eM(Kc)ILF=MSN3=6$)A{#^tHy2#}*FcTCVJpT7E?o zH!RZN>s3${SKnHV{OVs@CqJ>Rl_S2PaR&vmSsJq&}ZSn4f-*u+UI5t1F03WA@H6>gN<{Wb3)EGZyz& ztCveG$K`BIuV3ryb~NQpBZE5*;5!5&M(1-3#>?w6R?3s9`IF; znk8o5zCkWY_b>QmjEkD|Gy(Ky-#Ey|ge$AVkua>aJbjyBuQ{);Y+^bOr4tW=w}**3 zi`J~u93k9`+asCloCYhGSW?*>ethI?#%MwrhKErG|B#^BZbq^7Vio^~g2OQ3qqxH6aZB;Ml zD{CEju3O!#r4X0$uoef%4L8HcJ#+k424v!wGGTPRxL0x~4n5s9atHfii)|Cl-L|q%wU)^-#8moCd7cllsK11vUd2a)P^4WI*4|x$y zFl{%^<}thKm9Q9#%6-M@bR6~a&1dkZE~zSSPm2qCy`}}Yuf{yMbg4eM9}TF%Ya`o4 z)qVXqs;)N5cX@w#Dn0l(U(_ny*;KQQG+eTXc`Z&1$N32~a)m<4i$1431M&{Q4GQP^ zU1m_M(_9i?9)GJc^bj8bXAp_jF{yI;cBSE;I2%_S*D6hNUt>!H9uo!Cj0CBkl&c26 z2=Pf9KHgcc4>}B;rW0x}pcmL3xK6DsjL}Rk!2IwIqAoZ_MAQ@)?F)E~pkwp`!WMli z%KK*7g&CUS?5vo*UJygSY{z5N1Rc|@jBfXuJZ^4wqcgUaJt8&X1PJ#Mtt>aRo6wv( zhjT0qI|3hYr(UEbV^GoGS!;<)y=;-in4ETik;iA!8Tz)#M5H=LXkmq&;YqhlvSD)I z@M{LhOpU-1+RYNhnAM9#o2x-I)Mi{)&6^1U9;0mV|6y)>>pD^0l8Nr{UMXfTcCR*X z^e){^wtJh}4+>qeyV$(b+gzKs`;xfQ_|&CtwCEQwY8u(raXv*j^kHMbA=!d=a@K+7QU5a2LC-9eSeFTnz1T)2v}P1X+XLFfTWE z#?{Al)%8T12`Zx5hDpP4n4|TESwoAM8NexVMY*(5BaENfK<8&{A@Z~QnK50!X3RJ6 zqd7xg+ceE3xi(AEpl|h+NKF2_y&KLGB>>)9<1j&z&UMql1TT2oRLi|!|si8^3of6 zoqyodIJ}ldQ-rwdSJJg>?Dritd`BG*&*US#bm|^DMjr-m7SBaTwne-Q6eea3ixZ>|QgiHvRC^S}m2!)K)sD0@IzHnmAOh=73C z5ZU)Lg}#y41SSBJPwGN~ae)Gr;3nKOAd$m$iuI{xmR&KIVS6sigHy zN?LCyY2A2}>|0DV-2pj;Wi_??6v-wF!KvbPiEW@(O%WlA1?ouRX%oTldxV@gTh%jG zov^%1&3Fdi9qTG$Cg|w_=(HZQON+?fLCQu@RZ6ADT0cD>i!_zag~;couTE_eqV*W_ zG+SoeA}#oAjnHV=1hu)X-#a1lPjD(n{eWsfe|EdTeY_aRA8YL^EX7`|0>Okn&kV|m zIe!cHOP8jfnG}mvO3j4jK!JOHs$H9E5Tx352CP&8R(deXSB`@>TliI~Aa>%4$wBoT zP1D(XIkKPTONn6FF(k1Qn3He86pLBrFnyP5*K^8&52xvf&gsm>$|dl^OinpvJH#$y zmu`XGbkcFF>F}AKwL8^D`e}A!X$IabJj-X|Q(yzG2x*bibRa`~BQ@WN9CC$N?PLoT z1`|~i*}Nm+keIZ6*YQOh&%$4zG=zXNDln0m9D0$qRG{^?li=p5SA)azkjL7&`g*ZJ zdFPf6W(qB&xP`^0x0Kt{B#R(zZ#|W>23Q$^hC{GDmT3D?46DW0Pu^>KGmJ7=;>Vu;~f;F{44&qYC!s%s8Jc-T;{_%?9_6vgr*P%kU(h{+Cqk{}N2 zi*yEWSj1S&$29R7!BOVF=MT5c&IF+xg2uLNNb*w*`6ZTQx-@XZHdIYI#j%5q2(6_8 z?>0GR&E|~ITO~mKp}qpO06Xaj9aaSrwh+&@ggaLn_K*uuY7!Z8PSS;FYz)l&wnb(S z8dt3?^-_^9g&_Te!v8dBzwCe8*H0#VjG{!dQ-pC!b6yN*-20VqIX*L)&AVFpt`ZI) ze@9SH&*pvl;Yr}S6VQA9>3w;wf|#T+%gg(Y@bmihz@+XagG2AI#fhGk5^Dr^pO&fd z7cWwIn3ALo6Uj0XMs|DKh&h;SfdWuM1@jy<*i7Esyg1Dyl(NP_Et&MKs&U%u)N8i{ zJD>xY*Tjx)6@7oa1U3;q|eZO9PrQqOfanl!E#Y{eVG8CleQ4 z9!a`_jLA-3yh@;CVS{sM3skS`DOhpDZm5OK{R8@p_&tXka0bkYV5SXM#%Z6cL`{it53)rUFH5!4jv7?;T{aLm?$G~|$Dk73eW zWYE(iv@l2HKEs^~O~|vnED@cTJ-aY~65vRPBX6ru)9q+P#NTJj@`$9}2~gyvjQSTY za9i+j_xIl%?LT_<{OHXS8rALgyZ*sX?+)G_zUv=ueRy}^9^M^x{tZvQez+_ zah7dz1kPiZyzDYPo5S5e60{VaV)w9r*52Ba?oFJx&r#1&tXhP84Y+SiqU_Bq{m zlB5H7Nsi(~at8Qa3a!!fUR2f!(8_HTEEe0~N_4+O^WKsA;(V;19vbFSog2Pz7iRXc ziV(3U+E(0~8-C>Rpt+|wq|#5ZaP_^Uf+?rBmNri+3b!YDv6*s?(Z%F8gi;=I8V9pR z=Hn2t+T{$&*tp`)%S?E5(AIGpi$IWdZw_#&T^g;dTGtMPF~sqvu`06?GuDQf0$Uo% zn_$K|tTPHy2!odKJ8;mi8pqpr+5<4)@;~GKX&4P823|uzjtaCYq>~;lOkwc{yIZob zjPyo^$}VAYCeCzH(LE|bC?K&_3R@|NrVE#(2bic`&ST}x0Vks{HQr7W7rFr6Pi~-4 zvL0LRy*tP{^t%d*%l}Sd`{-S-%cH}gfAG2=x|WV&7*6l1mWS7rk@>!Vf^@v*zx-+w zNKGOhGm&nR=nu4mr@g#~UC@25auf<$9?wKd*>4O2KBt8dF$O%ZmM%@Ux|Gb&Agdj@P|jBnIS`RU(VJzd_*PyOBj z*GmBlpW{m)hm?PhU;eEeM)H<_`L}P+m-V+{57eW$T-X!+EG+qb@J;_jm1@mO-~!() z$sfOeg@kRcc=}3@wLDc*QJ$)IoP*{K3k*_3Kl3Gx>@`b@1`mB%qXdTK+yh^R75%W7 ze&$O;Lk!FLC#rwT`MH}u`VsW!i#bIE`2O&NxIbYr{Yi|ebG$M z>T_Evc&IkPqIo62bZWaSnztm@W4qXbfxnXVtaN=ML9DSqu)e9~!f<9{~%+3^*_bN>-c zKj^G^_)kyhp-d+p?Bap_6dpV!Ui}aMZF9%R*=nQAHaq5+oT0#5d*jP_VWv$p%aq1r zmno+?KW9lhE;ZpdwqOe{!udgankmXEM$bqKw$T2@Deu)?O_I($q;Xf^Et%2Yl4-+j zjk-M;kI81~kPFl!XNs`TfOZz$v|owAvu79&xhaKiR##*Wx^tiVmaJm&7xh#1QTKSo zcgcikKI{6ycDLTXvOblw*~A;5*&NM~Lwls*k(ruodkl64m17HfYi zy5~f);sRQG+9Ljj^k=iIXYA)l{rD5vm*zI|Mtn>QaY{uDzB}HL2$h~7`4)wlA>4w4 zj~*BO5(q{JQR6JVZ*9H7o_q?BMWr}RkR9DL^}eUUcAp;g_ITCq=;hNrQ@}mCbBz@3 ztU3iC`HE)VQy#v%up#@9nsVT@t2!e~7xl+JW#dWkzkE9&iLecNqWj^qAhK~eZYb#u z4QO3=I{OuL$~EPCMVT2rQeS3R6n&4+pEQl0py2VHEdIYYOLAM|#LN}w`&I}EVUG3L zS;fXD`dmAbumdrcjmMOsa!fTSkt11xpw5v2yqS*)=MXk=iG4(YaTS&r*}SRF0N5@{ z4xgp1a##+FlVNdsG!)3K;<}u|G)(zFw{3ol;)IKjB`s(;F}qmrF}zpuM9@FMF+_JO zPmA&l9${j}9}oC5Oykz1U%;xoxQ4FJ?m8z!HxiXX{>4lKxiT~K? zijQGzE5CP&@A2~4&;ja#EZ0EM$%})pzkdD3kqY-~hi^c^5vSbmav@i~$F<}~cJxHd z3~IhB(9t%pXwZDT51EMyh#OyT^lkP+`UVwC&@cb==BqDX)>ofTs!K!H*4{_8UcUay zv_sFGrFve@F4PsaJBX6|-bk&C zkEk+??9(>+tL#~(4q~x;a__jT?l8jW3%o*Z`T9J=5y zQH^ksCAT;eqwtMyi(|l-PEL%aCh1Y;#V#>~Ao-B`_`Vb(bPbFPsHv zWWz!-t4E8aFG7MH%iaRGT2*=0mi#p-_EPZnBJ>&e{wvDN)eo8lDk`it{)z?stFt#MV8IRN>*Zw}cq>!|w?XzFVHLga^mIk$t{qwq0wcFR9$kePBO|P3c9QiQ zBXr*o9Mh4_t6~?!zJ2rhxx$w(i4C>!8NZPkK=~AXjm>22ybf-f`ZIk?K|*R&#OhddgcvR zTwxHh-=P1$FP>l<2G9PGUsOZFefh+5Q)|zhJF5>Kmc7OQm6AuM994ffPWF^sxQ0Ac zW@BZxL@uVn`*X)-((~*sXz$gu1rU~z*gj^J60us@qqIXw9Q8U_f&2icRs^>_Q=Rd^)B2c76)D7@P%?cUnfQ1OM>>I!jwF0 zNu{%ai|Pi%13;({?Q3f>ZsyJ!Y^HiBmKXNrBZ;ndk4v5-iXR#Hve(v=ar+|y7~m_jAJa%g#Z z)6bIc&=rk1Njxht?$ATT%6p5KT_T;~O)ls0p`g+ zJatd_YTP{g-P4?}TF0$6TqT~6&%^KjyZWb%Kh?MY<4>(0f(v5OuS1tVTlAuA|3pRr zRnk1$rodC@IPhhClDafF4~ozho(nFLWwT}*4ku*}I}?`T$ci*C-|)>5H27{&Fu)tk%7w1wv{p|7+_ zU#2ZmEwwvTj=Z0_p!1r!ItNI{_vR4H(S~{b7Wdw7mndK>k!$yNMl?%&ed1BHRLJyR zRk8c$Y~sD!V%j*R7p9&swJ%w~X8fBVhBn>U|-`}LZ6atmdK9MzQegmqx4|6;U6 zLxe93dt1<mRLfhfY=D+O@@3;=qOzZ&iA7gN7$oPRFoJgjEM?4#dS zRS|5L(T{u;OtE&D3G00D`rF@nUF}F11w5W%wTj1B!sB6a%xi(acreH84RU-&ezV8L zWks1MZP>HB$i(rf(_F!~vHcoR8(GG;;eNF_f3}l@hv;QIJkW;<{v3 zA6J*0)suZyO7Kg=(ikJqGzXkkdrvL_EcK$tI)G|ReZ;{I1XyXvJD22Sq~L74Qg<*6 zQ)6C@!WZr~5U=!gpeH4Hc`AI>Nx9Z-887X0#pqM--ZbJ>FQYP~1VQspofU#U3yd|Hdi-fuwpj>e={5BT z4=)Vkz=v20=3oXxNM=~9F5_LV_#{v&dMA_;t#0-91GD)-#>h4p>h!1w_==9~pw552 zAKm-%+Q-U_EJorEPfIRUy3pI1J$_SGiCV;+p>2g z(Xstnb9T0E&M0sh!@oX*nuFthf*fk!g25s>mhKTD>kYTOUF7e4(ueobjG+Z7xys z@!RRCb6^@T>4ZXG+1tya3f=~(66||c2|WsGL%t678|*=8+Ym23OJxh2EYu9ebaqBY zA%;4nbKFACTEmcB8pAFr4vRjl7Cqu`8XC0$$|FaEp+AA{p7KDH-;} zmsB{`kdRQ|=h;lRS$?B5@wRf}R*{@|BA)xatXw3#PYh;cU?F;vQ<5wy7QY9i!R}FZ z`dDg+pfu23rx2Kbk&T(B1a=lC3L0~16Tg=yL3VA!+Ahc(QBGwJZF1WwXN(}1FXVGG z-5}}-@P%8Kk9%xrY<>xM1IerCJPp~6R)5$wRRq~#l&#!*1sIx%rtiIO#&O7CA%bM{ z;elc^&uO0pCFiVlLvjFQW&6TvMC7Yxi;UiySN)z-mwJkpza)jfAnl(Sw;OTN02N{c zS9@ktM&2h!>d(iO)^|0f@(OCj?uDXr6h`( zSKF{k2QmU>0;s1TO}5Jo58`o0eoK(H8TiGiCSJ%}Cfuj~54-l{8-_7EsU7 z!H}Cpd&enVdxoech`?H07=Cwt!CEY7+QC5%z2%S6ej92@EksSqCTH|nKnxp^qlTw# zgPdK4doZWj%5!a4=SFA(DTTg6#aG-^_z?-e2{nF7pG0mpOC!91v|V|#4=PG11^-Ik zZ7H!rXluahPb=qk<;#=rmqU@VBExAatt*dD^5%S2fYI89h}HU^_Lv5V^fgdJc#QA+ zt4Guv2!kCrFQlDtdaPVpFLbgH!Ycs{xNiuc$D(oL>_VGJyPVu^s3M2;5!mKR0E)Yi zrw}LM1Yz^4ogt3vs#3e@?J3LhBmXv1Q83GI{o5B{$fAN~ZYcj1E_`J{8Br=wrU-qe z0VFZt05dvWIRLnZ`R3YQ5tQLgUiX(Z$OnKAJskR zh8~$MX!;^u4T|v_C}O0Fa}^_P_qZ&new~xlar+dWe8gM6bq%EK=P?(5%mGI%!*8D< zne%vZ%R>3KB#V(Sx*4n5 z4s^@x87w>HwGx@Zhv7CPL8VowJ84oOET*)I1rhA)$!*{(?ilk6iXkLhY@lKXh5E5w z2dTn94V-tijbxtat)h|4mW>LpfxC=Kn{7G@dYZdBT~{Y`2=2_j5({SM6Eo#kC1nUo z1h(@@npHSk`C0tfrvM=R`d~8Y_eSTFZ7z?C1@O_sbeQj|+r6SE{D)e{$M7v>@Yl5~ zIU=n0{$Rw46NG+Vu%s6w1nQXgFq-tDFK0crq&GcB1%>--8_s0Z&5^`H8iAi@r|9)^ z&@!3+kjr#OE+)%T5c7-dGs{Jn3*Vxd?G;b*?|=&5`4ZN$vq^JpK55cfnfb>37DoL7zhaH(9zsFtEVmURECL9>pB5RHhNd$DwLA$Kyi2-1O6kNHsXtX;# z0!Z(`SS(KF%{9!;qn!5*IT4xlHb+4+Yb0Qz=NRWm&f3qG&|fG+uMs!1l#y>!=512llFrYb104ZM|=L+L6Dk)1NoC9$>IYxA4LO%duS;<8;b5+X{OtQl+ur zNY)tq**`pjkMS^&xH}?t@=fJTHl11Q)>&}6KNBl1ojDkj1^VQZ?$Y*f2_>wKg?dPy zxRB4`x&fK%8wj@?3eK+R7rj-SPpZ-NXzsZ1oQ%9xI|^C;*xP;b&JG-K^d{8&|9be+JWngSo>SiAJ?!uq+ z1W_3?`06h0WkrCqyj(QgJSpSL2@%vN@YBY5g1FzdcnrwI+sD!&y5cZgk^mD=cu)ch zK6JT~!en#S7s2UYVp_B*gxD--N| zGW^h_`v#-d#8aIJfR5G^zONY*#b0Bz&$~ntHulz4FPpX48AL)`Me0l&saUq)h6#(w z7?MTeOcS)YH1z1SPp0Cjr0b;OrAcRUNKFwEBsaCJ$AszVo9qo9ls(h3^mySOyy>;K zc4Vs_GDir=zP0GHolM{W@8c`&N7CFwAsAlH_m&=h|dft9VGg!s^Vg?n6-O5JLmP{VtFz$Oml~C zqj%hm`cB=p%c|YkHUGQcw66-;@3lrMuPB8MrpHZRZ!p}v4UICiuA$Be-)N;*ELXVP zU|{4~L4-lEa|z7`e7UpXg!__DfV1t-8A0MP#g{xTD(F6^eDUtu7;-rOb=}74Njd(Q zfPW`&wIBx$F$wa?9DZlTO|QE%ph2Yf1==A)@)YWuo941$QrJ!Th4zs zYv^KOL7?XWVi~S?Z$@viC92D+9cDY@&R-*tv}|4Gc?IGb{WYn_fyTFzAXSwNL3T=5 zi~95(d?JwdvmJ`I#X^X{UAN{p7PmiodonDH6gf!EnplW_CKV7ZkOVOdBhQ8BMXy&7 zu$M;OQ0`@I^%Hy_qSGcmMuO;Lc0w9%WwnUm)*7aqo*eY*$a@ayTj>Eh$YCQnW^8HD z73yO5-s>%F-A|@#B8ex#{0<{|-@^FOh433P?IEG2KPAq`9YM9BCO3N9*+jQhjR(f7 zy>V+Jc;xi;ZAqu1w{fF|iplQK1Mea8gv6PyM=b7=_MLr8!G5?*^{-=R{$WJ%hOWP? zr|**I^NM0a(#NI;=fm`<)^ZxcJT%KM4S7X69aV;)=!I4rusU=1pH0Z+o?9I~l zeFcuE|McV^R!F&OX`{pEi)Q{RBFW(z2DT*x7IM`M8jd#dui3zxAFa;+u**-vDxIXJ zvhofm7Nc@dxTO)*F6PbDjDP5oqgX#V<@aK}?dY1_`n2|70)V$3;h11ckq5)VND)4b z6ufL3f^CW=M6+#`m<9RR6-IJ9`-8aAKsV%Fj@xE(RrRBAyr5#9ja8TR;sDapH|(LF z>PY9prS1lC`qikW_F~@z&na~8;RCU`^t4QYA-b;{RoLF{$c03%XUGgGZr>y$lIN;V zPo#zyfLQk_>q!7N8(sJM2p|g1kLJoW_E~xQ?wqpC5v`t_Q&g616qb<HExW8BuU< z&0Ht0p`LHXj``Or-+EIdS zJDr&^qk1|s9bVBYS-bMJh`c-O$W2L_QVd;732@vdDC! z7blJt=ZQ&k%BD9IvKdbQu7?YuD3NThmqE6&Q>6N&ydLWzfhy2{{q77`L9S$DARgzy z-VuWQPJ?G;3{mF2DU4Ey>B)3~-ooC5z_k)rgR$b0S4XXY;$S6jBO&lij>G+%arkZ>Usv;AsdG^PN zdIpILoaVZmj|&UpQyaRw4Pi1UqAO_;u_c!Hng_scCU2%U4|dRDyhnehZ+La zIC!hph+FJv<6c2bof}CcumO1iK|qbU@| zP*EQn&h*$#g>7jlMM+e)W#iVCr2hMg?PxTjw08s+S1$^SqzfdU`8c~QYJ`4h@g~mj z1^>~(N&tv;EF$hpdnoMUDCp5TYy?lN0?+z>gE9Exzj_EOI9--o<-6HAAx9wrw!ex= zfc$j$3Zluj&q`}ZLuj4^L~X?#ddqQF)mWnMq))-)#F-rSty8K%j;;vHI5G0U1x4JF zS!++7O7tCHCqx-aXjVlTBoh}wa@lucI9}aAdpd6>lmFW^m)&K?&C;~-Vq&zM6%Ac9 z*Kg`sySfC_>=hs4px>{WarGJD4y3Ua)~A(nlahA6O{`;VR6a~OMdRTb)^PoKA+9;` ztjFJ>i)BKAAdYW=B63TTbTI+pq=dM1$IqVAM!muT#8Afi5KU-7zvNDlv6(@LNoJ5d z^Z6Q-n#~HNy19xhW3@HJSLjivBqO$3>ws!a<=507w|u zzutcOGvT79dr5&Y|IEqLb075E7WwU{t!GS7fo&2kj80Xk&hCEn@_h2?IQzV6a*vJh zbkf}THy#mC=*#t`$D!-J*p=31szyO8#(&c5mY;*H)w!dEI(EqEtNBRW?Qog4Q}xKl zEx-T3(-A0kYh#M!^9XfZ))RpXTRK228_?RmgBL?H4eTfm50BqnhNW{`u}_V?Kft(QLtoTam5yuUU_K*BvdmmxvaQw# z;$g2Y7MEr;y5`w(LLB8B`0zh1>p1~8xUe{ic+3V&y1b5qAPi7r2oS|duKD>0pZU^S z|5XnptU~#Gy6(nKvgCfW7u#j%srVKRRbVI>aZ)(&L~;f-?_NN_Dm5(0Vc=F2hZPMi z6NH9PBpdRhEBD`H4)+QdRLV29=V$S5=x1PR4(h&+#)Wed8uw-{7r| zq&^p?CQhMB;oev0k_UPrL8rAp8Yq~J0Ga;$N48j~Ph6ermYtMGSA;$&V`d~(iZE5E z%!`}U5;>xJ#q;cAO0R=Uz@E>YeZ$9Vk3@<`3z!uA$DSyQ3bo+upIN&rE?W_sH0f(> zBY<6)jkI{vyfNYn+&uz|th+G5cG|ft7Z*R4H|g6`;sI(}?&7|I<*12vMl2rtHUyg) zc}oPW1HDy4Q@91%*u{z_m3tGJU6_5Br`1I>8CUZ+-f;Jpy@6O(M#2*s0qF$Pl0GA0 z5yV`>~d+D&z7=Dc=%s7%fU%zisHQss-kR=|7^f%>LS53dqkQ zf>>noBAeg)UR<)b7mp?9!%wEtc+8!y{xbSKI}N!O4R!V|8*}%fPnYw!rj5+U5tH~y0;tvk`G@I#@9lL(?X7HPgF`yOyC-aNd8dsSMt9!*YU|2qiwFAxw-29pVDL$v$upYTCTfi`3{G~)qQ;+rlYLvLYrNAE| zQAx2J9)%OJ1`gTFM_(uYAQ6O-V27=8Mv3n>L(iq|%Uprld(p9aWHC~hVic#(roW;& zAzuL$TT1wk25)18wlFQ&;gJW;Euz|b05wT^cJ53Y?bfD2 zEF2CW?<+ig??iiXtU$Q7zg*9+Z^uaVI{n2A!HoT!)G&tXtt*>Np`MHD?G@DLB?Kro zA4I5noWTZbVH3<9Og)65JWDIwd2DD(T~^-Im&;2@B1f*>bcFRyO9~Kv5W(Pa2kW!j zSNxs6d{4nitNUiQ;C(5mLB0c@XwlvdT3U>i`ng)3o&Y6sBMsT{5)`>7bB|idoOd zlL>)fqK6wUN%^ELO~E;AI+omb1lu9W1m6e}rp|KCKAb+E`6`Z)k|FgBu%RJE!J08= zh;55ken2=zhGh=SesxA1D zk%*rRQi(7+&*0Z4NgC@Z9bInt6xL@WaqO2n;-PSwdt5Oz8uq?8fkeTGXy-M2sw{Od z@$iJD!}`NB2XQ6*0lA@N>uiUw){QkkFq(7MTk4;*y3tV8FyYWOuV#SX8Al@_qM&ZS zKC`P+gCh-!KNQ=$xu8`yegZv<+lYqlSi+j-exGk`Rby)@h|qYr`IQv3oYp@rt7ul8 z30N4+HyyG1q}^VePx_h1Y$3AZ0gN|lz|?xHTe@Rs+h8FFuepwE?EV;o$PFvay*ZEiKD#Z zGT~6dKG@5zun1YQoZ#78*`uf`25F79K2NFdp3h?vjy`NAn1r}<#bNlw0rZeNeU9hH ziy3uVo1WdQ`2`o=#W_$3{jQCsPnCTXP95ESh9gy!q(`aRFeCK8g3)dAN!@66Hhfhx z6aGg^K}_B;`51x@=BD!Lx`eUR+&wPvfC&q~s3E6(z06_IMVhwDj)~jNV>)68wVX)5 zN7~s_7}bHxEu?iHL)yzz9ybL((nOI5#AL~tRi<9hStZI?sItx2)PZf%aVZNbo^mH~ z-lH>rf9r38VR;_}2};hAj=Z}Mi;^m~3sPs39$*HhD<^>qhI1f2EDrgvqwdepp-O8+ z={)pD8E8BweR8ob;gef?CZ%F^L?)37(bnVd(6vPbYf6PEZ?Ck84Tu=~drF%!Easwi z5j?i4;O6&Mc<1{GyRK}0E|EoIi2VP$d>Nli_!kul7IYOQhu*xk)5t+G&XHsow#PHh zd@j^mdTF4Lm(U*0_&D#G=Y7Q=D^?YjGdfr$sSAt~6wGL)(&Eqd=p{*yPnu@Az~9u) z_aY+#OwnkT^ab|cq|3rLmX~%hTmJq^Me?$|p-aj(r$~OTKI1qrH>%W1*M#Q8?%}JJ zO;=)i3X$`DRb{vQfIQbTyx1t}`@rK_-M%cOYn}kPm`4aVN%Gvu?x-IiV8*95ZGF;G z;TEEdQ=#T6-(GD4u#Gzj(1Iq2!==oIhU9qcH{s*r&(*v>yY+ED{xl^AE~!7ZE-T1- z4CBeIpeyj}R<{V~eA%VN7iB#G)1#5|9XV%x!VHm6(`+|0ReLA62MsBQzeT>E#M9Mp z&5Phz4&0XK+Kxf1xsZ-ly5L2GP6?$!nJUu4plsua{>gGjS`%d5YOq$jITs) zyO<^Yg%({A0`3*Nd%In;m+sh)KMtm%|HyjfsvVEJ|8UyfOE>dzPCfNnFGRXN>(5;R z>2hAl z(c(|Wzv|IqYjXSFPzKe|FitCHkiXj|Rw$lA4Vzz8?ZTNJ#&p>; z+Uz{C1yo|<*gBm_OsqL7bJZ6YO(Xu5yiznHEO0Tpg`C3W%vp7)_tu9CL;`jLSjKbu zC;kNcv7L(9+aVdZmVZ!l%%eE=#PBcNQq>5W7NU%R1QpMAnpfd$$(C}E(>T0Rr_Mf$ zQV;fp>`hl<2*z~2-q79vi$(8UP6SI7+*$ldge}7&(2$RAK7!!#5o66zyx&J1t+VKU zLwPvppyS2>)Ir;hKMmGVUx5mMf7H0B5@ilBzF}LBU5%tCJe^-M$+1{#wBrEB3iC4DeKM!+8F1_5LZ5Xa~tDi)V zwW6Z77D+fpK<%4$IW|W3i{p$~(!HwYZKSZeXlM#^aKhFqdy8A4L;7-Q&haC|%(Ksx z{zW`1SBAM4I=>rqKI}c&K7_pr9dMTu-fy_@IbfZHbBlds&4}b^Oh%ME&x|N3!z0Qr zsx^58wmiGLxyGKFCbdcS)VJH(D42P+J1kTaq0b-6X>Kh-+{YhVi?>r6y*~=cc0#F~H+pE(tpv-;9-E$* zl9yM?^GS}W$A+KRM&v3EzIoM-+)Lh9{zl9KA6``D80bbu$>%1wSlJ5;H)k9$Zpd#k zQiseEYa&V@-r2x%uC>kXiUC2RdAd2UA0IM!mr;>qNMWngKi%rkH|k(4@~u;6tv_32 zcXa0KA>@A%*@oUW0T&}m(j|HHcsVWPvbBd!8?-GQ29fS48O!1@du0y2Ky>=g)w}`B zgTR$tUo_6d0+m$8Ki=2|Mt++N=^o`l4i9oF2dQ0d^C0D)ISIuoKSXYoqlM^jPn}HB zsD-geoHMHX7DI<|X2w`A?dO762=J(}vEw0o z4M!K-R5s|6+`qEb;~9NtzXQTiW(J)%W4I@lj`~KvcKnTePa*`3t}p7ZCsL*ET0(pwqs2fDIwBcW$y;@Y4 zEl}THS({aE^qIkTjAzs?PfB(T$bVt*>qeXwjlcV3*fqF;wa$l<#Ksh#owqmE7)UFy z9ZuhVcNi2^`;6c!o`u~)>a_eO$;aramm;|O|5;Yc3L$UQK^K#w{7A*`3 zkvOr5*kG@7#(Z(7%q3)Jvc3q`ob$n~K(N_Z=h8RMM(6D{k`HA(wveM~1I}b4RnUys zrnNVxIEB-Y#^c=e(JwaiSovf>I}Dw2j*f~iomq*S@*x+Ii|<$qU)^yPYlJSsR8HcR zjzY4+{gt9V9S6Iwva!2@u5aDcnT?3D&FF$QBtgJDwZA%SsJYl^M|t{EQm!2-X9p5n z8Y#|YHDeDjik-K%-%W~!+80c9hxlAS% zI2YXyfxl8H2^o`Ghw<1uY!QLm&Doze0+N9a-&Tu9gZoF4*u6xzG%lPZ37SEGrl4%Y zB29Ql^blmC0y!oB0ec*@Nu=g|dlv~I*Pm{@cU=vW)EqMV?$7WH61Xew*Ox3pJT#(qT zl;nWZKf-yFplSg2>j8{W#*xnNW+u;_T2d&o%sFkUSiWkeq( z8096WST?e6AItqcE#JDn1{bkA~z@abZqg z+KiP8_}G*0Bq$>^BZs@g;_0yX)U3kc_NT*Q`zbtlj|Lmm82ne|<t6?^cqLSjqmCDb2JuGepYZ{}lh%>7uu5PZo ztrp+In=A|qc=W9J5&wBNSo48HY2;|thg>0i>hNY*+zyMMkHYU1eSkm}xA@P` z8-I1^n~OUzubMf`g5+t;{pcHpzq}-IZ_ZojciY>g5xC7h92PKXt^M!`mm3zQ+Ue1N z1!O>k7%{WQW2V{cg_6bQV%p}ShN&dE(zUF?8;HL3RXOVxM0}635=icKEPrUla$`G9 z_s~P>L}}p?Ac=%b6LXju1&w8V2K@kVk~h%=vO5VKt!PO$5#|hP-n=H~?T4yNsgRUG z3(|(1#B{b2B&c{ESJ=y711Zf%x$GrMKZ_<`l8Lyh;SGoeEk_9mOz zLBU9{-6M~f?a|f*`Ik;zLAJ?Z0`V6nn zHi65xM=W9RF(BPZMJ}==4wXI=PDEj0R}<3WO(Ga?BpoB?R5WGv^mMWuSBM`+Lf-Rf zWBU6j$fXq$qr<}+&?ZTt=7d2rDZ9|kqZOn}&Zclaosm8EOcRYrM#@C-plueO4-z@V z%Z^Y)PXHvf)7M=3gopwhg&5R>|GyvqlVOp* zUZmQOPXr>3@Bim(Me~Xv;PfImK^jt|x~t=?91OT@o}WkxVY49DjnQjw9h$*+ zX2+EaaP8eaEvkPZct8lyNd(yAJ6s=8OB@%Cn+x!H+6%7n+^wG(pu6{zYaD84 zl}*IO?x<_h32Xp;0x&(ZTIL{`;-~kT;yz)w6s=#OLC%rBY)*cRW>GFckKbd4clR(W z2oy0tp3;w}#b`9TJLX!5{3c)zj*39y6zErqw%Qs`%W2gt+sW;HrZGPRygD}BI4=5T zCh^zq@sR#~dW@dgC`}(KbvdB>5EY@#I(Y-R5}D;({IS4k zvXzNFU`Ys6Z&$tUwNPL+$7odD%Jdv&f+6YsaiKK}SN7=(r_Rz*!nJ#e^YxPSZ zKu~lrh;LP@;?r%T8qlJ7*hub1=Bkn!2@vJpDnLG!z0^JST}!-J(EfEfpZ0s-Rcj%REWUnl!w#N?z608I&x2e0_ga>q%w4rj(qI@B-=Fwt zs(unZDEuy9^1rQSQQA&ZnuRZoh(G8cC|6jZ_2(7kArMMwqma+b^7cfM7~!B!)Sm5isK7a?#Au z*dApF{(C)NeR?Hv4ClyzqSAxWse4u^FebnOD1Y=jWhKRB@jh%Jr<|hu{^R$rB-1&8JB!l=nu%Utlm8!~jZiKa)4dszqu*GwTGYC7B^L?N1v@tp zq@w5=!i`Nae6=+dt4LylW$Wv2`dq@$+_FX*EF;65tBHFQJa(`Ix^p3&Im&W+(vUhg zlmRAT6d8o6sOn%ps_`AUKu-y$z`x_)Is=%Z0o?$O(1XQ-e0*ir&DQD}Veu3CUU)vx z)V*L+Mc-B(;%kHhCGr=~Vsx}nPpKE#v{ZIB1tTH~!w3>Sd!)#;@*E$AY4T`4t@U+voilI#nJe;NnYx$d&6gDd;Ry4^{Oa32 zIJX_!eCoK9!Rg@k@(F(9i3B#*A+Vf~bfS0E8@ln6mCAmXekAJ}X9P|)2s`uXn~vEx zvM-civu4U?94tMv*yM&){oQwr|~h2%Vk&so{ThfgA2X!)2aE%B?E1k2k&nD zxSGHAlh>rq%DX_<_5HE729S?y#tpgm<-xzd{{9W+pt`XMs79_*Z$D}9-i>uNWO&9G zW)qP)fMX(p#Dp^S%XUdj(rt9JcrD>;H&Z#5*nORpC(5XOLYVN=mT!C`6Rm59?`Flc zF6cs|;tgmFXV8x`fZ=3NB;jLag9ygC+@t2aPCBy;To&~=1KwT!+POUT3 z_up7tB!6gyN5?3-o29K|sHL^Z-%PVcTb64spphDu@-dMq|1if$ThaxV^Q>tmW8Uj0 z)ftp}!w48Q(=sZRaq5}xFWqV&kb#if3js&{kqug>%^XNug1g0cXV;}*ok~*#Kgv$_ z;*GAAXz!P>n8#N%WVNgC5(ZsNb5S$-xW z2;GMm#mAb$FUt0tl7$J917tL|0|D=(ev_EBA2*E{;nwh^C&S_&nM+z`6wi!r#Oz#q zuKUcv+=J1)qA-oVZDk16e_i@ecj-~*lLq;lbdttHu|o@$DQm0;EZn>Tn;1dp-0vRM z3ZqTma~D!$L*Xto=00+Z#wTk+Wc=7^P&jLIBx9P=CC!v{D`j!BR5;Pi{AgM7?D{NJ z;zz4Kr5b8eD@^`ColHKfr)~eFp5heDxQe*#_GA3Hl#w4wGe?Q>C;2Wm`=(#Ms?ApF z`n-8b3qY3-M*DZ&5t9A!$akyQQ^wD(A6t&2)=c$Bcm5ouk^_m!6Hb~X3Yo5S~D5{xr~ajX(xPU$ec|; z;U(T@7Qhj1ujN8CdLt^-mn_#C;-Od&BY8IGlq}es+9$B^OoMAYQ}%3LRX>wAj@2Hd zEDmN?Bu2W*x6E&idfYa2)E-Ou{>?A9gFU)hK4uy3m>!u|Ez{<)ZU+k!RV6Y%_UTo8 z{bSI}u_gcG;7qCc5Rs;CD5+cY@HRPHN?O($SK{*nLuIx0WCY>htG)eL5RA;Jph_Z; ztD005zw<$`5#JY+*H!JewA5D0j^$Y$^{IHY%{8lO9LC3jJ`tkx5yEjzS#}s#0iHh~&nwQLq`hk-Aw(_G^P*{zTT-a>hL-43RZL-* zMpvioENz<(nhuv_m0`2351)X?Ue$x7zxBMC!l!0(%dw@_ib%qA?VM@&)?IuU5MV!P z7Das*FBEUb} z*Scjti-UBre1ji<>{}lJ7NM@jpVJL7r@{QQNV$|yGy@dnZo;_gzw)h2zR51AE~_-c zfC)x|SOPWz)kD=V-*jf$J@jRchDANt5P!|gLthag4i}?hp1w1y)m}E^ijL)|fT1IL zHHg#9MY~OsAmh)Df_lUB&S17MA}oDUznIlGrmx+f3rH|1k(+GFEG%Y5>kCsLu~C6R zwZmKmCw_BcLsX?21mfTgB!->=4GJ?Plz>j3S{2JRa5HIMq@9-}s` zCF3>E9y(Inxjp;W;C}4P>Jacgr98&{t(D)O)gTh^s=k#H{NpGCX4?6s8TQ0zsb#JW z{Wj!FT?nI-^2Che4Z!1iH@*DkVdaj?-1f3NBIu*x2EFdpk$yViHW_o?m zxova@b02qEy;lt4E_p)kch}_%2VN^O++puIG?eG<{Iq9Iv>t!iJhENL&_uqSF*o$Y zH}jBI!rt&0dqX$a4%pC`q~e7L2&fB7G!dLk2PArh_U7evX+ZI%j zrKw)Ln=HrY$aR4$A#uE=i%o=HpTh|f;1&%6@&r~59)jL&Hrsk|*IPr4B791uUc(h` z@0{;cO((g{{z`<@Z>#g#2*S5q>6Kl=-l;hvs$_isAh+5o;TVu zU8Q<%E1{S$y74{CHdYRrxeB2jasVxZ;~|TO%2KZyqgy)()3#SnHjf5G9ZCfW(L_SK zIedw67ZT;c?J^h}lF8`d_028z9sh;PVEj`2D*8z!f`*O~W03o(zx%D3d8gr?eg@f# zXj-U`?P)+A%$=1hb4`fAW;O@D4+FM=rIN*>$QQMd= z>&yDIt5q_~H0SjxU}NiXRlqGh3P&I^v|&-|bDiRklzpvFy@EFC=muxvBl`0eioZDt zq4!>OoOC#9l|=!}J#CzAcBi3SEN|X-@{-grwE7551)z9abbXCA3|*7})~1bI=yp}A z7sc76p0%2mDZk}~xNU58jVly5I;Y_M)gBgLSX|H&+#TlT@MshH!ro6{>;2om6F?=} z%IuQBT$hV6%3AUK`AM@&bvdwz93dUbGh>`tphfxCmdz6(#*f!O}C%bJLq-k{J z0k(d{&b>J;BCy@pcQLbyDuIRQ6+ zW=OzqzyT^rn1ug{8N#Tmu{T(FxRhKFMk*RN(kCu1oNWmDBYPB+GfY=Y1R+V%tpt_e zIzs{-VNqI6ED}~%3zMcHZyR$Ok4bL65bvBe2$beflFP0k?QA`8HSe}^jHi@jZ9Fod z2#aHn84}`=NqB&)7<%j6LngWFy79P{w7?us8lVuc3C@Tqh>pIY)w!j!=DEHyJM0!0 z>Cw>!f*&~#q8SxCI@n*;Wr}r!$qB?nB6m}KL>Ik=s%~~}X*?fotrqaI2Q_3C-+JOo ztSF5P6M1z#Df+DkK;yJJwAx!t6ho3+i{nDeMUt0SnQ zu3q`V>w0&eW^X#1?I4P;${)?aQcdX&)4FYp&8D79fGT<8frhsNoAGpeUQtrlF$c67 zRx+y^_`))GfP!U?kuxI{=$g8buN!0>wY~$uK>%Z-9HGiglUQT;&Hzdv4A}yf zGcE$pvglqH1>qA*05C=-XUG-rjY6!CSv9dSQzn4ynVvO-hhPLu<=tkKhpQT&KDl)$ zzoT$VM>-!__cqzc?8h5{Sv}}>G;l!6U6ba7oXEmXisN$j=iC{dW6Z{^g2|$ zw9>7sblbbH$-%iYvNtrjI%t1qq;{Lb=`&7#l&PpI9X=TryGLQQy9g6Oon5$tqF-^u zeH@J+oN`en-muah|1*p(()Z-wVdR~$C;tv3w9`F{E8w2HXoS5e7~$)NrT6|JAP!wI zm*!xg;twSl>IDOifp6F#1?3F@vLSG`yTCu(ZcYLs%P}W1Mt}SqIZXm1aC(Rvj#yC zGzHn=J-t6OGWlNd9;h`^nXBP>&%TI)s{|KEMGviyB~g(#Mmi^j65lZ#qPmgD6-xD6 z&FN9UharI1{UDVvmyZ;QPD9&jt?XqOXXx& z%o5eQSS4Z-pHYd!(DM$4NAbx+m|^JV)Te56Z$o1hJ9#)uW+e?*GbKs&2}bQ-MJkmA zrIGI|R2sCAzT^x@DO0x2Q#3W^Ki-?lE>2HTTgH>w3=-AsiPdwoXQYomWDc%1AEcV@ zqukDhA7zL@vL-&@!>+dbxNmR64#1N4u#Zzs_hD{l!;dy+XGV~F*k`4#`><_mtuM1} z2Bd5_!gmzSS6$2Bx)-!B{Hr6oReVjgnIu{wU*Il)c4O7RVY?|Gw+Di|?R_wCw{dg% zR|9ur{!b#u;gh2efbRDHCfHg49mcc~VuyV=$S|`hjgD|;MqE*@jgLPr^lyaDHOO?i?7Ri!FYWk zI9MLPD}fB-##exbX%MEMa7>lm%dE&!V5owdvd?b6DO*NE6FV&}CrMNH0s5K%x^3Kv zAN3`_&R|dRuvVd0aR~yiYI7}=H^kEi9e`mD0E)~l2e^8!vOQVUr|-HEu-@RU-I=-S zunWP zT7ss|#%FRJGE5Kw^dn}@@841Y{vQ$7AAeNO@KZWc*VXXjFcq+F@v(jd|KA6k2xgNlyW>J+00d+!>D@TyjhN(2yQ-=abZq_d;S>yzYAZ{XDUcKt3 zI$e@^@{BT8nPM+(m=gKim)ShqkE--WLZL({!-{`Sc)eFH8 zLn+Yb9))7}9r@vUAug0T56l!0lRB7=Ul2ZKN%_pZtx9%&M+3qr@^2l>vBII5MG(@# zzrFqT;Ojqr{`T9?VebBq!<*Zmk6`gRe6sy7M~{DC#@zqm@bJkmyGK794W7dUE;SFn zfAe~EZFh#KS}$LJb@1xz&MM;u$>8HJ27p|#a;+q-iITD=833-eC|$oD*w*^{gOb@i zksVz_2C3@r4c0||RveAT_MPwznN*QF>>ik2a!t`O4tu1*FNZ{NfHI3O2{M5!2tt97 zaxLn#2MHs{ZJeH;z7$8unqA}BX~WtY$^!XPDvJgUx4j7+PKG7l_ris(-MDS>=ZNhw z`<_0@33fkn>wr@#Z`95AkKH%l+~;Rho-viiHt2MBu-|cx)~!W(rRu(q^iv&m&!q&1 zn+`JZrV4T)xMlLzdcRWc!=L!>P8r23$IKsD`#Y|t28I5mF0C^0(D8-2vdpIy;@m*@ z0F~oC`(GJV?r$BC>aPtm^;g80+6Z7ON}Xjrbjm6F`0<1=A?Ul0qOTlvLI|^~x^y5d z1Jfm%dRUI;aMc$)keZQ6wq3Rd#svD%&{Z>yd!do0LQ~p(A(s*ajC>#;9P8M+pI92@YdS7x_Bc|aQgR6wi0Sk&FbE{8Yq z@^IcICz1WFA|d5BMjaWvR^TPgCIk^a3*adBH6M^ybhQFBd?Fi4{!Q8WB;8egCRq4_ zrXT0ibl*c0&-k<3daaDGG^zUZ`VYkuSPA8hZ)Q<5%&Q}|CA!N#Jlo#h50MwmdEmP- z#gPI(Nl=qvVdH8LkKa6h7Jemc5Cvw24vYHo((FQ9wDW?c4S`&v#t7QOVRKWdp!vmo zIekYRGYminj@_JAGd|5wC+aoV^6SP{swYF5k-_N4#;7a3QE!ldUQsf@m2Sq|_8@j4 z_Von|Bx=Dc87rH(dOe}_x9eh@lqXb7mL>uK{c=|#zAVm38k6~nry%YxB40jM6X5CmPJbxbSB$(3_>SS}6ldHND z;^f!Dn|w%UlMS7(zY`~j>w0WhkvXm|s`~tbeDVo%RN{fp*3Jy^`RU5ft)BasWAcXq{pb^tB5#oLpy@mZ;&4f4y09=JN^F?9nQ)J4xzGUdG zZ8M#@hC+DNFx+KCPV|NNr&9MwyU4<-*i1NeYY#cn37kU#W$ZHAOk*A0&6Li_22A@P zkE)^y5WJHhGw^gHG?kYCYO*}s@0?iO*ihfL=od$W4P*KAbrZ#j7gWja z-BH_n1i@$m#G@y2sH zME^{h(|0ykR|y5obibMsFjVGhN_AhX)MUX+MwP$DyxVN`oppSWCd}S^LAfIx#J3gZ zF+4x#aA2Eg(wth0>&i?6;+rt*=51%(I199d1P!kmS`S7B{kY8U3!(4F@N(wb990R*!u|GKTT{?LVN=ZS(g~LYJ@k zNE4SG+#F7t^@;GVagc|j=t6t8Im70=NY8H zvw3s5svT1)XoTBMar?M82npf_JA4oxm6TA-{FC>nP?PucrAPGV2zs9GPhW!jcLtQd zl06A+?42C{Hj;)LAXh{>vh2;kA_%UFgKo))b6!!=ws_UMB$}f3IeGkOH7u9kP(Hx~ zM`*1C%z301#8q4|UvBq-;-Ku4OS#Lr>Gm6mJRFI=M7jep$85W(uJa6cRf)I{8N6mmBGBLl-gc>t!blc7f&3~s>7 zGY9J1ZuO7dowIc6W`Y*WR9;h0z|*a8FTxa45l-S6j6n0cTy!r*W>#HL!I0DD8FDov z8WcPH^UJSypRAbZ&IWhG26s1Ua3z$&hTWev*ZtimLo=O&U)OEd(C%Pxf7F_l+sZ5? zgAX{oCBL3Xl|qO36~i@1%FTJ8!6$e(W4O20i=H{!IT^KMQe)1{(%}f^9KiaDR}_EH zJO-AY!`)%=6ez)mPlv_s(Wa;i>_|UD9E3Rst81NTuDuY>H^u|*hPYG=zuQiu3{00*H%27Ie?s_uF|&1?vWVUXksX4 za%)q-6S=L;f7tbYgr#`JD{-j4BZ-$bUflzj_ZbO|DfO}hCIFq1k%(&k+<|zbkH6E# zkZqf5_`8b|$V74h=kdJuQur4ak8UXAg%wJ_s>~5S?)OUHL6~-=FE8l3y#aZycu4_z z@X+#w%!Xh2B_8^(`$#AAqbvotV#^@`Q{Wf&6x*QLmE631PmYqgw%nyMbDwI85L{Rv zoPJ&}Mq3}|IPPMzd4t&9Z=mIS9q;RduReeK&B2>DpMU%Hpev&Y2$?kS7QkoLEDWvGWFTen5xO;2#hEe1CWq-KYGAyJ1i^oKS=rLoWd=rOgK8( zM_Ez~L5Zn2A*n(-aku1xo&Zyg86VnlZ%~{R%o#gitAvxC0AvlCs8wzkP*0O5S`5Bra2=AKd#IBFmIXYy;wDS3Jvo zlwr^!t64`;x*^DA9%yFW?ay3(^SB;I^Zr>~mHDeK@DA%cwFj`3$!YH{H6`$!SC8xt zt{e2E3kXzh3kl?sRdVYD<;{OY9|fVx35kH9I3_r2IIIf2Cl8+<^~5nyypafk!bqIs z@c_+&VP`FdFjmk>MFF+~oCnW1dr1UNi5>=b?rJ^)`Y|Hl7$9<-FDEZR1=pTof}8X_ ziCX`b_Q8EV5M%2)Zw4XJfrsHdJQ^gK;nr$QJ}P%Ph17gLCBcgTMoUQSOnPGo&UCGX4*|?Aov4t>+2WmQ5AEc^>oN0G`S1kS zQzt)KpWIxnWbW}%TW7FA?aXIwr9;`N$?bmZe;HgsMPf~SIiK9Y2#l?A7ckr2-xwlJ zn~ixr@&<5CDbRp;0<3}6+9Si?BWa5!<*;h0S_jNKduQ0V#y3o7f4m z9(4Oc!%}DX*;QpFxoVt9aoaY|jQt=IF%F(8PF|^}in+w@gutL`FUUo4LuB0`+!_B% zo$Bl{G|X}}7ieoMMxLp*OM|XuQ=X$fl_PudTJwQ6wiD~}{-td;XtpyLt}6g86D&(P zp~-rVt%>L^|5Xa{3dVV!3;Kd}go6rs1YVj_xqAGqDffC5H}Tpg8DLMee=!4Md|0VY{*gB` z=m#g&Z8K$e^qx4O0bDZ4E61k{UHDN5CY*{8Gc_dNTO%;GXSea7M)yfTX9YiZMC2+BG_8C`uEgbu3gdiGL@lo7yvk4hKoXqO-6&5oQ2XuY^MzA zyuV+7VKW*3h1!3X_)7(a{>0sRmO4hMm?eKiagQv#HbX=)#f|Jl4KmJ?%tX9Hvj12F z=h2TlOA5ao4Cfh3dTPu3$vSj-JT;z3ho;6*u;guW4_vkTBc;83{nb5@(k!MJ_3(R# zd-gzRF}gHrjVMNz4Tq%W&Oi*V*E;C@v>QArv2j_!(aJ)*WxgFQ#D3C{ z|Eg+u4Gf%Ni#yHSd+4<}U^qQ0hxHtMbscJ4wxJ+p%OKn}?zw{Yk7i&!7F~n^r_kQQ z&Uc}{S-ci($QIgY#r9gb4Q&NZpk1xeu@j71!C;fMaK5a51`BR@BDIitHE z4oyBL%knp{r+ky`S%YT2| zy&U~K41X_dX)O+4$SGFf@rCU^7?&?>=0W&;G27V;r|&lg+FOd$aL7AB9Ri};L^JQ7 zs-hzLY|^S|M)7)9-L3x30{QVI^oEfgV@zsbFj5cRpRow;MROG@kQV)K9Wo$k3WS|7 zEhpQ{w%R7gZ|TO4{lt!FB4(cJ()q0m*a0aJ?6-v0#PhKZ)S_STC-Jv|g?@ofZWETs z4J1y_ngC47(|Oa9jQ&a3U3e zNy37DX<8H~2$&CtoOE#t)Jd3-A;XmO(~DwJUshWl9_ag5FoVyV$v1TQGW9t+-_Q8T zUa|8Z7xmbzGbhvCVZenwq=d#vq&s&vOse+#H^1BtARhiOemwYL)Mw0s=X6&5LO|<3 z5SspA$JBNhbr;QbJFDMS>_bO6+g0v}rgcy|k};AnW!m`b^4T9ozP-Qq{g>lo^#Jr^Qw^OifeZm$Q0t(ik4!4zg8=eavrZ zq=)6nDPdNjB|`wg6#sp;I(cnUW$*Qvtd#lBBweo+ZJ7#7^S3lM7r%#WrOR@5(%i`C zWyn7_&E+pAoV@6lSq+z!o!sm)5t@1+GqpI_3oGfeC3nhSluO27^V(`2I={IEbpf=D zC{eO5upP^`@?&PKg_KEf>K{*k$6HRB-E3p?#bqS{ z7HTN`!ZaDrg6YpkcycnSKC(MfY(fwXrmY$2CBZe(5k`@&!)`FCAV< zY}yQwVIU<6HY5l_qKXU=IIXg5ny(Vn}zSE zm^xqlFotls6#qbEHer8W)EY^hPz$=uIRVztCMS zCd0a-;i^N4Jc9ET>g?oZP1j%qdtFa2s=3({aHh1N2s%!m1mt698alQW;5R_d;AjML zo68>yGYJo^8jqAXS}ne=uD`9Wj7oULG4syQu5V7JR48?Kc7>rJQ3HX?vzcV689_zK zEb~jPKoPpmGuxO#JK_cz;APg#>=y(nN8$AV6 z52d!FP=nasO}gCC-LX#vSFh;ucy)Kj($%&7

AUNGso$f$zB#?+2z%;T3%*z&a+&!78&=n0j~vCsn5lQ zRTk$uGQl)nJOx`r+d4S*E_Q@&Y+9Ho90*O*icjRhT+2m-br`#ns*Q}R&)pPjMK@d1 zwxX7|4G$bfW4_K*6?*0n6^YN7XZaKMSiqs&In{yw!c|L!7^kEw#>hzo<=Hrj@nr-( z{v;o%N#PYwHD;}uS*o$)6Wl|bHX4>o5ziHw z9>2CiFbxhjpbb%egQqdzazR7VFf8{`AZ#T<|0bZDT&lPST@U#W@-0Uc{Q>C~Em-*EA833r1kcW?_ID zfr4&=8F5Z_v|2Hmsv*cE6vmKyG@{Co!#Z-h@A%!za2#Z@tio=U(8dygq^qA4G)&rg zKWpG@tt3+t%&gu|GdSd{!^7FE4l)h6`PY{^Nxz;gMzi=#IBGj}rGsy@Pi#jYB~&dK z$QT2I`maH~|9r&gho1bDgv4q{w0mfIgBz$SYDC|u`A%4N&vGXKMea+Q(Pv3IhS~@0 zrw#4@KsE`nC==B$BYeY_PK>gSsKe%PfGzlA6MMWvd3ezULfX}WN7TBz;xm)j{^fbb zkqR7Xz&$xR!fgK3RQRX3&n;jgG5Exe&6uLk$p(4cl zE4A>xr$;vx5d#PJIJN29#f>St}-Z(PVHKRcbP+Y z;uC|bJh`&8q5+=hz-bsPU&%7olFVrgCv&J(tR!?>^-<)n<^t^KBVmn2s~W_ZNZFX8 zW~{gc?^}Y^oN(-Ee%zBq=)9am>6$$*1O#c_AZ4%KoKwdj{^A0Ei`6G`eRn$bdO$BN zx!qM%+=w;bDNa8@!!g1c6Rw9w|zqZum%W)`@VIV})OF_fv4~gwi=v zR0MAs4E}}nHTAAt%%EEGA*mef3o>`o@EuKH-cTy;NhCy`UX2`CAanKL~4wN<~A5V6Vb1OYQ}8tjeL>&x)YD z0$;x>r~rvmy_C0KhNsRWbvQ+X_RgCGm`J$DwC7a1rR2WWt}-J9FM#i3&o*7SZXoKyi|4Nur|$DjPHuz87FOHkSAbJr zMf!gH%Ju+zC>(fdGQH8vM{s(wXTm}i@7gk^tKU=}in~y8qVpF$H8u!y(LjSz_v%&? zGcW7W$Us4A%R2&}O(uQm2caij%Qb^d(}!I!whlO95tmCgqZY~T>5)U(Np%pqL>~k; zQLQr>IG5*oURh64A_z?5)8K`@OkcUXLS2(CuK9p5xk;W^(2Yq<#&Kn0eZBj}Xb49M&F;zgFbvnX6Qz9O!5u$B`h z21~BP^fdU?9@dXG%hmu615I5WOAnLk8j<9;8&LZ{${E>;Vz64@9eNkCV)?3{N)WVD zgzr1d+u(Rn8CCN>v1!wnx5ZG6{2##UMB3%GmvEKkTEF_|7JMX6AYeZSlmc(<;9AC)5n+J%bFW*uKy3dnD!<6)XvSEBIZG#d{-pmX8hFt*ko?tujf!|c7TPh`C6 zS#}*984l#_<7{A2i=1Y1K8+c`%Dclx29!Yj$Z^~xLbtNnh;8q{T%7T>V?5$3DudvZ zJQ0m`j8ncn*7Z<3$92G&64;AiNVAx+qX!5NA}Q3BiNiUM@!eEnLajt`Z#Iuv{)P(p zfGJM#Ruim{b=7V{+UEvZ{*Y}B-&~`WU6u~81&CELj!59tb@|E*BSsC9sBe6ZlfiL~ zO_K3V7Pz$1mvQh?D$%x%Xm!wV+z69qhfTZerJzFvk}=5)AeI$~f;{m$L|2s}GI<}I zPG!j6HMd1v2BpNs!l6^4sN+la4MeZ+_Evd)Csr4E=BfT6lHhsXozJv$ur7Jjqc+GL z*od6A)cE>Tl~DwjS)XG6H=fT2JwNbYJ@-Il@fv>+%q5 z@oTjxdiCP1j?e2}yux)WZZ?qXc>&Uan0B|Nrz+#wM2VQl<&q@1yW4!;wGZ>$mJo{ntUwr-Mn`cko{_^Va55GM5@$IuWs@P7GVEccV`tsS=|M~VSV6|s= zkLW*B`#s!@>KDhdxb^vV6#YtFHs1dD&9g6mf%juS{_^I#Z@zi`?b~1X$upRavJMmk z*SW&W5C;0NPZ=vmaR#BWtF|J_gLq?_;^L);2B7?(CS={$XP0Te5@q}veb{cC={E#1 zMq7N%wkLPI+hM=^;h5cKsPFE8sXKb{Y`4mk^n?g2Bksihq)@`^)2>fOg)g2(t>$Je zdan4<(fBOdR==MrE~ps7UG?)#d=yX9Xs6NItU;@#|jW#pwqEdu5 z1K1Nq5GqCbzuNiy6&kKM4t~1x<8#HNuzPQ3yR%nq z5aQg<(P5tI-$06!j}xnS!SV4zj@p}1@*G!8p?q!MN8s5{R7I^jyzwomW?!l4Cs4jG zE%x>5mJ;^2zR2tbUdOr{XeqDfns6eATCsSqnwc{Dl;S0GykqVzjETgCT_QV;GqSC4 zSB)C@Vm#NCqcQBA3;_4gfH#D$$AlaTql)pa_cR{4^TT$#CK6#hKZfZ_`fx6usXf>p zNUR$jJJL$a`0{92ih!GE^R+LE+oJ$%4rB4&5kS;(-ga9ZP@M3b(7Y;NA;-Mved_;ECmLzO?=VNw#nY)oPZJiqFDov7l(isAOOA3HL3uUbU|lVQ#hfaaQ?vRnb! z@zGJ1d~#qHv*a~)Yyh_Jx=?!Kt&hFu+oQiR&XSwfsxLOyF$RXQV#2o@DSJu-K14!q zw4SBs$@)gsMu7j8NoQnf+To3c_H~rT`B9#{2gZ4Y%62H+pBCYNe}05c#_kvgs*D)v zYn94oVgV|?N z{XvtmOAL&KZUqoHilWTW;rl{_29)nm2p?0Lw%M^PG)YhM6L&P6--zD)K8Gz3A`ZMy z@Hszi_TWYp9k3cFs`Wa?T)ty)1!o3`Oc9M${!DtPb-J=xQlfdRhM z6g_*>ZnkzCg}w$!)ZZe0xHXv%23z;;t_kF^Z~pwY&N&SXV3UA4jU1fwhEMbR&Midu z?R>I9#Fug2n%70mY>61`3VN%tQfPFP9?v~i>@sLF#KL57Nh}iaqy`Ao%XvH=ya7|` z2hm>ZURz&rqP2H-K~|}*bmcisigbLga2v+DtwG(lw%0*Te8qo;DlXkOm%KGe;SUwU@7OSbnD>$7<|03R#xnK5Yx0<01RaW$1PO~pi=@CuOVmatD=`O94E*nW|+`asuvH+ zTTJMvtq@38BYbC@JFNQo6yDBHrL`X}%v)V8vV!_MJw1omfjxWU{vZ^ct8Eoh5Ln7l zNED!_pHJyAj1|o8pl@Pl5P&WH9v?hPDRD5Kf|p{gsp-y-!7tQ`;zMhDZ_O8s9r-<>ZZ0rjFn<+@33N@W^eYkm$T!FZEqPhnHe`PPgIum%~2pha5_moTRYQs^=)F zRY2j8I)&GEO6U=b0RXT#A(Sve2ufjzqwmSYkS8NU@q zlP(4Z>Zh{}ia$YOFeq+xWrz=l_pWiTm-az)f(4%?WH`u4we=H{y}{-#!_9 zCw*?`0&L+dW}bz3KRAvB#%f&R^eq0yqdK_5sFxtoLlKX|M^qj$d=}G_7lhDWGu#l$ z5RB0H)!}r{Asn%-qW5%{4gv>c;+r;jl(&QoE49f=ewrQaZAdBBs=1zVv5M)qlox+D zdOw2eQC*sXWy+Ok#J)j3m_%Td7wE~`YM30#)Vrm2a6xyg4^Z0#2gD@bpdKNY{fxZh z3sSS`BNLGT?u!P>rHOUg=(Go&Ol_ecrSK(i7v!~U!#Pftb_P;8PrwE6 z;U%3@(G@%Axyoa~_5GxdTf$yACvOC`!df_YEK9G|h@85rZ_Kt@wcLsHin{MBE4CeK zIF)d$u(Fydf_K;Uj@Tqp*SOv=@8 zrc~}E!1Lzb^O&<9*$+`1V8dJG#m}$kk=b~-zUFqWQ@1I1x{mJa8` z@)zzKAO!74%`=c1BnTpo<1RhDM-S#3p46_np;`wL=fbiicfGc0sLt~KfKvkWN09su z|3~J8dLL}M5J)Ldw=EUZB8aAppv=H^9qF(u^>5wAFSf3>L1BGX7uSr>dSDcp7Q!t% z@rzZB96_3N3oF`=OdU~MCsks_L@g49npI_ptNf}Gq8_-~7A1!?#>{(Tv9(q6ZFRl2 zx?Wo($q;A#Oh?wa+12~D4s6dB(#fj z8}DUpKcU|C`)}TX;?`O#t3flyDQ|m_-5kKEX0JhoyDi9a|h=?ieI?{s=DxQFEiU@H-GpaF2M z7K43=@R_zBt@|d0&u4*qprl5a64V5SLD@~6PY6WV&h zn@{2PBjJwjL~W3R>ZzkGMLr%5EXeCiCIKf9YPHcbX;+#M{)K7n6=z_zEIfm>xNa7y#Y(nO)`r_dI- z0jHRDBEZ{5m-WO9J@lcPV%9@u+iaYTudhJ7?BEt@uO z0MlATaeUo#Dr6Q8z0>xGu2NPW`u6P%z0A_bCq6P3&!?x+>6yNsz+Ej`atF6_qme(oLB0UQW3Wq!RvwGp8Ghb z{9TZr{3os)KzZs#R{XKOHcKhK?JB>V}cPCg{GX7D$%gcrkbBp6o--wlrAIIoLZRi~eNNGh4=IgF2>X z=&Dm!t=o3Rt!IKcnMe)Yb?Ww@g{S162qz~qyOGBeba{kJ*PyAVI^GGbG#HMwYheKN z4Xf=SchxG2iW^s_!biAz#ixd#HDisOG)Dx#NbsWeLp%U$Cwu0IwXrr3&9Bys>em{F zXGZ7M@v4p7cN@_WqxH6mp{&)U^YvQYo(9#4FH7QS?}Q4dE-*K6w?WoJ+>SM4tHV7N z!Kj$!*Z_B6tRZ@XcsSvhFHjUTW!Q>2G-DgaZID&Rssm^8As%743xF)O=JeD;KZU`d z1qYB5f&tH^$UO*NT__a3pk#5|m8yyfKeXZ8$Xug+fS6y>u+0Lbsu??@XTym)qHDi1 zNj$>HXG749uNlLzBjcvb6YLaiX(jS>2dmvgCjA#|MC3Eybh0lJo2pmrNE3Te3ZNd|lF6op!bY za%kpS&ru_H;clls2GwHBJqQgh15EcHPuB7l^Te&;a>C3y^X*hK0@WK#HTWn)wX(-X z!gt}SH%W$X=n4cinfq{o`d<5kPLOX9^sG;c;=w8S=0W>IgEiG+xm_twl<%S>UNEGq zaQ=?(|+i2i`EAHF$y*Q~d9b`E_L)zF)_hQ@x8=SV|G zfB4GavgXLiT>&1du4CTS8WxnWTH`Cu(L2QH;j(!ude^!Ewe?{}@80}`%&1B?yw^+u zj);6xuCn)`%m%gCFF?zLMV-DBj~ZOF1=X<0w1jQ1gT$Mgz?sMFaOHMtHprgyR0l61 z@-KMkBEmj)kNkYTlnB(+7ZWad+CeJ@*oJCi3E#Jx&-@a$m*Nt!+9<#xcFQJOgo;GD ziRx4%;0oXQaX%tUCr8p2eLoOSM5Nu2mY}^QV+%B(@$X)YX06>P&nhXrL)NWU^X6XK z>P#$bNIrsFXe3MwaN$~;*)i&1yNn%Y+luO zxSy+5b)ik2(r#nuTJ-@v`)A#Tu`{%V1jdT^lLyFW42bIOfd{{E9G*w1WKOv_gwE?2 zOKcA@_tMl6@R0n;%{o&O&97@PJ3?R75KkZ5l43Nf2+F2 zExJ!_yyOHT3HU_!rol{O8uUf1&>dDk_6GC5>x0;&RSG$A-ZwGtb!AnEL<+#*jaNd! zd%|i!gpO0Je=XTh$RsTUk=SA#C*>mfqe4c`#+|M5Bsqh}j0v+%y}^zHkKM+4LD0#i zGUoSe7xwKQIfUXfn|(c0=ek5A#*iow+Om#rzmJ=>cC&jFfgA!nlNw(fCjHR_iE zyF}l;8W-EL8=h(0W|dzIg-mxR@ifCoZ}>y)Fl=tt$mU)33-_9KO?6s}TDx}8^2A6@ zRK4X2+uB%jI(!RB<=iWx)b(XOJK9^7AT%uw(ixu>@-}m|5FJ!8HP@&s!-18^^&!FP zp84Jiy^;~h6}z>dmR51?lF`)U`r`|lL9Q@B5E*YYzaSpoY>IPi5g%ephDZsOFl;_Y zRL3-G@&CvN-TJ0!9C(vj_P{+Vy73hJuUXiucPuY|y(-+Qj#tuxjjaakWbx(}yT?j@!HTys@ZFL1ySGZvmJKR~iA$aLgaWI)S^Pd3(WOeGOs>GAIU~j zZ=tKf@(GPKZ{w*!$eiZC-n{|kGUffp=t~~-pu;&YZE24O}*wiX2)7vz=Mh>?z{g=``5P&0^^88Kf;8Ojxk3!-x z1Xu!3F>%DM&rH>94Cbtf+U8?hl`T)v_7S|KMV0S1)kwdrqQCsO{{d_{BY2b;wQx^a z%MT8b^QE|Q@;1MgAKb5(!>ltL6vgQA3CNggrsqnyJBCqB;&iG6BiL$kfYbq!78{gs zgtNwEo}I}4;K6K@r~Ntjv%zIu4UX!|r?B8fB3F~MlkbC7jric+!-aPb&`+R}Aq(~g zp<2{#YM;cQ;RJQ_Y&O~7+EU_5@BR2gGChJvgzyX{-fFk+Zr^R+ZEx-FHScb>Yfk7N zwN0ZT7aET#0XBnR)DX^CowUh+Z4Jw4#DN`bhVNd!Pom?on(|?MJW6MCH64Q_NW|^j~xcOJLXUPfGx&g(94KXr&OH z<=p4a(x{v@N9OggW1WqZNQeLz3fvc%S2L1U#Q;=M7?_Q}O3uP#Rwev%o_WPtGH&Fm zjtfp{Nt|18p(`b9qTzVJY%gDbbld^*+l=&Yl)2!hX=k?@UQqd0SvWrVD2oPMJjbrK zT2JNw{Et4q(sbothd;vl`>G_o^7k$B-S-BY4~)wUuaxs1LHPOR$LoT1>5|lt`_|m{ z2cKSVrUZ?|>q!u%eDo0PgVf;Rcl!(Jl2U*>lW}}T6ggOHymDCBNZ&B0*lY3;>0V11URJ2x2ZD)B8RQh`7 zb1>?`2Y#LkyXcVxmEgFp;0$2HyD-{>4r#Km#{%c?W>j&nr^Je=n=F(luZK>RH^R4G z+Mej;Gbf0+O*KQePljp=-pA;Z+q;tYZea=>g_wL~oVF=}@L;D>^)DiZFbVP<^P%zM zGZ40Oo`|5>DswG{2+mbd;||MORcVg7>2yGs*ms}z>uI?euUh#P5ahzGuI)>aO8!j8xgXc?%j-S9%h z^xFrxy$Zm5{ufiCwrF+y->WVe%9DbjJo%(UsW@XnxTA~6A5iH~I_>bRVEXM3WjoL7 z^jMt1sB!2(QsMb2%5P(SONm(K(WO_S11pVBvCU?633i?oVCTsv#*Q=75`G?LC5R{R z)Jup8qRF7q$51g=g8S*ex6@U&(U+l-dvIy>>7H&uIqnff$aI9765%NL|=uLc>9+~#iZZTV8S=_v1p@tOK39hJFJ zLZ{+kXX2z&3%L{b9RO}PL2Ajt5IpIWOf7N)I$SZIOs=nwI)7Q$d^(N~icqc#5C=FP~!fpv4Wlb03(X@SLl& z6TZm&)8~3GIMsW(nZD-ihFE^#B&fp{9FQ3A-rA{HL>?Vg10!yg57a+Exfy@PaN9K8 zl?R*?D@_^belLWR_A;D2DZ+ZrcfywJ(X!A*NR zU#9Jqp;wzL(9~7e;r258J}JWQlfNW>SHNv+1>Clm({Jad_zjC^A5A(d+?vS>&fS+Q zfsL7;qpZF)Q^R%GDeCw;w?Q|9@>n+SejJI+3iS7BGsm9vI}dLU2fzk3Kerb6D;$Y=AfNiH98$h(S-qX#_q z%#F4;x?5DmZ}R7+FTLMX;w%z4|8#ltF79#c9`Mskokc?DpDuH*h?kEgc@_ztf4bax z*T_ZE<>c+q&D90eu%LT22`MOm{^{~(A)ZUv7yY*q6Z`8(uAXxC*|TSNcebyjpuHU> zr_)x6Rc4Wf)TJN1stAu_kj`d<@4Ncek^*)85xyjUR-q1VX7{H=1BoGPi_es zzN&D*al50tmA@P%DT-+|?%un*d#}^#Z13&1JFT6&&o((UZmhnicZb(j{yE8ZAb^r=d6oq?QaJUBTRGhxhjr@aVEy~98X)p0U)f7B%y%vW8 zTA;Ie5zRtF(^U6+ifU8`vlF#^ALhuz1yIbI6Qz&X5zDTuT zV+;ZrM4>7N6?vJuD^bKR-xNQ7-QR0QG;QAt< zf*p$E%UFA`2s=mD5on*sGw=rwc!wBc6gM&pAn5+GkVUd^{-W|S6ucsn;UBKQpPQ#H z;hKiZb6^n)9xFtjCee7@eE^X_ZolMAngdih4OwSNF3Ln4h){HqaJ5b2L&J+zETc+< zV^s)8UO~^wux!6iRi#mZ6KIY}+?}U`SzVPnJyAW!AL4WnD{cfbS(c%fZE&gn;#sR@ zv=5@~N)bQsykO^H*VG}=0YmbUD!}b0Sueq`rNopFGK#?JJyZiE)}xm7i(0RX0P55S zzCIJ(9cuHhR8Pxc*kM-?-HKV0TN$U1nu%0i@Mx;$6xXpugugBkkC{0CcUgR#U;qko zwulbeQ`IrKW_%|+gQ*S<537Nq^n0bEX)OFsL+e4tL+(Yo2yo}0NNI9Q+Ut!2w z9c&!DHe~y&Ijna=m1}1_ej&$kQD%_s1`R3-{u*-Yt~qsSN18$lo6S4g{;a@dpHm>; zX>f-%b*$-%uIP2|cOpjyK-jJQ85gl0&z1nOiestEB47P2*X<6zBqzV;J$_sIcvdl9 z2=Iws&cpZ~jsUCPk6LZ8$GZ@|Bi!=rx=cEy!2MI_dOM1ecinNcmvWSaI!u4|a~$lMg*DRLft#pnU;ogMMs{>6y=SK#iMMG%b)9vy<5 zjj*zRFpvw?G8=K^Cp;!l?B+&j6L&&!N9Liln=E*Cc$0p;B-m6*G-He`=mdazU;{y! zI8fooyb{WN9WTm;g8B?XPB2EBzDM;X^I%+ZmptfZm5RPj2yZR&fp#b)2DkLcv;eNF zN~3f*kKM()ZRy6?4~P+5!Ea3j^YslEv^jnXo32S3yBUO^VRX<^O(|sp> z?BLkCAfAs>?b-!@qAywat9b5<(GfViU95TD^!x~_u5)pn8Ta29r$EO2o@74c=x;@T z;?nOA_a`>yl<#vPuyht#XG9PsQ=NI)p;O+m(UXH}t)98bd%c z7@Uv)g!u25(t{R6|4v79>$Ok%MK&=nT(6P>Dsb_nU=mpP7$B`lED|Gf zdh{u*=et16HENnv4Ysj2EjBe9$%jJ0Y4idJ3raPSAx&WW(vt`TVI#^=_1i8tY>x>N8+gf-Ir5igJ z5(NW=XcMmd1W=yKu%Lr9>Y%WPc6kqLd0%uOF`^qh@WfXO6d)&OSYS_|CYJ!{Il#+J z$8|t_iV!>tg2-cVAib@jl#XTldSgLk285a{{gR zfLMrK4aWHWIXI{a;bkzchLTUxYGBUum~rB1h>3T-KF`L&=d(R?U~wXTv+1hY=Qw7Nhv>yuwmGf$Z zp=jaJxci$DwK6)=j4`|h{Zs^YOO_J=R7s+gYYwK7YbLL(2AE_W6XBmf`+)@XV zd6I3lc6aTJ*of{?MUA3{Z90>zQX>l>#Xx7(6x2|s72Hul5>}t8TUB;C@68m3inAIc zg$_yT$|z>8o%2#Y!3K3AQ?jew3a;f@B*SMV3M|4bdxX7zrW!JR@~ zeSjXSo+X2$I>`U=G=a&#tXh}sRryi-rJqcb-+!s-hj`Tn5r~4b_Q$$8^sVo=cWS!K zetWOB&X>~b`@7qhhqd;-{dam;6>hUO9QWsgq^9I}HH57C2h6mdt6H(*PUuf`Dm>BB!?!9TCypEvN&O9dr|62J?d=V~$in8eeHYMisQFIrXNz~ySD6IFO= zFYb2PyYax_pT>7@pDrJvH$+wEdZRQwE+4KpUeyG)psGP7H@w4QKZ5jq%-WAsgJ11O z&06#d|9yl1zEuBSx^2>GeF;R8RFGB@;T00Ue}T~enZb1-rZjYlmJ3Bew~$w0=Cm@) zw=hYj>A0WSGMwNQJ57@JeTZBvI$QXK)Q&ZseV;3d$zSG+57j<-BFfQssLfYiNs)M< z_2C5fx9EQpQT(k&uO6eh(WLK}Q%KSK>myk*Db6~wO{YC2wxRobUI^=7nar=o^J#mVlV3Q= ztu`nB=Jo>2l5<{)P6mV2?PTZ1ZE-YZdYG>6B@ls+-(-{4~5~~HXD)4453j8xr;KiHQoO>GX z!fE0AKno5GXD+e);C?Plbunu{nnb<#amG(3xw%Ft|>dl+OZk;bAS8TlJl5K8_$x z7KZN*Yx1%;g6Q-zP7{Fuc3niKX4z&u!!m+T0fRAT~xSF1U_ z#3l~H)ODWYkNlfl3!r=T0NSk1UH9&r%?{|Y!qlVq7QfY^RO>m!wUinb1}E=l?|Ke8 zpf}YMsKF1bT8UbX3Jb}W@rsCA?jfLx)klw_b@hMy(Ry>;hk}r4&R`0ZL+XjXD@3)b zL8liv+MbgGGmTaP2W$DTSZi0sl{JHb3crohQDuFdb1x6{6^EqiZ-C!OqW-CfoH=5) zL(qMq6(p6`y=Jp!4ftwNtLhUuZ3VioiYg;I=Ebq8reGbMe#pw87pN)XTpS1@PGPDY za~WgS0|am&uKQmcMRD}q*DrpEW_qJS+ZOI!0iv%qW)0DU+5o|(p(%)u&CXz zuw)k90rg)K!ll9v?ZI)JtF1$V z`xDyyR@B}?u&CwS_zACzL=RvV7!T`{VRSTzkD;R`UM@X;Rl}Rb7Jhy6%E7}#kFMW< zcvtZ6=TWPzM$~UiV0i7^AQDoJp!EV;vRYiHqZ1{32!prZN$QYY_8UV#xHl$&tYR_v zJ77?D{giCnfK=+^qdL$HjtYK2!b0u9aHGok@aYWnpL(D!XX`iq2|8R*i^I={(N4#s zHCb9s!Ks*nQ}74jmM~M~@I-|6fzc=Hg@p>*Cak9_t^rj9N;ZxYK895sj>4@#!H3Z{ zf(&)=+0i4`)HhTgBI( z*cUb*;I6X;TOL^DNG!e5xt~MsK`vyvxkw8Q{56;noTjiL=7uRY#fB>i$$Q5_IcNpB zq!#@q@9$DqKra{1hrU^_uw$}65eVMPM5x4(Yn=5Pdha)zPu*-Rd1+S*;G3I{sL~6_ z<3UkbR%GzB31)Grj#5jLb zoysxgn{We}V(xDR#6a2+30o?sALd(Mtu>Ofq{q^+4n|pZ?_o#85+w$ZEyO3JF z;&KG@#op@h4xO5}1@dxeht~mgc$+Y~`qv<^3_+eb=hQZ~>eAk>-P6jwTzfpTrDMt8 z+*bNt>!Ew?cYPzo92PaYq`lKCG$mI|33PNc*ZfnO>O|(!~xDI?Qe`g z@7~~caj5lqH$@|OJi1jZ(*4pUy{bi#{z3G|dVPH#yIcPSenjxAxsEDv9uFBCqZ!lI zfB&4_`MJNjRij6GGd0Nccr=FC(j#yRXRfK%*wPH{wYci%TQy!hzt2@oN`3e9&;R`& zcQzkgy!-jEQf>TkdAM~f%}EuQ+FcX4s;EV$XgHnxQJkbp^ulgdEz?9t6dwWz8_bIN!V5)F>c`^KzhY9g-eH+{ zsV{ND)rpt_Rni5f=n6O>ooT^X6Lm;3CIPoa0&@P`u?eDYp%7dS7i<4+9j^KH;JP(r zwL?ICcN3sqym@{55dHHe5Z%Ju1%dkh>Ofgb@EZWL9Rg-?bzp7`NV^meV7Bz*VYIsk z`rvyQysr)K8CQoA%r8oy-1_gzPt}XcyUqIH&;6hKRmB|lA64*Y_0d)_?7Jb@;Vy3U zu63xs0MdG8^sbHL7`^KpqISI5T(4dMcq4$`HsAOiA#Fl5(T>`&I;(>u43Tbs@`oBM zbREAcNY-TQ_95zDeO(y)t{XwqDZ)>)7F`Q0GDf?741INVP}pMa_F;K-by(PN?e<}L za~-@`1HjuSo|o4F$eKLf2%y~}fH3sL(O^8DR&e3twbE7iyK72U0;D;VT!mG7P!s{- zSV&$IQ6UWdi5QTAW@r0wZRC1!0rS)^4UTG@J_Mv_S{wNwpZBa zCWtR!Fc)ai6$**~WIfp?Z0?0<6`MohK&eF8RKHn@t~U;*!mR|)aCQNaNkZSTATTd8 zt&s?t0f1>+xC8$%7J%1M3>7P+BodtZ%f{p!wI<~Q0#O5v79KwE>|d&`0nFPIwRjjq z`=Jc7jp<7?d84x>OI8ZnrsQ%A%m~}|%CoBR?jT)apbUfdXjnRF+BE3;lUB@T`mW^< zSzeU1B#)3Qw#Myk2iv3bl_jBbO+atifRW=3%UQ3Sqg!sRvQwXTNME$Rsg6gik=sOo z&Xq*4i*_ccpM+6)`JbzNlNW-}c|27zY-40rf<5z;s=S@$TakHrwNgW?ZAkLX*3vzR zE&CjrRB5a2NZtdm@-eKuFM03SingY3=Ow$7`y6cvuq*9R_66Irp)cR5?9;RIwpQ7% z!f(}_Eo*$L7pSx?)qD?f<*qe8E$L?EjZ4v0Xy3BrwgLzA-_8~9Tyk71ZC(nF;NB(D z%eOA4VDW+y8<)*+Ocj@IUEv3Uq20@3VF@l**u#V|@lED$$+qLz3oqTr9KRS>X|r@U z<2Q~Kr?vIXW)W-gPM>bI&%@lvJu5m@Hv3C!7+&F26vybzzCJ{oJ3qP#KUiC1C)4bP z1L|uVn|%fDSuOhf2fPu3R7j~0w?41;w?6+7Q)gVR{$l_0SNos8i9VlTI$yExNAK1j zzk*w%Z(gk*QZoxoB`Sp+A|v?qcAjMX^ZTSfG9P*&!SCnOlz+X6)iB{VwrgB#aO2!E zH_J_OW84lmLiNeU04o1iJetQ->MZF__3u~lw08nO9#5v}fKo8yzviQa{toc_@%(t6 z&9L!gGD~1R!N=>~Y|KBu9)B>&UnV{JZAbA+g2G@h1l+&dJ9o}~bI05zcgH=gAFf?i z<&~;C`Sv*>5fage@IB#|0@la=fKYgSt{+OVcM|;y%`No}Ta{`zD`W#}%a|K^TgD`L z<-DeJieSl_&YA4fY;4T1z!0`Ee*P5^aO3lrKdm3+*4vA0{B;bM+2Vzt zaJbW$jn)3cZiDS2Gj&y0=zGToUl0}6$XmGA(Hi*;&mpBEhfqE6bv+hP`F1Phe#l%n zTOV)WM2rXch`f^Rvp*qYDL`GI#z!}_4%aXBW=sA5+h%hg|G%ML3@$?@)!8A?jCPy+%J^4SJ&V&2+3--AuUp z+W6&{BzuLP!8U5qA7ogtj}{yeF1|~A{RN)U*nQXfey4ePSnD)z=>BXg`p{~$8qL3q z-?N+hIJ-s1W~JWD0$$93+-FU(V8|?F))Gkvu7|7_@bp5>cLjIdR6BK4KTt-h(fb9! zvotMBbuIaJSf6gNp$acu?XKSqA;tD40FPQ#-YZ^w%%mNHful0+j06K|KeV*>l9msg zra>;gUdw%QxQuVG7=s*Pu_+;W?Mh-iVbgH7}owzeSh!TPxHduljjOOt`zVGFb zP~(XU4PZ)_ey3L9WSV?P$Mfu9O-ABzF-5UJbO``+6=)CE?0YaB#{}R($EBZP8PE*b z_aO+@0T`Xd1GN*KU^Jr41XBTQk+-}t6{R=SdH@bi31UHP1|JGALvV6jY^h{g(*agQ ztSkiHAsB)Qo$gw%w|rp#xGeEgnhYlxVZnJbWP-mF{jApU z=8ZabUmR7%e4__$wE-B1y=K`!YG6Hz=sar2X_|Rrf~~1t$fiMIW4THbK5JU)owa;V z0b&Kx*?rc87OVEHoC_tqL|?d2N^0Px9$wd`)6dfEIUE}juI(;v7B|HN?c3}YWNT=g zBHl`>;QlH~uwZRyS=h*8QAqh*GbwbjeCgHR57%~Qu+l_Tj@MG|>7iHG2-QQYxg_qC zU+>1L?`S-ptd*@#XI5 z@Ym%;$TU_&IW^lvcMS0VE271mAswd`t8ac1A>fuleTHtWb&*hBU`hpMzeJ0VRS?V2 zLwH<+TlOUlcP<*UHmW(l^h^CW9;@woAPA^SX~wn5 zm3PdKGI_AOnO&GSH@w8K@6Rhu&3?vSMvF6Mbj2ZZ+MIK$Z#+a^N7v#D5RtXbSx0yu zA~JUL=EBz_B5SvLAmPT1hwfmRo-F7Yz5Vv`7<$O$pEB2sAj3ZS!>P~Xzy|c~sK}?m zKra1~d3rnuHUD-uOmsc9GLIquWppEaGq%Gtc3o^ ziVjJ+({t|BrwIwjqLrNR|u zX(6s(fk^*SGO@HYvdi1xA|s!3ukymNO8x3e^0DaYYK!_WBgI;yItNo z6^Yh#ab?!0O%MgJHxzBJCz0BI9ifyEk!cr(0nt>Ye}6OSv={|KMl}XgC1PrL7FOj; z%Vy&G^6C;X)7Z)pmcRFeO=F7XX18qiTO)Of{I<>iUdW!JL`Sq>B~Vdd+ZK4PIB z#2X>EiqG5@bv5Z#)1E6`-H6M$Vyt8LdSwAi)D{Ak(`LmM4U1z=#+9U6=|1$*StKOe z>finx{CFh^*YuJTa&I&ZIqAnm(Df!`1q`o_+uIR)8Q*`R70ADNBDlrf zW+hSx$-<0Vru84CL@e!`NP@vtlCO*WAJ5%^EORFJ z>WPh2Yem8Zq~64DL!&Q*xi{V=gY-#cnI{#{VS(QD<}!Mm>z79gt-2fXLNsWqRW&$FVAIe5?yKf?;*ZXGF}J@-~` zSd4M&^YZ0ixh!!^a_gx20Y12e6_SZvjqt`SPz^me_%_+cX^pbK%xX=E8UGtSJd09c7brszkHy zB1*G5z3`9j2cl*FHXdcYlR-LquVC9UWgkK-5Re;uo~1`=FCNVX3zF!_VK_J$&nD`} ze1g4zD>(3M#(iNn`8pH9tuq7;V_aZ}BQnhapMm?36QQjhztL+|Z4z7BZ?rZbacgZY zV7wa-22Td@=>1c67Y%b^;xMa$5j6EKl-U5h67m|x_}NNnBWV_i!M`79Tj-ItU#w6% z7&ueQ8`9zoDk^*&ry~+)4jeb)o8nsu)2Am&-pwX)FJY8rAT!UvN&9&+9V-!@Ee93a zhS7LF6V`W?kpiI!_K3OhS2O_DSO!sTT>?hh;WiBh4ZLaoHvB5Czu>z1-+fdIv1z-9 z-}U|7J)qh4Dm0s$hqw=3=pdRAlk?Mf(3=lp;Pv3OUggh^L5(;DKl#IWwyg?5x&J$f zr|~fQ1ClNQQCNJM^pf-gP@+norf2z*F*(CmyP28-QHaKyi3XASjH-(Pt*DGz6icFs zn_zYvqmzud*}~r~{N2XiZT#KA-yIPsDsEA|ZOCs?y&e2b^>*<$)w?U}wW;17|-gBmn=Yf-6D1wg%{{;1yWV9`2u z2EW@?{Gj}n$ZwhaP3+g^w?%%tt?d+{zZUjauK-F{>8~mBn}PnCqQ7RKzqTGYHkZs_bEWy)G5B1qzhZngSDL?F zgU{xY`MXMg#rVAIjjwqAnoH(ywf^?Z`eS^ya`^+)ix5ryr- z`NRBHyKw$QzK73_i_c~KHAQ~2T{wRt-|KHXgijy--25%+uO;$5eC~wk#luH_{#^L; z^B3$-Kj4|qPz+)zy>l&zr#Bdn5+UzQ6BKr06n;VYi0}z+JV1TxsS@Amu#i!FwRjXI zXK6NbWSo$gLzy60Vvivqhx*(;+qNwUi3h7y98m|vEP7<~d@zn@oi=$wZtaSB!DS56 zkh7JOP~_~kBpW#!B8f=Oo<$Opv#pSzHsaMhw1e-!?Qv?!^#t@9@Pm-(w zSWm3}HyzzJ9qn9?j*vMOF{`wnjArR<;T+4Z#$vF&%C%Tb%cF~?M-)wuBAOmKG(B2q zd4$mPsG#YQK+~K5ra$>Df8v||q&NKuZ~Bwn^e4JiHp#o!n&f^mOQyqg6qg*sMVTch z@uggVR6duvCSA%9xt0Glr|sIBsobSuqHF`;)*~&Th%j|s8b243l8aNQEec8T)G35O zgk&IDXj>F=1YKEZ2MYyGGqTVw6hg@hFr!cL3T3j;T~SENtxlmmQAi$6oI>}oP(T6} zg@`~x#~fJ*F&;Y0vZ@4v*6Ow6FCDpbyEq|ToZ2p;6ad)7>AHguZ{n=n!6DWW`F9W} zn}}ohy(<_0-D@p=kOlrRk7pqs&k`hwoeyF-zbzAP_nQh18Bozj(U;J z2Qyg-+EulFkG|zrMNccq4|)hBL;Nn81q7o19a+T!e*vR7$6v4}Pw|&z5@)bf&J>2v zY}x|SAcp6{rkz9Dxk@`1OZMyxE8kJAh}vgZ+e=(<;zA^zpJAJB$@2v#Iwj9J@mwUH zLiJOx`ssobW%bi@PCReB>OHl)C_+=f)m0bX?z#Z1oSu7otb)0&I?3;}?pC|NV(0#b zs}j%7yv}gzJqL83p5-@ScLzR4m=@kXd=Bu-%B`l;+hP&emv3cbF4>v)uDv+*s#v-{ zkJAsyNQv^tgCvT{Rfb7a2S%v+mP3&zzt2;37Esa~NdFbM`x(xAC(%)y(bYpds_ygJ z#(<}4;Wf0hSLuTz11AglL4p~zi2j|%5WZIRTfGe)p=AcuD%}d;C>89~GleH7Y;+g0 z;)kTyxkNaq9{w=Z2u&+989f!mXzU1Wl%iVHt3|Ul%X}bTEiF!2=#aG#1PZJnZK zMH@q9zfWfsWGKLWU=;($frVSuz6Y>e+|3|P5yn~t=Sh^WUnW%MFw!f#_Kj)GXl6$)SbM9O=LyYQNR5e3y$sU+TtvL*8&EZaK4r^MIYzZun znJeA9F;{v!jYru4e_l(1z`J9$NM~S2XxqAFW_94?>3%fBQr+7Uuml0lSLl)q%j-j` zDT5MAV>VW0wkz;a(^b5ln7$X>ku3D_#U_UXeu%_OF~YCR_e2vcYboSuPNUZQKkWRf z)=vIHQrOu-uX&kxt{3Vu(QI+9SM4X0!YT`7_UBbk4m(?fK--U>Q5`v?3VrwcFq{nuG9|ugX2R8gUF}7lzb7kZ@#`cyc>$ z7H;27xm|xCamp(03U}qE+=ZLYuKR%`u#dOdZnv&YY=ZBuN^l=0lKMvvDVC%|l zSv~=_Zc2Tv8p%o85GTNGDl zsArzI(DNk(UsK~NYJ5G7FBEvU5WXogcn#*IJ&E`X^I{VLL1ayRJgEKY$(GtwAkuEHbteiY^Eer-xH;GQC>1>vu zx6*NlP6x@+EP4t5U?*@p5B+j$LCQvt^xxvYtJdj`XEU|xpU|IGYt6=!=&kzSs^v%U zi05ngXVn@vmq=O#sg(UC5IL$6~Gp6Lu_-HF=p?0Gu4WkVXL^;!3dW;HzUO&YidA1-nn`KBJZ z*9Wcp3QXcAq8JK{j&f$dt*hJOV54^;IXb7|9Z@T+Z@Qj+j^4E_mw1!R*aQc55ui_L zidAG1T58F+jHu1lsd92wdjB@X%1!n4tT6zubltFT-?KHgC<)%fMKvsmxM7Vo06RT9|8q_a7z3bDDk6H;-^4~pSXm)Z*hvrj6hkT z=qjux%7_+NKbxz?>7ry=AK|utC>+WUfwBBpSo+66>7NQq{}d<57kZ8)_rtKBM zG%le8d=QBt%8^q_q~}XMSG_z3cl581{+TAHMHRhb+>T-jCu64yrf}|HJbwS!9TO#K zYM)JATAxi-4ygmz&2n7d@3d>{%tO>i2R{_gP`|hFH}W3!wF6&bd8(vcNYaQ@-*@%5 zo&c4$=cfruQQ7x&Hj~@>{&rI*IVHDSI{63N`gU6<{wNYVI`JowxJ`*Tqv{h!qj{hD z#-R`oQ(p))VN-n}jGE)D@9!XhI2Gyx!4gxclGWrk z9_0SpMEGCWL|9DTQZr%n7lnbPZpl*E#$r;x0Y=X!6=3LeJDGW>1AgiXWi`oi8_lA6ZK{Vat6@lWoTEE9)J?=P{O;uHb*Nrj zm(@hXZM2K(ZS(lr2C4LlP>+@B-Obh8;qi&GP2I+(8DGBME{~7OBK6@bNIh1n*UHtq z%i|Me+q#WSGroMiJsw}v&I8RQ!O7#>&DFcd<7-*GG({WDqI!HP*Mq`|;K^)@32f#o zGR3r87Bg+pNV~9NTasw=uAM@)UJSX0K<&smq{7XXSx|aD0~NO&B5jFD>gaO#9oxKj%%t ztbmmA&s&rsVB(B6Wr*H+^ww(InuebP!#IZ>_Z-;8IdF^fHkuSNAW#C$xJ|##XWM+@ z_gNEXk_;Uc1TeMGER{ZMVeUEgSw|8f>qTR;$w@8D#b#J(mNRMx$j<=sGl2XIAU|uP z*`y2_iAL=f;Rs*Tx>G`kWp!Pwycx_sG=5{&O}>OEuh>2P_=+^3qaMPjmD%Us9JcaT6m~hTmw~$ zJgOFXR4sz2vWERl|6!4@EIwbREk0{`0@uRV7oWG5S**5wW7W1Vtem%(>Wu3|$GF0o zl5tTpEyFs_`Qxb5gmRsQsIv&wVV@f3qRzRfa~`U*xebOS-qVE4P&t7;A?J4Aq zM+0&a(VI`FU{-;lP+4SR%<4H}^mLoxA*hS!>9+7EV5i&0p8!d>gFicm2W*FJ_&~RL z2e7M7sI5CO9cSBjVEpPw=Z+eV$0o3ROP6oy@-1Dy<#7=#-`3^Zx_n!gZ+lDz%Xf77 zjxOKPKpSZ$+cdj_#-760G?llIyX9s-G4j8;! z=n*?kE%vTBFd-pTp$xC(7|t~&7Ts}6i;#eo+d zDtE4DxsD3*@L>_Nj>q6Hb21%+-&B4x^l9u|Mpw3T8C}E9Wpph&m(dmNTt-*6a~a*1 zoeR$5wX9qQQ*EPyQ&6Xx!ic3i(*+oNb!hF1RxWiAjt0|PwoSlRyR+N2P-q9uRB|FG zA#9To=8vxvG>_@df|e`=<}pi68+NYujzHXpg_(jV@TYQxqw$AD^v`5EOF>J8vBY6@ zfHFwc0Xxey9%Z4LF~T1`rax#7+5lg|(2x?YpasB&f}}q?**ZyJ4*w!+SsPph+dR6*QrMeQrD)FYKmUET6xJ-Y2>`f&`)VDVeyva1`G?R0LsB)u!@ zTUepa!f8m;?a4G9#?w@-h4z>Mo{JQ$2m@r5M%+1roilP{CwX_92M zs6Rd(nGay%<^x$dfBp5ifkzmIITY}O`Q&YE^jFLg8U_uZB7lrfajjVC!bEpu-GT zAYKb(T(oUyX4}XcayIe|w^3%xTP^Nn$EoeG-ZlNKa_4#vW5}S#@>#T0(obTxA_lHV9 z)b=@QKGg4_Vh=TXjw%mzc&NNXrJb}jQF&cxv)gPt)+L}vgJj1L23qPuOWk%mbQhL) z{o`76Tv|5>0nPrIqpn}L7ewy;Q0`3;mCC&*qGaO@h-+JA>VZ(E9tdUXfl#JW8&;8e zAQY(wLXmnP6scUtC{YiD67@hTQ4gdNRVYGr@DilsgyP&~dIL2sYlIe*Ot2hhMF(th zm2*^dz-CrCCq)D{*%sye5*@HTk>isH65AnvMBG%n8FE1c>Z?}B{Saidea}M&xmRJU zyK#~ZeA$kI?1GxYs)2sDeeb?(YeD6u6-3J~PkwXR9)rrab5;|+o>$wbNIRvLu$5{1 zPJ@ko%cigaGVr(BzDHqUpk?i&4E(bEu7JNK;BN`|TfW+s;g@z+EdjqQzbD{t3;5dt z{x0AlP+$ESv?20bqqdS5Q|z+C8s`Lg7+wsQlC z;fDf|fwtw9JTUy##E8|zf*+(@aNU=#!7DnEX0GZ)nz^zQX{A?pBF$Xki8OnaCldYL z=vIke(S7DnD~0m0zSZ53JJ!Lv8yd%YS$9L&*zNk$EUcTnR;F%{5B3Zf%zPe>e6MG? zUgq;`WOF^kyZ`i_^r%jvsb z`dv=H`!Blr;4CNt_l)s(78H4V##}lJiinwEhrOUkm>G813yXl6 z;fKAj$d?(0*ehd4cW=Ose!4b0`srVr9sTqdXGgapZGEzX!5%Y`J#Y2j%>?Nt>>Gl9SN%`;sCFO~1`3lF;<~n<5EKzga1j zkFNJ*G9%@>aoGT$nO@&U!P`%V$tY7TXK=S{`4i|=Zv_|ySjFz7<7av{lv z$o;5hLLYpU?FXZ;{a}=}AFOS^6YmN1V}Y1YZnBB{W&O7I$W;*xfNz1shU`v9SR_R5pMi0R?VG8?}hOTFzJ7 z`Rdp&!;%ExA#V}r)eS*2yVo-t zH*eG}<>-h0N$~p1xO}}$ZfKwgaYXGzR}@=S9J3yAugnWS#-)=ZGCeRNQ&1Km&WqDc zj1qqmUn3$Y6jp4_9b5CBs97YIQdGzD#!DNMHw!ymjD6R|oz98)d2kM}j(VVboe3I6A5WS0i=c>YuzJ zFp;4&cV^_ug*kMVQy2<)XGYvyn6qd(d7X1z;*uCq;nWnUv3vE5yF>_B}{20)9s2`<(1>X zxEl|ue~2ViU}K&oD0cT|8-HK>JNXmHo`7CAnM#KOX;$x2>PD4{oy6H!;}6Lcs=;!e zEhdTLWz z$PA~-sehAw&8G7NQ!nA)ON8=oe2kXA9`-NT0uOtMNK_*8Wm zkopFb^~wP!Ka7-Q3{6(Rl(oIHTZQ*GIS^_LK#i-_9{~RTKq+zvI4J=rDFkR(1Q0Y? z8D1A4V9p70;ii_f5;o|=Ib1W_zAXup>giR6YIeSkzgE*zsbprRs^~&at^RbjsIGYe z1i(F1@Zr_OWPDm_6J=Hn5QzlBMmzC37;2+!ZX;n*MIVTIWq`GR5?mT6cdoudYUsE8 z<1Uiv45t*^SLjy4=_6-^_4YP2<0Rd^i)*HuUsg?+6tT4O%L-6gm&*!q0;ZWB^=@z@Z_rz#f#HD1j2&-Oi8txwS))qi+ZW!`|u- z4-z?$1&WxNHx|3H_1fMvYdeRMp`k%DYv*P!eW5>c`W*lF9o?=u*d5HGIuf^&&Dt^ zD~fW6PgC5MsflB4Puqu&)hXi-p(#L`+{f0X0wEdAhsiYVg41b~31ueiJd_0jtjtl} z9Hqzesm(Q+m;CF}u6#J$*;S(EVLa$ZS?^>#9z@wmIz(E7G!`JUPmgujKHet72_!jt zEz&NP(fQ8o1m>e?B1g%oX`@mNmTHLk1OH+gKw<}Wb?jbKb2m@SIs5K)&R~HP!K-mM z9VC8MLuZtgQKzeTKA1U0=$tpiuWz5JtgVV#pVM*Lzvy;ASJ~r!^&*|7*~NQx*iz|(<0QHm#;VxGFzrt+hC}r~tkT##N~g)u`0Qeo%oHOT z%`VWXPc*EIyBF!GnqH`Ghm~lYRUchUu=PnLJxed9NmT(l8O(d{6?l`e`ZK$jWRr^w zUWjJzws#Mk7ujOiP2NQ?;$K&@GSvq)6=(fB{uYw95%HbT& z&d}(awGDq<{+&hGc?@nzRBB@$o3biV39r1-jp7gKaSZ$cR4*Gw^`dq;tZecdYVA%R zAFJI?H$?5sDE_@liZY zO&KU)5dHtzd)M|hZe&6Dv-CXYKeV-Z4@sM%NZOWV$(NO6Ini0)){-ZgRWx#wY*8JP zY=%whGKv2CTQ>lOzEG6xWG1^O&y2;!rBEmo3WY+UU*)sBsa0iN|PoZ6uTa8h)+)XzQGG z&%#OAHJI=t?-Rf>>e1!>P1_EtCsngE1w}Z9?bZ6@#}C)x=Yt14R`;D6ffJe?KN^V8 zE;O?X=vCv|mMa*aRv)A=w`f~>FO}}sNPkN}65{SJ2Ia=oxz@ezo*_L(6x<$ufKDsE zBrvM5$+$mCrkXlD5J)F2Q>!Ks6Rcc|A#vZ-{Ri|13yrMZb}OnM=BZX zz>ak_gsM-`auA}pcv!<>7Z1^gZT;1H=w-Inn>8yn%zu*i_z7p4@AcN>4fFjh*l0a% zn+7-9&Bvu+HrhT0@cl3VRzRu0^ZnHS-gq(x*v5v3e>;<~{F)6^)vW*9lSz058a4f;7{2OxD*$uWVpw~GFid`ziJ*zV6HT^bq z7Xt@lHHu`RAFA$NnH(T%?!9MAzLK_picACUDVcCMfix01WBUDfV>nTHy`(#%kGZ*x zPSU%|Sb{ZYWKDEZL_jriXn&-$5PzHYqa%sTXce>lX2YZ_$_HrMXo3*Lnk-{u3X zE-@hZel)mZnbvG7Tl8G*-b<#J9Mu5%|?B>a9JERynLtKcU2JPs_$>8cV z9t=p6=uVO}1-6Spt*1Nd%S!_A2%!_lc;CR5uBB>iYk5iOlT1VqDBjs4NEv_PqUU{X zDtpaf=z%3`B^2lkFu;>dLxvST@xt^*IK=A<^5qEi-S*p8-@y`(g!?vz#)fE}H zmE5^(>9H)XlD3^!d#|fR`TM`5XBY?mJRD%Ot~lL9sfa!>ODj&nTiIIX!_Uqv9!&Q~ zc$is-+1UjqL?cWDL*{)o! zz;r|oT2eI7RvwiMJI!C}#P2}XI@`Hw1mB#J7Pn)oQPCwaw;>Gr&YIFN%{QX)7p;-B z0@86YA$<-10GHBXE{MU&gz>p$U!)U|WG5V?ZmEtzmTQg(jcVX#FeC4%Fdz;I;t^=? zAu0VKu17T0qf^lCK@4`UmY1?TMWJjAcK;hws*DQ-Xv3h%b-LnG2URk{cV-o%>_ZB0 zLmgcYqyxz4jZ<8?Pe)refqWC5lZ%2&9KrO%Zo*a_W0NgWw@hydSlH{iv-<$PGL0=E zN@BY6aM|KqkQs=&DZPXrrdjR{re4#(vY1dgjuo9RLsxxtvb68Iuyjq#)5C3+LY=;= z1`iYZj+$XWrbTIi=Dz~WOnOG93fuXmQy?_^k(@SEx0eVu^;02#ZFr}K(t3GG-Mb)$ zhnt?e9anP71jmY~BN+Q~e}eathO9m4SAi=j2oEdFQIgM=yUEORuqltEUlcRO{$)iKZn75@`6m}Yq**6DVLW;9@CmT^xf5%LUy zYz)&r&or7>N^U3+xQy6&I-#9~saqy=xKy{pGn!|9-EWX3BsWCGp(VyoW|D2v!}<`o zbZ;_&-Lg?`Rw^_0Hz8D=-_k(!xs1Zuo39J6k$U2x2aAcLS+%9 zq?c{aa2V)pbTJ9X8W1QY(h0R7Vya#JJa#M?0ql<%0VlYvcbgEFyfC8E6KsD>S|F~F zZ^JLqtLXGcPORz`!#3-WE3{UZR7cwHgtnqg)9(g=99&gZn|0WX(oQZ#U9k`f4xj)b zmF)%?0>Ypy-#PZ6nZ!r3*aZ#FFpI5yT`QW#X3n8q!Aw_56RC=^jm<2ibWa$*V0Wh_ zZ-iJfY29Q#kLw4s?ja&$U5zfI?o6BxmbAITWYD(QYH)T#Gf6H2 zwS>a13vZp+VwR5yA|i8g^6ta?lM~u3Hs^y8YA7h^2Qxyimu?iKXJL=y0i%*6o)til zl@2~nv%;nE&UM_!mk>ZnGLw3REHmK%6{Qu^iXoQ4kKg#Q%Z0y8u%kNVYLE+M{%re6{I0dUm#^GR}itG|;TZtTa=*4Hvk!u6*a}n)FSzKPRTQ8|BZ0 zZ=+HB3{rrE5v!F!CxIck0J^#u(LvY`aTo+ZC;=eQOlcTc`+}f&7=~ZWND+eq5Gh(0 zD4i?lVJDr&)7g~w><;Q@B=YB=6O+-hLAC%jS8!mM_g$+_&cIF&k6CuH*{V^&MEO#> zsZdY~_}q@WA)8OJsf#AVg44k&s)>w!h%^XqYd2R9!HOA`182EN z*AL2*O53>5z^8b2rT)RqiM9LM#`gUFn#|nVmbPzgvo}ZZ2&XHaG@|kJbFrC^CO4jL zE-y(to{Lu&S80dvU4UDESG(BzdLm9VQEZ%qyWks9aD18ILwwPQq;=~OA zb)rUgwK+pcR4E!sf2t}%;0XRZQ@|p=2mwHR6!ad2N@zsQop=~~Zq7qkND(~j-Vw86 zK!>u&D?ao2ig?yWLj4}G`CN=6*V33%`Q62qGO)}eN5{3lET5AT23a6nzw0=2@tlrN zyD@Tjo!wnnd0%F$_}o2K)=J~HFoGmDLAxTo1xErrcpyzZr>Np;fwMC*^)}dbWrDhK znugs%aSO?R9X|aFvf16)h1<%CFUj^t%jk=601d;w=^&Y$&C=!nDXs?SkwC5no--mq2%>Zl zkEW}=I7L+kRD#vn2)9hDFf~#<-o`1?kEZW0Mn*3?xEgknfx5U`n7w80cdM+TQ*OTm z*Mi*fe!6F`OBB@`OATFaOZmD?6RuJ<$FXuDilhx4DDl-Y`nF?dOdH7WbcMk3d_^!| zS{v=PgQppTfw(a;T#zHmQCRF3-g!3RwB@pH zRWa_Om?a<_!lBZOD#mVD$aC+)A&45PQ6pa|^nZR_xq(Wz?cu}b<8{@;HaU}TdGrUALn`6_7moA={g7{&FUp^HTQ&t+DMvdiM+vEh755<=gC@%wF zgei}Ps&S#@$UlTF`8B}6Zt>448UU?O74JmJOO421c2glGgCzWU7TALyYhX{!#GqS& zhQ+J4;8A+aW+Dp?1`nkbman-pHGlCC?}-UMHVWnK(b_aQf={vtK_30yatAiTB!!EZ zIghX_USTO}l9iPrNg%Zg4*#j)>|&>TAytp!V|P*uy>ZF5Qz|KcB&8OhX+rT|jML;o z0bmMV3IydKvJt76mC?*9;}>vO`T07s*8IjJd`(fKmSro#-Uh#go52&EB;BgGWFJ`gckx=TzpOn?dv1qL4;?YIq#td>N^RKSuq%%du+M6vdla zM`1cW|L3p6vqAT`Rz3QM`n+FTi~ANnbr|*Y^t_LaoCUBcFmWgw`c=dcEB{yt=5;q2 z;szoOF33wi3h6olrIAC0lokL7Wk4O&Q`GtD~GsL`>UAX^z!$p1hF!(wk*e2FDMMpoWbjF=FYE#(cuRs@F^ zZ)D-u5w>z{<}4MNjncFDbXt{mYO>p*!E(J|!kGD+h5sxA-YKf0qz=OYG7z3t7$&XM zZbv7t1tJ+rklM1w6;~Vz(?a3PaVo98JZi2!J-+{QgMU1zzTAwCRv#R{{JHm__LAn3 z&xM*33@FXFwjkQ7CSwpKwZ*`FLagTvT_r_^F zplcSHk`ZT^a{D8^!b7LY`LeOgH02Li5YTy4Q56vs?1hx8b`T9Bv8|NUOQnRV_MpC zh{^L5Pml`xA|zQ}k{_xk=QU-jmh6W7g-nJ@V7mz{VA~(|mzQMVQUwNC*DeRB`zR(O zfmt`e>lSUI3RZ+Ar%yXiqwB}$pZbv!Yg-vFV%K<#no@U0!F35tJc5-3^pF~zq?xbH zz{@m_vvs@^G3)@xs%{wIt-4VY(zff?!%V+8hC@lmG|tixpb|e+NQ*C$G}$n}T-z;+ zb=@o5E-2g9JzVlh(Aq2mX+GMU#efW{c#eJ=#UAsRerX=c3{pl4z$&OKHp~x2yv*R) zqP8<=xXGoqWu3CP+JX8ye62kEN}NG~xf$nI;y}=iz7FZ0h4b}T-@6UkAEWbcg*kw_ z4f6NyO7ovEc+1zIdwzi0C&6LUj-lJ0Nd)X^(jJeRim-iWZMEW1R3oo@r%AY9l<=oYO?J9--WsIx@GL8{Jz3d&@~FPz?L;8yu}P9y4oT}KN$o)(`H4x+ z>@y(iX*SEyVr6rqiMzjrqN2jg$CI;NZ}(Tf)%FiSs5`&-d51k8RKuF&u*gSr1HSMF zMC==9#PK9Sr%DQ;E@tCFKbZjBVWZIqk`dGa2&c0F?lrEGS%B2UxFI71K1dSsYs3Sp z341r9`6Ugibcq;PXL=QU+OMQ|iq(to011lM5H&X`+`dNme|RMFQ-bvYstl^pmY} zcp-}bqD_Fk^z5mCaa+2Q)4Ac5c(-D!XhEni+a-U$ry~w)|XNw!5LF&njirxh9U38Hp z&v+6K!^u?v*im#*L@6%6X?_&6vLF#A(QqyirqOVGKvd1*OlL!&szrn3q5v>fJmK-k zAWs!Hz51K{M>jl)P~tCuKNc$|`CU-|3anAWKao$O2J%210Uity_|}`^TsXp z1ELp=85F5#jvdfpjXz9j;UwddW^7U#oK&|@OEGY)Hx9+TLq(BCg|1~W?*Z<+?|#*bQs2iTQ`Kq+KV^j%b@WT70GG4v;mMp1RDw> zI4+I9+BwK?(LkQXz7#N-({pI&fbI^GG+G#F7fas^bi3EP^^k_W-Ytg|TDkRjVk>jU zv!16AYK7h=jVi!M(cki+g{`t{rX}szYVzGK;8fJn79W#Ibbj-Q{8yrb8Z6oa^pdz` z7kY_jV=VxUB`WqRg4@ENurBg#Fbb$U$A0`5RP;fWKaYFz23_8UPRF-sIFS0hy17o(Peiq!^bsz<=z~c zK)Kp)UK}8Nl!;b0K6ay(4bwo)Z#2z+tu6HMO2bhUNW@vZ2sVj=i?b`dqF^=*qHmWS zNa%LYd3UN>HSM13=n1|OL8DOozg2s zCh^K7wp`*4mZaLc=+2c*Rb_Xv?AR-~d&Nmo%Dh*wgYmt#FEMC&br&OgZC_!G^y-fJ zjp?S$i|4^=uFE?--nz2|eMR02hO?C27ZVH`6#-V{!H9)dUr=EwYM%b$QzsagF&}dy zQ2I%Q>$qXWM4Mtd+dCOwoeZeQ7_4kHN6g;I z_*{q|3r|F_xUUqE@-&%%QY#Q)C>S0>=~Hm^$vg_oZNbn$U;?tMbBN*l%?V6vdudHfi+-Jj12as;C}uWfMYx*xNSIL1m{9IH z7jK(HL-UM>#umwSR-{~kB98w&w7u>nu+T!*>I=xie;!i2U4C>pB)&vQFQqt4W!V46 zA*v2j36t{+idM4akku}MZ4L=edRlRijH9Z7U!$eXq;YdfVo*j(v0aI*GFRZAtGxWi zeR4OP@w<>$c-tJR0Z=RYE?czf7*3wHJ@I*Ea$6=>i|ETX<+e@Thkjj?+cLTS%4Yc< zakx+AR|zKmZe{r&yOS0j--h(kE%X!qc3L?;wF?xjDFGLC+dtoXbYPQAhV9 zN zE_CI>Y&lbq<9>eP^V56Kj#$N8*nXGTVqY-LNX0=Jh#ZWb0V0q$Vu^V%+s z#7;?jI|V)2DQs+~peH+Xda{%6$xdlccINbC$MwX%Gcfg)m;F%+yw2`$nQbh)d$=8J zeyi#4G|BNkOs6Nb+oH-x{Kt40Lm!THeJXu5x3q#C6RO&evG7KO2ZS#~xLBGPrd#6| zTYOyhm6vTMv}jFNT3}0Y(@%B7{M(0)}qNjv&0^Ld5B#ML%w4-7?C0o@mly_PJo@A0o?8`YG^ z$F;Ux;+09fa`6s@=NQ1^1~@SiIs4oCUF~mA{&n^@@msR2V!a*2VS=t=guKQZUnfq2 zRbJeRDD&-XFpVXFkIH>F=HJABmYWN0j;NDp%gZ&sykuRX)SS;dNBt(3CMgqo7(Cc;H zy#;N>#-~iqx~!Yp(Q$BHbIX~K$l;#B+@bD@R0o1NE9*nLL>I;bdAx(~!J*bl+b`H; z;*p;Ay1;z$}v~kXil~TQWatt8j@ZouER!ptE=ruI8H7!Od``RAsUbHHkb=HVzq=k zc3OHk6o;5Pc1ZF7k>?@36hyv2k_D5bAK}K;=af6m#F7=epmPh3G5I%^4DTG$nSq`| zczm0~g)z=tgfgW!gI&IzCCDY~&}- z2FO#OKMN-zh>Hjx?#$XfVE^RoPPq=$_#Sf@5Z_%|K`%0y;|>N-)48j> zO9RpXCcIIb;C`1Z!S{n^<8fUVXt@F{QvmaiiLm+-y}b!yM&~SwC*h=fcC{?_5#08l z6#W<2bb2o(N$|Pu7qG?S|KR6quKv4w@@L!q{GHNY)2~1$yPvjtL5sgjdZzjV7{ML) z^LqmV3+>oecjXs<{hr6*cU3Rf+?;yY<||kC_u!Q+zh{5_9(A3}s5lw3TI}u^8w~H{USk~WzLbrI%u?h*&hXsi6HwHT}&6n;C0cgV% zD%&DrHf{lRSy(Z)R6O;(WMdj|Ww~-zGjSP7)S-q%%PgQvY5-$R%8o zuw_HPV|-`IQ z7dY$~I2MK!7GPM=2Imn`*oR4NA{w3m$4aP-i4tWk35L87d1oR zM!?+&e^?7>vCtVTp7?ekEWq&f(3+;xa1`Ty4q2^cp2eBQBR(2k@+Nlbv9;+j z8TElqZmFsp3ie>*33~M`PS5O?I=YlSMu+0f$VmG;k7c)Ufo6%T<;Y7a*R%5=n+zLV zuY|2A%WS?_wuXZlO}nP6blachSBQIpx&>_ZQZuZ!+8rd_FBcee&g-2NGMSzT1=i?B zKXP?AzB0iO2uNK@!%i9}lRRu6GKM)u;P-okSPzU*4K%%sdC#O=ZQa2# zM{@#g_h~vC!i?ArL4Qu;a1^LrQc(RnYT9FZM-S$FKcUMV*@1J51mY#a^EnVLPFc3L>4!!od(p+Ed&wYnad->u_gZ|8^U zo{|FlMU;-IFi%D~*^^ny^4bbk*+(6DbB|UQGXeQVKJ$oag3&ZL1wDB}hsK^nFjK#b zo&9wzw|^#yPwl~Wet)ETq1R#+8&W^)=#^KdJcp|5*3vKBb4gPXJT`*x4h*Y(M%~q2__qdG7oyu zIO4TJEHvY@Ftv6SyfTP-uf2Lmwlaas(Y0s^#iv~{L%&aFuVq!~E{MCWrZ=u}&qX&0 zUb;Xh_DWtAFZHdqh?7#jf5PDClohWs!9Vmdym}oE2Ak$co-Y>RuC|VR%mXpOMGE^v z5%^{)Id?6|wIhn@nJ>$?k)$lg?x#t?tzjkgykoZe$c(E0bjR;cCj!7}a7KeKTIpV^ zOiEd#m%;+kIfZ~r`f*oApThEB>IsSO=Ze7_tZQXnF{HxcpjaKZPU7@{i3Pt~^e=kt zwN-kX(%UC(V^{5RZ9espn@naSL>kGmQ9_6Kq^Gs~rK(v5*|LEosVqNL;i)IX@s``g zWE-Db;klCZH8ww}Bz)S(M)X85 zdyDH@87)lw6a<~WkjtWi?+N;X0+l|#3odx6cZJZG3MG~kfA%gZWoK^iIyojwfk;rg zy=sIS2kmkLcp~x|+rc$UsYE98hA!`oGH?pJ9#J&H`5ouOJKb|5=@;&|MPyFjxdab5 zF%%+~B@3-zw(NL%)4<<2<~K8nM&V}KE;>+r_nZMawFGD0fUarbaS@D7Cxnem$PN+Y zmdOiwZB_kO#o9Qlrpac$808vCZ1pl739g}T_X9Q!d##`LB#^*!kWHo%UXDsNn0xFn z*~zLC?bvZHj$Y}wy^8UU8c{?f7nzU$IKk%#@F>=G_ zp{0VpaS7a3?3)tu1sGD;jI&rv`vVHl}nSsm5!EHau8t3G@g zhca$Zew30(#f{{S&Ra;2wzFh}Et(}1F|J|wS+d$HO9q_%bh%EupiZZ)vZ#)+4QZuF zZW&a`0U!V0Ha7m!l5JN~pNs^pt+h38apC}h2pQ|}m(=upZ%S5l)sS9^eHXW~x~<~6 z*99Z;Iv({7W|Il}2BM`RI`@v;)F?Mjq3Gcx9HCtf7V?4>U9Z&H0hfiA;~Zty*B9n# z@&YqZF7QZ(dDLwNr5>_oh^iKq#s~1sO^Oi+2;2l(-BE`-5;ogX$%>P5MNCTR9*26;(}~YKA-wQO);cPRzklPTY8cV7ptY5%z@66R%u}-U)sl>ty2u}= z$D;^Qw|9!Qb_0-P&nWR6yi+^3{?nY+*Ip^Gr;_bCubTbB!7)EEHcUQwNq3U35 zxj+)o)+Us>_51HZHm4l5K$CTv%%FJ?x-jru9S;*Tq*%67Dr}tqx1O-PE5OB^2{H?E z*>*wMwi(<}_dMtp7rD=?rId%g24MSA z2q4SObV>xfI*u@9BRy@JJQrIw=~oS}FIg-%9i8ho(_paa$WvD}JLYn-`>pG`Z2Q|F zb6q$N=7^aRZ5{ifE-GD6m=vzij1#AJT1s21+Cg0MHJ&z3pUeZ*=*L&kfB{w5PH6*r zKurURk&2#iccjz3cZ08c&({{)PP}*8l37AAbIS<-%Tum^ba@KSBcbV{N5q0Q^TeD# zYV)XS+LRYe=k{=3Bl&K%vQK}jZuwF*>o14;BkiWyo-xGm{}cKnu4!gglV_X}dTtF# zgYBS4sPt^n7-Wqt`Z9Y7jTbL_b%qRBihW{x73DeJf*}*o6}kkY&=uj;X_d0D^|G*B z>H%yzc({7-Jtc$pPDSBe) zsoPW7%|O9kL#_ODPVrnto7X|w! z2|{NV5*~j$gOu^YU%-hp6zgu;D_GnHm)t5-&#xVmC`=1F=^XST*F!psA=5opc4q+2 z;}PxbU!rKt1<1yae)Qo5EJo3}TQi5zq#ubHRE(#Q-T9 z9^O)%PLm-z&J$3&qwietxmz?=r-P8uBLXP8a)Q>R@`QoSMN#@(#rS4QnIO^j&V%Y3 zZ8(i};w((Xw-9uvFQepQfXrd`!}vyP4C*Zz-Nn9v>N_f^^{RVrpDO4rJ(Gi6G#39FFY1>TS@us9YdY^tETGSzg@o)zyOK zCAYq?X|*b#&AL)-B<6HK<$77mj@)7?^FqlKR5#cxbP=Yxlc-tBB#dM+|8*A4c(ia? zC+j&-1(z3l5qF7$po#5EP#S%4NCnY60R&ROSHr|KDv&mAnosc*2JVZmBy3kJWgPg>{McJ z>yVV+G`2G9PQo(q=qi}mLB@c|b?-oz1f9Vahk+Q0JuB4yR)WV0p^R11o&wKOM<>_$ z3^;SDu5Kvl7gMa7k{P6+;FMvm=<^P;iOMXEN9hH06=Zdc@j2{5fdda?gC3T)Lk`%C ze1)VZOnUJ@EkoBTO~u06&Egm(pLoC%me$2MLpbZ4Z9>?$DKtVa&nTr`EWy6`{J2)l9#^ zU=>MgWf+PIS%^3?OHM+lmBEMy#ak>T_yJM!j}U(hje!vhqlm*mp2mH1yU>iV0%)(e z2q<4~aWNgV8hlU1a(0Ln%u0)lx&tJ$&}+>pHjI-uD{Y(u^S$JDQS=~p!FgY>IcM7X zcBqUuqg&i^>?w;MJB5?_McFRqj@KvnCZ4ms;4wCc4YWW*whFZ<}XaxA&32eEpYqhNcvmhS@ix48XYCDY?nHfLl zQuF_bCdsOJ{F)`cM~{93o8z+&?j1bf<4W*A=vM(fs}puGSY48EQ4=^sVG5 zNK`SePY5-5qrsOXP{&6U!`?4pmrfHwrQqA@yuUPZh_M1#eC26Gk?@mvnOQ305 z#RnijTcMDK#o4G(m=mOeGe551z>T&P<}=lsO*iUk0|aCB%50noOA~&dZK`zZWi7KS z=NOj(wl%b0Fyg;1Id);Co%-a81(5Yc0OH{)f;6>D=nPJ7 zS#wv;KRY4uIS9K`@}M(El(L;Q63bqDKTBr)Gp7cpC3_ez&6Tn8#xJJDP^wpC`wA6Z zjL-_cy~d{ogZCUb$Bpv8yyQ9C*?o<-3%Z`~je{W|WJt|fzhGrOU-exFx*8xi1GYcx z`_9y;{@BP8G*&cFg&Pgr7ey0X+p#i-PGEyea_R?$pe=1Lf{ifU&h*;V0# zGA@XU_cEd3yy8a??Hgt4ok5q{&L4vRgjhy4bVz5phDmi7DnwCS82}hdtJsx~R1nRS$h#%X*xpO+3P>cGVFYk56>^t=CnS-1! zTGjLNwr+{mPmjF4)!i23%%LB6{PxYU+k)Sou}xZ+DmCD4l-*%$;&`xs|uHh7DLu*|3{O!BMjw;61XVR@3}?jG-x;&Ew!$is6e$ z=Dx3uv0~thDxz?RrTzIa*KUoUA6LaPBNSjqlpNY)~N2V(kRDWG`~K&4=W_TrL(E%kw6R zo>v?@tteiax}T#SNwb%ERyLn(;C-fzzu1RAo0dYOMwpXE ze?Ey9;g2%bKpObOF&2&aOrw*;zTv4t{xgEmB`ja`Kp6h8%?MXeT82|7O?ETSvvb@6 zF|{lNdzas)xJSo$*DGyX5L+HV&8tOd>Aqrq`3+qssNE&qr+>jk%|_D<^P3KSe8;AX z?pT+Y2(SVq&So;hccNeehWlp(7IOaMCDNL#3Wgl}{xy`!mWK|__3?l)}V-Ai>< zYssN~D+aM)bJRs*$m@=a4Z`$v8pWz14IJ-}@^flN-H@lYIJUQxrpL>)0n?<@%WlSO zdA()boY0c}&B5Yiwm=o;TiykSXi9I%nfKCkQ|=2I$Xq1gt25Tb#RYpnOPGaN&^6xR zSID0817Ta4Ox+%?aq6?ID6_EovSLv8__^0-Sz0`jXtHlD7ix3Y%h^g+UTQs$4_MrgIC5hXFsjK@KF?5mT3#B!N?)rMcV z%$Obu1ak&)J?}K;X6}S0OfTcO2pUXIMG+P{E<7??ee~%ghAI*>cQ_u~a4uvuBO`Jq zD4&??@yW}c4vkDR(OYLE)tpPtc*8$xT^w5DIZy-4-8t8N}4D7y_wJ*rd3=mM;>ofE0}Mkzb5S*J7d z6tNG)80T)L4M)V?)Ii$7>gp=~fIlw+zM#*3ucjY*S6J#xm3f6XKcDOcUL!Xe=~;X_ zt=39BDHd%FpKe{GwQ(}`+ad}+XBrScCxf0LE4km%jWG~+CXEhZm}D1W>JF0%L^tw6 zX25J9zSNwH;+!YpDw{W+8*~c7(_?wb$ygJgk~`PZ=aEH>L(EtY7!SnRi>--_ehc1V z&PLurNShuUVjuj0?1S0LaXQODg=2cFL8YFU{dR6#i+rmVZnBJP3!3y8ca9UoazSJC zPIBpLBdeL%)Md$_diPXl-qb`hg>>&sW-Avs*6>^CxQzp4gM5w)moej}Q8a=#_D&vb zo;x3zhO-e<(IjWQ9u{fo#+fe+Lb3RCGZ{4_=YHoDakIHIhaJ`}fdkUBH-g;&nt=L# zv~;pr(@tGKzS`I*7zKDdkW*n80^9=q2LeU@KkKhIT2eiRI=J-uX=GSI5hniIKHUBBB zsb#6qs>~Vqc32!JEV4D}#{vHd_~r`vUCHA_n?Cvn8T4P5pnp&gUeCXid?!2>K%*Fo zYxVTa!W^)`m=zCMfznaHNmd7Jk?$52V_+tlI<0}^1VY2#^HI*2AL zu{CY*YU5~cFEJ(Nfis|yf8=I7bIgvM?rb>MT&}_!2$2xCiLPqHt9mg8ImW7vzLyEK z>LRUX`bih+Db6IlqpmN`EH8OcSPLq)DH?5CRdknz*wvsQMyrh%CDS;oKdAn5z|ks` z%%Ag^LQ|f!6N%496_N=bSZEnmfMp>D-z-zPD+&^%d>jslTne@N;YK_}->& z>nqw_w7=H3KC@iX`)kd5(57eR`7FFmpH1^=AED>ZreqP=VJH+j`4wXBU#?W$LEJRILd^Zkm8v_4o90)Dxo;|} zjGS^xRm&G-EzZ43RDHyI&^Jme7hikTNUs0h0{)vRR^LckmG`&x6^h0mpjh2Tq5GE7 z>NYd~zqf$Ra!o3uXO(XOFO$hFG^&66x0&kyN{#9pZT@a8qyAN9s=uO)`m1SF88ej; zQ_f7KWmLIFReZxLV{~_CYpq4j)+*?lkxnOZcUpm}WX7jEiFkn@`=_28OfmApuu^N- z0$a-*!3NVmgp-sW13BmIg6?TTREq%+6@>f^T_g|97E94xWbapX0WhehlWtw!_6vGZI%N`i7f2-c z7rsmKOYn>e8dnak5YXKO0Cp5Vc)+J^Sm@{%_^Ji|wU;2chW~rln2{kZmeWZ)oJ@Qy zr;~cXk;u3`@KE|0J&Yd-f!L(>P3t$6>>6{Ska`7p(oM7H0*u>DGAevg);uDC1H)`Fr|*r+vRz# z1f{!Df)U=<<6m1M1G9Sh&q~_O!61+ZQyWf^-dzbh` z6fuSPAMKCEv*{-O3RZ((#!>&I6OT3lnNKjl8{3mfcqJLA=tfd70yrn)wDN97u@3RS zRe8=eISmf?U%w_-S;(q##}5cV^e5A^x>~1odNL({iA3mGze|G&1tn8ZD#vEt^ zZVaXLK29~k;VjT5ec zYeU?}YlfszzOAr)aJ;5uIt7~7%exss%WxF82&0b-nY&=k zbrDsGlUawcJLA({dNNH;CVW5h$Y|&^-2&V{(zCn-Yg7J`R5~UYq8;Zz8Gr5< zunC4CyQeWVqhgwAaC8Cys&OOk;VUv+wr=Hsj58@K zg(G08(^~fjLTOltZqK5Nd}~w$r&mFLdv=T9apPkJdJHLQ!bk?^|lrv!o&905aH3EMg;t?tfSeSb_wYoE=;;Icm)s@e)9+(rzar! zfN@VSZkb1ONW>dAeNVZ^R1Tnra|&|#<8tH4`crz_5G2LHtOEjh*}X4TR%fIA*wp#{ z!vQStr%6#Q0`6DcZZ;qDB{2#pmyB@<;BG?NM~PcU0#l>_tkUitz0q_ywI82HBiVf8 zs$47}ai!uiCjwFvOKw<_W5IEX z|3&jSN�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
Y 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

JC=q09BMC&}qTt?6o5@HaNX3ZA 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≀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

c*HUD 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 z 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¥^U+qkb66Df{MDVKc^RIHC`0+WgqY8{UWc4kGaiR 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 G0Wkoo9R&OU diff --git a/static/staticfiles.json b/static/staticfiles.json index 6c5fbee7..aa1b04b2 100644 --- a/static/staticfiles.json +++ b/static/staticfiles.json @@ -1 +1 @@ -{"paths": {"admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.cf932ba09a98.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.23c7ce903300.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.33d02cef8d11.js", "admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js", "admin/js/vendor/select2/i18n/ps.js": "admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js", "admin/js/vendor/select2/i18n/hy.js": "admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.997868a37ed8.js", "admin/js/vendor/select2/i18n/tk.js": "admin/js/vendor/select2/i18n/tk.7c572a68c78f.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.270c257daf81.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js", "admin/js/vendor/select2/i18n/af.js": "admin/js/vendor/select2/i18n/af.4f6fcd73488c.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.8cede7f4803c.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.5ed85a48f483.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.66dbc2652fb1.js", "admin/js/vendor/select2/i18n/ka.js": "admin/js/vendor/select2/i18n/ka.2083264a54f0.js", "admin/js/vendor/select2/i18n/dsb.js": "admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.70640d41628f.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.b5a0643d1545.js", "admin/js/vendor/select2/i18n/ne.js": "admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js", "admin/js/vendor/select2/i18n/sl.js": "admin/js/vendor/select2/i18n/sl.131a78bc0752.js", "admin/js/vendor/select2/i18n/hsb.js": "admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.04debded514d.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.8a1c222b0204.js", "admin/js/vendor/select2/i18n/bs.js": "admin/js/vendor/select2/i18n/bs.91624382358e.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.f38c20b0221b.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.dabbb9087130.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.c23089cb06ca.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.a166b745933a.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.a2b092cc1147.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.6031b4f16452.js", "admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.170ae885d74f.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.e7be6c20e673.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.27097f071856.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.766346afe4dd.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.08e62128eac1.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.be4fe8d365b5.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.da2fce143f27.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js", "admin/js/vendor/select2/i18n/bn.js": "admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js", "admin/js/vendor/select2/i18n/sq.js": "admin/js/vendor/select2/i18n/sq.5636b60d29c9.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.2b96fd98289d.js", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.efda034b9537.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.f94142512c91.md", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.c2afdeda3058.js", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.dc5e7f18c8d3.js", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.23c7c5d2d131.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.75308107741f.txt", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.a2194c262648.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.9f54e6414f87.css", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.3208b6cc4466.css", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.b4d76b6aaf0b.js", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.5548f99471bf.js", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "babybuddy/logo/icon2.png": "babybuddy/logo/icon2.be48fd16c53f.png", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.96e4491f2209.png", "babybuddy/logo/icon.png": "babybuddy/logo/icon.6377611bf399.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/js/graph.js": "babybuddy/js/graph.455350929c2f.js", "babybuddy/js/app.js": "babybuddy/js/app.e50e8057bfa2.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.5c045131725f.js", "babybuddy/fonts/fontawesome-webfont.woff": "babybuddy/fonts/fontawesome-webfont.fee66e712a8a.woff", "babybuddy/fonts/fontawesome-webfont.ttf": "babybuddy/fonts/fontawesome-webfont.b06871f281fe.ttf", "babybuddy/fonts/fontawesome-webfont.woff2": "babybuddy/fonts/fontawesome-webfont.af7ae505a9ee.woff2", "babybuddy/fonts/fontawesome-webfont.svg": "babybuddy/fonts/fontawesome-webfont.912ec66d7572.svg", "babybuddy/fonts/fontawesome-webfont.eot": "babybuddy/fonts/fontawesome-webfont.674f50d287a8.eot", "babybuddy/fonts/FontAwesome.otf": "babybuddy/fonts/FontAwesome.0d2717cd5d85.otf", "babybuddy/root/apple-touch-icon.png": "babybuddy/root/apple-touch-icon.33416748f239.png", "babybuddy/root/android-chrome-512x512.png": "babybuddy/root/android-chrome-512x512.89ee40b783cd.png", "babybuddy/root/favicon.ico": "babybuddy/root/favicon.1b19cfd81791.ico", "babybuddy/root/android-chrome-384x384.png": "babybuddy/root/android-chrome-384x384.7849615a1e26.png", "babybuddy/root/mstile-150x150.png": "babybuddy/root/mstile-150x150.f231c8ff6157.png", "babybuddy/root/android-chrome-192x192.png": "babybuddy/root/android-chrome-192x192.484bd0e8cb66.png", "babybuddy/root/site.webmanifest.json": "babybuddy/root/site.webmanifest.61dac00bb04b.json", "babybuddy/root/favicon-32x32.png": "babybuddy/root/favicon-32x32.076f1340f1cf.png", "babybuddy/root/favicon-16x16.png": "babybuddy/root/favicon-16x16.12c501486484.png", "babybuddy/root/browserconfig.xml": "babybuddy/root/browserconfig.5858221e0a38.xml", "babybuddy/root/safari-pinned-tab.svg": "babybuddy/root/safari-pinned-tab.3de51db2baf2.svg", "babybuddy/css/app.css": "babybuddy/css/app.61b50a7dc061.css", "rest_framework/js/jquery-3.5.1.min.js": "rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.d250dcb52a9a.js", "admin/js/popup_response.js": "admin/js/popup_response.c6cc78ea5551.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.e056047b7a7e.js", "admin/js/jquery.init.js": "admin/js/jquery.init.b7781a0897fc.js", "admin/js/nav_sidebar.js": "admin/js/nav_sidebar.7605597ddf52.js", "admin/js/prepopulate.js": "admin/js/prepopulate.bd2361dfd64d.js", "admin/js/SelectBox.js": "admin/js/SelectBox.8161741c7647.js", "admin/js/core.js": "admin/js/core.ccd84108ec57.js", "admin/js/cancel.js": "admin/js/cancel.ecc4c5ca7b32.js", "admin/js/change_form.js": "admin/js/change_form.9d8ca4f96b75.js", "admin/js/collapse.js": "admin/js/collapse.f84e7410290f.js", "admin/js/autocomplete.js": "admin/js/autocomplete.b6b77d0e5906.js", "admin/js/urlify.js": "admin/js/urlify.25cc3eac8123.js", "admin/js/actions.js": "admin/js/actions.a6d23e8853fd.js", "admin/js/calendar.js": "admin/js/calendar.f8a5d055eb33.js", "admin/js/inlines.js": "admin/js/inlines.7596b7fd289e.js", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/css/dashboard.css": "admin/css/dashboard.be83f13e4369.css", "admin/css/base.css": "admin/css/base.1f418065fc2c.css", "admin/css/widgets.css": "admin/css/widgets.694d845b2cb1.css", "admin/css/responsive.css": "admin/css/responsive.b128bdf0edef.css", "admin/css/autocomplete.css": "admin/css/autocomplete.4a81fc4242d0.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/nav_sidebar.css": "admin/css/nav_sidebar.0fd434145f4d.css", "admin/css/changelists.css": "admin/css/changelists.c70d77c47e69.css", "admin/css/forms.css": "admin/css/forms.1d89ec6432f5.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.e13ae754cceb.css", "admin/css/rtl.css": "admin/css/rtl.4bc23eb90919.css", "admin/css/login.css": "admin/css/login.c35adf41bb6e.css", "import_export/action_formats.js": "import_export/action_formats.11c3e817b80a.js", "import_export/import.css": "import_export/import.358144dd8713.css"}, "version": "1.0"} \ No newline at end of file +{"paths": {"admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.cf932ba09a98.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.23c7ce903300.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.33d02cef8d11.js", "admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js", "admin/js/vendor/select2/i18n/ps.js": "admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js", "admin/js/vendor/select2/i18n/hy.js": "admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.997868a37ed8.js", "admin/js/vendor/select2/i18n/tk.js": "admin/js/vendor/select2/i18n/tk.7c572a68c78f.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.270c257daf81.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js", "admin/js/vendor/select2/i18n/af.js": "admin/js/vendor/select2/i18n/af.4f6fcd73488c.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.8cede7f4803c.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.5ed85a48f483.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.66dbc2652fb1.js", "admin/js/vendor/select2/i18n/ka.js": "admin/js/vendor/select2/i18n/ka.2083264a54f0.js", "admin/js/vendor/select2/i18n/dsb.js": "admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.70640d41628f.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.b5a0643d1545.js", "admin/js/vendor/select2/i18n/ne.js": "admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js", "admin/js/vendor/select2/i18n/sl.js": "admin/js/vendor/select2/i18n/sl.131a78bc0752.js", "admin/js/vendor/select2/i18n/hsb.js": "admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.04debded514d.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.8a1c222b0204.js", "admin/js/vendor/select2/i18n/bs.js": "admin/js/vendor/select2/i18n/bs.91624382358e.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.f38c20b0221b.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.dabbb9087130.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.c23089cb06ca.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.a166b745933a.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.a2b092cc1147.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.6031b4f16452.js", "admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.170ae885d74f.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.e7be6c20e673.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.27097f071856.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.766346afe4dd.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.08e62128eac1.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.be4fe8d365b5.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.da2fce143f27.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js", "admin/js/vendor/select2/i18n/bn.js": "admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js", "admin/js/vendor/select2/i18n/sq.js": "admin/js/vendor/select2/i18n/sq.5636b60d29c9.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.2b96fd98289d.js", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.b0439563a5d3.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.efda034b9537.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.bf79e414957a.txt", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.f94142512c91.md", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.c2afdeda3058.js", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.dc5e7f18c8d3.js", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.23c7c5d2d131.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.75308107741f.txt", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.a2194c262648.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.9f54e6414f87.css", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.3208b6cc4466.css", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.b4d76b6aaf0b.js", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.5548f99471bf.js", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "babybuddy/logo/icon2.png": "babybuddy/logo/icon2.be48fd16c53f.png", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.96e4491f2209.png", "babybuddy/logo/icon.png": "babybuddy/logo/icon.6377611bf399.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/js/graph.js": "babybuddy/js/graph.09e32032c8ef.js", "babybuddy/js/app.js": "babybuddy/js/app.e50e8057bfa2.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.5c045131725f.js", "babybuddy/fonts/fontawesome-webfont.woff": "babybuddy/fonts/fontawesome-webfont.fee66e712a8a.woff", "babybuddy/fonts/fontawesome-webfont.ttf": "babybuddy/fonts/fontawesome-webfont.b06871f281fe.ttf", "babybuddy/fonts/fontawesome-webfont.woff2": "babybuddy/fonts/fontawesome-webfont.af7ae505a9ee.woff2", "babybuddy/fonts/fontawesome-webfont.svg": "babybuddy/fonts/fontawesome-webfont.912ec66d7572.svg", "babybuddy/fonts/fontawesome-webfont.eot": "babybuddy/fonts/fontawesome-webfont.674f50d287a8.eot", "babybuddy/fonts/FontAwesome.otf": "babybuddy/fonts/FontAwesome.0d2717cd5d85.otf", "babybuddy/root/apple-touch-icon.png": "babybuddy/root/apple-touch-icon.33416748f239.png", "babybuddy/root/android-chrome-512x512.png": "babybuddy/root/android-chrome-512x512.89ee40b783cd.png", "babybuddy/root/favicon.ico": "babybuddy/root/favicon.1b19cfd81791.ico", "babybuddy/root/android-chrome-384x384.png": "babybuddy/root/android-chrome-384x384.7849615a1e26.png", "babybuddy/root/mstile-150x150.png": "babybuddy/root/mstile-150x150.f231c8ff6157.png", "babybuddy/root/android-chrome-192x192.png": "babybuddy/root/android-chrome-192x192.484bd0e8cb66.png", "babybuddy/root/site.webmanifest.json": "babybuddy/root/site.webmanifest.61dac00bb04b.json", "babybuddy/root/favicon-32x32.png": "babybuddy/root/favicon-32x32.076f1340f1cf.png", "babybuddy/root/favicon-16x16.png": "babybuddy/root/favicon-16x16.12c501486484.png", "babybuddy/root/browserconfig.xml": "babybuddy/root/browserconfig.5858221e0a38.xml", "babybuddy/root/safari-pinned-tab.svg": "babybuddy/root/safari-pinned-tab.3de51db2baf2.svg", "babybuddy/css/app.css": "babybuddy/css/app.61b50a7dc061.css", "rest_framework/js/jquery-3.5.1.min.js": "rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.d250dcb52a9a.js", "admin/js/popup_response.js": "admin/js/popup_response.c6cc78ea5551.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.e056047b7a7e.js", "admin/js/jquery.init.js": "admin/js/jquery.init.b7781a0897fc.js", "admin/js/nav_sidebar.js": "admin/js/nav_sidebar.7605597ddf52.js", "admin/js/prepopulate.js": "admin/js/prepopulate.bd2361dfd64d.js", "admin/js/SelectBox.js": "admin/js/SelectBox.8161741c7647.js", "admin/js/core.js": "admin/js/core.ccd84108ec57.js", "admin/js/cancel.js": "admin/js/cancel.ecc4c5ca7b32.js", "admin/js/change_form.js": "admin/js/change_form.9d8ca4f96b75.js", "admin/js/collapse.js": "admin/js/collapse.f84e7410290f.js", "admin/js/autocomplete.js": "admin/js/autocomplete.b6b77d0e5906.js", "admin/js/urlify.js": "admin/js/urlify.25cc3eac8123.js", "admin/js/actions.js": "admin/js/actions.a6d23e8853fd.js", "admin/js/calendar.js": "admin/js/calendar.f8a5d055eb33.js", "admin/js/inlines.js": "admin/js/inlines.7596b7fd289e.js", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/css/dashboard.css": "admin/css/dashboard.be83f13e4369.css", "admin/css/base.css": "admin/css/base.1f418065fc2c.css", "admin/css/widgets.css": "admin/css/widgets.694d845b2cb1.css", "admin/css/responsive.css": "admin/css/responsive.b128bdf0edef.css", "admin/css/autocomplete.css": "admin/css/autocomplete.4a81fc4242d0.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/nav_sidebar.css": "admin/css/nav_sidebar.0fd434145f4d.css", "admin/css/changelists.css": "admin/css/changelists.c70d77c47e69.css", "admin/css/forms.css": "admin/css/forms.1d89ec6432f5.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.e13ae754cceb.css", "admin/css/rtl.css": "admin/css/rtl.4bc23eb90919.css", "admin/css/login.css": "admin/css/login.c35adf41bb6e.css", "import_export/action_formats.js": "import_export/action_formats.11c3e817b80a.js", "import_export/import.css": "import_export/import.358144dd8713.css"}, "version": "1.0"} \ No newline at end of file

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�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
Y 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