@thi.ng/fuzzy-viz 1.0.8 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -11
- package/README.md +15 -6
- package/index.d.ts +2 -2
- package/index.js +2 -2
- package/package.json +42 -28
- package/strategy.d.ts +2 -2
- package/strategy.js +19 -9
- package/var.d.ts +1 -1
- package/var.js +14 -4
- package/lib/index.js +0 -137
- package/lib/index.js.map +0 -1
- package/lib/index.umd.js +0 -1
- package/lib/index.umd.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [
|
|
6
|
+
## [2.0.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy-viz@2.0.2...@thi.ng/fuzzy-viz@2.0.3) (2021-10-15)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @thi.ng/fuzzy-viz
|
|
9
9
|
|
|
@@ -11,27 +11,69 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
## [0.
|
|
14
|
+
## [2.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy-viz@2.0.1...@thi.ng/fuzzy-viz@2.0.2) (2021-10-15)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @thi.ng/fuzzy-viz
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [2.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy-viz@2.0.0...@thi.ng/fuzzy-viz@2.0.1) (2021-10-13)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @thi.ng/fuzzy-viz
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy-viz@1.0.9...@thi.ng/fuzzy-viz@2.0.0) (2021-10-12)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Build System
|
|
34
|
+
|
|
35
|
+
* major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### BREAKING CHANGES
|
|
39
|
+
|
|
40
|
+
* discontinue CommonJS & UMD versions
|
|
41
|
+
|
|
42
|
+
- only ESM modules will be published from now on
|
|
43
|
+
- CJS obsolete due to ESM support in recent versions of node:
|
|
44
|
+
- i.e. launch NodeJS via:
|
|
45
|
+
- `node --experimental-specifier-resolution=node --experimental-repl-await`
|
|
46
|
+
- in the node REPL use `await import(...)` instead of `require()`
|
|
47
|
+
- UMD obsolete due to widespread browser support for ESM
|
|
48
|
+
|
|
49
|
+
Also:
|
|
50
|
+
- normalize/restructure/reorg all package.json files
|
|
51
|
+
- cleanup all build scripts, remove obsolete
|
|
52
|
+
- switch from mocha to @thi.ng/testament for all tests
|
|
53
|
+
|
|
15
54
|
|
|
16
55
|
|
|
17
|
-
### Performance Improvements
|
|
18
56
|
|
|
19
|
-
* **fuzzy-viz:** update fuzzySetToAscii() ([84c6a3f](https://github.com/thi-ng/umbrella/commit/84c6a3f077c16027c9dde79618992bbe3be9d5a6))
|
|
20
57
|
|
|
21
58
|
|
|
59
|
+
## [1.0.8](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy-viz@1.0.7...@thi.ng/fuzzy-viz@1.0.8) (2021-08-22)
|
|
22
60
|
|
|
61
|
+
**Note:** Version bump only for package @thi.ng/fuzzy-viz
|
|
23
62
|
|
|
63
|
+
## [0.1.17](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy-viz@0.1.16...@thi.ng/fuzzy-viz@0.1.17) (2021-03-24)
|
|
24
64
|
|
|
25
|
-
|
|
65
|
+
### Performance Improvements
|
|
26
66
|
|
|
67
|
+
- **fuzzy-viz:** update fuzzySetToAscii() ([84c6a3f](https://github.com/thi-ng/umbrella/commit/84c6a3f077c16027c9dde79618992bbe3be9d5a6))
|
|
27
68
|
|
|
28
|
-
|
|
69
|
+
# 0.1.0 (2020-12-22)
|
|
29
70
|
|
|
30
|
-
|
|
71
|
+
### Bug Fixes
|
|
31
72
|
|
|
73
|
+
- **fuzzy-viz:** update imports ([22f37a5](https://github.com/thi-ng/umbrella/commit/22f37a526acd6911720100e77ad41029d8799004))
|
|
32
74
|
|
|
33
|
-
###
|
|
75
|
+
### Features
|
|
34
76
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
77
|
+
- **fuzzy-viz:** add/update instrumentStrategy() & co ([131d137](https://github.com/thi-ng/umbrella/commit/131d13776735e3dd222090a6b514bfbe4878d9f2))
|
|
78
|
+
- **fuzzy-viz:** add/update viz options, fix zero marker ([bee9cd0](https://github.com/thi-ng/umbrella/commit/bee9cd08b32ce43cc6661146dd87f35db9516559))
|
|
79
|
+
- **fuzzy-viz:** import as new pkg ([8b23934](https://github.com/thi-ng/umbrella/commit/8b239347894bf8c7192890151868ecdb1ac3bf2b))
|
package/README.md
CHANGED
|
@@ -35,15 +35,24 @@ Visualization, instrumentation & introspection utils for [@thi.ng/fuzzy](https:/
|
|
|
35
35
|
yarn add @thi.ng/fuzzy-viz
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
ES module import:
|
|
39
|
+
|
|
38
40
|
```html
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
<script type="module" src="https://cdn.skypack.dev/@thi.ng/fuzzy-viz"></script>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
[Skypack documentation](https://docs.skypack.dev/)
|
|
45
|
+
|
|
46
|
+
For Node.js REPL:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
# with flag only for < v16
|
|
50
|
+
node --experimental-repl-await
|
|
41
51
|
|
|
42
|
-
|
|
43
|
-
<script src="https://unpkg.com/@thi.ng/fuzzy-viz/lib/index.umd.js" crossorigin></script>
|
|
52
|
+
> const fuzzyViz = await import("@thi.ng/fuzzy-viz");
|
|
44
53
|
```
|
|
45
54
|
|
|
46
|
-
Package sizes (gzipped, pre-treeshake): ESM: 1.
|
|
55
|
+
Package sizes (gzipped, pre-treeshake): ESM: 1.06 KB
|
|
47
56
|
|
|
48
57
|
## Dependencies
|
|
49
58
|
|
|
@@ -85,7 +94,7 @@ writeFileSync("temperature.svg", varToSvg(temp, { samples: 200 }));
|
|
|
85
94
|
```
|
|
86
95
|
|
|
87
96
|
See
|
|
88
|
-
[`
|
|
97
|
+
[`VisualizeVarOpts`](https://docs.thi.ng/umbrella/fuzzy-viz/interfaces/VisualizeVarOpts.html)
|
|
89
98
|
for further options to configure the visualization.
|
|
90
99
|
|
|
91
100
|
### Instrument a DefuzzStrategy
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from "./strategy";
|
|
2
|
-
export * from "./var";
|
|
1
|
+
export * from "./strategy.js";
|
|
2
|
+
export * from "./var.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./strategy";
|
|
2
|
-
export * from "./var";
|
|
1
|
+
export * from "./strategy.js";
|
|
2
|
+
export * from "./var.js";
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thi.ng/fuzzy-viz",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Visualization, instrumentation & introspection utils for @thi.ng/fuzzy",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"module": "./index.js",
|
|
6
|
-
"main": "./lib/index.js",
|
|
7
|
-
"umd:main": "./lib/index.umd.js",
|
|
8
7
|
"typings": "./index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "https://github.com/thi-ng/umbrella.git"
|
|
@@ -24,33 +24,27 @@
|
|
|
24
24
|
"author": "Karsten Schmidt <k+npm@thi.ng>",
|
|
25
25
|
"license": "Apache-2.0",
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "yarn clean &&
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"build:test": "rimraf build && tsc -p test/tsconfig.json",
|
|
31
|
-
"build:check": "tsc --isolatedModules --noEmit",
|
|
32
|
-
"test": "mocha test",
|
|
33
|
-
"cover": "nyc mocha test && nyc report --reporter=lcov",
|
|
34
|
-
"clean": "rimraf *.js *.d.ts *.map .nyc_output build coverage doc lib",
|
|
35
|
-
"doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts",
|
|
27
|
+
"build": "yarn clean && tsc --declaration",
|
|
28
|
+
"clean": "rimraf *.js *.d.ts *.map doc",
|
|
29
|
+
"doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
|
|
36
30
|
"doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
|
|
37
|
-
"doc": "
|
|
38
|
-
"
|
|
31
|
+
"doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
|
|
32
|
+
"doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
|
|
33
|
+
"pub": "yarn build && yarn publish --access public",
|
|
34
|
+
"test": "testament test"
|
|
39
35
|
},
|
|
40
36
|
"dependencies": {
|
|
41
|
-
"@thi.ng/api": "^
|
|
42
|
-
"@thi.ng/fuzzy": "^
|
|
43
|
-
"@thi.ng/hiccup": "^
|
|
44
|
-
"@thi.ng/hiccup-svg": "^
|
|
45
|
-
"@thi.ng/math": "^
|
|
46
|
-
"@thi.ng/strings": "^
|
|
47
|
-
"@thi.ng/text-canvas": "^
|
|
37
|
+
"@thi.ng/api": "^8.0.3",
|
|
38
|
+
"@thi.ng/fuzzy": "^2.0.3",
|
|
39
|
+
"@thi.ng/hiccup": "^4.0.3",
|
|
40
|
+
"@thi.ng/hiccup-svg": "^4.0.3",
|
|
41
|
+
"@thi.ng/math": "^5.0.3",
|
|
42
|
+
"@thi.ng/strings": "^3.0.3",
|
|
43
|
+
"@thi.ng/text-canvas": "^2.0.3"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@thi.ng/testament": "^0.1.3"
|
|
48
47
|
},
|
|
49
|
-
"files": [
|
|
50
|
-
"*.js",
|
|
51
|
-
"*.d.ts",
|
|
52
|
-
"lib"
|
|
53
|
-
],
|
|
54
48
|
"keywords": [
|
|
55
49
|
"area plot",
|
|
56
50
|
"ascii",
|
|
@@ -67,10 +61,30 @@
|
|
|
67
61
|
"publishConfig": {
|
|
68
62
|
"access": "public"
|
|
69
63
|
},
|
|
70
|
-
"
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=12.7"
|
|
66
|
+
},
|
|
67
|
+
"files": [
|
|
68
|
+
"*.js",
|
|
69
|
+
"*.d.ts"
|
|
70
|
+
],
|
|
71
|
+
"exports": {
|
|
72
|
+
".": {
|
|
73
|
+
"import": "./index.js"
|
|
74
|
+
},
|
|
75
|
+
"./api": {
|
|
76
|
+
"import": "./api.js"
|
|
77
|
+
},
|
|
78
|
+
"./strategy": {
|
|
79
|
+
"import": "./strategy.js"
|
|
80
|
+
},
|
|
81
|
+
"./var": {
|
|
82
|
+
"import": "./var.js"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
71
85
|
"thi.ng": {
|
|
72
86
|
"parent": "@thi.ng/fuzzy",
|
|
73
87
|
"year": 2020
|
|
74
88
|
},
|
|
75
|
-
"gitHead": "
|
|
89
|
+
"gitHead": "1fb38cac74d6c009d96855c28784a267a81badf1"
|
|
76
90
|
}
|
package/strategy.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Fn3, IClear, IDeref } from "@thi.ng/api";
|
|
2
|
-
import { DefuzzStrategy, FuzzyFn, LVarDomain } from "@thi.ng/fuzzy";
|
|
3
|
-
import type { AsciiVizOpts, InstrumentFn, VizualizeVarOpts } from "./api";
|
|
2
|
+
import type { DefuzzStrategy, FuzzyFn, LVarDomain } from "@thi.ng/fuzzy";
|
|
3
|
+
import type { AsciiVizOpts, InstrumentFn, VizualizeVarOpts } from "./api.js";
|
|
4
4
|
/**
|
|
5
5
|
* Higher order function. Takes an existing {@link @thi.ng/fuzzy#DefuzzStrategy}
|
|
6
6
|
* and an instrumentation function. Returns new `DefuzzStrategy` which first
|
package/strategy.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { variable } from "@thi.ng/fuzzy";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { fit } from "@thi.ng/math";
|
|
5
|
-
import { repeat } from "@thi.ng/strings";
|
|
6
|
-
import { barChartHLines } from "@thi.ng/text-canvas";
|
|
7
|
-
import { varToHiccup } from "./var";
|
|
1
|
+
import { variable } from "@thi.ng/fuzzy/var";
|
|
2
|
+
import { convertTree } from "@thi.ng/hiccup-svg/convert";
|
|
3
|
+
import { serialize } from "@thi.ng/hiccup/serialize";
|
|
4
|
+
import { fit } from "@thi.ng/math/fit";
|
|
5
|
+
import { repeat } from "@thi.ng/strings/repeat";
|
|
6
|
+
import { barChartHLines } from "@thi.ng/text-canvas/bars";
|
|
7
|
+
import { varToHiccup } from "./var.js";
|
|
8
8
|
/**
|
|
9
9
|
* Higher order function. Takes an existing {@link @thi.ng/fuzzy#DefuzzStrategy}
|
|
10
10
|
* and an instrumentation function. Returns new `DefuzzStrategy` which first
|
|
@@ -65,7 +65,12 @@ export const instrumentStrategy = (strategy, instrument) => {
|
|
|
65
65
|
return impl;
|
|
66
66
|
};
|
|
67
67
|
export const fuzzySetToHiccup = (opts) => (fn, domain, res) => {
|
|
68
|
-
const tree = varToHiccup(variable(domain, { main: fn }),
|
|
68
|
+
const tree = varToHiccup(variable(domain, { main: fn }), {
|
|
69
|
+
labels: false,
|
|
70
|
+
stroke: () => "#333",
|
|
71
|
+
fill: () => "#999",
|
|
72
|
+
...opts,
|
|
73
|
+
});
|
|
69
74
|
const { width, height } = tree[1];
|
|
70
75
|
const x = fit(res, domain[0], domain[1], 0, width);
|
|
71
76
|
tree.push([
|
|
@@ -83,7 +88,12 @@ export const fuzzySetToHiccup = (opts) => (fn, domain, res) => {
|
|
|
83
88
|
};
|
|
84
89
|
export const fuzzySetToSvg = (opts) => (fn, domain, res) => serialize(convertTree(fuzzySetToHiccup(opts)(fn, domain, res)));
|
|
85
90
|
export const fuzzySetToAscii = (opts) => (fn, domain, res) => {
|
|
86
|
-
const { width, height, empty } =
|
|
91
|
+
const { width, height, empty } = {
|
|
92
|
+
width: 100,
|
|
93
|
+
height: 16,
|
|
94
|
+
empty: ".",
|
|
95
|
+
...opts,
|
|
96
|
+
};
|
|
87
97
|
const [min, max] = domain;
|
|
88
98
|
const delta = (max - min) / width;
|
|
89
99
|
const vals = [];
|
package/var.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LVar } from "@thi.ng/fuzzy";
|
|
2
|
-
import type { VizualizeVarOpts } from "./api";
|
|
2
|
+
import type { VizualizeVarOpts } from "./api.js";
|
|
3
3
|
/**
|
|
4
4
|
* Takes an {@link @thi.ng/fuzzy#LVar} and visualization options. Evaluates all
|
|
5
5
|
* of the var's fuzzy sets in the var's value domain and visualizes them as
|
package/var.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { convertTree } from "@thi.ng/hiccup-svg/convert";
|
|
2
|
+
import { svg } from "@thi.ng/hiccup-svg/svg";
|
|
3
|
+
import { serialize } from "@thi.ng/hiccup/serialize";
|
|
4
|
+
import { fit } from "@thi.ng/math/fit";
|
|
5
|
+
import { inRange } from "@thi.ng/math/interval";
|
|
4
6
|
/**
|
|
5
7
|
* Takes an {@link @thi.ng/fuzzy#LVar} and visualization options. Evaluates all
|
|
6
8
|
* of the var's fuzzy sets in the var's value domain and visualizes them as
|
|
@@ -11,7 +13,15 @@ import { fit, inRange } from "@thi.ng/math";
|
|
|
11
13
|
* @param opts
|
|
12
14
|
*/
|
|
13
15
|
export const varToHiccup = ({ domain: [min, max], terms }, opts = {}) => {
|
|
14
|
-
const { samples, width, height, labels, stroke: strokeFn, fill: fillFn } =
|
|
16
|
+
const { samples, width, height, labels, stroke: strokeFn, fill: fillFn, } = {
|
|
17
|
+
samples: 200,
|
|
18
|
+
width: 600,
|
|
19
|
+
height: 100,
|
|
20
|
+
labels: true,
|
|
21
|
+
stroke: (x) => `hsl(${(x * 360) | 0},100%,40%)`,
|
|
22
|
+
fill: (x) => `hsla(${(x * 360) | 0},100%,50%,20%)`,
|
|
23
|
+
...opts,
|
|
24
|
+
};
|
|
15
25
|
const keys = Object.keys(terms);
|
|
16
26
|
const dt = (max - min) / samples;
|
|
17
27
|
const ds = width / samples;
|
package/lib/index.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var fuzzy = require('@thi.ng/fuzzy');
|
|
6
|
-
var hiccup = require('@thi.ng/hiccup');
|
|
7
|
-
var hiccupSvg = require('@thi.ng/hiccup-svg');
|
|
8
|
-
var math = require('@thi.ng/math');
|
|
9
|
-
var strings = require('@thi.ng/strings');
|
|
10
|
-
var textCanvas = require('@thi.ng/text-canvas');
|
|
11
|
-
|
|
12
|
-
const varToHiccup = ({ domain: [min, max], terms }, opts = {}) => {
|
|
13
|
-
const { samples, width, height, labels, stroke: strokeFn, fill: fillFn } = Object.assign({ samples: 200, width: 600, height: 100, labels: true, stroke: (x) => `hsl(${(x * 360) | 0},100%,40%)`, fill: (x) => `hsla(${(x * 360) | 0},100%,50%,20%)` }, opts);
|
|
14
|
-
const keys = Object.keys(terms);
|
|
15
|
-
const dt = (max - min) / samples;
|
|
16
|
-
const ds = width / samples;
|
|
17
|
-
const dn = 1 / keys.length;
|
|
18
|
-
const curves = [];
|
|
19
|
-
const legend = [];
|
|
20
|
-
for (let i = 0; i < keys.length; i++) {
|
|
21
|
-
const id = keys[i];
|
|
22
|
-
const f = terms[id];
|
|
23
|
-
const y = (i + 1) * 12;
|
|
24
|
-
const stroke = strokeFn(i * dn);
|
|
25
|
-
const curr = [];
|
|
26
|
-
for (let i = 0; i <= samples; i++) {
|
|
27
|
-
curr.push([i * ds, (1 - f(min + i * dt)) * height]);
|
|
28
|
-
}
|
|
29
|
-
curr.push([width, height], [0, height]);
|
|
30
|
-
curves.push([
|
|
31
|
-
"polygon",
|
|
32
|
-
{
|
|
33
|
-
stroke,
|
|
34
|
-
fill: fillFn(i * dn),
|
|
35
|
-
},
|
|
36
|
-
curr,
|
|
37
|
-
]);
|
|
38
|
-
if (labels) {
|
|
39
|
-
legend.push(["line", { stroke }, [0, y], [20, y]], [
|
|
40
|
-
"text",
|
|
41
|
-
{
|
|
42
|
-
baseline: "middle",
|
|
43
|
-
fill: "black",
|
|
44
|
-
},
|
|
45
|
-
[30, y],
|
|
46
|
-
id,
|
|
47
|
-
]);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const zero = math.fit(0, min, max, 0, width);
|
|
51
|
-
return hiccupSvg.svg({
|
|
52
|
-
width,
|
|
53
|
-
height: height + 12,
|
|
54
|
-
fill: "none",
|
|
55
|
-
"font-family": "sans-serif",
|
|
56
|
-
"font-size": 10,
|
|
57
|
-
}, ...curves, ...legend, math.inRange(zero, width * 0.05, width * 0.95)
|
|
58
|
-
? [
|
|
59
|
-
"g",
|
|
60
|
-
{},
|
|
61
|
-
[
|
|
62
|
-
"line",
|
|
63
|
-
{
|
|
64
|
-
stroke: "black",
|
|
65
|
-
dash: [1, 1],
|
|
66
|
-
},
|
|
67
|
-
[zero, 0],
|
|
68
|
-
[zero, height],
|
|
69
|
-
],
|
|
70
|
-
[
|
|
71
|
-
"text",
|
|
72
|
-
{ align: "center", fill: "black" },
|
|
73
|
-
[zero, height + 10],
|
|
74
|
-
"0.00",
|
|
75
|
-
],
|
|
76
|
-
]
|
|
77
|
-
: null, [
|
|
78
|
-
"g",
|
|
79
|
-
{ fill: "black" },
|
|
80
|
-
["text", {}, [0, height + 10], min.toFixed(2)],
|
|
81
|
-
["text", { align: "end" }, [width, height + 10], max.toFixed(2)],
|
|
82
|
-
]);
|
|
83
|
-
};
|
|
84
|
-
const varToSvg = ($var, opts) => hiccup.serialize(hiccupSvg.convertTree(varToHiccup($var, opts)));
|
|
85
|
-
|
|
86
|
-
const instrumentStrategy = (strategy, instrument) => {
|
|
87
|
-
const acc = [];
|
|
88
|
-
const impl = (fn, domain) => {
|
|
89
|
-
const res = strategy(fn, domain);
|
|
90
|
-
acc.push(instrument(fn, domain, res));
|
|
91
|
-
return res;
|
|
92
|
-
};
|
|
93
|
-
impl.clear = () => (acc.length = 0);
|
|
94
|
-
impl.deref = () => acc;
|
|
95
|
-
return impl;
|
|
96
|
-
};
|
|
97
|
-
const fuzzySetToHiccup = (opts) => (fn, domain, res) => {
|
|
98
|
-
const tree = varToHiccup(fuzzy.variable(domain, { main: fn }), Object.assign({ labels: false, stroke: () => "#333", fill: () => "#999" }, opts));
|
|
99
|
-
const { width, height } = tree[1];
|
|
100
|
-
const x = math.fit(res, domain[0], domain[1], 0, width);
|
|
101
|
-
tree.push([
|
|
102
|
-
"g",
|
|
103
|
-
{ translate: [x, 0] },
|
|
104
|
-
["line", { stroke: "red" }, [0, 0], [0, height - 12]],
|
|
105
|
-
[
|
|
106
|
-
"text",
|
|
107
|
-
{ align: "center", fill: "red" },
|
|
108
|
-
[0, height - 2],
|
|
109
|
-
res.toFixed(2),
|
|
110
|
-
],
|
|
111
|
-
]);
|
|
112
|
-
return tree;
|
|
113
|
-
};
|
|
114
|
-
const fuzzySetToSvg = (opts) => (fn, domain, res) => hiccup.serialize(hiccupSvg.convertTree(fuzzySetToHiccup(opts)(fn, domain, res)));
|
|
115
|
-
const fuzzySetToAscii = (opts) => (fn, domain, res) => {
|
|
116
|
-
const { width, height, empty } = Object.assign({ width: 100, height: 16, empty: "." }, opts);
|
|
117
|
-
const [min, max] = domain;
|
|
118
|
-
const delta = (max - min) / width;
|
|
119
|
-
const vals = [];
|
|
120
|
-
for (let i = min; i <= max; i += delta) {
|
|
121
|
-
vals.push(fn(i));
|
|
122
|
-
}
|
|
123
|
-
const index = Math.round(math.fit(res, min, max, 0, vals.length));
|
|
124
|
-
let chart = textCanvas.barChartHLines(height, vals, 0, 1)
|
|
125
|
-
.map((line) => line.substr(0, index) + "|" + line.substr(index + 1))
|
|
126
|
-
.join("\n")
|
|
127
|
-
.replace(/ /g, empty);
|
|
128
|
-
const legend = strings.repeat(" ", index) + "^ " + res.toFixed(2);
|
|
129
|
-
return chart + "\n" + legend;
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
exports.fuzzySetToAscii = fuzzySetToAscii;
|
|
133
|
-
exports.fuzzySetToHiccup = fuzzySetToHiccup;
|
|
134
|
-
exports.fuzzySetToSvg = fuzzySetToSvg;
|
|
135
|
-
exports.instrumentStrategy = instrumentStrategy;
|
|
136
|
-
exports.varToHiccup = varToHiccup;
|
|
137
|
-
exports.varToSvg = varToSvg;
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../var.js","../strategy.js"],"sourcesContent":null,"names":["fit","svg","inRange","serialize","convertTree","variable","barChartHLines","repeat"],"mappings":";;;;;;;;;;;AAYY,MAAC,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,EAAE,KAAK;AACzE,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACjQ,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC;AACrC,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,OAAO,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,YAAY,SAAS;AACrB,YAAY;AACZ,gBAAgB,MAAM;AACtB,gBAAgB,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;AACpC,aAAa;AACb,YAAY,IAAI;AAChB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;AAC/D,gBAAgB,MAAM;AACtB,gBAAgB;AAChB,oBAAoB,QAAQ,EAAE,QAAQ;AACtC,oBAAoB,IAAI,EAAE,OAAO;AACjC,iBAAiB;AACjB,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;AACvB,gBAAgB,EAAE;AAClB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,MAAM,IAAI,GAAGA,QAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5C,IAAI,OAAOC,aAAG,CAAC;AACf,QAAQ,KAAK;AACb,QAAQ,MAAM,EAAE,MAAM,GAAG,EAAE;AAC3B,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,aAAa,EAAE,YAAY;AACnC,QAAQ,WAAW,EAAE,EAAE;AACvB,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAEC,YAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;AACtE,UAAU;AACV,YAAY,GAAG;AACf,YAAY,EAAE;AACd,YAAY;AACZ,gBAAgB,MAAM;AACtB,gBAAgB;AAChB,oBAAoB,MAAM,EAAE,OAAO;AACnC,oBAAoB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChC,iBAAiB;AACjB,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AACzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9B,aAAa;AACb,YAAY;AACZ,gBAAgB,MAAM;AACtB,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAClD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;AACnC,gBAAgB,MAAM;AACtB,aAAa;AACb,SAAS;AACT,UAAU,IAAI,EAAE;AAChB,QAAQ,GAAG;AACX,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACzB,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,KAAK,CAAC,CAAC;AACP,EAAE;AAQU,MAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,KAAKC,gBAAS,CAACC,qBAAW,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;ACpC1E,MAAC,kBAAkB,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK;AAC5D,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK;AACjC,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC;AAC3B,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE;AACU,MAAC,gBAAgB,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK;AAC/D,IAAI,MAAM,IAAI,GAAG,WAAW,CAACC,cAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/I,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,GAAGL,QAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,IAAI,CAAC;AACd,QAAQ,GAAG;AACX,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7B,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;AAC7D,QAAQ;AACR,YAAY,MAAM;AAClB,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;AAC5C,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAC3B,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE;AACU,MAAC,aAAa,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAKG,gBAAS,CAACC,qBAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;AAChH,MAAC,eAAe,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK;AAC9D,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACjG,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;AAC9B,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE;AAC5C,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAACJ,QAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,IAAI,IAAI,KAAK,GAAGM,yBAAc,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5E,SAAS,IAAI,CAAC,IAAI,CAAC;AACnB,SAAS,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAGC,cAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AACjC;;;;;;;;;"}
|
package/lib/index.umd.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@thi.ng/fuzzy"),require("@thi.ng/hiccup"),require("@thi.ng/hiccup-svg"),require("@thi.ng/math"),require("@thi.ng/strings"),require("@thi.ng/text-canvas")):"function"==typeof define&&define.amd?define(["exports","@thi.ng/fuzzy","@thi.ng/hiccup","@thi.ng/hiccup-svg","@thi.ng/math","@thi.ng/strings","@thi.ng/text-canvas"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).thi=t.thi||{},t.thi.ng=t.thi.ng||{},t.thi.ng.fuzzyViz={}),t.thi.ng.fuzzy,t.thi.ng.hiccup,t.thi.ng.hiccupSvg,t.thi.ng.math,t.thi.ng.strings,t.thi.ng.textCanvas)}(this,(function(t,e,i,n,s,h,r){"use strict";const l=({domain:[t,e],terms:i},h={})=>{const{samples:r,width:l,height:g,labels:o,stroke:a,fill:c}=Object.assign({samples:200,width:600,height:100,labels:!0,stroke:t=>`hsl(${360*t|0},100%,40%)`,fill:t=>`hsla(${360*t|0},100%,50%,20%)`},h),u=Object.keys(i),f=(e-t)/r,p=l/r,d=1/u.length,b=[],y=[];for(let e=0;e<u.length;e++){const n=u[e],s=i[n],h=12*(e+1),z=a(e*d),m=[];for(let e=0;e<=r;e++)m.push([e*p,(1-s(t+e*f))*g]);m.push([l,g],[0,g]),b.push(["polygon",{stroke:z,fill:c(e*d)},m]),o&&y.push(["line",{stroke:z},[0,h],[20,h]],["text",{baseline:"middle",fill:"black"},[30,h],n])}const z=s.fit(0,t,e,0,l);return n.svg({width:l,height:g+12,fill:"none","font-family":"sans-serif","font-size":10},...b,...y,s.inRange(z,.05*l,.95*l)?["g",{},["line",{stroke:"black",dash:[1,1]},[z,0],[z,g]],["text",{align:"center",fill:"black"},[z,g+10],"0.00"]]:null,["g",{fill:"black"},["text",{},[0,g+10],t.toFixed(2)],["text",{align:"end"},[l,g+10],e.toFixed(2)]])},g=t=>(i,n,h)=>{const r=l(e.variable(n,{main:i}),Object.assign({labels:!1,stroke:()=>"#333",fill:()=>"#999"},t)),{width:g,height:o}=r[1],a=s.fit(h,n[0],n[1],0,g);return r.push(["g",{translate:[a,0]},["line",{stroke:"red"},[0,0],[0,o-12]],["text",{align:"center",fill:"red"},[0,o-2],h.toFixed(2)]]),r};t.fuzzySetToAscii=t=>(e,i,n)=>{const{width:l,height:g,empty:o}=Object.assign({width:100,height:16,empty:"."},t),[a,c]=i,u=(c-a)/l,f=[];for(let t=a;t<=c;t+=u)f.push(e(t));const p=Math.round(s.fit(n,a,c,0,f.length));return r.barChartHLines(g,f,0,1).map((t=>t.substr(0,p)+"|"+t.substr(p+1))).join("\n").replace(/ /g,o)+"\n"+(h.repeat(" ",p)+"^ "+n.toFixed(2))},t.fuzzySetToHiccup=g,t.fuzzySetToSvg=t=>(e,s,h)=>i.serialize(n.convertTree(g(t)(e,s,h))),t.instrumentStrategy=(t,e)=>{const i=[],n=(n,s)=>{const h=t(n,s);return i.push(e(n,s,h)),h};return n.clear=()=>i.length=0,n.deref=()=>i,n},t.varToHiccup=l,t.varToSvg=(t,e)=>i.serialize(n.convertTree(l(t,e))),Object.defineProperty(t,"__esModule",{value:!0})}));
|
package/lib/index.umd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../var.js","../strategy.js"],"sourcesContent":null,"names":["fit","svg","inRange","serialize","convertTree","variable","barChartHLines","repeat"],"mappings":";;;;;;AAYY,UAAC,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,EAAE,KAAK;IACzE,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACjQ,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC;IACrC,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,OAAO,CAAC;IAC/B,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;IACtB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;IACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC1C,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,QAAQ,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC/B,QAAQ,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;IACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;IAC3C,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IAChE,SAAS;IACT,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,QAAQ,MAAM,CAAC,IAAI,CAAC;IACpB,YAAY,SAAS;IACrB,YAAY;IACZ,gBAAgB,MAAM;IACtB,gBAAgB,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;IACpC,aAAa;IACb,YAAY,IAAI;IAChB,SAAS,CAAC,CAAC;IACX,QAAQ,IAAI,MAAM,EAAE;IACpB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;IAC/D,gBAAgB,MAAM;IACtB,gBAAgB;IAChB,oBAAoB,QAAQ,EAAE,QAAQ;IACtC,oBAAoB,IAAI,EAAE,OAAO;IACjC,iBAAiB;IACjB,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;IACvB,gBAAgB,EAAE;IAClB,aAAa,CAAC,CAAC;IACf,SAAS;IACT,KAAK;IACL,IAAI,MAAM,IAAI,GAAGA,QAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5C,IAAI,OAAOC,aAAG,CAAC;IACf,QAAQ,KAAK;IACb,QAAQ,MAAM,EAAE,MAAM,GAAG,EAAE;IAC3B,QAAQ,IAAI,EAAE,MAAM;IACpB,QAAQ,aAAa,EAAE,YAAY;IACnC,QAAQ,WAAW,EAAE,EAAE;IACvB,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAEC,YAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACtE,UAAU;IACV,YAAY,GAAG;IACf,YAAY,EAAE;IACd,YAAY;IACZ,gBAAgB,MAAM;IACtB,gBAAgB;IAChB,oBAAoB,MAAM,EAAE,OAAO;IACnC,oBAAoB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAChC,iBAAiB;IACjB,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;IAC9B,aAAa;IACb,YAAY;IACZ,gBAAgB,MAAM;IACtB,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IAClD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;IACnC,gBAAgB,MAAM;IACtB,aAAa;IACb,SAAS;IACT,UAAU,IAAI,EAAE;IAChB,QAAQ,GAAG;IACX,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACzB,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,CAAC,CAAC;IACP,EAAE;AAQU,UAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,KAAKC,gBAAS,CAACC,qBAAW,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;ACpC1E,UAAC,kBAAkB,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK;IAC5D,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;IACnB,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK;IACjC,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,QAAQ,OAAO,GAAG,CAAC;IACnB,KAAK,CAAC;IACN,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC;IAChB,EAAE;AACU,UAAC,gBAAgB,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK;IAC/D,IAAI,MAAM,IAAI,GAAG,WAAW,CAACC,cAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,EAAE,IAAI,EAAE,MAAM,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/I,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,GAAGL,QAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,IAAI,CAAC;IACd,QAAQ,GAAG;IACX,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAC7B,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7D,QAAQ;IACR,YAAY,MAAM;IAClB,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;IAC5C,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAC3B,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1B,SAAS;IACT,KAAK,CAAC,CAAC;IACP,IAAI,OAAO,IAAI,CAAC;IAChB,EAAE;AACU,UAAC,aAAa,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAKG,gBAAS,CAACC,qBAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;AAChH,UAAC,eAAe,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK;IAC9D,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IACjG,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;IAC9B,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC;IACtC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE;IAC5C,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK;IACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAACJ,QAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,KAAK,GAAGM,yBAAc,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC5E,SAAS,IAAI,CAAC,IAAI,CAAC;IACnB,SAAS,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,IAAI,MAAM,MAAM,GAAGC,cAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IACjC;;;;;;;;;;;;;;;"}
|