open-grid 0.2.0

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 (70) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +366 -0
  3. package/dist/OpenGrid-CAodJLLm.cjs +90 -0
  4. package/dist/OpenGrid-CAodJLLm.cjs.map +1 -0
  5. package/dist/OpenGrid-CfZy3e7Q.js +4376 -0
  6. package/dist/OpenGrid-CfZy3e7Q.js.map +1 -0
  7. package/dist/open-grid-base.css +1595 -0
  8. package/dist/open-grid-react.cjs +2 -0
  9. package/dist/open-grid-react.cjs.map +1 -0
  10. package/dist/open-grid-react.js +91 -0
  11. package/dist/open-grid-react.js.map +1 -0
  12. package/dist/open-grid-themes.css +630 -0
  13. package/dist/open-grid-vue.cjs +2 -0
  14. package/dist/open-grid-vue.cjs.map +1 -0
  15. package/dist/open-grid-vue.js +84 -0
  16. package/dist/open-grid-vue.js.map +1 -0
  17. package/dist/open-grid.cjs +7 -0
  18. package/dist/open-grid.cjs.map +1 -0
  19. package/dist/open-grid.js +311 -0
  20. package/dist/open-grid.js.map +1 -0
  21. package/dist/types/bench/perf.d.ts +16 -0
  22. package/dist/types/core/CellEditManager.d.ts +46 -0
  23. package/dist/types/core/CellEventHandler.d.ts +28 -0
  24. package/dist/types/core/CellTypeRegistry.d.ts +5 -0
  25. package/dist/types/core/ColumnLayout.d.ts +41 -0
  26. package/dist/types/core/ContextMenu.d.ts +33 -0
  27. package/dist/types/core/DataLayer.d.ts +65 -0
  28. package/dist/types/core/EventEmitter.d.ts +11 -0
  29. package/dist/types/core/ExportManager.d.ts +28 -0
  30. package/dist/types/core/FilterPanel.d.ts +20 -0
  31. package/dist/types/core/FilterSelect.d.ts +96 -0
  32. package/dist/types/core/FindBarManager.d.ts +26 -0
  33. package/dist/types/core/FooterManager.d.ts +16 -0
  34. package/dist/types/core/FormulaEngine.d.ts +10 -0
  35. package/dist/types/core/GridRenderer.d.ts +42 -0
  36. package/dist/types/core/GroupEngine.d.ts +47 -0
  37. package/dist/types/core/GroupTreeManager.d.ts +43 -0
  38. package/dist/types/core/KeyboardManager.d.ts +26 -0
  39. package/dist/types/core/MaskingEngine.d.ts +25 -0
  40. package/dist/types/core/MathUtils.d.ts +26 -0
  41. package/dist/types/core/MergeEngine.d.ts +35 -0
  42. package/dist/types/core/OGDecimal.d.ts +49 -0
  43. package/dist/types/core/OpenGrid.d.ts +213 -0
  44. package/dist/types/core/OrgChart.d.ts +35 -0
  45. package/dist/types/core/Pagination.d.ts +34 -0
  46. package/dist/types/core/PivotEngine.d.ts +20 -0
  47. package/dist/types/core/RowDragDrop.d.ts +18 -0
  48. package/dist/types/core/RowManager.d.ts +30 -0
  49. package/dist/types/core/SortFilterManager.d.ts +36 -0
  50. package/dist/types/core/TreeEngine.d.ts +34 -0
  51. package/dist/types/core/TriggerManager.d.ts +10 -0
  52. package/dist/types/core/VirtualScroll.d.ts +31 -0
  53. package/dist/types/core/WorksheetManager.d.ts +24 -0
  54. package/dist/types/core/XmlConverter.d.ts +88 -0
  55. package/dist/types/core/editors/CellEditor.d.ts +55 -0
  56. package/dist/types/core/editors/DateEditor.d.ts +15 -0
  57. package/dist/types/core/editors/SelectEditor.d.ts +21 -0
  58. package/dist/types/core/renderers/CellRenderer.d.ts +138 -0
  59. package/dist/types/core/types.d.ts +497 -0
  60. package/dist/types/index.d.ts +9 -0
  61. package/dist/types/react/OpenGrid.d.ts +34 -0
  62. package/dist/types/react/index.d.ts +2 -0
  63. package/dist/types/vue/OpenGrid.vue.d.ts +80 -0
  64. package/dist/types/vue/index.d.ts +2 -0
  65. package/dist/types/vue/types.d.ts +28 -0
  66. package/dist/xlsx.min-Bx-LxWOf.cjs +138 -0
  67. package/dist/xlsx.min-Bx-LxWOf.cjs.map +1 -0
  68. package/dist/xlsx.min-Wavxcamn.js +11907 -0
  69. package/dist/xlsx.min-Wavxcamn.js.map +1 -0
  70. package/package.json +102 -0
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react/jsx-runtime"),r=require("react"),D=require("./OpenGrid-CAodJLLm.cjs");function M({data:e,columns:t,height:u=400,width:s="100%",editable:l=!1,sortable:O=!0,filterable:o=!0,rowNumber:x=!1,checkColumn:y=!1,stateColumn:R=!1,draggable:G=!1,frozenColumns:j=0,theme:f="default",options:P,style:W,className:z,onReady:c,onDataChange:b,onCellClick:q,onRowClick:S,onEditEnd:d,onSortChange:v,onFilterChange:E,onRowDrop:T}){const i=r.useRef(null),n=r.useRef(null),A={height:typeof u=="number"?`${u}px`:u,width:typeof s=="number"?`${s}px`:s,display:"block",boxSizing:"border-box",...W};return r.useEffect(()=>{if(!i.current)return;const B={columns:t,height:"100%",width:"100%",editable:l,sortable:O,filterable:o,rowNumber:x,checkColumn:y,stateColumn:R,draggable:G,frozenColumns:j,theme:f,...P,onReady:p=>{n.current=p,e!=null&&e.length&&p.setData(e),c==null||c(p)},...b&&{onDataChange:b},...q&&{onCellClick:q},...S&&{onRowClick:S},...d&&{onEditEnd:d},...v&&{onSortChange:v},...E&&{onFilterChange:E},...T&&{onRowDrop:T}},$=new D.OpenGrid(i.current,B);return n.current=$,()=>{$.destroy(),n.current=null}},[t,l,O,o,x,y,R,G,j]),r.useEffect(()=>{n.current&&e&&n.current.setData(e)},[e]),r.useEffect(()=>{n.current&&n.current.setTheme(f)},[f]),g.jsx("div",{ref:i,style:A,className:z})}const H=r.forwardRef((e,t)=>{r.useRef(null);const u=r.useRef(null);return r.useEffect(()=>{u.current&&t&&(typeof t=="function"?t(u.current):t.current=u.current)}),g.jsx(M,{...e})});H.displayName="OpenGrid";exports.OpenGrid=M;
2
+ //# sourceMappingURL=open-grid-react.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-grid-react.cjs","sources":["../src/react/OpenGrid.tsx"],"sourcesContent":["import React, { useRef, useEffect, useCallback, CSSProperties } from 'react';\nimport { OpenGrid } from '../core/OpenGrid.js';\nimport type { GridOptions, ColumnDef, OpenGridInstance } from '../core/types.js';\nimport '../styles/base.css';\n\nexport interface OpenGridProps<T extends Record<string, any> = any> {\n data?: T[];\n columns: ColumnDef<T>[];\n height?: number | string;\n width?: number | string;\n editable?: boolean;\n sortable?: boolean;\n filterable?: boolean;\n rowNumber?: boolean;\n checkColumn?: boolean;\n frozenColumns?: number;\n theme?: string;\n options?: Partial<GridOptions<T>>;\n style?: CSSProperties;\n className?: string;\n\n stateColumn?: boolean;\n draggable?: boolean;\n\n onReady?: (grid: OpenGridInstance<T>) => void;\n onDataChange?: (data: T[]) => void;\n onCellClick?: (e: any) => void;\n onRowClick?: (e: any) => void;\n onEditEnd?: (e: any) => void;\n onSortChange?: (e: any) => void;\n onFilterChange?: (e: any) => void;\n onRowDrop?: (e: { fromIndex: number; toIndex: number }) => void;\n}\n\nexport function OpenGridReact<T extends Record<string, any> = any>({\n data,\n columns,\n height = 400,\n width = '100%',\n editable = false,\n sortable = true,\n filterable = true,\n rowNumber = false,\n checkColumn = false,\n stateColumn = false,\n draggable = false,\n frozenColumns = 0,\n theme = 'default',\n options,\n style,\n className,\n onReady,\n onDataChange,\n onCellClick,\n onRowClick,\n onEditEnd,\n onSortChange,\n onFilterChange,\n onRowDrop,\n}: OpenGridProps<T>) {\n const containerRef = useRef<HTMLDivElement>(null);\n const gridRef = useRef<OpenGridInstance<T> | null>(null);\n\n const containerStyle: CSSProperties = {\n height: typeof height === 'number' ? `${height}px` : height,\n width: typeof width === 'number' ? `${width}px` : width,\n display: 'block',\n boxSizing: 'border-box',\n ...style,\n };\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const gridOptions: GridOptions<T> = {\n columns,\n height: '100%',\n width: '100%',\n editable,\n sortable,\n filterable,\n rowNumber,\n checkColumn,\n stateColumn,\n draggable,\n frozenColumns,\n theme,\n ...options,\n\n onReady: (grid) => {\n gridRef.current = grid;\n if (data?.length) grid.setData(data);\n onReady?.(grid);\n },\n ...(onDataChange && { onDataChange }),\n ...(onCellClick && { onCellClick }),\n ...(onRowClick && { onRowClick }),\n ...(onEditEnd && { onEditEnd }),\n ...(onSortChange && { onSortChange }),\n ...(onFilterChange && { onFilterChange }),\n ...(onRowDrop && { onRowDrop }),\n };\n\n const grid = new OpenGrid<T>(containerRef.current, gridOptions);\n gridRef.current = grid;\n\n return () => {\n grid.destroy();\n gridRef.current = null;\n };\n // theme은 별도 effect에서 처리하므로 deps에서 제외\n }, [columns, editable, sortable, filterable, rowNumber, checkColumn, stateColumn, draggable, frozenColumns]);\n\n // data 변경 감지\n useEffect(() => {\n if (gridRef.current && data) {\n gridRef.current.setData(data);\n }\n }, [data]);\n\n // theme 변경 감지 (그리드 재생성 없이 setTheme만 호출)\n useEffect(() => {\n if (gridRef.current) gridRef.current.setTheme(theme);\n }, [theme]);\n\n return (\n <div\n ref={containerRef}\n style={containerStyle}\n className={className}\n />\n );\n}\n\n// ref forwarder (외부에서 grid 인스턴스 접근)\nexport const OpenGridWithRef = React.forwardRef<\n OpenGridInstance,\n OpenGridProps\n>((props, ref) => {\n const innerRef = useRef<HTMLDivElement>(null);\n const gridRef = useRef<OpenGridInstance | null>(null);\n\n useEffect(() => {\n if (gridRef.current && ref) {\n if (typeof ref === 'function') ref(gridRef.current);\n else (ref as React.MutableRefObject<OpenGridInstance | null>).current = gridRef.current;\n }\n });\n\n return <OpenGridReact {...props} />;\n});\n\nOpenGridWithRef.displayName = 'OpenGrid';\n"],"names":["OpenGridReact","data","columns","height","width","editable","sortable","filterable","rowNumber","checkColumn","stateColumn","draggable","frozenColumns","theme","options","style","className","onReady","onDataChange","onCellClick","onRowClick","onEditEnd","onSortChange","onFilterChange","onRowDrop","containerRef","useRef","gridRef","containerStyle","useEffect","gridOptions","grid","OpenGrid","jsx","OpenGridWithRef","React","props","ref"],"mappings":"6KAkCO,SAASA,EAAmD,CACjE,KAAAC,EACA,QAAAC,EACA,OAAAC,EAAS,IACT,MAAAC,EAAQ,OACR,SAAAC,EAAW,GACX,SAAAC,EAAW,GACX,WAAAC,EAAa,GACb,UAAAC,EAAY,GACZ,YAAAC,EAAc,GACd,YAAAC,EAAc,GACd,UAAAC,EAAY,GACZ,cAAAC,EAAgB,EAChB,MAAAC,EAAQ,UACR,QAAAC,EACA,MAAAC,EACA,UAAAC,EACA,QAAAC,EACA,aAAAC,EACA,YAAAC,EACA,WAAAC,EACA,UAAAC,EACA,aAAAC,EACA,eAAAC,EACA,UAAAC,CACF,EAAqB,CACnB,MAAMC,EAAeC,EAAAA,OAAuB,IAAI,EAC1CC,EAAUD,EAAAA,OAAmC,IAAI,EAEjDE,EAAgC,CACpC,OAAQ,OAAOzB,GAAW,SAAW,GAAGA,CAAM,KAAOA,EACrD,MAAO,OAAOC,GAAU,SAAW,GAAGA,CAAK,KAAOA,EAClD,QAAS,QACT,UAAW,aACX,GAAGW,CAAA,EAGLc,OAAAA,EAAAA,UAAU,IAAM,CACd,GAAI,CAACJ,EAAa,QAAS,OAE3B,MAAMK,EAA8B,CAClC,QAAA5B,EACA,OAAQ,OACR,MAAO,OACP,SAAAG,EACA,SAAAC,EACA,WAAAC,EACA,UAAAC,EACA,YAAAC,EACA,YAAAC,EACA,UAAAC,EACA,cAAAC,EACA,MAAAC,EACA,GAAGC,EAEH,QAAUiB,GAAS,CACjBJ,EAAQ,QAAUI,EACd9B,GAAA,MAAAA,EAAM,QAAQ8B,EAAK,QAAQ9B,CAAI,EACnCgB,GAAA,MAAAA,EAAUc,EACZ,EACA,GAAIb,GAAgB,CAAE,aAAAA,CAAA,EACtB,GAAIC,GAAe,CAAE,YAAAA,CAAA,EACrB,GAAIC,GAAc,CAAE,WAAAA,CAAA,EACpB,GAAIC,GAAa,CAAE,UAAAA,CAAA,EACnB,GAAIC,GAAgB,CAAE,aAAAA,CAAA,EACtB,GAAIC,GAAkB,CAAE,eAAAA,CAAA,EACxB,GAAIC,GAAa,CAAE,UAAAA,CAAA,CAAU,EAGzBO,EAAO,IAAIC,EAAAA,SAAYP,EAAa,QAASK,CAAW,EAC9D,OAAAH,EAAQ,QAAUI,EAEX,IAAM,CACXA,EAAK,QAAA,EACLJ,EAAQ,QAAU,IACpB,CAEF,EAAG,CAACzB,EAASG,EAAUC,EAAUC,EAAYC,EAAWC,EAAaC,EAAaC,EAAWC,CAAa,CAAC,EAG3GiB,EAAAA,UAAU,IAAM,CACVF,EAAQ,SAAW1B,GACrB0B,EAAQ,QAAQ,QAAQ1B,CAAI,CAEhC,EAAG,CAACA,CAAI,CAAC,EAGT4B,EAAAA,UAAU,IAAM,CACVF,EAAQ,SAASA,EAAQ,QAAQ,SAASd,CAAK,CACrD,EAAG,CAACA,CAAK,CAAC,EAGRoB,EAAAA,IAAC,MAAA,CACC,IAAKR,EACL,MAAOG,EACP,UAAAZ,CAAA,CAAA,CAGN,CAGO,MAAMkB,EAAkBC,EAAM,WAGnC,CAACC,EAAOC,IAAQ,CACCX,EAAAA,OAAuB,IAAI,EAC5C,MAAMC,EAAUD,EAAAA,OAAgC,IAAI,EAEpDG,OAAAA,EAAAA,UAAU,IAAM,CACVF,EAAQ,SAAWU,IACjB,OAAOA,GAAQ,WAAYA,EAAIV,EAAQ,OAAO,EAC5CU,EAAwD,QAAUV,EAAQ,QAEpF,CAAC,EAEMM,MAACjC,EAAA,CAAe,GAAGoC,CAAA,CAAO,CACnC,CAAC,EAEDF,EAAgB,YAAc"}
@@ -0,0 +1,91 @@
1
+ import { jsx as A } from "react/jsx-runtime";
2
+ import K, { useRef as f, useEffect as u } from "react";
3
+ import { O as L } from "./OpenGrid-CfZy3e7Q.js";
4
+ function M({
5
+ data: r,
6
+ columns: e,
7
+ height: t = 400,
8
+ width: c = "100%",
9
+ editable: o = !1,
10
+ sortable: O = !0,
11
+ filterable: x = !0,
12
+ rowNumber: y = !1,
13
+ checkColumn: G = !1,
14
+ stateColumn: m = !1,
15
+ draggable: R = !1,
16
+ frozenColumns: $ = 0,
17
+ theme: s = "default",
18
+ options: B,
19
+ style: D,
20
+ className: H,
21
+ onReady: i,
22
+ onDataChange: b,
23
+ onCellClick: j,
24
+ onRowClick: v,
25
+ onEditEnd: S,
26
+ onSortChange: T,
27
+ onFilterChange: W,
28
+ onRowDrop: q
29
+ }) {
30
+ const p = f(null), n = f(null), I = {
31
+ height: typeof t == "number" ? `${t}px` : t,
32
+ width: typeof c == "number" ? `${c}px` : c,
33
+ display: "block",
34
+ boxSizing: "border-box",
35
+ ...D
36
+ };
37
+ return u(() => {
38
+ if (!p.current) return;
39
+ const J = {
40
+ columns: e,
41
+ height: "100%",
42
+ width: "100%",
43
+ editable: o,
44
+ sortable: O,
45
+ filterable: x,
46
+ rowNumber: y,
47
+ checkColumn: G,
48
+ stateColumn: m,
49
+ draggable: R,
50
+ frozenColumns: $,
51
+ theme: s,
52
+ ...B,
53
+ onReady: (l) => {
54
+ n.current = l, r != null && r.length && l.setData(r), i == null || i(l);
55
+ },
56
+ ...b && { onDataChange: b },
57
+ ...j && { onCellClick: j },
58
+ ...v && { onRowClick: v },
59
+ ...S && { onEditEnd: S },
60
+ ...T && { onSortChange: T },
61
+ ...W && { onFilterChange: W },
62
+ ...q && { onRowDrop: q }
63
+ }, z = new L(p.current, J);
64
+ return n.current = z, () => {
65
+ z.destroy(), n.current = null;
66
+ };
67
+ }, [e, o, O, x, y, G, m, R, $]), u(() => {
68
+ n.current && r && n.current.setData(r);
69
+ }, [r]), u(() => {
70
+ n.current && n.current.setTheme(s);
71
+ }, [s]), /* @__PURE__ */ A(
72
+ "div",
73
+ {
74
+ ref: p,
75
+ style: I,
76
+ className: H
77
+ }
78
+ );
79
+ }
80
+ const N = K.forwardRef((r, e) => {
81
+ f(null);
82
+ const t = f(null);
83
+ return u(() => {
84
+ t.current && e && (typeof e == "function" ? e(t.current) : e.current = t.current);
85
+ }), /* @__PURE__ */ A(M, { ...r });
86
+ });
87
+ N.displayName = "OpenGrid";
88
+ export {
89
+ M as OpenGrid
90
+ };
91
+ //# sourceMappingURL=open-grid-react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-grid-react.js","sources":["../src/react/OpenGrid.tsx"],"sourcesContent":["import React, { useRef, useEffect, useCallback, CSSProperties } from 'react';\nimport { OpenGrid } from '../core/OpenGrid.js';\nimport type { GridOptions, ColumnDef, OpenGridInstance } from '../core/types.js';\nimport '../styles/base.css';\n\nexport interface OpenGridProps<T extends Record<string, any> = any> {\n data?: T[];\n columns: ColumnDef<T>[];\n height?: number | string;\n width?: number | string;\n editable?: boolean;\n sortable?: boolean;\n filterable?: boolean;\n rowNumber?: boolean;\n checkColumn?: boolean;\n frozenColumns?: number;\n theme?: string;\n options?: Partial<GridOptions<T>>;\n style?: CSSProperties;\n className?: string;\n\n stateColumn?: boolean;\n draggable?: boolean;\n\n onReady?: (grid: OpenGridInstance<T>) => void;\n onDataChange?: (data: T[]) => void;\n onCellClick?: (e: any) => void;\n onRowClick?: (e: any) => void;\n onEditEnd?: (e: any) => void;\n onSortChange?: (e: any) => void;\n onFilterChange?: (e: any) => void;\n onRowDrop?: (e: { fromIndex: number; toIndex: number }) => void;\n}\n\nexport function OpenGridReact<T extends Record<string, any> = any>({\n data,\n columns,\n height = 400,\n width = '100%',\n editable = false,\n sortable = true,\n filterable = true,\n rowNumber = false,\n checkColumn = false,\n stateColumn = false,\n draggable = false,\n frozenColumns = 0,\n theme = 'default',\n options,\n style,\n className,\n onReady,\n onDataChange,\n onCellClick,\n onRowClick,\n onEditEnd,\n onSortChange,\n onFilterChange,\n onRowDrop,\n}: OpenGridProps<T>) {\n const containerRef = useRef<HTMLDivElement>(null);\n const gridRef = useRef<OpenGridInstance<T> | null>(null);\n\n const containerStyle: CSSProperties = {\n height: typeof height === 'number' ? `${height}px` : height,\n width: typeof width === 'number' ? `${width}px` : width,\n display: 'block',\n boxSizing: 'border-box',\n ...style,\n };\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const gridOptions: GridOptions<T> = {\n columns,\n height: '100%',\n width: '100%',\n editable,\n sortable,\n filterable,\n rowNumber,\n checkColumn,\n stateColumn,\n draggable,\n frozenColumns,\n theme,\n ...options,\n\n onReady: (grid) => {\n gridRef.current = grid;\n if (data?.length) grid.setData(data);\n onReady?.(grid);\n },\n ...(onDataChange && { onDataChange }),\n ...(onCellClick && { onCellClick }),\n ...(onRowClick && { onRowClick }),\n ...(onEditEnd && { onEditEnd }),\n ...(onSortChange && { onSortChange }),\n ...(onFilterChange && { onFilterChange }),\n ...(onRowDrop && { onRowDrop }),\n };\n\n const grid = new OpenGrid<T>(containerRef.current, gridOptions);\n gridRef.current = grid;\n\n return () => {\n grid.destroy();\n gridRef.current = null;\n };\n // theme은 별도 effect에서 처리하므로 deps에서 제외\n }, [columns, editable, sortable, filterable, rowNumber, checkColumn, stateColumn, draggable, frozenColumns]);\n\n // data 변경 감지\n useEffect(() => {\n if (gridRef.current && data) {\n gridRef.current.setData(data);\n }\n }, [data]);\n\n // theme 변경 감지 (그리드 재생성 없이 setTheme만 호출)\n useEffect(() => {\n if (gridRef.current) gridRef.current.setTheme(theme);\n }, [theme]);\n\n return (\n <div\n ref={containerRef}\n style={containerStyle}\n className={className}\n />\n );\n}\n\n// ref forwarder (외부에서 grid 인스턴스 접근)\nexport const OpenGridWithRef = React.forwardRef<\n OpenGridInstance,\n OpenGridProps\n>((props, ref) => {\n const innerRef = useRef<HTMLDivElement>(null);\n const gridRef = useRef<OpenGridInstance | null>(null);\n\n useEffect(() => {\n if (gridRef.current && ref) {\n if (typeof ref === 'function') ref(gridRef.current);\n else (ref as React.MutableRefObject<OpenGridInstance | null>).current = gridRef.current;\n }\n });\n\n return <OpenGridReact {...props} />;\n});\n\nOpenGridWithRef.displayName = 'OpenGrid';\n"],"names":["OpenGridReact","data","columns","height","width","editable","sortable","filterable","rowNumber","checkColumn","stateColumn","draggable","frozenColumns","theme","options","style","className","onReady","onDataChange","onCellClick","onRowClick","onEditEnd","onSortChange","onFilterChange","onRowDrop","containerRef","useRef","gridRef","containerStyle","useEffect","gridOptions","grid","OpenGrid","jsx","OpenGridWithRef","React","props","ref"],"mappings":"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"}