@glodon-aiot/dataset-annotation 3.13.0-alpha.29 → 3.14.0-alpha.30

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.
Files changed (33) hide show
  1. package/dist/es/components/DetectionAnnotation/components/LabelMaker/RectLabel.mjs +151 -135
  2. package/dist/es/components/DetectionAnnotation/components/LabelMaker/index.mjs +244 -218
  3. package/dist/es/components/VLMAnnotation/RegionItem.mjs +135 -59
  4. package/dist/es/components/VLMAnnotation/TextAnnotationPanel.mjs +73 -62
  5. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useDeleteRegion.mjs +55 -40
  6. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useDrawingMode.mjs +291 -162
  7. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useOCRControl.mjs +100 -0
  8. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useOCRRecognition.mjs +88 -55
  9. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useRegionBoundaryCheck.mjs +103 -0
  10. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useRegionLoader.mjs +123 -91
  11. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useRegionSelection.mjs +42 -39
  12. package/dist/es/components/VLMAnnotation/VLMLabelMaker/hooks/useRegionUpdate.mjs +55 -60
  13. package/dist/es/components/VLMAnnotation/VLMLabelMaker/icons/ai.svg.mjs +4 -0
  14. package/dist/es/components/VLMAnnotation/VLMLabelMaker/icons/error.svg.mjs +4 -0
  15. package/dist/es/components/VLMAnnotation/VLMLabelMaker/icons/loading.svg.mjs +4 -0
  16. package/dist/es/components/VLMAnnotation/VLMLabelMaker/icons/star.svg.mjs +4 -0
  17. package/dist/es/components/VLMAnnotation/VLMLabelMaker/index.mjs +512 -387
  18. package/dist/es/components/VLMAnnotation/constants.mjs +39 -32
  19. package/dist/es/components/VLMAnnotation/index.mjs +187 -150
  20. package/dist/es/index.mjs +1 -1
  21. package/dist/lib/index.js +4 -4
  22. package/dist/src/components/VLMAnnotation/VLMLabelMaker/hooks/useDeleteRegion.d.ts +1 -0
  23. package/dist/src/components/VLMAnnotation/VLMLabelMaker/hooks/useDrawingMode.d.ts +3 -1
  24. package/dist/src/components/VLMAnnotation/VLMLabelMaker/hooks/useOCRControl.d.ts +16 -0
  25. package/dist/src/components/VLMAnnotation/VLMLabelMaker/hooks/useOCRRecognition.d.ts +3 -2
  26. package/dist/src/components/VLMAnnotation/VLMLabelMaker/hooks/useRegionBoundaryCheck.d.ts +31 -0
  27. package/dist/src/components/VLMAnnotation/VLMLabelMaker/hooks/useRegionLoader.d.ts +5 -1
  28. package/dist/src/components/VLMAnnotation/VLMLabelMaker/hooks/useRegionSelection.d.ts +2 -1
  29. package/dist/src/components/VLMAnnotation/VLMLabelMaker/index.d.ts +2 -2
  30. package/dist/src/components/VLMAnnotation/constants.d.ts +19 -3
  31. package/dist/src/components/VLMAnnotation/index.d.ts +1 -1
  32. package/dist/src/components/VLMAnnotation/types.d.ts +15 -0
  33. package/package.json +2 -2
@@ -1,40 +1,41 @@
1
- import { useEffect as g } from "react";
2
- import { fabric as u } from "fabric";
3
- import { SELECTED_RECT_FILL_COLOR as L, CONTROL_POINT_COLOR as R, CONTROL_POINT_SIZE as S, TRANSPARENT_FILL as E, BASE_STROKE_WIDTH as A } from "../../constants.mjs";
4
- const j = ({
1
+ import { useEffect as E } from "react";
2
+ import { fabric as a } from "fabric";
3
+ import { SELECTED_RECT_FILL_COLOR as L, CONTROL_POINT_COLOR as g, CONTROL_POINT_SIZE as A, TRANSPARENT_FILL as k, BASE_STROKE_WIDTH as R } from "../../constants.mjs";
4
+ const b = ({
5
5
  canvas: e,
6
6
  onRegionSelect: o,
7
7
  createDeleteControl: n,
8
- textLayersMapRef: a,
9
- rectMapRef: s
8
+ createOCRControl: s,
9
+ textLayersMapRef: h,
10
+ rectMapRef: i
10
11
  }) => {
11
- g(() => {
12
+ E(() => {
12
13
  if (!e)
13
14
  return;
14
- const i = () => {
15
+ const f = () => {
15
16
  const t = /* @__PURE__ */ new Set();
16
- return a.current.forEach((r) => {
17
+ return h.current.forEach((r) => {
17
18
  r.forEach((l) => {
18
19
  t.add(l);
19
20
  });
20
21
  }), t;
21
- }, f = () => {
22
- const t = i();
22
+ }, d = () => {
23
+ const t = f();
23
24
  e.getObjects().forEach((r) => {
24
- r instanceof u.Rect && !t.has(r) && r.set({
25
- fill: E
25
+ r instanceof a.Rect && !t.has(r) && r.set({
26
+ fill: k
26
27
  // 移除填充色
27
28
  });
28
29
  });
29
- }, h = () => {
30
- f();
30
+ }, C = () => {
31
+ d();
31
32
  const t = e.getActiveObject();
32
- if (t && t instanceof u.Rect) {
33
- if (i().has(t)) {
33
+ if (t && t instanceof a.Rect) {
34
+ if (f().has(t)) {
34
35
  e.discardActiveObject(), e.renderAll();
35
36
  return;
36
37
  }
37
- const l = e.getZoom(), d = A / l;
38
+ const l = e.getZoom(), u = R / l;
38
39
  t.set({
39
40
  hasRotatingPoint: !1,
40
41
  lockRotation: !0,
@@ -44,7 +45,7 @@ const j = ({
44
45
  // 选中时添加填充色
45
46
  strokeUniform: !0,
46
47
  // 确保边框宽度不受缩放影响
47
- strokeWidth: d,
48
+ strokeWidth: u,
48
49
  // 确保边框宽度一致
49
50
  objectCaching: !1,
50
51
  // 禁用缓存,避免缩放时边框变虚
@@ -52,35 +53,37 @@ const j = ({
52
53
  noScaleCache: !1,
53
54
  cornerStyle: "circle",
54
55
  // 设置控制点为圆形
55
- cornerColor: R,
56
+ cornerColor: g,
56
57
  // 设置控制点为紫色(填充色)
57
- cornerSize: S,
58
+ cornerSize: A,
58
59
  // 设置控制点大小(默认12,这里设置为6使其更小)
59
60
  transparentCorners: !1
60
61
  // 不透明,显示填充颜色
61
- }), t.controls && t.controls.mtr && delete t.controls.mtr, t.controls.deleteControl || (t.controls.deleteControl = n()), e.renderAll();
62
- const c = s.current.get(t);
62
+ }), t.controls && t.controls.mtr && delete t.controls.mtr, t.controls.deleteControl || (t.controls.deleteControl = n()), t.controls.ocrControl || (t.controls.ocrControl = s()), e.renderAll();
63
+ const c = i.current.get(t);
63
64
  c && o && o(c);
64
65
  }
65
- }, C = () => {
66
- f();
66
+ }, m = () => {
67
+ d();
67
68
  const t = e.getActiveObject();
68
- if (t && t instanceof u.Rect) {
69
- if (i().has(t)) {
69
+ if (t && t instanceof a.Rect) {
70
+ if (f().has(t)) {
70
71
  e.discardActiveObject(), e.renderAll();
71
72
  return;
72
73
  }
73
- const l = e.getZoom(), d = A / l;
74
+ const l = e.getZoom(), u = R / l;
74
75
  t.set({
75
76
  hasRotatingPoint: !1,
76
77
  lockRotation: !0,
77
78
  lockUniScaling: !1,
78
79
  // 允许非等比缩放,控制点跟随鼠标
80
+ lockScalingFlip: !0,
81
+ // 禁止缩放时翻转
79
82
  fill: L,
80
83
  // 选中时添加填充色
81
84
  strokeUniform: !0,
82
85
  // 确保边框宽度不受缩放影响
83
- strokeWidth: d,
86
+ strokeWidth: u,
84
87
  // 确保边框宽度一致
85
88
  objectCaching: !1,
86
89
  // 禁用缓存,避免缩放时边框变虚
@@ -88,26 +91,26 @@ const j = ({
88
91
  noScaleCache: !1,
89
92
  cornerStyle: "circle",
90
93
  // 设置控制点为圆形
91
- cornerColor: R,
94
+ cornerColor: g,
92
95
  // 设置控制点为紫色(填充色)
93
- cornerSize: S,
96
+ cornerSize: A,
94
97
  // 设置控制点大小(默认12,这里设置为6使其更小)
95
98
  transparentCorners: !1
96
99
  // 不透明,显示填充颜色
97
100
  });
98
101
  const c = t;
99
- c.uniformScaling = !1, t.controls && t.controls.mtr && delete t.controls.mtr, t.controls.deleteControl || (t.controls.deleteControl = n()), e.renderAll();
100
- const m = s.current.get(t);
101
- m && o && o(m);
102
+ c.uniformScaling = !1, t.controls && t.controls.mtr && delete t.controls.mtr, t.controls.deleteControl || (t.controls.deleteControl = n()), t.controls.ocrControl || (t.controls.ocrControl = s()), e.renderAll();
103
+ const S = i.current.get(t);
104
+ S && o && o(S);
102
105
  }
103
106
  }, O = () => {
104
- f(), e.renderAll(), o && o(null);
107
+ d(), e.renderAll(), o && o(null);
105
108
  };
106
- return e.on("selection:created", h), e.on("selection:updated", C), e.on("selection:cleared", O), () => {
107
- e.off("selection:created", h), e.off("selection:updated", C), e.off("selection:cleared", O);
109
+ return e.on("selection:created", C), e.on("selection:updated", m), e.on("selection:cleared", O), () => {
110
+ e.off("selection:created", C), e.off("selection:updated", m), e.off("selection:cleared", O);
108
111
  };
109
- }, [e, o, n, a, s]);
112
+ }, [e, o, n, s, h, i]);
110
113
  };
111
114
  export {
112
- j as useRegionSelection
115
+ b as useRegionSelection
113
116
  };
@@ -1,103 +1,98 @@
1
- import { useCallback as B } from "react";
2
- import { fabric as D } from "fabric";
3
- import { BASE_STROKE_WIDTH as E } from "../../constants.mjs";
4
- const z = ({
5
- canvas: f,
1
+ import { useCallback as P } from "react";
2
+ import { fabric as Q } from "fabric";
3
+ import { BASE_STROKE_WIDTH as R } from "../../constants.mjs";
4
+ const N = ({
5
+ canvas: u,
6
6
  image: r,
7
- draggable: x,
8
- canvasToImageCoords: S,
9
- imageToCanvasCoords: y,
10
- cropRegionImage: W,
11
- onChange: a,
7
+ draggable: p,
8
+ canvasToImageCoords: W,
9
+ imageToCanvasCoords: x,
10
+ cropRegionImage: y,
11
+ onChange: l,
12
12
  onRegionChange: g,
13
- performOCRIfNeeded: w,
14
- updateTextLayers: A,
13
+ performOCRIfNeeded: O,
14
+ updateTextLayers: w,
15
15
  rectMapRef: d,
16
- regionNameTextMapRef: j,
17
- ocrLoadingIconMapRef: k
16
+ regionNameTextMapRef: H,
17
+ ocrLoadingIconMapRef: A
18
18
  }) => ({
19
- updateRegionShapeAndImage: B((t) => {
20
- if (!f || !r || x)
19
+ updateRegionShapeAndImage: P((t) => {
20
+ if (!u || !r || p)
21
21
  return;
22
- const L = f.getZoom(), U = E / L;
22
+ const U = u.getZoom(), _ = R / U;
23
23
  t.set({
24
24
  strokeUniform: !0,
25
- strokeWidth: U,
25
+ strokeWidth: _,
26
26
  objectCaching: !1,
27
27
  statefullCache: !1,
28
28
  noScaleCache: !1
29
29
  });
30
- const i = r.getElement();
31
- if (!(i != null && i.width) || !(i != null && i.height))
30
+ const h = r.getElement();
31
+ if (!(h != null && h.width) || !(h != null && h.height))
32
32
  return;
33
- const H = i.width, X = i.height, Y = S(t.left, t.top), s = d.current.get(t);
34
- if (s) {
35
- let n = Y.x, l = Y.y, o = t.getScaledWidth(), c = t.getScaledHeight();
36
- n < 0 && (o = o + n, n = 0), l < 0 && (c = c + l, l = 0), n + o > H && (o = H - n), l + c > X && (c = X - l), o = Math.max(0, o), c = Math.max(0, c), s.shape.x = n, s.shape.y = l, s.shape.width = o, s.shape.height = c;
37
- const u = y(n, l);
38
- t.scaleX, t.scaleY, t.set({
39
- left: u.x,
40
- top: u.y,
41
- width: o,
42
- height: c,
43
- scaleX: 1,
44
- // 重置缩放,使用实际尺寸
45
- scaleY: 1
46
- // 重置缩放,使用实际尺寸
33
+ const b = h.width, X = h.height, Y = W(t.left, t.top), i = d.current.get(t);
34
+ if (i) {
35
+ let n = Y.x, c = Y.y, s = t.getScaledWidth(), o = t.getScaledHeight();
36
+ n < 0 && (s = s + n, n = 0), c < 0 && (o = o + c, c = 0), n + s > b && (s = b - n), c + o > X && (o = X - c), s = Math.max(0, s), o = Math.max(0, o), i.shape.x = n, i.shape.y = c, i.shape.width = s, i.shape.height = o;
37
+ const f = x(n, c), B = t.getScaledWidth(), D = t.getScaledHeight(), E = t.width || 1, F = t.height || 1, j = Math.abs(s - B) > 1e-3, k = Math.abs(o - D) > 1e-3, K = j ? 1 : t.scaleX || 1, q = k ? 1 : t.scaleY || 1, z = j ? s : E, G = k ? o : F;
38
+ t.set({
39
+ left: f.x,
40
+ top: f.y,
41
+ width: z,
42
+ height: G,
43
+ scaleX: K,
44
+ scaleY: q
47
45
  });
48
- const Z = j.current.get(t);
46
+ const Z = H.current.get(t);
49
47
  if (Z) {
50
- const e = f.getZoom();
48
+ const e = u.getZoom();
51
49
  Z.set({
52
- left: u.x,
50
+ left: f.x,
53
51
  // 与标注框左边对齐
54
- top: u.y,
52
+ top: f.y,
55
53
  // 下边缘与标注框上边缘对齐(因为 originY 是 'bottom')
56
54
  scaleX: 1 / e,
57
55
  // 反向缩放,抵消画布缩放
58
56
  scaleY: 1 / e
59
57
  // 反向缩放,抵消画布缩放
60
58
  });
61
- const h = k.current.get(t);
62
- if (h) {
63
- const m = t.getScaledWidth();
64
- t.getScaledHeight(), h.set({
65
- left: u.x,
59
+ const a = A.current.get(t);
60
+ if (a) {
61
+ const S = t.getScaledWidth();
62
+ t.getScaledHeight(), a.set({
63
+ left: f.x,
66
64
  // top 位置由动画控制,这里不更新
67
65
  scaleX: 1 / e,
68
66
  // 反向缩放,抵消画布缩放,保持固定视觉粗细
69
67
  scaleY: 1 / e
70
68
  // 反向缩放,抵消画布缩放,保持固定视觉粗细
71
69
  });
72
- const p = h.getObjects();
73
- if (p && p.length > 0) {
74
- const _ = m * e;
75
- p.forEach((b) => {
76
- b instanceof D.Rect && b.set("width", _);
70
+ const m = a.getObjects();
71
+ if (m && m.length > 0) {
72
+ const J = S * e;
73
+ m.forEach((L) => {
74
+ L instanceof Q.Rect && L.set("width", J);
77
75
  });
78
76
  }
79
77
  }
80
78
  }
81
- if (s.textLayouts && s.textLayouts.length > 0 && A(t, s), g && g(s, "update"), W(s).then((e) => {
79
+ if (i.textLayouts && i.textLayouts.length > 0 && w(t, i), g && g(i, "update"), y(i).then((e) => {
82
80
  if (e) {
83
- const h = d.current.get(t);
84
- if (h) {
85
- if (h.image = e, delete h.textLayouts, a) {
86
- const m = Array.from(d.current.values());
87
- a(m);
88
- }
89
- w(h, "update");
81
+ const a = d.current.get(t);
82
+ if (a && (a.image = e, delete a.textLayouts, l)) {
83
+ const S = Array.from(d.current.values());
84
+ l(S);
90
85
  }
91
86
  }
92
87
  }).catch((e) => {
93
88
  console.error("Failed to crop region image:", e);
94
- }), a) {
89
+ }), l) {
95
90
  const e = Array.from(d.current.values());
96
- a(e);
91
+ l(e);
97
92
  }
98
93
  }
99
- }, [f, r, x, S, y, W, a, g, w, A, d, j, k])
94
+ }, [u, r, p, W, x, y, l, g, O, w, d, H, A])
100
95
  });
101
96
  export {
102
- z as useRegionUpdate
97
+ N as useRegionUpdate
103
98
  };
@@ -0,0 +1,4 @@
1
+ const M = "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgMTIgMTIiIHdpZHRoPSIxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBkPSJtMCAwaDEydjEyaC0xMnoiLz48L2NsaXBQYXRoPjxnIGNsaXAtcGF0aD0idXJsKCNhKSI+PHBhdGggZD0ibTQuMDkyNzM0MTIgMi42NTM4MDg1OWMtLjE0OTQ0ODctLjAwMDAwOTgzLS4yODMzNjIyLjA5MjMxNjgxLS4zMzY0OTk5LjIzMTk5OTk5bC0yLjUxNDQ5OTg2IDYuNjI2NTAwNTFjLS4wODg3MTQyNS4yMzUzMDY3LjA4NTAyNjM4LjQ4Njc1MjUuMzM2NTAwMDIuNDg3aC43NzU5OTk4NGMuMTQ5MjY2Mi0uMDAwMTk3LjI4MjkyODItLjA5MjQ4NjkuMzM2LS4yMzIwMDA0bC42MzExMjY0LTEuNjYyODkwOWgzLjcxNTM5M2wtLjY2NzUwMDUtMS40MTM0OTk4aC0yLjUxMTQxOTNsMS40NDc0MDA2LTMuODEzNjA5MzNjLjA0MDk5OTktLjEwODAwMDA0LS4wMzktLjIyMzUwMDA3LS4xNTQwMDAzLS4yMjM1MDAwN3oiIGZpbGw9IiM5YzI0ZjIiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Im04Ljg4MDI1NDMxIDIuNjI0MTU4MjZjLS4xOTE5MDQ2LS4wMDUzMTQzNS0uMzUxMjM1LjE0NzA0OTQzLS4zNTQ1MDAzLjMzODk5OTkzbC4wMDY1MDAyIDYuNjk4NDk5NjVjLjAwMzgyOS4xOTAzNTY3LjE2MTE0LjM0MTYyNjEuMzUxNTAwNS4zMzc5OTk4aC44NDI5OTk1Yy4xOTA1NTIyLjAwMzYyNDkuMzQ3OTQzOC0uMTQ3OTQ2NC4zNTE1LS4zMzg0OTkxdi02LjY5MzAwMDM1Yy0uMDAzNTU5MS0uMTg5NTYxOTEtLjE1OTQxNzEtLjM0MDczMTIxLS4zNDg5OTk1LS4zMzg0OTk5N3ptLTMuMTc0MDAwNC4yNjA5OTk4NmMtLjA1MzA3MjQtLjEzOTUxMjQyLS4xODY3MzM2LS4yMzE4MDI1OC0uMzM2LS4yMzE5OTk5OWgtMS4yOTc1bDIuNjk5OTk5OCA3LjExMzUwMDYxYy4wNTMwNzI5LjEzOTUxMjEuMTg2NzM0Ny4yMzE4MDMuMzM2LjIzMTk5OWguNzc2MDAwNWMuMjUxNzgxNC0uMDAwMTE0NS40MjU2NzMtLjI1MjAzNzYuMzM2NDk5Ny0uNDg3NDk5N3oiIGZpbGw9IiNkN2E4ZmYiLz48L2c+PC9zdmc+";
2
+ export {
3
+ M as default
4
+ };
@@ -0,0 +1,4 @@
1
+ const I = "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgMTIgMTIiIHdpZHRoPSIxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSI2IiBjeT0iNiIgcj0iNS41IiBmaWxsPSIjZmY0ZDRmIiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNNiAzLjV2M002IDguNWguMDEiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPgoK";
2
+ export {
3
+ I as default
4
+ };
@@ -0,0 +1,4 @@
1
+ const M = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSJub25lIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiIHZpZXdCb3g9IjAgMCA2IDYiPjxkZWZzPjxjbGlwUGF0aCBpZD0ibWFzdGVyX3N2ZzBfOTg4XzE2NzIwOSI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjYiIGhlaWdodD0iNiIgcng9IjAiLz48L2NsaXBQYXRoPjwvZGVmcz48ZyBjbGlwLXBhdGg9InVybCgjbWFzdGVyX3N2ZzBfOTg4XzE2NzIwOSkiPjxwYXRoIGQ9Ik0yLjUwMTk1MzA1NSwxLjIyMDYyNTJDMi4zOTQwODQ4ODYsMS4yMjA2MjUyLDIuMzA2NjQwNDAxNDgyNTcsMS4xMzMxODA3LDIuMzA2NjQwNjI1LDEuMDI1MzEyOEwyLjMwNjY0MDYyNSwwLjE5NTMxMjU3QzIuMzA2NjQwNjI1LDAuMDg3NDQ0MzgsMi4zOTQwODQ4ODYsMCwyLjUwMTk1MzA1NSwwQzIuNjA5ODIxMjM1LDAsMi42OTcyNjU3MTUsMC4wODc0NDQzOCwyLjY5NzI2NTcxNSwwLjE5NTMxMjU3TDIuNjk3MjY1NzE1LDEuMDI1MzEyOEMyLjY5NzI2NTcxNSwxLjEzMzQzNzgsMi42MDk3NjU3OTUsMS4yMjA2MjUyLDIuNTAxOTUzMDU1LDEuMjIwNjI1MloiIGZpbGw9IiMwMDAwMDAiIGZpbGwtb3BhY2l0eT0iMSIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOnBhc3N0aHJvdWdoIi8+PHBhdGggZD0iTTEuODYxNzAyMzg1LDEuMzkyMTAyMzMxMjVDMS43Njg0MDE5ODUwMDAwMDAxLDEuNDQ1OTEzOTMxMjUsMS42NDkxNDkxNDUsMS40MTQwMzg1MzEyNSwxLjU5NTEzOTk1NSwxLjMyMDg1MjQzMTI1TDEuMTgwMTM5Nzk5LDAuNjAyMTAyMzExMjVDMS4xMzIxMTQ2MTUsMC41MDk0MzY0NzEyNSwxLjE2NTQzMTIzMjIsMC4zOTUzODcwMzgyNSwxLjI1NTc4NzQ5MiwwLjM0MzE0NTk4MzI1QzEuMzQ2MTQzNzU1LDAuMjkwOTA0OTMwMjQ5OTk5OTcsMS40NjE2MDYzNTUsMC4zMTg5MzQ5MDk5NSwxLjUxNzk1MjQ0NSwwLjQwNjc4OTc3MjI1TDEuOTMyOTUyMzQ1LDEuMTI1NTM5NjYxMjVDMS45ODY5NDg3ODUsMS4yMTg4MTU3NDEyNSwxLjk1NTAzNjU4NSwxLjMzODIwNjMzMTI1LDEuODYxNzAyMzg1LDEuMzkyMTAyMzMxMjVaIiBmaWxsPSIjMDAwMDAwIiBmaWxsLW9wYWNpdHk9IjEiIHN0eWxlPSJvcGFjaXR5OjAuODk5OTk5OTc2MTU4MTQyMTsiLz48cGF0aCBkPSJNMS4zOTI1MDc1MTI1LDEuODYxMTk2ODcyNDk5OTk5OUMxLjMzODYxMTUxMjUsMS45NTQ1MzEyNTI1LDEuMjE5MjIwOTkyNSwxLjk4NjQ0MzIyMjUwMDAwMDIsMS4xMjU5NDQ5MTI1LDEuOTMyNDQ2ODMyNTAwMDAwMkwwLjQwNzE5NDkwNDUsMS41MTc0NDY5NjI1QzAuMzEzODA5MDk2OCwxLjQ2MzU1OTYwMjUsMC4yODE4MzU3MTA1LDEuMzQ0MTQyMDYyNSwwLjMzNTgwMTk4MzUsMS4yNTA4MDE4NTM1QzAuMzg5NzY4MzYyNSwxLjE1NzQ2MTY0MzIsMC41MDkyMTI4MzI1LDEuMTI1NTg5MTc1NSwwLjYwMjUwNzQ0MjUsMS4xNzk2MzQzNDk1TDEuMzIxMjU3NjEyNSwxLjU5NDYzNDQ3MjUwMDAwMDFDMS40MTQzODI2MTI1LDEuNjQ4Mzg0MzYyNDk5OTk5OSwxLjQ0NjI1NzYxMjUsMS43NjgwNzE4OTI1LDEuMzkyNTA3NTEyNSwxLjg2MTE5Njg3MjQ5OTk5OTlaIiBmaWxsPSIjMDAwMDAwIiBmaWxsLW9wYWNpdHk9IjEiIHN0eWxlPSJvcGFjaXR5OjAuODUwMDAwMDIzODQxODU3OTsiLz48cGF0aCBkPSJNMS4yMjA2MjUyLDIuNTAwOTc2NDkyNUMxLjIyMDYyNTIsMi42MDg3ODg3OTI1LDEuMTMzMTI1MywyLjY5NjI4OTE1MjUsMS4wMjUzMTI4LDIuNjk2Mjg5MTUyNUwwLjE5NTMxMjU3LDIuNjk2Mjg5MTUyNUMwLjA4NzQ0NDM4LDIuNjk2Mjg5MTUyNSwwLDIuNjA4ODQ0NjcyNSwwLDIuNTAwOTc2NDkyNUMwLDIuMzkzMTA4MzIzNSwwLjA4NzQ0NDM4LDIuMzA1NjY0MDYyNSwwLjE5NTMxMjU3LDIuMzA1NjY0MDYyNUwxLjAyNTMxMjgsMi4zMDU2NjQwNjI1QzEuMTMzNDM3OCwyLjMwNTY2NDA2MjUsMS4yMjA2MjUyLDIuMzkzMTYzOTc5NSwxLjIyMDYyNTIsMi41MDA5NzY0OTI1WiIgZmlsbD0iIzAwMDAwMCIgZmlsbC1vcGFjaXR5PSIxIiBzdHlsZT0ib3BhY2l0eTowLjgwMDAwMDAxMTkyMDkyOTsiLz48cGF0aCBkPSJNMS4zOTI1OTA2MTI1LDMuMTM5NTEyMzk3NUMxLjQ0NjQwMjExMjUsMy4yMzI4MTI1OTc1LDEuNDE0NTI2OTEyNSwzLjM1MjA2NTM4NzUsMS4zMjEzNDA4MTI1LDMuNDA2MDc0ODE3NUwwLjYwMjU5MDcxMjUwMDAwMDEsMy44MjEwNzQ2Njc1QzAuNTA5OTI0OTgyNTAwMDAwMSwzLjg2OTEwMDA5NzUsMC4zOTU4NzU0MjQ1LDMuODM1NzgzNDc3NSwwLjM0MzYzNDM3NjUsMy43NDU0MjcwMDc1QzAuMjkxMzkzMjExNDk5OTk5OTcsMy42NTUwNzA5NTc1LDAuMzE5NDIzMTkxMiwzLjUzOTYwODE0NzUsMC40MDcyNzgxNjU1LDMuNDgzMjYyMDg3NUwxLjEyNjAyODEyMjUsMy4wNjgyNjIxOTE1QzEuMjE5MzA0MTQyNSwzLjAxNDI2NjE5MTUsMS4zMzg2OTQzMTI1LDMuMDQ2MTc4MjIxNywxLjM5MjU5MDYxMjUsMy4xMzk1MTIzOTc1WiIgZmlsbD0iIzAwMDAwMCIgZmlsbC1vcGFjaXR5PSIxIiBzdHlsZT0ib3BhY2l0eTowLjc1OyIvPjxwYXRoIGQ9Ik0xLjg2MTE2MjI0MjQ5OTk5OTgsMy42MDcyMTAyNTA1QzEuOTU0NDk2MzIyNSwzLjY2MTEwNjEwOTUsMS45ODY0MDg2NTI1LDMuNzgwNDk2NjA3NSwxLjkzMjQxMjIwMjUwMDAwMDEsMy44NzM3NzI2NDc1TDEuNTE3NDEyMzAyNSw0LjU5MjUyMjg4NzQ5OTk5OTVDMS40NjM1MDUwNjI1LDQuNjg1ODY1OTg3NSwxLjM0NDExODU4MjUsNC43MTc4MDc5ODc1MDAwMDA1LDEuMjUwODAxODUzNSw0LjY2Mzg1NTI4NzVDMS4xNTc0ODUzMzYxLDQuNjA5OTAyMjg3NSwxLjEyNTYwMTI0NTUsNC40OTA1MDAxNDc1LDEuMTc5NTk5NzA0NSw0LjM5NzIxMDIzNzQ5OTk5OTVMMS41OTQ1OTk4MTI1LDMuNjc4NDYwMDA5NUMxLjY0ODYwOTIyMjUsMy41ODUyNzM4MDIzLDEuNzY3ODYxNzgyNSwzLjU1MzM5ODQyODUsMS44NjExNjIyNDI0OTk5OTk4LDMuNjA3MjEwMjUwNVoiIGZpbGw9IiMwMDAwMDAiIGZpbGwtb3BhY2l0eT0iMSIgc3R5bGU9Im9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzE7Ii8+PHBhdGggZD0iTTIuNTAxOTUzMDU1LDMuNzc5Mjk2ODc1QzIuNjA5NzY1MzU1LDMuNzc5Mjk2ODc1LDIuNjk3MjY1NzE1LDMuODY2Nzk2NzkyLDIuNjk3MjY1NzE1LDMuOTc0NjA5NTM1TDIuNjk3MjY1NzE1LDQuODA0NjA5Nzc1QzIuNjk3MjY1NzE1LDQuOTEyNDc3OTc1LDIuNjA5ODIxMjM1LDQuOTk5OTIyNDc1LDIuNTAxOTUzMDU1LDQuOTk5OTIyNDc1QzIuMzk0MDg0ODg2LDQuOTk5OTIyNDc1LDIuMzA2NjQwNjI1LDQuOTEyNDc3OTc1LDIuMzA2NjQwNjI1LDQuODA0NjA5Nzc1TDIuMzA2NjQwNjI1LDMuOTc0NjA5NTM1QzIuMzA2NjQwNjI1LDMuODY2NDg0MzE0LDIuMzk0MTQwNTQyLDMuNzc5Mjk2ODc1LDIuNTAxOTUzMDU1LDMuNzc5Mjk2ODc1WiIgZmlsbD0iIzAwMDAwMCIgZmlsbC1vcGFjaXR5PSIxIiBzdHlsZT0ib3BhY2l0eTowLjY0OTk5OTk3NjE1ODE0MjE7Ii8+PHBhdGggZD0iTTMuMTM5NTEyMzk3NSwzLjYwNzIxMDI1MDVDMy4yMzI4MTI1OTc1LDMuNTUzMzk4ODc1NSwzLjM1MjA2NTM4NzUsMy41ODUyNzQyNDkzLDMuNDA2MDc0ODE3NSwzLjY3ODQ2MDQ1NjVMMy44MjEwNzQ2Njc1LDQuMzk3MjEwNzE3NUMzLjg2OTEwMDA5NzUsNC40ODk4NzY1Njc1LDMuODM1NzgzNDc3NSw0LjYwMzkyNTc4NzUsMy43NDU0MjcwMDc1LDQuNjU2MTY3Mjg3NUMzLjY1NTA3MDU0NzUwMDAwMDMsNC43MDg0MDgxODc1LDMuNTM5NjA4MTQ3NSw0LjY4MDM3ODE4NzUsMy40ODMyNjIwODc1LDQuNTkyNTIzMjg3NUwzLjA2ODI2MjE5MTUsMy44NzM3NzMwOTc1QzMuMDE0MjY2MTkxNSwzLjc4MDQ5NzA1NzUsMy4wNDYxNzgyMjE3LDMuNjYxMTA2NTU2NSwzLjEzOTUxMjM5NzUsMy42MDcyMTAyNTA1WiIgZmlsbD0iIzAwMDAwMCIgZmlsbC1vcGFjaXR5PSIxIiBzdHlsZT0ib3BhY2l0eTowLjYwMDAwMDAyMzg0MTg1Nzk7Ii8+PHBhdGggZD0iTTMuNjEwMTM5OTM4LDMuMTM5NTEyMzk3NUMzLjY2NDAzNTc5NywzLjA0NjE3ODIyMTcsMy43ODM0MjYyOTUsMy4wMTQyNjU3NDQ1LDMuODc2NzAyMzM1LDMuMDY4MjYyMTkxNUw0LjU5NTQ1MjU3NDk5OTk5OTUsMy40ODMyNjIwODc1QzQuNjg4NzM2Njc0OTk5OTk5NSwzLjUzNzE5NTk0NzUsNC43MjA2MzYyNzUsMy42NTY1Mzk5MTc1LDQuNjY2NzAyMzc1LDMuNzQ5ODI0NDY3NUM0LjYxMjc2ODU3NTAwMDAwMDUsMy44NDMxMDkwNjc1LDQuNDkzNDI0NDc1LDMuODc1MDA4NTI3NSw0LjQwMDEzOTkyNDk5OTk5OTUsMy44MjEwNzQ2Njc1TDMuNjgxMzg5Njk3LDMuNDA2MDc0ODE3NUMzLjU4ODIwMzQ4OTgsMy4zNTIwNjUzODc1LDMuNTU2MzI4MTE2LDMuMjMyODEyNTk3NSwzLjYxMDEzOTkzOCwzLjEzOTUxMjM5NzVaIiBmaWxsPSIjMDAwMDAwIiBmaWxsLW9wYWNpdHk9IjEiIHN0eWxlPSJvcGFjaXR5OjAuNTUwMDAwMDExOTIwOTI5OyIvPjxwYXRoIGQ9Ik0zLjc4MDI3MzQzNzUsMi41MDA5NzY0OTI1QzMuNzgwMjczNDM3NSwyLjM5MzE2Mzk3OTUsMy44Njc3NzMzNTQ1LDIuMzA1NjY0MDYyNSwzLjk3NTU4NjA5NzUsMi4zMDU2NjQwNjI1TDQuODA1NTg2MzM3NSwyLjMwNTY2NDA2MjVDNC45MTM0NTQ1Mzc1LDIuMzA1NjY0MDYyNSw1LjAwMDg5OTAzNzUsMi4zOTMxMDgzMjM1LDUuMDAwODk5MDM3NSwyLjUwMDk3NjQ5MjVDNS4wMDA4OTkwMzc1LDIuNjA4ODQ0NjcyNSw0LjkxMzQ1NDUzNzUsMi42OTYyODkxNTI1LDQuODA1NTg2MzM3NSwyLjY5NjI4OTE1MjVMMy45NzU1ODYwOTc1LDIuNjk2Mjg5MTUyNUMzLjg2NzcxNzkyMTUsMi42OTYyODkxNTI1LDMuNzgwMjczNDM3NSwyLjYwODg0NDY3MjUsMy43ODAyNzM0Mzc1LDIuNTAwOTc2NDkyNVoiIGZpbGw9IiMwMDAwMDAiIGZpbGwtb3BhY2l0eT0iMSIgc3R5bGU9Im9wYWNpdHk6MC41OyIvPjxwYXRoIGQ9Ik0zLjYxMDEzOTkzOCwxLjg2MDcyNTgyMjVDMy41NTYzMjg1NjMsMS43Njc0MjUxMjI1LDMuNTg4MjAzOTM2OCwxLjY0ODE3MjU4MjUsMy42ODEzOTAxNDQsMS41OTQxNjMzOTI1TDQuNDAwMTQwNDA1LDEuMTc5MTYzMjM2NUM0LjQ5MjgwNjI1NSwxLjEzMTEzNzgyOTUsNC42MDY4NTU0NzUsMS4xNjQ0NTQ2Njk3LDQuNjU5MDk2OTc1LDEuMjU0ODEwOTI5NUM0LjcxMTMzNzg3NSwxLjM0NTE2NzE5MjUsNC42ODMzMDc4NzUsMS40NjA2Mjk3OTI1LDQuNTk1NDUyOTc1LDEuNTE2OTc1ODgyNUwzLjg3NjcwMjc4NSwxLjkzMTk3NTc4MjVDMy43ODM0MjY3NDUsMS45ODU5NzIyMjI1LDMuNjY0MDM2MjQ0LDEuOTU0MDYwMDIyNSwzLjYxMDEzOTkzOCwxLjg2MDcyNTgyMjVaIiBmaWxsPSIjMDAwMDAwIiBmaWxsLW9wYWNpdHk9IjEiIHN0eWxlPSJvcGFjaXR5OjAuNDAwMDAwMDA1OTYwNDY0NTsiLz48cGF0aCBkPSJNMy4xMzk1MTIzOTc1LDEuMzkyODUyNjkzNzVDMy4wNDYxNzgyMjE3LDEuMzM4OTU2NzkzNzUsMy4wMTQyNjU3NDQ1LDEuMjE5NTY2MTAzNzUsMy4wNjgyNjIxOTE1LDEuMTI2MjkwMDIzNzVMMy40ODMyNjIwODc1LDAuNDA3NTQwMDE1NzVDMy41MzcxOTU5NDc1LDAuMzE0MjU1NjkyMDUsMy42NTY1Mzk5MTc1LDAuMjgyMzU1OTU0NzQ5OTk5OTcsMy43NDk4MjQ0Njc1LDAuMzM2MjkwMDQwNzVDMy44NDMxMDkwNjc1LDAuMzkwMjI0MDA5NzUsMy44NzUwMDg1Mjc1LDAuNTA5NTY4MTIzNzUsMy44MjEwNzQ2Njc1LDAuNjAyODUyNTUzNzVMMy40MDYwNzQ4MTc1LDEuMzIxNjAyNjkzNzVDMy4zNTIwNjU4NTc1LDEuNDE0Nzg4OTkzNzUsMy4yMzI4MTMwNDc1LDEuNDQ2NjY0MjkzNzUsMy4xMzk1MTIzOTc1LDEuMzkyODUyNjkzNzVaIiBmaWxsPSIjMDAwMDAwIiBmaWxsLW9wYWNpdHk9IjEiIHN0eWxlPSJvcGFjaXR5OjAuMzAwMDAwMDExOTIwOTI4OTY7Ii8+PC9nPjwvc3ZnPgoK";
2
+ export {
3
+ M as default
4
+ };
@@ -0,0 +1,4 @@
1
+ const M = "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8IS0tIOWkp+eahOaYn+aYn++8iOW3puS+p+S4reW/g++8iSAtLT4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyLCA2KSBzY2FsZSgyLjIpIj4KICAgIDxwYXRoIGQ9Im0xLjMzMTkyOTcuMDkwOTA5MjRjLjAzMTQ3NTQtLjA1NTY0NjgzLjA5NjY4NTItLjA5MDkwOTI0LjE2ODExMzktLjA5MDkwOTI0LjA3MTQyODkgMCAuMTM2NjM3NC4wMzUyNjIyNy4xNjgxMTQuMDkwOTA5MjRsLjExMzIzNzcuMTk2NTQ3MTJjLjIxNzc2NDMuMzc3OTc0OS41Mzc0NDA3LjcwMzc4OTYzLjkzMjAyODQuOTUwOTg1MjRsLjIwODE4MjQuMTI5MjY3NGMuMTA0NTI2Mi4wNjUwMTE4LjEwNDUyNjIuMTk5NTcwNyAwIC4yNjQ1ODI3bC0uMjA3MzExMi4xMjkyNjc1Yy0uMzk1MjgzMi4yNDY5MTExLS43MTU0NDk0LjU3MzU0MjktLjkzMjg5OTYuOTUxNzQxM2wtLjExMzIzNzcuMTk1NzkwN2MtLjAzMTQ3NjYuMDU1NjQ2Ny0uMDk2Njg1MS4wOTA5MDg4LS4xNjgxMTQuMDkwOTA4OC0uMDcxNDI4NyAwLS4xMzY2Mzg1LS4wMzUyNjIxLS4xNjgxMTM5LS4wOTA5MDg4bC0uMTEzMjM3NS0uMTk2NTQ3Yy0uMjE2ODkzMy0uMzc3OTc1NS0uNTM3NDQwNjctLjcwMzc4OTctLjkzMjAyODctLjk1MDk4NTRsLS4yMDgxODIwMi0uMTI5MjY3NWMtLjEwNDY0MjM5LS4wNjQ4MTU3LS4xMDQ2NDIzOS0uMTk5NzY2NyAwLS4yNjQ1ODI2bC4yMDgxODIwMi0uMTI5MjY3NmMuMzk0OTY0MjUtLjI0NzAwMzAxLjcxNDgyMjctLjU3MzYyNzI4LjkzMjAyODctLjk1MTc0MDkxeiIgZmlsbD0iIzk0YmZmZiIvPgogIDwvZz4KICA8IS0tIOWwj+eahOaYn+aYn++8iOWPs+S4iuinku+8jOabtOmdoOi/keWkp+aYn+aYn++8iSAtLT4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2LjUsIDMuNSkgc2NhbGUoMS4yKSI+CiAgICA8cGF0aCBkPSJtMS4zMzE5Mjk3LjA5MDkwOTI0Yy4wMzE0NzU0LS4wNTU2NDY4My4wOTY2ODUyLS4wOTA5MDkyNC4xNjgxMTM5LS4wOTA5MDkyNC4wNzE0Mjg5IDAgLjEzNjYzNzQuMDM1MjYyMjcuMTY4MTE0LjA5MDkwOTI0bC4xMTMyMzc3LjE5NjU0NzEyYy4yMTc3NjQzLjM3Nzk3NDkuNTM3NDQwNy43MDM3ODk2My45MzIwMjg0Ljk1MDk4NTI0bC4yMDgxODI0LjEyOTI2NzRjLjEwNDUyNjIuMDY1MDExOC4xMDQ1MjYyLjE5OTU3MDcgMCAuMjY0NTgyN2wtLjIwNzMxMTIuMTI5MjY3NWMtLjM5NTI4MzIuMjQ2OTExMS0uNzE1NDQ5NC41NzM1NDI5LS45MzI4OTk2Ljk1MTc0MTNsLS4xMTMyMzc3LjE5NTc5MDdjLS4wMzE0NzY2LjA1NTY0NjctLjA5NjY4NTEuMDkwOTA4OC0uMTY4MTE0LjA5MDkwODgtLjA3MTQyODcgMC0uMTM2NjM4NS0uMDM1MjYyMS0uMTY4MTEzOS0uMDkwOTA4OGwtLjExMzIzNzUtLjE5NjU0N2MtLjIxNjg5MzMtLjM3Nzk3NTUtLjUzNzQ0MDY3LS43MDM3ODk3LS45MzIwMjg3LS45NTA5ODU0bC0uMjA4MTgyMDItLjEyOTI2NzVjLS4xMDQ2NDIzOS0uMDY0ODE1Ny0uMTA0NjQyMzktLjE5OTc2NjcgMC0uMjY0NTgyNmwuMjA4MTgyMDItLjEyOTI2NzZjLjM5NDk2NDI1LS4yNDcwMDMwMS43MTQ4MjI3LS41NzM2MjcyOC45MzIwMjg3LS45NTE3NDA5MXoiIGZpbGw9IiM5NGJmZmYiLz4KICA8L2c+Cjwvc3ZnPgo=";
2
+ export {
3
+ M as default
4
+ };