@kgdiff/viewer 0.0.0-stage → 0.1.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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -2
  3. package/dist/compute-loader.d.ts +13 -0
  4. package/dist/compute-loader.d.ts.map +1 -0
  5. package/dist/compute-loader.js +46 -0
  6. package/dist/compute-loader.js.map +1 -0
  7. package/dist/compute.d.ts +8 -0
  8. package/dist/compute.d.ts.map +1 -0
  9. package/dist/compute.js +8 -0
  10. package/dist/compute.js.map +1 -0
  11. package/dist/controller.d.ts +199 -0
  12. package/dist/controller.d.ts.map +1 -0
  13. package/dist/controller.js +1254 -0
  14. package/dist/controller.js.map +1 -0
  15. package/dist/dom.d.ts +32 -0
  16. package/dist/dom.d.ts.map +1 -0
  17. package/dist/dom.js +105 -0
  18. package/dist/dom.js.map +1 -0
  19. package/dist/element.d.ts +43 -0
  20. package/dist/element.d.ts.map +1 -0
  21. package/dist/element.js +656 -0
  22. package/dist/element.js.map +1 -0
  23. package/dist/framing.d.ts +45 -0
  24. package/dist/framing.d.ts.map +1 -0
  25. package/dist/framing.js +107 -0
  26. package/dist/framing.js.map +1 -0
  27. package/dist/hash-sync.d.ts +18 -0
  28. package/dist/hash-sync.d.ts.map +1 -0
  29. package/dist/hash-sync.js +45 -0
  30. package/dist/hash-sync.js.map +1 -0
  31. package/dist/i18n.d.ts +223 -0
  32. package/dist/i18n.d.ts.map +1 -0
  33. package/dist/i18n.js +436 -0
  34. package/dist/i18n.js.map +1 -0
  35. package/dist/icons.d.ts +37 -0
  36. package/dist/icons.d.ts.map +1 -0
  37. package/dist/icons.js +36 -0
  38. package/dist/icons.js.map +1 -0
  39. package/dist/index.d.ts +151 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +41 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/keyboard.d.ts +64 -0
  44. package/dist/keyboard.d.ts.map +1 -0
  45. package/dist/keyboard.js +95 -0
  46. package/dist/keyboard.js.map +1 -0
  47. package/dist/list-model.d.ts +35 -0
  48. package/dist/list-model.d.ts.map +1 -0
  49. package/dist/list-model.js +70 -0
  50. package/dist/list-model.js.map +1 -0
  51. package/dist/payload.d.ts +10 -0
  52. package/dist/payload.d.ts.map +1 -0
  53. package/dist/payload.js +138 -0
  54. package/dist/payload.js.map +1 -0
  55. package/dist/pipeline.d.ts +31 -0
  56. package/dist/pipeline.d.ts.map +1 -0
  57. package/dist/pipeline.js +122 -0
  58. package/dist/pipeline.js.map +1 -0
  59. package/dist/prefs.d.ts +18 -0
  60. package/dist/prefs.d.ts.map +1 -0
  61. package/dist/prefs.js +38 -0
  62. package/dist/prefs.js.map +1 -0
  63. package/dist/registry.d.ts +3 -0
  64. package/dist/registry.d.ts.map +1 -0
  65. package/dist/registry.js +3 -0
  66. package/dist/registry.js.map +1 -0
  67. package/dist/renderer-port.d.ts +14 -0
  68. package/dist/renderer-port.d.ts.map +1 -0
  69. package/dist/renderer-port.js +16 -0
  70. package/dist/renderer-port.js.map +1 -0
  71. package/dist/replay.d.ts +55 -0
  72. package/dist/replay.d.ts.map +1 -0
  73. package/dist/replay.js +147 -0
  74. package/dist/replay.js.map +1 -0
  75. package/dist/review-store.d.ts +30 -0
  76. package/dist/review-store.d.ts.map +1 -0
  77. package/dist/review-store.js +120 -0
  78. package/dist/review-store.js.map +1 -0
  79. package/dist/search.d.ts +25 -0
  80. package/dist/search.d.ts.map +1 -0
  81. package/dist/search.js +90 -0
  82. package/dist/search.js.map +1 -0
  83. package/dist/standalone/kgdiff-viewer-compute.js +1 -0
  84. package/dist/standalone/kgdiff-viewer.js +5 -0
  85. package/dist/standalone-compute.d.ts +2 -0
  86. package/dist/standalone-compute.d.ts.map +1 -0
  87. package/dist/standalone-compute.js +8 -0
  88. package/dist/standalone-compute.js.map +1 -0
  89. package/dist/standalone.d.ts +2 -0
  90. package/dist/standalone.d.ts.map +1 -0
  91. package/dist/standalone.js +18 -0
  92. package/dist/standalone.js.map +1 -0
  93. package/dist/styles.d.ts +11 -0
  94. package/dist/styles.d.ts.map +1 -0
  95. package/dist/styles.js +627 -0
  96. package/dist/styles.js.map +1 -0
  97. package/dist/text-diff.d.ts +32 -0
  98. package/dist/text-diff.d.ts.map +1 -0
  99. package/dist/text-diff.js +211 -0
  100. package/dist/text-diff.js.map +1 -0
  101. package/dist/ui/context.d.ts +32 -0
  102. package/dist/ui/context.d.ts.map +1 -0
  103. package/dist/ui/context.js +49 -0
  104. package/dist/ui/context.js.map +1 -0
  105. package/dist/ui/detail.d.ts +9 -0
  106. package/dist/ui/detail.d.ts.map +1 -0
  107. package/dist/ui/detail.js +566 -0
  108. package/dist/ui/detail.js.map +1 -0
  109. package/dist/ui/header.d.ts +14 -0
  110. package/dist/ui/header.d.ts.map +1 -0
  111. package/dist/ui/header.js +195 -0
  112. package/dist/ui/header.js.map +1 -0
  113. package/dist/ui/popovers.d.ts +20 -0
  114. package/dist/ui/popovers.d.ts.map +1 -0
  115. package/dist/ui/popovers.js +180 -0
  116. package/dist/ui/popovers.js.map +1 -0
  117. package/dist/ui/sidebar.d.ts +25 -0
  118. package/dist/ui/sidebar.d.ts.map +1 -0
  119. package/dist/ui/sidebar.js +609 -0
  120. package/dist/ui/sidebar.js.map +1 -0
  121. package/dist/ui/stage.d.ts +18 -0
  122. package/dist/ui/stage.d.ts.map +1 -0
  123. package/dist/ui/stage.js +664 -0
  124. package/dist/ui/stage.js.map +1 -0
  125. package/package.json +58 -3
  126. package/src/compute-loader.ts +58 -0
  127. package/src/compute.ts +7 -0
  128. package/src/controller.ts +1393 -0
  129. package/src/dom.ts +131 -0
  130. package/src/element.ts +697 -0
  131. package/src/framing.ts +150 -0
  132. package/src/hash-sync.ts +54 -0
  133. package/src/i18n.ts +469 -0
  134. package/src/icons.ts +48 -0
  135. package/src/index.ts +171 -0
  136. package/src/keyboard.ts +128 -0
  137. package/src/list-model.ts +86 -0
  138. package/src/payload.ts +165 -0
  139. package/src/pipeline.ts +179 -0
  140. package/src/prefs.ts +55 -0
  141. package/src/registry.ts +2 -0
  142. package/src/renderer-port.ts +31 -0
  143. package/src/replay.ts +163 -0
  144. package/src/review-store.ts +125 -0
  145. package/src/search.ts +113 -0
  146. package/src/standalone-compute.ts +8 -0
  147. package/src/standalone.ts +18 -0
  148. package/src/styles.ts +638 -0
  149. package/src/text-diff.ts +208 -0
  150. package/src/ui/context.ts +70 -0
  151. package/src/ui/detail.ts +921 -0
  152. package/src/ui/header.ts +278 -0
  153. package/src/ui/popovers.ts +251 -0
  154. package/src/ui/sidebar.ts +752 -0
  155. package/src/ui/stage.ts +853 -0
@@ -0,0 +1,120 @@
1
+ export const STORAGE_PREFIX = 'kgdiff:review:';
2
+ export function reviewKey(baseHash, targetHash) {
3
+ return `${STORAGE_PREFIX}${baseHash}→${targetHash}`;
4
+ }
5
+ /** `window.localStorage`, or null when unavailable / blocked. */
6
+ export function defaultStorage() {
7
+ try {
8
+ return typeof localStorage !== 'undefined' ? localStorage : null;
9
+ }
10
+ catch {
11
+ return null;
12
+ }
13
+ }
14
+ export class ReviewStore {
15
+ #reviewed = [];
16
+ #set = new Set();
17
+ /** Ids from storage this diff does not have (another hunking version): kept, never shown. */
18
+ #foreign = [];
19
+ #known;
20
+ #storage;
21
+ #key;
22
+ #valid;
23
+ /**
24
+ * @param key storage key (`reviewKey`), or null to keep the state in memory only.
25
+ * @param valid hunk ids of the current diff; stored ids it does not have are preserved.
26
+ */
27
+ constructor(storage, key, valid) {
28
+ this.#storage = storage;
29
+ this.#key = key;
30
+ this.#valid = valid;
31
+ this.#known = new Set(valid);
32
+ this.#load();
33
+ }
34
+ #load() {
35
+ this.#reviewed = [];
36
+ this.#set = new Set();
37
+ this.#foreign = [];
38
+ for (const id of this.#read()) {
39
+ if (this.#set.has(id) || this.#foreign.includes(id))
40
+ continue;
41
+ if (this.#known.has(id)) {
42
+ this.#set.add(id);
43
+ this.#reviewed.push(id);
44
+ }
45
+ else
46
+ this.#foreign.push(id);
47
+ }
48
+ }
49
+ /**
50
+ * Re-read storage after a `storage` event for `key` (null: everything changed). Returns
51
+ * whether the visible state changed.
52
+ */
53
+ reload(key) {
54
+ if (key !== null && key !== this.#key)
55
+ return false;
56
+ const before = this.#reviewed.join('\n');
57
+ this.#load();
58
+ return this.#reviewed.join('\n') !== before;
59
+ }
60
+ has(id) {
61
+ return this.#set.has(id);
62
+ }
63
+ get size() {
64
+ return this.#reviewed.length;
65
+ }
66
+ /** Returns true when the state changed. Unknown ids are ignored. */
67
+ setReviewed(id, reviewed) {
68
+ if (reviewed === this.#set.has(id))
69
+ return false;
70
+ if (reviewed) {
71
+ if (!this.#known.has(id))
72
+ return false;
73
+ this.#set.add(id);
74
+ this.#reviewed.push(id);
75
+ }
76
+ else {
77
+ this.#set.delete(id);
78
+ this.#reviewed.splice(this.#reviewed.indexOf(id), 1);
79
+ }
80
+ this.#write();
81
+ return true;
82
+ }
83
+ state() {
84
+ return { reviewed: [...this.#reviewed], total: this.#valid.length };
85
+ }
86
+ #read() {
87
+ if (!this.#storage || !this.#key)
88
+ return [];
89
+ try {
90
+ const raw = this.#storage.getItem(this.#key);
91
+ if (!raw)
92
+ return [];
93
+ const parsed = JSON.parse(raw);
94
+ const list = Array.isArray(parsed)
95
+ ? parsed
96
+ : typeof parsed === 'object' && parsed !== null && 'reviewed' in parsed
97
+ ? parsed.reviewed
98
+ : [];
99
+ return Array.isArray(list) ? list.filter((x) => typeof x === 'string') : [];
100
+ }
101
+ catch {
102
+ return [];
103
+ }
104
+ }
105
+ #write() {
106
+ if (!this.#storage || !this.#key)
107
+ return;
108
+ try {
109
+ const all = [...this.#reviewed, ...this.#foreign];
110
+ if (all.length === 0)
111
+ this.#storage.removeItem(this.#key);
112
+ else
113
+ this.#storage.setItem(this.#key, JSON.stringify({ v: 1, reviewed: all }));
114
+ }
115
+ catch {
116
+ // Quota exceeded or storage blocked: keep the in-memory state.
117
+ }
118
+ }
119
+ }
120
+ //# sourceMappingURL=review-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-store.js","sourceRoot":"","sources":["../src/review-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Node search for the sidebar: fuzzy match over labels, aliases and ids of every union node
3
+ * (including nodes outside a `changes`-scoped layout).
4
+ *
5
+ * Scoring per candidate string (higher is better): exact 1000, prefix 800, word-start 600,
6
+ * substring 400 (earlier is better), then subsequence (gaps cost). Labels outrank aliases
7
+ * outrank ids; changed nodes win ties.
8
+ */
9
+ import type { DiffResult, UnionNode } from '@kgdiff/core';
10
+ export interface SearchHit {
11
+ readonly node: UnionNode;
12
+ readonly score: number;
13
+ /** The text that matched (label, alias or id). */
14
+ readonly matched: string;
15
+ readonly field: 'label' | 'alias' | 'id';
16
+ }
17
+ export declare function fold(text: string): string;
18
+ export declare function scoreText(query: string, text: string): number;
19
+ export declare class SearchIndex {
20
+ #private;
21
+ constructor(diff: DiffResult);
22
+ /** Best `limit` hits for `query` (trimmed, case- and width-insensitive). O(N · |text|). */
23
+ search(query: string, limit?: number): SearchHit[];
24
+ }
25
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;CAC1C;AASD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzC;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB7D;AAED,qBAAa,WAAW;;IAGtB,YAAY,IAAI,EAAE,UAAU,EAkB3B;IAED,2FAA2F;IAC3F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,SAAS,EAAE,CAgC7C;CACF"}
package/dist/search.js ADDED
@@ -0,0 +1,90 @@
1
+ export function fold(text) {
2
+ return text.normalize('NFKC').toLowerCase();
3
+ }
4
+ const WORD_BREAK = /[\s_\-./:#|()[\]{}「」“”"'’,;]/;
5
+ export function scoreText(query, text) {
6
+ if (query === '')
7
+ return 0;
8
+ if (text === query)
9
+ return 1000;
10
+ if (text.startsWith(query))
11
+ return 800 - Math.min(100, text.length - query.length);
12
+ const at = text.indexOf(query);
13
+ if (at > 0) {
14
+ const wordStart = WORD_BREAK.test(text[at - 1] ?? '');
15
+ return (wordStart ? 600 : 400) - Math.min(150, at);
16
+ }
17
+ // Subsequence: every query character in order; contiguous runs and word starts score.
18
+ let score = 200;
19
+ let ti = 0;
20
+ let prev = -2;
21
+ for (const ch of query) {
22
+ const found = text.indexOf(ch, ti);
23
+ if (found < 0)
24
+ return 0;
25
+ if (found !== prev + 1)
26
+ score -= Math.min(20, found - ti + 2);
27
+ if (found === 0 || WORD_BREAK.test(text[found - 1] ?? ''))
28
+ score += 6;
29
+ prev = found;
30
+ ti = found + 1;
31
+ }
32
+ return Math.max(1, score);
33
+ }
34
+ export class SearchIndex {
35
+ #entries;
36
+ constructor(diff) {
37
+ this.#entries = diff.nodes.map((node) => {
38
+ const texts = [node.label];
39
+ const fields = ['label'];
40
+ const add = (text, field) => {
41
+ if (text && !texts.includes(text)) {
42
+ texts.push(text);
43
+ fields.push(field);
44
+ }
45
+ };
46
+ add(node.before?.label, 'label');
47
+ for (const a of node.after?.aliases ?? [])
48
+ add(a, 'alias');
49
+ for (const a of node.before?.aliases ?? [])
50
+ add(a, 'alias');
51
+ add(node.afterId, 'id');
52
+ add(node.beforeId, 'id');
53
+ add(node.id, 'id');
54
+ return { node, texts, folded: texts.map(fold), fields };
55
+ });
56
+ }
57
+ /** Best `limit` hits for `query` (trimmed, case- and width-insensitive). O(N · |text|). */
58
+ search(query, limit = 50) {
59
+ const q = fold(query.trim());
60
+ if (q === '')
61
+ return [];
62
+ const hits = [];
63
+ for (const e of this.#entries) {
64
+ let best = 0;
65
+ let bi = 0;
66
+ for (let i = 0; i < e.folded.length; i++) {
67
+ const field = e.fields[i];
68
+ const weight = field === 'label' ? 0 : field === 'alias' ? 40 : 60;
69
+ const s = scoreText(q, e.folded[i]);
70
+ if (s > 0 && s - weight > best) {
71
+ best = s - weight;
72
+ bi = i;
73
+ }
74
+ }
75
+ if (best > 0) {
76
+ hits.push({
77
+ node: e.node,
78
+ score: best + (e.node.status === 'unchanged' ? 0 : 1),
79
+ matched: e.texts[bi],
80
+ field: e.fields[bi],
81
+ });
82
+ }
83
+ }
84
+ hits.sort((a, b) => b.score - a.score ||
85
+ a.node.label.length - b.node.label.length ||
86
+ (a.node.id < b.node.id ? -1 : a.node.id > b.node.id ? 1 : 0));
87
+ return hits.slice(0, limit);
88
+ }
89
+ }
90
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ (function(){var e=Object.defineProperty,t=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},n=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};function r(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<32||n===34||n===92||n>=55296&&n<=57343)return!0}return!1}function i(e){return r(e)?JSON.stringify(e):`"${e}"`}function a(e,t,n){return`[${i(e)},${i(t)},${i(n)}]`}function o(e){return e.charCodeAt(e.length-1)!==93}function s(e){if(e.charCodeAt(e.length-1)===93)return{base:e,suffix:``};let t=e.lastIndexOf(`#`);return t<0?{base:e,suffix:``}:{base:e.slice(0,t),suffix:e.slice(t)}}function c(e){return Array.isArray(e)}function l(e,t){if(e===t)return!0;if(e===void 0||t===void 0||e===null||t===null)return!1;if(typeof e!=`object`||typeof t!=`object`)return typeof e==`number`&&typeof t==`number`&&Number.isNaN(e)&&Number.isNaN(t);if(c(e)){if(!c(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!l(e[n],t[n]))return!1;return!0}return!c(t)&&m(e,t)}function u(){return{}}function d(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0,configurable:!0}):e[t]=n}function f(e,t){return Object.hasOwn(e,t)?e[t]:void 0}function p(e){return Object.keys(e).filter(t=>e[t]!==void 0)}function m(e,t,n){if(e===t)return!0;let r=0;for(let i of Object.keys(e)){let a=e[i];if(!(a===void 0||n?.has(i))&&(r++,!l(a,f(t,i))))return!1}let i=0;for(let e of Object.keys(t))t[e]!==void 0&&!n?.has(e)&&i++;return r===i}function h(e){return p(e).sort()}function g(e){for(let t of Object.keys(e))if(e[t]!==void 0)return!1;return!0}function _(e){return typeof e!=`object`||!e?e:c(e)?e.map(_):v(e)}function v(e){let t=u();for(let n of h(e))d(t,n,_(e[n]));return t}function y(e){return JSON.stringify(_(e))}var b,x=t((()=>{b=class{seed;h1=0;h2=0;constructor(e=0){this.seed=e,this.reset()}reset(){return this.h1=3735928559^this.seed,this.h2=1103547991^this.seed,this}code(e){return this.h1=Math.imul(this.h1^e,2654435761),this.h2=Math.imul(this.h2^e,1597334677),this}update(e){let t=this.h1,n=this.h2;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=Math.imul(t^i,2654435761),n=Math.imul(n^i,1597334677)}return this.h1=t,this.h2=n,this}string(e){return this.code(e.length&65535).code(e.length>>>16).update(e)}value(e){if(e===void 0)return this.code(117);if(e===null)return this.code(110);switch(typeof e){case`boolean`:return this.code(e?116:102);case`number`:return this.code(100).string(String(e));case`string`:return this.code(115).string(e)}if(c(e)){this.code(97).code(e.length&65535).code(e.length>>>16);for(let t of e)this.value(t);return this}let t=Object.keys(e);if(t.length===0)return this.code(111).code(0).code(0);let n=t.length===1&&e[t[0]]!==void 0?t:h(e);this.code(111).code(n.length&65535).code(n.length>>>16);for(let t of n)this.string(t).value(e[t]);return this}digestPair(){let e=this.h1,t=this.h2;return e=Math.imul(e^e>>>16,2246822507),e^=Math.imul(t^t>>>13,3266489909),t=Math.imul(t^t>>>16,2246822507),t^=Math.imul(e^e>>>13,3266489909),[e>>>0,t>>>0]}digest(){let[e,t]=this.digestPair();return 4294967296*(2097151&t)+e}}})),S,C=t((()=>{S=class extends Error{code;details;name=`KgdiffError`;constructor(e,t,n){super(t),this.code=e,this.details=n}}}));function w(e,t){return e<t?-1:+(e>t)}function T(e){if(e.length<=1){let t=e[0];return t===void 0||t===``?[]:[t]}let t=[...new Set(e)].filter(e=>e!==``);return t.length>1&&t.sort(),t}function E(e){return Math.round(e*1e6)/1e6}function ee(e){return e>0?Math.min(e,1):0}function te(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function ne(e,t){let n=[],r=[],i=0,a=0;for(;i<e.length||a<t.length;){let o=e[i],s=t[a];s===void 0||o!==void 0&&o<s?(r.push(o),i++):o===void 0||s<o?(n.push(s),a++):(i++,a++)}return{added:n,removed:r}}function D(e,t,n){let r=e.get(t);return r===void 0&&(r=n(),e.set(t,r)),r}function O(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function re(e,t){return t===void 0?0:(e.outgoing.get(t)?.length??0)+(e.incoming.get(t)?.length??0)}function k(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var A,j=t((()=>{A=Object.freeze([])}));function M(e){return Ce.test(e)?e:e.normalize(`NFC`)}function ie(e){return ae(e).replace(ye,` `).trim()}function ae(e){return Ce.test(e)?e.toLowerCase():e.normalize(`NFKC`).toLowerCase().replace(ve,``)}function oe(e){let t=e.match(we);return t?[...new Set(t.map(e=>e.replace(/^0+(?=.)/u,``)))].sort().join(` `):``}function se(e){let t=ae(e),n=t.replace(ye,` `).trim(),r=new Set,i;for(let e of t.matchAll(be)){let t=e[0],n=t.endsWith(`.`),a=n?t.slice(0,-1):t;r.add(a),n&&a.length>=2&&xe.test(a)&&(i??=new Set,i.add(a))}let a=Array.from(n.replaceAll(` `,``)),o=new Map;for(let e=0;e+1<a.length;e++){let t=a[e]+a[e+1];o.set(t,(o.get(t)??0)+1)}return{folded:t,normalized:n,chars:a,bigrams:o,bigramTotal:Math.max(0,a.length-1),tokens:[...r].sort(),abbreviations:i??Te,numbers:oe(n)}}function ce(e,t){let n=e.bigramTotal+t.bigramTotal;if(n===0)return 0;let[r,i]=e.bigrams.size<=t.bigrams.size?[e,t]:[t,e],a=0;for(let[e,t]of r.bigrams){let n=i.bigrams.get(e);n!==void 0&&(a+=Math.min(t,n))}return 2*a/n}function le(e,t){if(e.length===0&&t.length===0)return 1;if(e.length===0||t.length===0)return 0;let n=Math.max(0,Math.floor(Math.max(e.length,t.length)/2)-1),r=Array(e.length).fill(!1),i=Array(t.length).fill(!1),a=0;for(let o=0;o<e.length;o++){let s=Math.max(0,o-n),c=Math.min(t.length-1,o+n);for(let n=s;n<=c;n++)if(!i[n]&&e[o]===t[n]){r[o]=!0,i[n]=!0,a++;break}}if(a===0)return 0;let o=0,s=0;for(let n=0;n<e.length;n++)if(r[n]){for(;!i[s];)s++;e[n]!==t[s]&&o++,s++}let c=a,l=(c/e.length+c/t.length+(c-o/2)/c)/3,u=Math.min(e.length,t.length);if(u<4||u/Math.max(e.length,t.length)<.7)return l;let d=0;for(;d<4&&e[d]===t[d];)d++;return l+d*.1*(1-l)}function ue(e,t){let n=e.tokens.length+t.tokens.length;if(n===0)return 0;let r=new Set(t.tokens),i=[],a=0;for(let t of e.tokens)r.has(t)?a++:i.push(t);if(e.abbreviations.size>0||t.abbreviations.size>0){let n=new Set(e.tokens),r=t.tokens.filter(e=>!n.has(e));a+=Oe*de(i,e.abbreviations,r),a+=Oe*de(r,t.abbreviations,i)}return Math.min(1,2*a/n)}function de(e,t,n){if(t.size===0)return 0;let r=0;for(let i=0;i<e.length;i++){let a=e[i];if(!t.has(a))continue;let o=n.findIndex(e=>e.length>a.length&&e.startsWith(a));o<0||(n.splice(o,1),e.splice(i,1),i--,r++)}return r}function N(e,t){if(e.normalized===``||t.normalized===``)return+(e.folded===t.folded);if(e.normalized===t.normalized)return 1;let[n,r]=e.normalized<t.normalized?[e,t]:[t,e],i=n.chars.length<4||r.chars.length<4?le(n.chars,r.chars):ce(n,r),a=ue(n,r),o=ee(Math.max(i,a));return E(n.numbers!==r.numbers&&n.numbers!==``&&r.numbers!==``?Math.min(o,De):o)}function fe(e,t){me(e.normalized,e.folded,e.tokens,t)}function pe(e){let t=new Set;for(let n of e){let e=ie(n);if(e!==``){t.add(`f:${e}`);for(let n of e.split(` `))n.length>=2&&!ke.has(n)&&t.add(`w:${n}`),n.length>=4&&t.add(`p:${n.slice(0,4)}`)}}return[...t]}function me(e,t,n,r){if(e===``)t!==``&&r.add(`r:${t}`);else{r.add(`f:${e}`);for(let e of n){let t=Array.from(e);t.length>=2&&!ke.has(e)&&r.add(`w:${e}`),t.length>=4&&r.add(`p:${t.slice(0,4).join(``)}`);for(let t of e.matchAll(Se)){let e=Array.from(t[0]);e.length===1&&r.add(`b:${e[0]}`);for(let t=0;t+1<e.length;t++)r.add(`b:${e[t]}${e[t+1]}`)}}}}function he(e){if(!e.includes(`%`))return e;try{return decodeURIComponent(e)}catch{return e}}function ge(e){let t=je.get(e);return t===void 0&&(je.size>=Me&&je.clear(),t=_e(e),je.set(e,t)),t}function _e(e){let t=Ne.exec(e);if(t)return`${t[1]}:${t[2]}`;let n=e.length;for(;n>0&&`#/:`.includes(e.charAt(n-1));)n--;let r=e.slice(0,n),i=Math.max(r.lastIndexOf(`#`),r.lastIndexOf(`/`),r.lastIndexOf(`:`)),a=r.slice(i+1);if(a===``||Ae.test(a))return M(e);let o=he(a).replaceAll(`_`,` `).replace(/\s+/g,` `).trim();return M(o===``?e:o)}var ve,ye,be,xe,Se,Ce,we,Te,Ee,De,Oe,ke,Ae,je,Me,Ne,P=t((()=>{j(),ve=/[\p{Cc}\p{Cf}]/gu,ye=/[\p{P}\s]+/gu,be=/[^\p{P}\s]+\.?/gu,xe=/^\p{L}+$/u,Se=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]+/gu,Ce=/^[\x20-\x7e]*$/,we=/\p{Nd}+/gu,Te=new Set,Ee=class{cache=new Map;get(e){let t=this.cache.get(e);return t||(t=se(e),this.cache.set(e,t)),t}},De=.5,Oe=.9,ke=new Set(`a.an.and.as.at.by.de.der.des.di.die.du.el.en.et.for.from.in.into.is.la.le.les.of.on.or.the.to.und.van.von.with`.split(`.`)),Ae=/^\d+$/,je=new Map,Me=4096,Ne=/^https?:\/\/purl\.obolibrary\.org\/obo\/([A-Za-z][A-Za-z0-9]*)_(\d+)$/}));function Pe(e,t=e.id){let n={id:t};return e.label!==t&&(n.label=e.label),e.types.length&&(n.types=e.types),e.aliases.length&&(n.aliases=e.aliases),g(e.attrs)||(n.attrs=v(e.attrs)),e.deprecated&&(n.deprecated=!0),e.replaces.length&&(n.replaces=e.replaces),e.replacedBy.length&&(n.replacedBy=e.replacedBy),e.implicit&&(n.implicit=!0),n}function Fe(e,t=e.source,n=e.target){let r=e.id===void 0?{source:t,target:n}:{id:e.id,source:t,target:n};return e.predicate!==``&&(r.predicate=e.predicate),e.label!==ge(e.predicate)&&(r.label=e.label),g(e.attrs)||(r.attrs=v(e.attrs)),r}function Ie(e,t){e.code(78).string(t.id).string(t.label),e.code(t.types.length);for(let n of t.types)e.string(n);e.code(t.aliases.length);for(let n of t.aliases)e.string(n);e.value(t.attrs).code(+!!t.deprecated),e.code(t.replaces.length);for(let n of t.replaces)e.string(n);e.code(t.replacedBy.length);for(let n of t.replacedBy)e.string(n)}function Le(e,t,n){e.code(69),n&&t.id!==void 0?e.code(1).string(t.id):e.code(0),e.string(t.source).string(t.predicate).string(t.target).string(t.label),e.value(t.attrs)}function Re(e){let t=ze.get(e);if(t)return t;let n=new b,r=0,i=0;for(let t of e.nodes.values()){Ie(n.reset(),t);let[e,a]=n.digestPair();r=r+e>>>0,i=i+a>>>0}let a=e.edgeIdentity===`id`,o=0,s=0;for(let t of e.edges.values()){Le(n.reset(),t,a);let[e,r]=n.digestPair();o=o+e>>>0,s=s+r>>>0}let c=`c53:${new b().update(`kgdiff.graph.v1|${e.nodes.size}|${r}|${i}|${e.edges.size}|${o}|${s}`).digest().toString(16).padStart(14,`0`)}`;return ze.set(e,c),c}var ze,Be=t((()=>{x(),P(),ze=new WeakMap}));function F(e,t){throw new S(`invalid-input`,e,{option:t})}function Ve(e,t,n){return e===void 0?t:(typeof e==`number`&&e>=0&&e<=1||F(`${n} must be a number between 0 and 1 (got ${String(e)})`,n),e)}function He(e,t,n){return e===void 0?[...t]:((!Array.isArray(e)||e.some(e=>typeof e!=`string`))&&F(`${n} must be an array of strings`,n),[...new Set(e)])}function Ue(e){if(e===void 0)return I;typeof e==`object`&&e||F(`match options must be an object`,`match`);let t=e.strategy??I.strategy;qe.has(t)||F(`match.strategy must be 'id', 'auto' or 'similarity' (got ${String(t)})`,`match.strategy`);let n=e.maxCandidates??I.maxCandidates;return(!Number.isInteger(n)||n<1)&&F(`match.maxCandidates must be a positive integer (got ${String(n)})`,`match.maxCandidates`),{strategy:t,threshold:Ve(e.threshold,I.threshold,`match.threshold`),suggestThreshold:Ve(e.suggestThreshold,I.suggestThreshold,`match.suggestThreshold`),maxCandidates:n}}function We(e,t=`structure`){return e===void 0?t:(typeof e==`string`&&Je.has(e)||F(`edgeIdentity must be 'structure' or 'id' (got ${String(e)})`,`edgeIdentity`),e)}function Ge(e){e===void 0||typeof e==`object`&&e||F(`options must be an object`,`options`);let t=e??{};for(let e of[`detectMerges`,`detectSplits`])t[e]!==void 0&&typeof t[e]!=`boolean`&&F(`${e} must be a boolean`,e);return{match:Ue(t.match),edgeIdentity:We(t.edgeIdentity),hierarchyPredicates:He(t.hierarchyPredicates,Ke,`hierarchyPredicates`),detectMerges:t.detectMerges??!0,detectSplits:t.detectSplits??!0,ignoreAttrs:He(t.ignoreAttrs,[],`ignoreAttrs`).sort()}}var Ke,I,qe,Je,Ye=t((()=>{C(),Ke=Object.freeze([`rdfs:subClassOf`,`http://www.w3.org/2000/01/rdf-schema#subClassOf`,`rdfs:subPropertyOf`,`http://www.w3.org/2000/01/rdf-schema#subPropertyOf`,`skos:broader`,`http://www.w3.org/2004/02/skos/core#broader`,`is_a`,`subClassOf`,`parent`]),I=Object.freeze({strategy:`auto`,threshold:.82,suggestThreshold:.6,maxCandidates:8}),qe=new Set([`id`,`auto`,`similarity`]),Je=new Set([`structure`,`id`])}));function L(e,t){throw new S(`invalid-input`,e,t)}function Xe(e){if(typeof e==`string`)return e===``?void 0:e;if(typeof e==`number`&&Number.isFinite(e))return String(e)}function Ze(e,t){return t===void 0?{what:`Node "${e}"`,ref:e}:{what:`Edge ${e} → ${t}`,ref:`${e} → ${t}`}}function Qe(e,t,n,r){let{what:i,ref:a}=Ze(e,t);return L(`${i}: ${n} must be ${r}`,{ref:a})}function $e(e,t,n,r){if(e!=null)return typeof e!=`string`&&Qe(t,n,r,`a string`),e}function R(e,t,n){return e==null?A:typeof e==`string`?[e]:((!Array.isArray(e)||e.some(e=>typeof e!=`string`))&&Qe(t,void 0,n,`an array of strings`),e)}function et(e,t,n){switch(typeof e){case`string`:case`boolean`:return e;case`number`:return Number.isFinite(e)?e:String(e);case`bigint`:return String(e);case`undefined`:case`function`:case`symbol`:n();return}if(e===null)return null;if(t>=_t)throw new S(`invalid-input`,`Attribute values may be nested at most ${_t} levels deep (or the value is cyclic)`);if(e instanceof Date)return Number.isNaN(e.getTime())?`Invalid Date`:e.toISOString();if(Array.isArray(e))return e.map(e=>et(e,t+1,n)??null);let r=e.toJSON;if(typeof r==`function`)return et(r.call(e),t+1,n);let i=u();for(let r of Object.keys(e)){let a=e[r],o=typeof a==`string`||typeof a==`boolean`||typeof a==`number`&&Number.isFinite(a)?a:et(a,t+1,n);o!==void 0&&d(i,r,o)}return i}function tt(e,t,n,r){if(e==null)return;k(e)||Qe(t,n,`attrs`,`an object`);let i=0,a=et(e,0,()=>i++);if(i>0){let{what:e,ref:a}=Ze(t,n);r.push({code:`invalid-attr`,message:`${e}: ${i} attribute value(s) that are not JSON (function, symbol or undefined) were dropped`,ref:a})}return a}function nt(e){if(!k(e))return;let{x:t,y:n}=e;return typeof t==`number`&&typeof n==`number`&&Number.isFinite(t)&&Number.isFinite(n)?{x:t,y:n}:void 0}function rt(e,t,n){let r=R(e.type,t,`type`),i=R(e.types,t,`types`),a=R(e.aliases,t,`aliases`),o=i.length?[...r,...i]:r,s={id:t,types:o.length?o.map(M):A,aliases:a.length?a.map(M):A,replaces:R(e.replaces,t,`replaces`),replacedBy:R(e.replacedBy,t,`replacedBy`),implicit:e.implicit===!0},c=$e(e.label,t,void 0,`label`);c&&(s.label=M(c));let l=tt(e.attrs,t,void 0,n);l&&(s.attrs=l),e.deprecated!==void 0&&e.deprecated!==null&&(typeof e.deprecated!=`boolean`&&Qe(t,void 0,`deprecated`,`a boolean`),s.deprecated=e.deprecated);let u=nt(e.position);return u&&(s.position=u),s}function it(e,t){return e===void 0?t:t===void 0?e:y(t)>y(e)?t:e}function at(e,t){if(!e||!t)return e??t;let n=u();for(let r of new Set([...Object.keys(e),...Object.keys(t)])){let i=it(f(e,r),f(t,r));i!==void 0&&d(n,r,i)}return n}function ot(e,t){let n=it(e.label,t.label);n!==void 0&&(e.label=n);let r=it(e.deprecated,t.deprecated);r!==void 0&&(e.deprecated=r);let i=it(e.position,t.position);i&&(e.position=i);let a=at(e.attrs,t.attrs);a&&(e.attrs=a),e.types=[...e.types,...t.types],e.aliases=[...e.aliases,...t.aliases],e.replaces=[...e.replaces,...t.replaces],e.replacedBy=[...e.replacedBy,...t.replacedBy],e.implicit=e.implicit&&t.implicit}function st(e){let t=e.label??e.id,n=T(e.aliases),r=n.indexOf(t);r>=0&&n.splice(r,1);let i={id:e.id,label:t,types:e.types.length?T(e.types):A,aliases:n.length?n:A,attrs:e.attrs??ht,deprecated:e.deprecated??!1,replaces:e.replaces.length?T(e.replaces):A,replacedBy:e.replacedBy.length?T(e.replacedBy):A,implicit:e.implicit};return e.position&&(i.position=e.position),i}function ct(e){return y([e.label,e.attrs])}function lt(e,t){return t.id===void 0?{key:e,source:t.source,target:t.target,predicate:t.predicate,label:t.label,attrs:t.attrs}:{key:e,id:t.id,source:t.source,target:t.target,predicate:t.predicate,label:t.label,attrs:t.attrs}}function ut(e){return typeof e==`object`&&!!e&&e.nodes instanceof Map&&e.edges instanceof Map}function dt(e,t={}){k(e)&&Array.isArray(e.nodes)||L(`normalize expects a graph of the form { nodes: [...], edges: [...] }`),e.edges!==void 0&&e.edges!==null&&!Array.isArray(e.edges)&&L(`graph.edges must be an array`);let n=We(t.edgeIdentity),r=t.danglingEdges??`create`;gt.has(r)||L(`danglingEdges must be 'create', 'drop' or 'error' (got ${String(r)})`);let i=[],o=new Map;for(let t of e.nodes){k(t)||L(`graph.nodes must contain objects`);let e=Xe(t.id);if(e===void 0){i.push({code:`empty-id`,message:`Dropped a node without an id`});continue}let n=rt(t,e,i),r=o.get(e);r?(ot(r,n),i.push({code:`duplicate-node`,message:`Node "${e}" is declared more than once; the declarations were merged`,ref:e})):o.set(e,n)}let s=new Map,c=[];for(let t of e.edges??[]){k(t)||L(`graph.edges must contain objects`);let e=t,n=Xe(e.source),a=Xe(e.target);if(n===void 0||a===void 0){i.push({code:`empty-id`,message:`Dropped an edge with an empty endpoint`});continue}let l=$e(e.predicate,n,a,`predicate`)??``,u=$e(e.label,n,a,`label`),d=u===void 0?void 0:M(u);if(d===void 0&&(d=s.get(l),d===void 0&&(d=ge(l),s.set(l,d))),(!o.has(n)||!o.has(a))&&(ft(n,l,a,r,o,i),r===`drop`))continue;let f=Xe(e.id),p=tt(e.attrs,n,a,i)??ht;c.push(f===void 0?{key:``,source:n,target:a,predicate:l,label:d,attrs:p}:{key:``,id:f,source:n,target:a,predicate:l,label:d,attrs:p})}let l=new Map;for(let[e,t]of o)l.set(e,st(t));let u=[],d=new Map,f=new Map;for(let e of c){let t=n===`id`&&e.id!==void 0,r=t?e.id:a(e.source,e.predicate,e.target),i=t?d:f,o=i.get(r);if(o)o.more?o.more.push(e):o.more=[e];else{let n={base:r,idKeyed:t,first:e};i.set(r,n),u.push(n)}}let p=n===`id`?new Set:void 0,m=e=>{if(!p)return e;let t=e;for(let n=2;p.has(t);n++)t=`${e}#${n}`;return p.add(t),t};for(let e of[!0,!1])for(let t of u){if(t.idKeyed!==e)continue;let{base:n,first:r,more:a}=t;if(!a){r.key=m(n),t.edge=r;continue}let o=[],s=(e,t)=>{o.push(lt(m(e),t))};e?(s(n,pt([r,...a])),i.push({code:`duplicate-edge`,message:`Edge id "${n}" is used ${a.length+1} times; the declarations were merged`,ref:n})):mt(n,[r,...a],s,i),t.edges=o}let h=new Map;for(let e of u)if(e.edge)h.set(e.edge.key,e.edge);else for(let t of e.edges??[])h.set(t.key,t);let g=new Map,_=new Map;for(let e of h.values())O(g,e.source,e.key),O(_,e.target,e.key);for(let e of l.keys())g.has(e)||g.set(e,A),_.has(e)||_.set(e,A);return i.sort((e,t)=>w(e.code,t.code)||w(e.ref??``,t.ref??``)||w(e.message,t.message)),{meta:k(e.meta)?{...e.meta}:{},nodes:l,edges:h,outgoing:g,incoming:_,edgeIdentity:n,issues:i}}function ft(e,t,n,r,i,o){for(let s of e===n?[e]:[e,n])if(!i.has(s)){if(r===`error`)throw new S(`dangling-edge`,`Edge ${a(e,t,n)} points to the missing node "${s}"`,{source:e,predicate:t,target:n,missing:s});r===`create`&&i.set(s,{id:s,types:[],aliases:[],replaces:[],replacedBy:[],implicit:!0}),o.push({code:`dangling-edge`,message:r===`create`?`Edge endpoint "${s}" is not declared; an implicit node was created`:`Dropped an edge whose endpoint "${s}" is not declared`,ref:s})}}function pt(e){let t=e=>y([e.source,e.predicate,e.target,e.label]),n=e[0],r=n.attrs;for(let i=1;i<e.length;i++){let a=e[i];t(a)>t(n)&&(n=a),r=at(r,a.attrs)}return{...n,attrs:r??ht}}function mt(e,t,n,r){let i=new Map,a=0;for(let e of t){let t=ct(e),n=i.get(t);n?(a++,e.id!==void 0&&(n.id===void 0||e.id<n.id)&&i.set(t,e)):i.set(t,e)}let o=[...i].map(([e,t])=>({draft:t,content:e})).sort((e,t)=>w(e.content,t.content));o.forEach(({draft:t},r)=>{n(r===0?e:`${e}#${r+1}`,t)}),a>0&&r.push({code:`duplicate-edge`,message:`Edge ${e} is declared ${a+1} times with identical content; the copies were collapsed`,ref:e}),o.length>1&&r.push({code:`duplicate-edge`,message:`Edge ${e} has ${o.length} parallel copies; they are keyed #2, #3…`,ref:e})}var ht,gt,_t,vt=t((()=>{x(),C(),Ye(),P(),j(),ht=Object.freeze({}),gt=new Set([`create`,`drop`,`error`]),_t=1e3}));function yt(e){let{name:t,version:n}=e.meta;return{...typeof t==`string`?{name:t}:{},...typeof n==`string`?{version:n}:{},hash:Re(e),nodes:e.nodes.size,edges:e.edges.size}}function bt(e,t){return t===`id`&&e.id!==void 0?e.id:a(e.source,e.predicate??``,e.target)}function xt(e,t){let{source:n,target:r,predicate:i}=e,a=t===`id`&&e.id!==void 0?{id:e.id,source:n,target:r}:{source:n,target:r};return i!==``&&(a.predicate=i),a}function St(e,t){return e[t]}function Ct(e,t){return typeof e==`object`&&typeof t==`object`?te(e,t):e===t}function wt(e,t,n){let r=e.options.edgeIdentity,i=e.unionOfBefore,a=new Map;for(let e of t)a.set(e.id,e);let o=new Set(e.renamed.values()),s=new Ot(t=>e.before.nodes.has(t),t=>e.after.nodes.has(t)||o.has(t)||e.before.nodes.has(t)),c=new Map,l=new Map;for(let[t,n]of e.renamed)(a.get(n)?.hunk===void 0?c:l).set(t,n);for(let e of[...c.values()].sort()){let t=l.get(e);if(t===void 0)continue;let n=s.temporary(e);s.move(e,n),l.delete(e),l.set(n,t)}s.run(c);let u=s.plan.length;s.run(l);let d=[],f=new Map;s.plan.forEach(([e,t],n)=>{let r=f.get(e)??i(e);f.set(t,r);let o=n<u?void 0:a.get(r)?.hunk;d.push({op:{op:`node.rekey`,from:e,to:t},hunk:o})});let p=e=>e.status===`modified`&&!e.inPlace,m=e=>e.map(e=>({...e,key:`${bt(e.edge,r)}\u0000${JSON.stringify(e.edge)}`})).sort((e,t)=>w(e.key,t.key)).map(({op:e,hunk:t})=>({op:e,hunk:t})),h=[];for(let e of n){if(!e.before||!(e.status===`removed`||p(e)))continue;let t=Fe(e.before,i(e.before.source),i(e.before.target));h.push({op:{op:`edge.remove`,edge:t},edge:t,hunk:e.hunk})}for(let e of m(h))d.push(e);for(let e of t)e.status===`removed`&&e.before&&d.push({op:{op:`node.remove`,node:Pe(e.before,e.id)},hunk:e.hunk});let g=[];for(let e of t)if(e.status===`modified`&&e.before&&e.after){for(let t of Dt){let n=St(e.before,t),r=St(e.after,t);Ct(n,r)||d.push({op:{op:`node.set`,id:e.id,field:t,from:n,to:r},hunk:e.hunk})}for(let t of e.facets)if(t.kind===`attrs`)for(let n of t.changes){let t={op:`node.attr`,id:e.id,key:n.key,...n.before===void 0?{}:{from:n.before},...n.after===void 0?{}:{to:n.after}};g.push({op:t,hunk:e.hunk})}}for(let e of g)d.push(e);for(let e of t)e.status===`added`&&e.after&&d.push({op:{op:`node.add`,node:Pe(e.after)},hunk:e.hunk});let _=[];for(let e of n){if(!e.after||!(e.status===`added`||p(e)))continue;let t=Fe(e.after);_.push({op:{op:`edge.add`,edge:t},edge:t,hunk:e.hunk})}for(let e of m(_))d.push(e);let v=n.filter(e=>e.status===`modified`&&e.inPlace&&e.before&&e.after).map(e=>({e,locator:xt(e.after,r)})).map(e=>({...e,key:bt(e.locator,r)})).sort((e,t)=>w(e.key,t.key));for(let{e,locator:t}of v){let n=e.before,r=e.after;n.label!==r.label&&d.push({op:{op:`edge.set`,edge:t,field:`label`,from:n.label,to:r.label},hunk:e.hunk})}for(let{e,locator:t}of v)for(let n of e.facets)if(n.kind===`attrs`)for(let r of n.changes){let n={op:`edge.attr`,edge:t,key:r.key,...r.before===void 0?{}:{from:r.before},...r.after===void 0?{}:{to:r.after}};d.push({op:n,hunk:e.hunk})}return{delta:{format:`kgdiff.delta`,version:1,edgeIdentity:r,base:yt(e.before),target:yt(e.after),ops:d.map(e=>e.op)},opHunks:d.map(e=>e.hunk)}}function Tt(e){return{id:e.id,label:e.label,types:e.types,aliases:e.aliases,attrs:e.attrs,deprecated:e.deprecated,replaces:e.replaces,replacedBy:e.replacedBy,implicit:e.implicit,...e.position?{position:e.position}:{}}}function Et(e,t){return e.edgeIdentity===t?e:dt({meta:e.meta,nodes:[...e.nodes.values()].map(Tt),edges:[...e.edges.values()]},{edgeIdentity:t})}var Dt,Ot,kt=t((()=>{x(),Be(),vt(),j(),Dt=[`label`,`types`,`aliases`,`deprecated`,`replaces`,`replacedBy`],Ot=class{occupiedAtStart;reserved;plan=[];vacated=new Set;filled=new Set;constructor(e,t){this.occupiedAtStart=e,this.reserved=t}occupied(e){return this.filled.has(e)||this.occupiedAtStart(e)&&!this.vacated.has(e)}temporary(e){let t=`${e}@tmp`;for(;this.occupied(t)||this.reserved(t);)t+=`@tmp`;return t}move(e,t){this.plan.push([e,t]),this.vacated.add(e),this.filled.delete(e),this.filled.add(t)}run(e){let t=new Map,n=[];for(let r of[...e.keys()].sort()){let i=e.get(r);this.occupied(i)?t.set(i,[r,i]):n.push([r,i])}let r=e=>{let r=t.get(e);r&&(t.delete(e),n.push(r))};for(;;){for(;n.length;){let[e,t]=n.shift();this.move(e,t),r(e)}if(t.size===0)return;let e;for(let n of t.values())(!e||n[0]<e[0])&&(e=n);let[i,a]=e,o=this.temporary(i);this.move(i,o),t.set(a,[o,a]),r(i)}}}}));function At(e,t){return`${e}\u0000${t}`}var jt,z=t((()=>{jt=[`rekey`,`rename`,`mergedInto`,`mergeTarget`,`splitFrom`,`splitInto`,`move`,`deprecate`,`replacement`,`types`,`aliases`,`attrs`,`retarget`,`predicate`,`label`,`collapsed`]}));function Mt(e,t,n){let r=new Map,i=[],a=new Set;for(let o of e.nodes.keys()){let e=n.get(o);e===void 0?t.nodes.has(o)?i.push(o):a.add(o):e!==o&&r.set(o,e)}i.sort();for(let e of i){let n=`${e}@before`;for(;t.nodes.has(n)||a.has(n);)n+=`@before`;a.add(n),r.set(e,n)}return r}function Nt(e,t,n){if(e===t||m(e,t,n))return[];let r=new Set([...h(e),...h(t)]),i=[];for(let a of[...r].sort()){if(n.has(a))continue;let r=f(e,a),o=f(t,a);l(r,o)||(r===void 0?i.push({key:a,after:_(o)}):o===void 0?i.push({key:a,before:_(r)}):i.push({key:a,before:_(r),after:_(o)}))}return i}function Pt(e,t){let n=new Map;for(let r of e.merges)for(let e of r.sources)n.set(t(e.id),r.target);let r=new Map,i=new Map;for(let n of e.splits){let e=t(n.source);r.set(e,n.targets.map(e=>e.id));for(let t of n.targets)i.set(t.id,e)}return{mergeTargetOf:n,splitTargetsOf:r,splitSourceOf:i}}function Ft(e,t,n){let r=new Map;if(t.size===0)return r;for(let i of e.edges.values())t.has(i.predicate)&&D(D(r,i.source,()=>new Map),i.predicate,()=>new Set).add(n(i.target));return r}function It(e,t,n){if(!e&&!t)return[];let r=new Set([...e?.keys()??[],...t?.keys()??[]]),i=[];for(let a of[...r].sort()){let r=e?.get(a)??new Set,o=t?.get(a)??new Set,s=new Set([...r].map(e=>n.mergeTargetOf.get(e)??e)),c=new Set([...o].map(e=>n.splitSourceOf.get(e)??e)),l=[...r].filter(e=>!c.has(n.mergeTargetOf.get(e)??e)),u=[...o].filter(e=>!s.has(n.splitSourceOf.get(e)??e));(l.length||u.length)&&i.push({kind:`move`,predicate:a,from:l.sort(),to:u.sort()})}return i}function Lt(e,t,n){if(te(t,n))return[];let{added:r,removed:i}=ne(t,n);return[{kind:e,added:r,removed:i}]}function Rt(e,t,n,r,i){let a=e.restructuring,o=[];t.id!==n.id&&e.options.match.strategy!==`similarity`&&o.push({kind:`rekey`,from:t.id,to:n.id,score:e.inferred.get(t.id)?.score??1}),t.label!==n.label&&o.push({kind:`rename`,from:t.label,to:n.label});let s=a.mergeBySource.get(t.id);s&&o.push(zt(t.id,s));let c=a.mergeByTarget.get(n.id);c&&o.push({kind:`mergeTarget`,sources:c.sources.map(t=>e.unionOfBefore(t.id)).sort()});let l=a.splitBySource.get(t.id);l&&o.push({kind:`splitInto`,targets:l.targets.map(e=>e.id)});let u=It(i.before.get(t.id),i.after.get(n.id),r),d=!t.deprecated&&n.deprecated||!!s||!!l;o.push(...d?u.filter(e=>e.to.length>0):u),t.deprecated!==n.deprecated&&o.push({kind:`deprecate`,deprecated:n.deprecated}),te(t.replaces,n.replaces)&&te(t.replacedBy,n.replacedBy)||o.push({kind:`replacement`,replaces:ne(t.replaces,n.replaces),replacedBy:ne(t.replacedBy,n.replacedBy)}),o.push(...Lt(`types`,t.types,n.types)),o.push(...Lt(`aliases`,t.aliases,n.aliases));let f=Nt(t.attrs,n.attrs,e.ignoreAttrs);return f.length&&o.push({kind:`attrs`,changes:f}),o}function zt(e,t){let n=t.sources.find(t=>t.id===e);return{kind:`mergedInto`,target:t.target,confidence:n?.confidence??1,via:n?.via??`hint`}}function Bt(e){let t=e.restructuring,n=Pt(t,e.unionOfBefore),r=new Set,i=[],a={before:Ft(e.before,e.hierarchy,e.unionOfBefore),after:Ft(e.after,e.hierarchy,e=>e)};for(let o of e.after.nodes.values()){let s=e.afterToBefore.get(o.id);if(s===void 0){let n=[],r=t.mergeByTarget.get(o.id);r&&n.push({kind:`mergeTarget`,sources:r.sources.map(t=>e.unionOfBefore(t.id)).sort()});let a=t.splitByTarget.get(o.id);if(a){let t=a.targets.find(e=>e.id===o.id);n.push({kind:`splitFrom`,source:e.unionOfBefore(a.source),confidence:t?.confidence??1,via:t?.via??`hint`})}i.push({id:o.id,afterId:o.id,after:o,status:`added`,facets:n});continue}let c=e.before.nodes.get(s),l=Rt(e,c,o,n,a);for(let e of l)e.kind===`move`&&r.add(At(o.id,e.predicate));i.push({id:o.id,beforeId:s,afterId:o.id,before:c,after:o,status:l.length?`modified`:`unchanged`,facets:l})}for(let n of e.before.nodes.values()){if(e.beforeToAfter.has(n.id))continue;let r=[],a=t.mergeBySource.get(n.id);a&&r.push(zt(n.id,a));let o=t.splitBySource.get(n.id);o&&r.push({kind:`splitInto`,targets:o.targets.map(e=>e.id)}),i.push({id:e.unionOfBefore(n.id),beforeId:n.id,before:n,status:`removed`,facets:r})}return i.sort((e,t)=>w(e.id,t.id)),{nodes:i,index:{...n,moved:r}}}var Vt=t((()=>{x(),z(),j()}));function B(e){let t;return()=>(t??=e(),t)}function V(e,t){let n=new Map;for(let r of e){let e=t(r);e!==void 0&&n.set(e,r)}return n}function Ht(e,t,n){let r=B(()=>V(e,e=>e.id)),i=B(()=>V(e,e=>e.beforeId)),a=B(()=>V(e,e=>e.afterId)),o=B(()=>V(t,e=>e.id)),s=B(()=>V(n,e=>e.id)),c=B(()=>{let e=new Map;for(let n of t){let t=new Set([n.source,n.target]);n.sourceBefore!==void 0&&t.add(n.sourceBefore),n.targetBefore!==void 0&&t.add(n.targetBefore);for(let r of t){let t=e.get(r);t?t.push(n):e.set(r,[n])}}return e});return{node:e=>r().get(e),edge:e=>o().get(e),hunk:e=>s().get(e),nodeByBefore:e=>i().get(e),nodeByAfter:e=>a().get(e),edgesOf:e=>c().get(e)??Ut}}var Ut,Wt=t((()=>{Ut=Object.freeze([])}));function Gt(e){return y([e.label,e.attrs])}function Kt(e,t){let{before:n,after:r}=e,i=e.options.edgeIdentity,c=e.unionOfBefore,l=e=>i===`structure`||e.id===void 0,u=[],d=new Set(r.edges.keys()),f=e=>i===`id`||e.issues.some(e=>e.code===`duplicate-edge`),p=new Set;if(f(n)||f(r)){for(let e of n.edges.values())if(l(e)&&o(e.key)){let t=s(e.key).base,n=c(e.source),r=c(e.target);p.add(n===e.source&&r===e.target?t:a(n,e.predicate,r))}for(let e of r.edges.values())l(e)&&o(e.key)&&p.add(s(e.key).base)}let m=(n,r,i,a)=>{if(t.mergeTargetOf.get(r)===i)return`merge`;if(t.splitTargetsOf.get(r)?.includes(i))return`split`;if(e.hierarchy.has(a.predicate)){let e=n===`target`?a.source:i;if(t.moved.has(At(e,a.predicate))||t.moved.has(At(r,a.predicate)))return`move`}return`edit`},h=(t,n,r,i)=>{d.delete(n.key);let a=t.edge,o=t.source!==n.source,s=t.target!==n.target,c=a.predicate!==n.predicate,l=[];if(o){let e=i??m(`source`,t.source,n.source,n);l.push({kind:`retarget`,end:`source`,from:t.source,to:n.source,cause:e})}if(s){let e=i??m(`target`,t.target,n.target,n);l.push({kind:`retarget`,end:`target`,from:t.target,to:n.target,cause:e})}c&&l.push({kind:`predicate`,from:a.predicate,to:n.predicate});let f=c&&a.label===ge(a.predicate)&&n.label===ge(n.predicate);a.label!==n.label&&!f&&l.push({kind:`label`,from:a.label,to:n.label});let p=Nt(a.attrs,n.attrs,e.ignoreAttrs);p.length&&l.push({kind:`attrs`,changes:p});let h={id:n.key,source:n.source,target:n.target,predicate:n.predicate,label:n.label,beforeKey:a.key,afterKey:n.key,before:a,after:n,status:l.length?`modified`:`unchanged`,facets:l,hierarchical:e.hierarchy.has(n.predicate),inPlace:r&&!o&&!s&&!c};o&&(h.sourceBefore=t.source),s&&(h.targetBefore=t.target),c&&(h.predicateBefore=a.predicate),u.push(h)},g=[],_=new Map,v=e=>D(_,e,()=>({before:[],after:[]}));for(let e of n.edges.values()){let t=c(e.source),n=c(e.target),i=l(e),o=e.key;if(i&&(t!==e.source||n!==e.target)&&(o=a(t,e.predicate,n)+s(e.key).suffix),!i){let i=r.edges.get(o),a={edge:e,source:t,target:n,key:o};i&&i.id===e.id&&!l(i)?h(a,i,!0):g.push(a);continue}if(p.size){let{base:r}=s(o);if(p.has(r)){v(r).before.push({edge:e,source:t,target:n,key:o});continue}}let u=r.edges.get(o);u&&l(u)&&u.source===t&&u.target===n&&u.predicate===e.predicate?h({edge:e,source:t,target:n,key:o},u,!0):g.push({edge:e,source:t,target:n,key:o})}if(_.size>0){for(let e of r.edges.values()){if(!l(e))continue;let{base:t}=s(e.key);p.has(t)&&_.has(t)&&v(t).after.push(e)}for(let e of[..._.keys()].sort()){let t=_.get(e),n=t.after.sort((e,t)=>w(e.key,t.key)),r=new Map;for(let e of n)O(r,Gt(e),e);let i=new Set,a=[];for(let e of t.before.sort((e,t)=>w(e.key,t.key))){let t=r.get(Gt(e.edge))?.pop();t?(i.add(t),h(e,t,!1)):a.push(e)}let o=0;for(let e of a){for(;o<n.length&&i.has(n[o]);)o++;let t=n[o++];t?h(e,t,!1):g.push(e)}}}let y=()=>{let e=new Map;for(let t of r.edges.values())O(e,a(t.source,t.predicate,t.target),t);for(let t of e.values())t.sort((e,t)=>w(e.key,t.key));return e};g.sort((e,t)=>w(e.key,t.key));let b=new Map;if(g.length&&(t.mergeTargetOf.size||t.splitTargetsOf.size)){let e=y(),n=[];for(let r of g){let i=r.edge.predicate,o=t.mergeTargetOf.get(r.source)??r.source,s=t.mergeTargetOf.get(r.target)??r.target;if(o!==r.source||s!==r.target){let t=e.get(a(o,i,s))??[],c=t.find(e=>d.has(e.key));c?h(r,c,!1,`merge`):t[0]?b.set(r,t[0].key):n.push(r);continue}let c=[r.source,...t.splitTargetsOf.get(r.source)??[]],l=[r.target,...t.splitTargetsOf.get(r.target)??[]],u;for(let t of c)for(let n of l)u||t===r.source&&n===r.target||(u=e.get(a(t,i,n))?.find(e=>d.has(e.key)));u?h(r,u,!1,`split`):n.push(r)}g=n}let x=(e,t,n)=>{if(g.length===0||d.size===0)return;let i=new Map;for(let t of g)O(i,e(t),t);let a=new Map;for(let e of d){let n=r.edges.get(e),o=t(n);i.has(o)&&O(a,o,n)}let o=new Set;for(let e of[...i.keys()].sort()){let t=i.get(e),r=a.get(e);if(t.length!==1||r?.length!==1)continue;let s=t[0],c=r[0];n(s,c)&&(h(s,c,!1),o.add(s))}o.size&&(g=g.filter(e=>!o.has(e)))},S=(e,t)=>`${e.length}:${e}${t}`;x(e=>S(e.source,e.target),e=>S(e.source,e.target),(e,t)=>e.edge.predicate!==t.predicate),x(e=>S(e.source,e.edge.predicate),e=>S(e.source,e.predicate),(e,t)=>e.target!==t.target);let C=t=>e.afterToBefore.has(t);x(e=>S(e.target,e.edge.predicate),e=>S(e.target,e.predicate),(e,t)=>e.source!==t.source&&C(e.source)&&C(t.source));for(let t of d){let n=r.edges.get(t);u.push(Jt(n.key,n.source,n.target,n,`after`,[],e.hierarchy.has(n.predicate)))}let T=[...g,...b.keys()].sort((e,t)=>w(e.key,t.key)),E=new Set;for(let t of T){let n=qt(t,l(t.edge),e=>r.edges.has(e)||E.has(e));E.add(n);let i=b.get(t),a=i===void 0?[]:[{kind:`collapsed`,into:i}];u.push(Jt(n,t.source,t.target,t.edge,`before`,a,e.hierarchy.has(t.edge.predicate)))}return u.sort((e,t)=>w(e.id,t.id))}function qt(e,t,n){if(!n(e.key))return e.key;if(!t){let t=`${e.key}@before`;for(;n(t);)t+=`@before`;return t}let{base:r}=s(e.key),i=2;for(;n(`${r}#${i}`);)i++;return`${r}#${i}`}function Jt(e,t,n,r,i,a,o){return i===`after`?{id:e,source:t,target:n,predicate:r.predicate,label:r.label,afterKey:r.key,after:r,status:`added`,facets:a,hierarchical:o,inPlace:!1}:{id:e,source:t,target:n,predicate:r.predicate,label:r.label,beforeKey:r.key,before:r,status:`removed`,facets:a,hierarchical:o,inPlace:!1}}var Yt=t((()=>{x(),Vt(),z(),P(),j()}));function Xt(e){let t=[e.source];return e.target!==e.source&&t.push(e.target),e.sourceBefore!==void 0&&!t.includes(e.sourceBefore)&&t.push(e.sourceBefore),e.targetBefore!==void 0&&!t.includes(e.targetBefore)&&t.push(e.targetBefore),t}function Zt(e,t){let n=[],r=(e,t,r)=>{for(let i of e.outgoing.get(t)??[]){let t=e.edges.get(i);t&&n.push(r(t.target))}for(let i of e.incoming.get(t)??[]){let t=e.edges.get(i);t&&n.push(r(t.source))}};return t.beforeId!==void 0&&r(e.before,t.beforeId,e.unionOfBefore),t.afterId!==void 0&&r(e.after,t.afterId,e=>e),n}function Qt(e,t,n){let r=new Map;for(let e of t)r.set(e.id,e);let i=new Map,a=new Map;for(let e of n)if(e.status!==`unchanged`){i.set(e.id,e);for(let t of Xt(e))O(a,t,e)}let o=[],s=new Map,c=new Map,l=(e,t)=>{let n={id:``,kind:e,anchor:t,nodes:[],edges:[]};return o.push(n),n},u=(e,t)=>{let n=r.get(t);n&&n.status!==`unchanged`&&!s.has(t)&&(s.set(t,e),e.nodes.push(t))},d=(e,t)=>{c.has(t.id)||(c.set(t.id,e),e.edges.push(t.id))},f=(e,t,n)=>{for(let r of a.get(t)??[])(!n||n(r))&&d(e,r)};for(let t of e.restructuring.merges){let n=l(`merge`,t.target),i=t.sources.map(t=>e.unionOfBefore(t.id));u(n,t.target);for(let e of i)u(n,e);for(let e of i)f(n,e);r.get(t.target)?.status===`added`&&f(n,t.target)}for(let t of e.restructuring.splits){let n=e.unionOfBefore(t.source),r=s.get(n)??l(`split`,n);u(r,n);for(let e of t.targets)u(r,e.id);for(let e of t.targets)f(r,e.id);f(r,n)}for(let n of[`added`,`removed`]){let r=t.filter(e=>e.status===n&&!s.has(e.id));if(r.length===0)continue;let a=new Set(r.map(e=>e.id)),o=new nn;for(let e of i.values())e.status===n&&a.has(e.source)&&a.has(e.target)&&o.union(e.source,e.target);let c=new Map;for(let e of r)O(c,o.find(e.id),e);let d=n===`added`?e.after:e.before;for(let e of[...c.keys()].sort()){let t=c.get(e),r=t[0],i=-1;for(let e of t){let t=re(d,n===`added`?e.afterId:e.beforeId);(t>i||t===i&&e.id<r.id)&&(i=t,r=e)}let a=l(n===`added`?`add`:`remove`,r.id);for(let e of t)u(a,e.id);for(let e of t)f(a,e.id,e=>e.status===n)}}for(let e of t){if(e.status!==`modified`||s.has(e.id))continue;let t=l(`modify`,e.id);u(t,e.id),f(t,e.id,t=>t.source===e.id)}let p=new Map;for(let e of i.values())c.has(e.id)||O(p,e.source,e);for(let e of[...p.keys()].sort()){let t=l(`relations`,e);for(let n of p.get(e))d(t,n)}let m=new Map,h=o.filter(e=>e.nodes.length+e.edges.length>0);for(let e of h){let t=`${e.kind}:${e.anchor}`,n=(m.get(t)??0)+1;m.set(t,n),e.id=n===1?t:`${t}#${n}`}for(let e of h){for(let t of e.nodes)r.get(t).hunk=e.id;for(let t of e.edges)i.get(t).hunk=e.id}return h.map(t=>{let n=t.nodes.slice().sort(w),a=n.indexOf(t.anchor);a>0&&n.unshift(...n.splice(a,1));let o=t.edges.slice().sort(w);return{id:t.id,kind:t.kind,phase:$t(t,r),anchor:t.anchor,nodes:n,edges:o,context:en(e,t,r,i),summary:tn(t,r,i)}})}function $t(e,t){switch(e.kind){case`remove`:return`remove`;case`add`:return`add`;case`merge`:case`split`:case`relations`:return`restructure`;case`modify`:{let n=e.nodes.flatMap(e=>t.get(e)?.facets??[]);return n.length>0&&n.every(e=>e.kind===`move`)?`restructure`:`modify`}default:return e.kind}}function en(e,t,n,r){let i=new Set;for(let e of t.edges)for(let t of Xt(r.get(e)))i.add(t);for(let e of t.nodes)for(let t of n.get(e)?.facets??[])if(t.kind===`move`){for(let e of t.from)i.add(e);for(let e of t.to)i.add(e)}if(t.kind===`merge`||t.kind===`split`){let r=n.get(t.anchor);if(r)for(let t of Zt(e,r))i.add(t)}for(let e of t.nodes)i.delete(e);return[...i].sort()}function tn(e,t,n){let r=new Set,i=e=>({added:e.filter(e=>e===`added`).length,removed:e.filter(e=>e===`removed`).length,modified:e.filter(e=>e===`modified`).length}),a=e.nodes.map(e=>{let n=t.get(e);for(let e of n.facets)r.add(e.kind);return n.status}),o=e.edges.map(e=>{let t=n.get(e);for(let e of t.facets)r.add(e.kind);return t.status});return{nodes:i(a),edges:i(o),facets:jt.filter(e=>r.has(e))}}var nn,rn=t((()=>{z(),j(),nn=class{parent=new Map;find(e){let t=e;for(let e=this.parent.get(t);e!==void 0&&e!==t;e=this.parent.get(t))t=e;for(let n=e;n!==t;){let e=this.parent.get(n);this.parent.set(n,t),n=e}return t}union(e,t){let n=this.find(e),r=this.find(t);n<r?this.parent.set(r,n):r<n&&this.parent.set(n,r)}}}));function an(e){return e.aliases.length?[e.label,...e.aliases]:[e.label]}function on(e,t,n){let r=n.get(e.label),i=n.get(t.label),a=N(r,i);for(let e of t.aliases){if(a===1)return 1;a=Math.max(a,N(r,n.get(e)))}for(let t of e.aliases){if(a===1)return 1;a=Math.max(a,N(i,n.get(t)))}return a}function sn(e,t){if(e.length===0&&t.length===0)return;let n=new Set(t),r=0;for(let t of e)n.has(t)&&r++;return r/(e.length+t.length-r)}function cn(e,t,n){if(e.attrs===t.attrs&&n.size===0)return g(e.attrs)?void 0:1;let r=0,i=0;for(let a of h(e.attrs))n.has(a)||(r++,l(e.attrs[a],f(t.attrs,a))&&i++);for(let i of h(t.attrs))!n.has(i)&&f(e.attrs,i)===void 0&&r++;return r===0?void 0:i/r}function ln(e,t,n,r){let i=H.label*e,a=H.label;t!==void 0&&(i+=H.neighbors*t,a+=H.neighbors),n!==void 0&&(i+=H.types*n,a+=H.types),r!==void 0&&(i+=H.attrs*r,a+=H.attrs);let o=i/a;return E(e<U?Math.min(o,U):o)}function un(e,t,n,r){return{label:E(e),neighbors:E(t??0),types:E(n??0),attrs:E(r??0)}}function dn(e,t){let n=(e.outgoing.get(t)?.length??0)+(e.incoming.get(t)?.length??0);return 1/Math.log2(2+n)}function fn(e,t,n,r){let i=new Map,a=(t,a)=>{if(t)for(let o of t){let t=e.edges.get(o);if(!t)continue;let s=n(a?t.target:t.source);if(s===void 0)continue;let c=`${a?`>`:`<`}${t.predicate}\u0000${s}`;i.set(c,(i.get(c)??0)+dn(r,s))}};if(a(e.outgoing.get(t),!0),a(e.incoming.get(t),!1),i.size===0)return wn;let o=[...i.keys()].sort();return{keys:o,weights:o.map(e=>i.get(e))}}function pn(e,t){if(e.keys.length===0&&t.keys.length===0)return;let n=0,r=0,i=0,a=0;for(;i<e.keys.length||a<t.keys.length;){let o=e.keys[i],s=t.keys[a];if(s===void 0||o!==void 0&&o<s)r+=e.weights[i],i++;else if(o===void 0||s<o)r+=t.weights[a],a++;else{let o=e.weights[i],s=t.weights[a];n+=Math.min(o,s),r+=Math.max(o,s),i++,a++}}return r===0?void 0:n/r}function mn(e,t){let n=new Set;for(let r of an(e))fe(t.get(r),n);return n}function hn(e,t,n,r,i,a){let o=new Map,s=new Map;t.forEach((e,t)=>{s.set(e.id,t);for(let n of mn(e,i))O(o,n,t)});let c=Math.max(64,n*8),l=n*3;e.forEach((e,u)=>{let d=[];for(let t of mn(e,i)){let e=o.get(t);e&&d.push({key:t,postings:e})}let f=s.get(e.id);if(d.length===0&&f===void 0)return;d.sort((e,t)=>e.postings.length-t.postings.length||w(e.key,t.key));let p=new Map;f!==void 0&&p.set(f,0);for(let{postings:e}of d){if(e.length>c&&p.size>=l)continue;let t=1/Math.log2(1+e.length),n=Math.min(e.length,c);for(let r=0;r<n;r++){let n=e[r];p.set(n,(p.get(n)??0)+t)}}let m=new Set(e.types),h=[...p].map(([e,n])=>{let r=t[e];return{t:e,weight:n+(m.size>0&&r.types.some(e=>m.has(e))?.001:0)}}),g=n=>t[n].id===e.id?0:1;h.sort((e,t)=>g(e.t)-g(t.t)||t.weight-e.weight||e.t-t.t);let _=h.slice(0,l).map(({t:n})=>({t:n,label:on(e,t[n],i)})).filter(({label:e})=>!r||e>=U);_.sort((e,t)=>t.label-e.label||g(e.t)-g(t.t)||e.t-t.t);for(let{t:e,label:t}of _.slice(0,n))a(u,e,t)})}function gn(e,t,n,r,i){let a=new Map,o=(n,r,i)=>{let o=n*t.length+r;if(a.has(o))return;let s=e[n].id===t[r].id;a.set(o,{r:n,a:r,sameId:s,label:i,score:0,neighbors:void 0,types:void 0,attrs:void 0})};return hn(e,t,n,r,i,(e,t,n)=>o(e,t,n)),hn(t,e,n,r,i,(e,t,n)=>o(t,e,n)),[...a.values()].sort((e,t)=>e.r-t.r||e.a-t.a)}function _n(e,t){return!(t.score-e.score>=.049999999||t.score===1&&e.score<1||e.score===t.score&&t.sameId&&!e.sameId)}function vn(e,t,n){for(let r of t)if(r!==e&&n(r)){if(e.score-r.score>=.049999999)return!1;if(_n(r,e))return!0}return!1}function yn(e,t,n,r,i){let a=new Map,o=new Map,s=(e,t)=>{e!==t&&(D(a,e,()=>new Set).add(t),D(o,t,()=>new Set).add(e))};for(let n of e.nodes.values())for(let e of n.replacedBy)t.nodes.has(e)&&s(n.id,e);for(let n of t.nodes.values())for(let t of n.replaces)e.nodes.has(t)&&s(t,n.id);for(let s of[...a.keys()].sort()){let c=a.get(s);if(c.size!==1||t.nodes.has(s)||n.has(s))continue;let l=c.values().next().value;o.get(l)?.size!==1||e.nodes.has(l)||r.has(l)||(n.set(s,l),r.set(l,s),i.set(s,{before:s,after:l,method:`hint`,score:1}))}}function bn(e,t,n,r,i=new Ee){let a=new Map,o=new Map,s=new Map;if(n.strategy!==`similarity`)for(let n of e.nodes.keys())t.nodes.has(n)&&(a.set(n,n),o.set(n,n));yn(e,t,a,o,s);let c={beforeToAfter:a,afterToBefore:o,inferred:s,suggestions:[]};if(n.strategy===`id`)return c;let l=[...e.nodes.values()].filter(e=>!a.has(e.id)).sort((e,t)=>w(e.id,t.id)),u=[...t.nodes.values()].filter(e=>!o.has(e.id)).sort((e,t)=>w(e.id,t.id));if(l.length===0||u.length===0)return c;let d=Math.min(n.threshold,n.suggestThreshold)>U,f=gn(l,u,n.maxCandidates,d,i);if(f.length===0)return c;let p=Array(l.length).fill(!1),m=Array(u.length).fill(!1),h=e=>!p[e.r]&&!m[e.a],g=n=>{let i=e=>a.get(e),s=e=>o.has(e)?e:void 0,c=new Map,d=new Map,f=a.size>0;for(let a of n){let n=l[a.r],o=u[a.a],p;f&&(p=pn(D(c,a.r,()=>fn(e,n.id,i,t)),D(d,a.a,()=>fn(t,o.id,s,t)))),a.neighbors=p,a.types=sn(n.types,o.types),a.attrs=cn(n,o,r),a.score=ln(a.label,p,a.types,a.attrs)}},_=(e,t)=>t.score-e.score||Number(t.sameId)-Number(e.sameId)||e.r-t.r||e.a-t.a,v=f,y=0;for(let e=0;e<Cn&&(v=v.filter(h),v.length!==0);e++){g(v),v.sort(_);let e=new Map,t=new Map;for(let n of v)O(e,n.r,n),O(t,n.a,n);y=0;for(let r of v){if(r.score<n.threshold)break;if(!h(r)||vn(r,e.get(r.r)??[],e=>!m[e.a])||vn(r,t.get(r.a)??[],e=>!p[e.r]))continue;let i=l[r.r],c=u[r.a];p[r.r]=!0,m[r.a]=!0,a.set(i.id,c.id),o.set(c.id,i.id),s.set(i.id,{before:i.id,after:c.id,method:`similarity`,score:r.score,evidence:un(r.label,r.neighbors,r.types,r.attrs)}),y++}if(y===0)break}return v=v.filter(h),y>0&&g(v),v.sort(_),{...c,suggestions:xn(v,l,u,n)}}function xn(e,t,n,r){let i=[],a=new Set,o=new Set;for(let s of e){if(s.score<r.suggestThreshold)break;let e=!a.has(s.r),c=!o.has(s.a);a.add(s.r),o.add(s.a);let l=s.score>=r.threshold;(l||e||c)&&i.push({before:t[s.r].id,after:n[s.a].id,score:s.score,evidence:un(s.label,s.neighbors,s.types,s.attrs),reason:l?`ambiguous`:`below-threshold`})}return Sn(i)}function Sn(e){return e.sort((e,t)=>w(e.after,t.after)||w(e.before,t.before))}var H,U,Cn,wn,Tn=t((()=>{x(),P(),j(),H={label:.55,neighbors:.25,types:.1,attrs:.1},U=.5,Cn=5,wn={keys:[],weights:[]}}));function En(e,t,n){let r=n.get(e),i=N(r,n.get(t.label));for(let e of t.aliases){if(i===1)break;i=Math.max(i,N(r,n.get(e)))}return i}function Dn(e,t,n){let r=n.get(e);return t.aliases.some(e=>N(r,n.get(e))===1)}function On(e,t,n,r,i){let a=r.keysOf(t),o=[],s=new Set;for(let i of[!0,!1])for(let c of(i?e.outgoing:e.incoming).get(t.id)??[]){let l=e.edges.get(c);if(!l)continue;let u=i?l.target:l.source,d=u===t.id?void 0:n.get(u);if(o.push({out:i,predicate:l.predicate,other:d}),d!==void 0)for(let e of r.candidates(i?`<`:`>`,l.predicate,d,a))s.add(e)}return{candidates:s,total:o.length,carried:e=>{let t=0;for(let n of o)n.other!==void 0&&(n.out?i.has(e,n.predicate,n.other):i.has(n.other,n.predicate,e))&&t++;return t}}}function kn(e,t,n,r,i,a){let o;for(let s of[...t.candidates].sort()){if(!i(s))continue;let c=n.nodes.get(s);if(!c)continue;let l=En(e.label,c,r);if(a&&l<1&&Dn(c.label,e,r)&&(l=1),l<Fn)continue;let u=t.carried(s)/t.total;if(u<In)continue;let d=E(.5*l+.5*u);(!o||d>o.confidence)&&(o={candidate:s,label:l,carry:u,confidence:d})}return o}function An(e,t,n,r){let i=e.before.nodes.get(t),a=e.after.nodes.get(n);return{before:t,after:n,score:r.confidence,evidence:un(r.label,r.carry,sn(i.types,a.types),cn(i,a,e.ignoreAttrs)),reason:`below-threshold`}}function jn(e,t,n,r,i,a){let o={before:e,after:t,b2a:n.beforeToAfter,a2b:n.afterToBefore,profiles:i,ignoreAttrs:a,nameKeys:new Map},s=[],c=r.detectMerges?Mn(o,s):[],l=new Map,u=new Map;for(let e of c){u.set(e.target,e);for(let t of e.sources)l.set(t.id,e)}let d=r.detectSplits?Pn(o,l,u,s):[],f=new Map,p=new Map;for(let e of d){f.set(e.source,e);for(let t of e.targets)p.set(t.id,e)}return{merges:c,splits:d,mergeBySource:l,mergeByTarget:u,splitBySource:f,splitByTarget:p,suggestions:s}}function Mn(e,t){let{before:n,after:r,b2a:i,a2b:a}=e,o=e=>r.nodes.has(e)?e:i.get(e),s=e=>n.nodes.has(e)?e:a.get(e),c=e=>{let t=i.get(e);return t===void 0||(r.nodes.get(t)?.deprecated??!1)},l=(e,t)=>{let r=n.nodes.get(e);if(!r.deprecated||!i.has(e))return!1;if(r.replacedBy.some(e=>o(e)===t))return!0;let s=a.get(t);return s!==void 0&&(n.nodes.get(s)?.replaces.includes(e)??!1)},u=new Map,d=(e,t)=>{e!==void 0&&t!==void 0&&i.get(e)!==t&&c(e)&&!l(e,t)&&D(u,e,()=>new Set).add(t)};for(let e of n.nodes.values())for(let t of e.replacedBy)d(e.id,o(t));for(let e of r.nodes.values()){if(e.replacedBy.length){let t=a.get(e.id);for(let n of e.replacedBy)d(t,o(n))}for(let t of e.replaces)d(s(t),e.id)}let f=new Map;for(let[e,t]of u)for(let n of t)O(f,n,e);let p=e=>a.has(e)||(f.get(e)?.length??0)>=2,m=new Map,h=new Set;for(let e of[...u.keys()].sort()){let t=[...u.get(e)].sort().find(p);t!==void 0&&(O(m,t,{id:e,confidence:1,via:`hint`}),h.add(e))}let g=new Bn(r,e.nameKeys),_=new Vn(r),v=[...n.nodes.keys()].filter(e=>!i.has(e)&&!h.has(e)).sort();for(let o of v){let s=n.nodes.get(o),c=On(n,s,i,g,_);if(c.candidates.size===0)continue;let l=kn(s,c,r,e.profiles,e=>a.has(e),!1);l&&(l.confidence>=Ln?O(m,l.candidate,{id:o,confidence:l.confidence,via:`heuristic`}):t.push(An(e,o,l.candidate,l)))}return Nn(m,a)}function Nn(e,t){let n=new Map;for(let[t,r]of e)for(let e of r)n.set(e.id,t);let r=new Map,i=e=>{let i=r.get(e);if(i!==void 0)return i;let a=[],o=new Set,s=e,c=null;for(;s!==void 0;){let e=r.get(s);if(e!==void 0){c=e;break}if(o.has(s))break;o.add(s),a.push(s);let i=t.get(s),l=i===void 0?void 0:n.get(i);if(l===void 0){c=s;break}s=l}for(let e of a)r.set(e,c);return c},a=new Map;for(let n of[...e.keys()].sort()){let r=i(n);if(r!==null)for(let i of e.get(n))t.get(r)!==i.id&&O(a,r,i)}let o=[];for(let e of[...a.keys()].sort()){let n=a.get(e).sort((e,t)=>w(e.id,t.id)),r=t.get(e);r===void 0&&n.length<2||o.push(r===void 0?{target:e,sources:n}:{target:e,survivor:r,sources:n})}return o}function Pn(e,t,n,r){let{before:i,after:a,b2a:o,a2b:s}=e,c=e=>i.nodes.has(e)?e:s.get(e),l=e=>a.nodes.has(e)&&!s.has(e)&&!n.has(e),u=e=>i.nodes.has(e)&&!t.has(e),d=new Map,f=(e,t,n,r)=>{if(e===void 0||!u(e)||!l(t))return;let i=D(d,e,()=>new Map);i.has(t)||i.set(t,{id:t,confidence:n,via:r})};for(let e of a.nodes.values()){for(let t of e.replaces)f(c(t),e.id,1,`hint`);if(e.replacedBy.length){let t=s.get(e.id);for(let n of e.replacedBy)f(t,n,1,`hint`)}}for(let e of i.nodes.values())for(let t of e.replacedBy)f(e.id,t,1,`hint`);let p=new Set;for(let e of d.values())for(let t of e.keys())p.add(t);let m=new Bn(i,e.nameKeys),h=new Vn(i),g=[...a.nodes.keys()].filter(e=>l(e)&&!p.has(e)).sort();for(let t of g){let n=a.nodes.get(t),o=On(a,n,s,m,h);if(o.candidates.size===0)continue;let c=kn(n,o,i,e.profiles,u,!0);c&&(c.confidence>=Ln?f(c.candidate,t,c.confidence,`heuristic`):r.push(An(e,c.candidate,t,c)))}let _=[];for(let e of[...d.keys()].sort()){let t=[...d.get(e).values()].sort((e,t)=>w(e.id,t.id)),n=o.get(e),r=n!==void 0&&!a.nodes.get(n)?.deprecated?n:void 0;t.length+(r===void 0?0:1)<2||_.push(r===void 0?{source:e,targets:t}:{source:e,survivor:r,targets:t})}return _}var Fn,In,Ln,Rn,zn,Bn,Vn,Hn=t((()=>{x(),Tn(),P(),j(),Fn=.9,In=.5,Ln=.75,Rn=32,zn=32,Bn=class{graph;textKeys;members=new Map;names=new Map;constructor(e,t){this.graph=e,this.textKeys=t}keysOf(e){let t=e.aliases.length?[e.label,...e.aliases].join(`\0`):e.label,n=this.textKeys.get(t);return n||(n=pe(e.aliases.length?[e.label,...e.aliases]:[e.label]),this.textKeys.set(t,n)),n}candidates(e,t,n,r){let i=`${e}${t}\u0000${n}`,a=this.membersOf(i,e,t,n);if(a.length<=Rn)return a;let o=this.names.get(i);if(!o){o=new Map;for(let e of a){let t=this.graph.nodes.get(e);if(t)for(let n of this.keysOf(t))O(o,n,e)}this.names.set(i,o)}let s=new Set;for(let e of r){let t=o.get(e);if(t&&t.length<=zn)for(let e of t)s.add(e)}return[...s]}membersOf(e,t,n,r){let i=this.members.get(e);if(!i){let a=(t===`<`?this.graph.incoming:this.graph.outgoing).get(r)??[],o=new Set;for(let e of a){let r=this.graph.edges.get(e);r?.predicate===n&&o.add(t===`<`?r.source:r.target)}i=[...o],this.members.set(e,i)}return i}},Vn=class{graph;set;constructor(e){this.graph=e}has(e,t,n){let r=a(e,t,n);if(this.graph.edgeIdentity===`structure`)return this.graph.edges.has(r);if(!this.set){this.set=new Set;for(let e of this.graph.edges.values())this.set.add(a(e.source,e.predicate,e.target))}return this.set.has(r)}}}));function Un(e,t){return t===`id`&&e.id!==void 0?`ei${e.id}`:`et${a(e.source,e.predicate??``,e.target)}`}function Wn(e,t){switch(e.op){case`node.rekey`:return{reads:[`n${e.from}`,`n${e.to}`],writes:[`n${e.from}`,`n${e.to}`]};case`node.remove`:return{reads:[`n${e.node.id}`,`i${e.node.id}`],writes:[`n${e.node.id}`]};case`node.add`:return{reads:[`n${e.node.id}`],writes:[`n${e.node.id}`]};case`node.set`:case`node.attr`:return{reads:[`n${e.id}`],writes:[]};case`edge.remove`:{let n=Un(e.edge,t);return{reads:[`n${e.edge.source}`,`n${e.edge.target}`,n],writes:[n,`i${e.edge.source}`,`i${e.edge.target}`]}}case`edge.add`:{let n=Un(e.edge,t);return{reads:[`n${e.edge.source}`,`n${e.edge.target}`,n],writes:[n]}}case`edge.set`:case`edge.attr`:return{reads:[`n${e.edge.source}`,`n${e.edge.target}`,Un(e.edge,t)],writes:[]};default:return e}}function Gn(e,t,n){let r=new Map,i=new Map,a=new Map,o=new Map,s=(e,t)=>{e!==void 0&&t!==void 0&&t!==e&&D(r,e,()=>new Set).add(t)};return e.forEach((e,r)=>{let c=t[r],{reads:l,writes:u}=Wn(e,n);for(let e of l)if(e.charCodeAt(0)===105)for(let t of o.get(e)??[])s(c,t);else s(c,i.get(e)),c!==void 0&&D(a,e,()=>new Set).add(c);for(let e of u)if(e.charCodeAt(0)===105)c!==void 0&&D(o,e,()=>new Set).add(c);else{s(c,i.get(e));for(let t of a.get(e)??[])s(c,t);a.delete(e),i.set(e,c)}}),r}function Kn(e,t){let n=new Map,r=new Map,i=new Set,a=[],o=[],s=0;for(let c of e){if(n.has(c))continue;let e=[],l=o=>{n.set(o,s),r.set(o,s),s++,a.push(o),i.add(o),e.push({id:o,next:[...t.get(o)??[]].sort(),at:0})};for(l(c);e.length;){let t=e[e.length-1];if(t.at<t.next.length){let e=t.next[t.at++];n.has(e)?i.has(e)&&r.set(t.id,Math.min(r.get(t.id),n.get(e))):l(e);continue}e.pop();let s=e[e.length-1];if(s&&r.set(s.id,Math.min(r.get(s.id),r.get(t.id))),r.get(t.id)===n.get(t.id)){let e=[],n;do n=a.pop(),i.delete(n),e.push(n);while(n!==t.id);o.push(e)}}}return o}function qn(e,t,n,r,i,a){let o=new Map(e.map(e=>[e.id,e])),s=new Map;for(let e of i)s.set(e.id,e.after?.label??e.before?.label??e.id);let c=e=>e.nodes.length+e.edges.length,l=(e,t)=>Yn[e.phase]-Yn[t.phase]||c(t)-c(e)||w(s.get(e.anchor)??e.anchor,s.get(t.anchor)??t.anchor)||w(e.id,t.id),u=Gn(t,n,r),d=e.map(e=>e.id).sort(),f=new Map;for(let e of Kn(d,u)){if(e.length<2)continue;let t=e.map(e=>o.get(e)).sort(l),n=t[0].id;for(let e of t)f.set(e.id,n)}let p=[...e],m=[...n];if(f.size>0){p=Jn(e,f,i,a),m=n.map(e=>e===void 0?e:f.get(e)??e);let t=new Map;for(let[e,n]of u){let r=f.get(e)??e;for(let e of n){let n=f.get(e)??e;n!==r&&D(t,r,()=>new Set).add(n)}}u=t}let h=new Map,g=new Map;for(let e of p){let t=u.get(e.id)??new Set;h.set(e.id,t.size);for(let n of t)O(g,n,e.id)}let _=new Map(p.map(e=>[e.id,e])),v=new Xn((e,t)=>l(e,t)<0);for(let e of p)h.get(e.id)===0&&v.push(e);let y=new Map;m.forEach((e,t)=>{e!==void 0&&O(y,e,t)});let b=[];for(;v.size;){let e=v.pop();b.push({id:e.id,kind:e.kind,phase:e.phase,anchor:e.anchor,nodes:e.nodes,edges:e.edges,context:e.context,ops:y.get(e.id)??[],requires:[...u.get(e.id)??[]].sort(),summary:e.summary,order:b.length});for(let t of g.get(e.id)??[]){let e=h.get(t)-1;h.set(t,e),e===0&&v.push(_.get(t))}}return{hunks:b,opHunks:m}}function Jn(e,t,n,r){let i=new Map;for(let n of e)O(i,t.get(n.id)??n.id,n);for(let e of n)e.hunk!==void 0&&t.has(e.hunk)&&(e.hunk=t.get(e.hunk));for(let e of r)e.hunk!==void 0&&t.has(e.hunk)&&(e.hunk=t.get(e.hunk));let a=[];for(let[e,t]of i){let n=t.find(t=>t.id===e);if(t.length===1){a.push(n);continue}let r=new Set(t.flatMap(e=>e.nodes)),i=[...r].filter(e=>e!==n.anchor).sort(),o=r.has(n.anchor)?[n.anchor,...i]:i,s=[...new Set(t.flatMap(e=>e.edges))].sort(),c=[...new Set(t.flatMap(e=>e.context))].filter(e=>!r.has(e)).sort(),l=new Set(t.flatMap(e=>e.summary.facets)),u=e=>t.reduce((t,n)=>t+e(n),0);a.push({...n,nodes:o,edges:s,context:c,summary:{nodes:{added:u(e=>e.summary.nodes.added),removed:u(e=>e.summary.nodes.removed),modified:u(e=>e.summary.nodes.modified)},edges:{added:u(e=>e.summary.edges.added),removed:u(e=>e.summary.edges.removed),modified:u(e=>e.summary.edges.modified)},facets:jt.filter(e=>l.has(e))}})}return a}var Yn,Xn,Zn=t((()=>{x(),z(),j(),Yn={remove:0,restructure:1,modify:2,add:3},Xn=class{less;items=[];constructor(e){this.less=e}get size(){return this.items.length}push(e){let t=this.items;t.push(e);for(let e=t.length-1;e>0;){let n=e-1>>1;if(!this.less(t[e],t[n]))break;[t[e],t[n]]=[t[n],t[e]],e=n}}pop(){let e=this.items,t=e[0],n=e.pop();if(e.length>0&&n!==void 0){e[0]=n;for(let t=0;;){let n=2*t+1,r=n+1,i=t;if(n<e.length&&this.less(e[n],e[i])&&(i=n),r<e.length&&this.less(e[r],e[i])&&(i=r),i===t)break;[e[t],e[i]]=[e[i],e[t]],t=i}}return t}}}));function Qn(e,t,n,r,i){let a=er(),o=er(),s=Object.fromEntries(jt.map(e=>[e,0])),c=new Map,l=e=>{if(e.length!==0)for(let t of new Set(e.map(e=>e.kind)))s[t]++};for(let e of n){a[e.status]++,l(e.facets);let t=(e.after??e.before)?.types[0]??``;D(c,t,er)[e.status]++}for(let e of r)o[e.status]++,l(e.facets);let u=Object.fromEntries($n.map(e=>[e,0]));for(let e of i)u[e.kind]++;let d=e=>e.added+e.removed+e.modified,f=[...c].map(([e,t])=>({type:e,...t})).sort((e,t)=>d(t)-d(e)||w(e.type,t.type));return{nodes:a,edges:o,before:{nodes:e.nodes.size,edges:e.edges.size},after:{nodes:t.nodes.size,edges:t.edges.size},facets:s,hunks:u,byType:f,identical:d(a)+d(o)===0}}var $n,er,tr=t((()=>{z(),j(),$n=[`add`,`remove`,`merge`,`split`,`modify`,`relations`],er=()=>({added:0,removed:0,modified:0,unchanged:0})}));function nr(e,t,n){let r=e.after??e.before,i={id:e.id,status:e.status,facets:e.facets,label:r.label,types:r.types,degree:{before:re(t,e.beforeId),after:re(n,e.afterId)}};return e.beforeId!==void 0&&(i.beforeId=e.beforeId),e.afterId!==void 0&&(i.afterId=e.afterId),e.before&&(i.before=e.before),e.after&&(i.after=e.after),e.hunk!==void 0&&(i.hunk=e.hunk),i}function rr(e){let t={id:e.id,source:e.source,target:e.target,predicate:e.predicate,label:e.label,status:e.status,facets:e.facets,hierarchical:e.hierarchical};return e.sourceBefore!==void 0&&(t.sourceBefore=e.sourceBefore),e.targetBefore!==void 0&&(t.targetBefore=e.targetBefore),e.predicateBefore!==void 0&&(t.predicateBefore=e.predicateBefore),e.beforeKey!==void 0&&(t.beforeKey=e.beforeKey),e.afterKey!==void 0&&(t.afterKey=e.afterKey),e.before&&(t.before=e.before),e.after&&(t.after=e.after),e.hunk!==void 0&&(t.hunk=e.hunk),t}function ir(...e){let t=new Map;for(let n of e)for(let e of n){let n=`${e.before}\u0000${e.after}`,r=t.get(n);(!r||e.score>r.score)&&t.set(n,e)}return Sn([...t.values()])}function ar(e,t){return ut(e)?Et(e,t):dt(e,{edgeIdentity:t})}function or(e,t,n){let r=new Set(n.ignoreAttrs),i=new Ee,a=bn(e,t,n.match,r,i),o=jn(e,t,a,n,i,r),s=Mt(e,t,a.beforeToAfter),c={before:e,after:t,options:n,hierarchy:new Set(n.hierarchyPredicates),ignoreAttrs:r,beforeToAfter:a.beforeToAfter,afterToBefore:a.afterToBefore,inferred:a.inferred,restructuring:o,renamed:s,unionOfBefore:s.size?e=>s.get(e)??e:e=>e},{nodes:l,index:u}=Bt(c),d=Kt(c,u),f=Qt(c,l,d),{delta:p,opHunks:m}=wt(c,l,d),{hunks:h}=qn(f,p.ops,m,n.edgeIdentity,l,d),g=l.map(n=>nr(n,e,t)),_=d.map(rr);return{before:e,after:t,options:n,nodes:g,edges:_,hunks:h,matches:[...a.inferred.values()].sort((e,t)=>w(e.after,t.after)),suggestions:ir(a.suggestions,o.suggestions),delta:p,stats:Qn(e,t,l,d,h),index:Ht(g,_,h)}}function sr(e,t,n){let r=n;n?.edgeIdentity===void 0&&ut(e)&&ut(t)&&e.edgeIdentity===t.edgeIdentity&&(r={...n,edgeIdentity:e.edgeIdentity});let i=Ge(r);return or(ar(e,i.edgeIdentity),ar(t,i.edgeIdentity),i)}var cr=t((()=>{Vt(),kt(),Wt(),Yt(),rn(),Tn(),Hn(),vt(),Ye(),Zn(),tr(),P(),j()})),lr=t((()=>{}));function ur(e,t,n){return sr(e,t,n)}var dr=t((()=>{cr(),C(),Ye(),lr()}));function fr(e){let t=+this._x.call(null,e),n=+this._y.call(null,e);return pr(this.cover(t,n),t,n,e)}function pr(e,t,n,r){if(isNaN(t)||isNaN(n))return e;var i,a=e._root,o={data:r},s=e._x0,c=e._y0,l=e._x1,u=e._y1,d,f,p,m,h,g,_,v;if(!a)return e._root=o,e;for(;a.length;)if((h=t>=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f,i=a,!(a=a[_=g<<1|h]))return i[_]=o,e;if(p=+e._x.call(null,a.data),m=+e._y.call(null,a.data),t===p&&n===m)return o.next=a,i?i[_]=o:e._root=o,e;do i=i?i[_]=[,,,,]:e._root=[,,,,],(h=t>=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f;while((_=g<<1|h)==(v=(m>=f)<<1|p>=d));return i[v]=a,i[_]=o,e}function mr(e){var t,n,r=e.length,i,a,o=Array(r),s=Array(r),c=1/0,l=1/0,u=-1/0,d=-1/0;for(n=0;n<r;++n)isNaN(i=+this._x.call(null,t=e[n]))||isNaN(a=+this._y.call(null,t))||(o[n]=i,s[n]=a,i<c&&(c=i),i>u&&(u=i),a<l&&(l=a),a>d&&(d=a));if(c>u||l>d)return this;for(this.cover(c,l).cover(u,d),n=0;n<r;++n)pr(this,o[n],s[n],e[n]);return this}var hr=t((()=>{}));function gr(e,t){if(isNaN(e=+e)||isNaN(t=+t))return this;var n=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(n))i=(n=Math.floor(e))+1,a=(r=Math.floor(t))+1;else{for(var o=i-n||1,s=this._root,c,l;n>e||e>=i||r>t||t>=a;)switch(l=(t<r)<<1|e<n,c=[,,,,],c[l]=s,s=c,o*=2,l){case 0:i=n+o,a=r+o;break;case 1:n=i-o,a=r+o;break;case 2:i=n+o,r=a-o;break;case 3:n=i-o,r=a-o}this._root&&this._root.length&&(this._root=s)}return this._x0=n,this._y0=r,this._x1=i,this._y1=a,this}var _r=t((()=>{}));function vr(){var e=[];return this.visit(function(t){if(!t.length)do e.push(t.data);while(t=t.next)}),e}var yr=t((()=>{}));function br(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}var xr=t((()=>{}));function W(e,t,n,r,i){this.node=e,this.x0=t,this.y0=n,this.x1=r,this.y1=i}var Sr=t((()=>{}));function Cr(e,t,n){var r,i=this._x0,a=this._y0,o,s,c,l,u=this._x1,d=this._y1,f=[],p=this._root,m,h;for(p&&f.push(new W(p,i,a,u,d)),n==null?n=1/0:(i=e-n,a=t-n,u=e+n,d=t+n,n*=n);m=f.pop();)if(!(!(p=m.node)||(o=m.x0)>u||(s=m.y0)>d||(c=m.x1)<i||(l=m.y1)<a)){if(p.length){var g=(o+c)/2,_=(s+l)/2;f.push(new W(p[3],g,_,c,l),new W(p[2],o,_,g,l),new W(p[1],g,s,c,_),new W(p[0],o,s,g,_)),(h=(t>=_)<<1|e>=g)&&(m=f[f.length-1],f[f.length-1]=f[f.length-1-h],f[f.length-1-h]=m)}else{var v=e-+this._x.call(null,p.data),y=t-+this._y.call(null,p.data),b=v*v+y*y;if(b<n){var x=Math.sqrt(n=b);i=e-x,a=t-x,u=e+x,d=t+x,r=p.data}}}return r}var wr=t((()=>{Sr()}));function Tr(e){if(isNaN(u=+this._x.call(null,e))||isNaN(d=+this._y.call(null,e)))return this;var t,n=this._root,r,i,a,o=this._x0,s=this._y0,c=this._x1,l=this._y1,u,d,f,p,m,h,g,_;if(!n)return this;if(n.length)for(;;){if((m=u>=(f=(o+c)/2))?o=f:c=f,(h=d>=(p=(s+l)/2))?s=p:l=p,t=n,!(n=n[g=h<<1|m]))return this;if(!n.length)break;(t[g+1&3]||t[g+2&3]||t[g+3&3])&&(r=t,_=g)}for(;n.data!==e;)if(i=n,!(n=n.next))return this;return(a=n.next)&&delete n.next,i?(a?i.next=a:delete i.next,this):t?(a?t[g]=a:delete t[g],(n=t[0]||t[1]||t[2]||t[3])&&n===(t[3]||t[2]||t[1]||t[0])&&!n.length&&(r?r[_]=n:this._root=n),this):(this._root=a,this)}function Er(e){for(var t=0,n=e.length;t<n;++t)this.remove(e[t]);return this}var Dr=t((()=>{}));function Or(){return this._root}var kr=t((()=>{}));function Ar(){var e=0;return this.visit(function(t){if(!t.length)do++e;while(t=t.next)}),e}var jr=t((()=>{}));function Mr(e){var t=[],n,r=this._root,i,a,o,s,c;for(r&&t.push(new W(r,this._x0,this._y0,this._x1,this._y1));n=t.pop();)if(!e(r=n.node,a=n.x0,o=n.y0,s=n.x1,c=n.y1)&&r.length){var l=(a+s)/2,u=(o+c)/2;(i=r[3])&&t.push(new W(i,l,u,s,c)),(i=r[2])&&t.push(new W(i,a,u,l,c)),(i=r[1])&&t.push(new W(i,l,o,s,u)),(i=r[0])&&t.push(new W(i,a,o,l,u))}return this}var Nr=t((()=>{Sr()}));function Pr(e){var t=[],n=[],r;for(this._root&&t.push(new W(this._root,this._x0,this._y0,this._x1,this._y1));r=t.pop();){var i=r.node;if(i.length){var a,o=r.x0,s=r.y0,c=r.x1,l=r.y1,u=(o+c)/2,d=(s+l)/2;(a=i[0])&&t.push(new W(a,o,s,u,d)),(a=i[1])&&t.push(new W(a,u,s,c,d)),(a=i[2])&&t.push(new W(a,o,d,u,l)),(a=i[3])&&t.push(new W(a,u,d,c,l))}n.push(r)}for(;r=n.pop();)e(r.node,r.x0,r.y0,r.x1,r.y1);return this}var Fr=t((()=>{Sr()}));function Ir(e){return e[0]}function Lr(e){return arguments.length?(this._x=e,this):this._x}var Rr=t((()=>{}));function zr(e){return e[1]}function Br(e){return arguments.length?(this._y=e,this):this._y}var Vr=t((()=>{}));function Hr(e,t,n){var r=new Ur(t??Ir,n??zr,NaN,NaN,NaN,NaN);return e==null?r:r.addAll(e)}function Ur(e,t,n,r,i,a){this._x=e,this._y=t,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Wr(e){for(var t={data:e.data},n=t;e=e.next;)n=n.next={data:e.data};return t}var G,Gr=t((()=>{hr(),_r(),yr(),xr(),wr(),Dr(),kr(),jr(),Nr(),Fr(),Rr(),Vr(),G=Hr.prototype=Ur.prototype,G.copy=function(){var e=new Ur(this._x,this._y,this._x0,this._y0,this._x1,this._y1),t=this._root,n,r;if(!t)return e;if(!t.length)return e._root=Wr(t),e;for(n=[{source:t,target:e._root=[,,,,]}];t=n.pop();)for(var i=0;i<4;++i)(r=t.source[i])&&(r.length?n.push({source:r,target:t.target[i]=[,,,,]}):t.target[i]=Wr(r));return e},G.add=fr,G.addAll=mr,G.cover=gr,G.data=vr,G.extent=br,G.find=Cr,G.remove=Tr,G.removeAll=Er,G.root=Or,G.size=Ar,G.visit=Mr,G.visitAfter=Pr,G.x=Lr,G.y=Br})),Kr=t((()=>{Gr()}));function qr(e,t){let n=t;for(;e[n]!==n;)n=e[n];let r=t;for(;e[r]!==n;){let t=e[r];e[r]=n,r=t}return n}function Jr(e,t,n){let r=qr(e,t),i=qr(e,n);r<i?e[i]=r:i<r&&(e[r]=i)}function Yr(e,t){let{n}=e,r=new Int32Array(n);for(let e=0;e<n;e++)r[e]=e;let i=e=>t===void 0||t[e]===1;for(let t=0;t<e.pairs.length;t+=2){let n=e.pairs[t],a=e.pairs[t+1];i(n)&&i(a)&&Jr(r,n,a)}for(let{mover:t,anchor:n}of e.partners)i(t)&&i(n)&&Jr(r,t,n);let a=new Map;for(let e=0;e<n;e++){if(!i(e))continue;let t=qr(r,e),n=a.get(t);n===void 0&&(n=[],a.set(t,n)),n.push(e)}return[...a.values()].sort((e,t)=>t.length-e.length||e[0]-t[0])}var Xr=t((()=>{}));function Zr(e,t,n){let r=0,i=0;if(ii(e)){let a=e;for(;a!==void 0;)r=Math.max(r,t[a.data]),i=Math.max(i,n[a.data]),a=a.next}else for(let a=0;a<4;a++){let o=e[a];o!==void 0&&(Zr(o,t,n),r=Math.max(r,o.mw??0),i=Math.max(i,o.mh??0))}e.mw=r,e.mh=i}function Qr(e,t,n,r){let i=Hr().x(e=>t[e]).y(e=>n[e]).addAll(e),a=i.root(),o=i.extent();if(a!==void 0&&o!==void 0)return Zr(a,r.halfWidth,r.halfHeight),{root:a,x0:o[0][0],y0:o[0][1],x1:o[1][0],y1:o[1][1]}}function $r(e,t,n,r,i,a,o,s,c){let{halfWidth:l,halfHeight:u}=i,d=ai,f=oi;for(let i=0;i<t;i++){if(c!==void 0&&!c[i])continue;let t=n[i],p=r[i],m=l[i]+a,h=u[i]+a;for(d.push(e.root),f.push(e.x0,e.y0,e.x1,e.y1);d.length>0;){let e=d.pop(),a=f.pop(),g=f.pop(),_=f.pop(),v=f.pop();if(ii(e)){let a=e;for(;a!==void 0;){let e=a.data;if(a=a.next,e===i||e<i&&(c===void 0||c[e]))continue;let o=n[e]-t,d=m+l[e]-Math.abs(o);if(d<=0)continue;let f=r[e]-p,g=h+u[e]-Math.abs(f);g<=0||s(i,e,d,g,o,f)}continue}let y=m+(e.mw??0)+o,b=h+(e.mh??0)+o;if(v>t+y||g<t-y||_>p+b||a<p-b)continue;let x=(v+g)/2,S=(_+a)/2,C=e[0],w=e[1],T=e[2],E=e[3];C!==void 0&&(d.push(C),f.push(v,_,x,S)),w!==void 0&&(d.push(w),f.push(x,_,g,S)),T!==void 0&&(d.push(T),f.push(v,S,x,a)),E!==void 0&&(d.push(E),f.push(x,S,g,a))}}}function ei(e){return{indices:Array.from({length:e},(e,t)=>t),cx:new Float64Array(e),cy:new Float64Array(e),posX:new Float64Array(e),negX:new Float64Array(e),posY:new Float64Array(e),negY:new Float64Array(e)}}function ti(e,t,n,r,i=ei(e.length)){let{cx:a,cy:o}=i,{invMass:s,offsetY:c}=t;for(let t of e)a[t.index]=t.x+t.vx,o[t.index]=t.y+t.vy+c[t.index];let l=Qr(i.indices,a,o,t);l!==void 0&&$r(l,e.length,a,o,t,n,0,(t,n,i,a,o,c)=>{let l=s[t]+s[n];if(l===0)return;let u=s[t]/l,d=s[n]/l,f=e[t],p=e[n];if(i<a){let e=(o<0?-i:i)*r;f.vx-=e*u,p.vx+=e*d}else{let e=(c<0?-a:a)*r;f.vy-=e*u,p.vy+=e*d}})}function ni(e,t,n,r,i){let a=e.length,o=ei(a),{cx:s,cy:c,posX:l,negX:u,posY:d,negY:f}=o,{invMass:p,offsetY:m}=t,h=p.every(e=>e>0),g=i??new Uint8Array(a).fill(1),_=new Uint8Array(a),v=new Float64Array(a),y=0,b,x=1/0,S=.02;for(let i=0;i<r;i++){for(let t of e)s[t.index]=t.x,c[t.index]=t.y+m[t.index];if(b===void 0||y>li){if(b=Qr(o.indices,s,c,t),b===void 0)return{passes:i,unresolved:new Uint8Array(a)};v.fill(0),y=0}l.fill(0),u.fill(0),d.fill(0),f.fill(0);let r=0;if($r(b,a,s,c,t,n,y,(e,t,n,i,a,o)=>{let s=p[e]+p[t];if(s===0)return;r++;let c=p[e]/s,m=p[t]/s;if(n<i){let r=n+S,i=a>0||a===0&&e<t,o=i?e:t,s=i?t:e;u[o]=Math.min(u[o],-r*(o===e?c:m)),l[s]=Math.max(l[s],r*(s===e?c:m))}else{let n=i+S,r=o>0||o===0&&e<t,a=r?e:t,s=r?t:e;f[a]=Math.min(f[a],-n*(a===e?c:m)),d[s]=Math.max(d[s],n*(s===e?c:m))}},g),r===0)return{passes:i,unresolved:new Uint8Array(a)};_.fill(0);for(let t of e){let e=t.index;if(l[e]!==0||u[e]!==0||d[e]!==0||f[e]!==0){let n=l[e]+u[e],r=d[e]+f[e];t.x+=n,t.y+=r,_[e]=1;let i=v[e]+Math.max(Math.abs(n),Math.abs(r));v[e]=i,i>y&&(y=i)}}[g,_]=[_,g],h&&r>a/2&&(i+1)%ci===0?(ri(e,1+Math.min(.25,.05*r/a)),g.fill(1),b=void 0,x=1/0):(i+1)%si===0&&(h&&r>.7*x&&(ri(e,1+Math.min(.15,Math.max(.03,.05*r/a))),g.fill(1),b=void 0),x=r)}return{passes:r,unresolved:g}}function ri(e,t){let n=0,r=0;for(let t of e)n+=t.x,r+=t.y;n/=e.length,r/=e.length;for(let i of e)i.x=n+(i.x-n)*t,i.y=r+(i.y-r)*t}var ii,ai,oi,si,ci,li,ui=t((()=>{Kr(),ii=e=>`data`in e,ai=[],oi=[],si=8,ci=3,li=8}));function di(e,t,n,r,i,a,o){let{halfWidth:s,halfHeight:c,offsetY:l}=t,u=[];for(let t of e){let e=t.index;if(e===r||Math.abs(t.x-i)>o+s[r]+s[e]+n)continue;let d=t.y+l[e]-(a+l[r]);Math.abs(d)>o+c[r]+c[e]+n||u.push(t)}return u}function fi(e,t,n,r,i,a,o){let{halfWidth:s,halfHeight:c,offsetY:l}=t,u=a+l[r];for(let t of e){let e=t.index;if(!(e===r||o!==void 0&&!o(e))&&!(Math.abs(t.x-i)>=s[r]+s[e]+n)&&!(Math.abs(t.y+l[e]-u)>=c[r]+c[e]+n))return!1}return!0}function pi(e,t,n,r,i){let{halfWidth:a,halfHeight:o,offsetY:s,invMass:c}=n,l=e=>s[e]-o[e],u=e=>s[e]+o[e],d=r+.05,f=new Set,p=e=>c[e]===0||f.has(e);for(let{mover:o,anchor:s}of t){let t=e[o],c=e[s];if(t===void 0||c===void 0||p(o))continue;let m=J(t.x,t.y,c.x,c.y);if(m<=i)continue;let h=(a[s]+a[o]+d)*q[q.length-1],g=(Math.max(u(s)-l(o),u(o)-l(s))+d)*q[q.length-1],_=di(e,n,r,o,c.x,c.y,Math.max(h,g)),v,y;for(let e of q)for(let[i,f]of _i){let h=i===0?1/0:(a[s]+a[o]+d)/Math.abs(i),g=f===0?1/0:f>0?(u(s)+d-l(o))/f:(u(o)+d-l(s))/-f,b=Math.min(h,g)*e,x=c.x+i*b,S=c.y+f*b,C=J(x,S,c.x,c.y);if(C>=m)continue;let w=C+.3*J(x,S,t.x,t.y);fi(_,n,r,o,x,S)?(v===void 0||w<v.score-1e-9)&&(v={x,y:S,score:w}):(y===void 0||w<y.score-1e-9)&&fi(_,n,r,o,x,S,p)&&(y={x,y:S,score:w})}let b=vi*i,x=y!==void 0&&(v===void 0||y.score+b<v.score)?y:v;x!==void 0&&(t.x=x.x,t.y=x.y,t.vx=0,t.vy=0,f.add(o),f.add(s))}return[...f].sort((e,t)=>e-t)}function mi(e,t,n,r){let{halfHeight:i,invMass:a}=t;for(let o of e){let s=o.index;if(a[s]===0||fi(di(e,t,n,s,o.x,o.y,0),t,n,s,o.x,o.y))continue;let c=r(s),l=Math.max(12,i[s]+n),u=[];for(let r=1;r<=yi;r++){(r-1)%8==0&&(u=di(e,t,n,s,c.x,c.y,l*(r+7)*Math.SQRT2));let i,a=(e,r)=>{let a=J(e,r,c.x,c.y);i!==void 0&&a>=i.d-1e-9||fi(u,t,n,s,e,r)&&(i={x:e,y:r,d:a})},d=r*l;for(let e=-r;e<=r;e++)a(c.x+e*l,c.y-d),a(c.x+e*l,c.y+d);for(let e=1-r;e<r;e++)a(c.x-d,c.y+e*l),a(c.x+d,c.y+e*l);if(i!==void 0){o.x=i.x,o.y=i.y;break}}}}var hi,gi,K,_i,q,vi,yi,J,bi=t((()=>{hi=.9238795325112867,gi=.3826834323650898,K=Math.SQRT1_2,_i=[[0,1],[gi,hi],[K,K],[hi,gi],[1,0],[hi,-.3826834323650898],[K,-K],[gi,-.9238795325112867],[0,-1],[-.3826834323650898,-.9238795325112867],[-K,-K],[-.9238795325112867,-.3826834323650898],[-1,0],[-.9238795325112867,gi],[-K,K],[-.3826834323650898,hi]],q=[1,1.35,1.7,2.1,2.6],vi=.4,yi=32,J=(e,t,n,r)=>Math.sqrt((e-n)*(e-n)+(t-r)*(t-r))}));function xi(e){let t=Math.round(e*100)/100;return t===0?0:t}function Si(e){if(!(e>0))return-1/0;if(e===1/0)return e;let t=e,n=0;for(;t>=2;)t/=2,n++;for(;t<1;)t*=2,n--;let r=(t-1)/(t+1),i=r*r,a=r,o=0;for(let e=1;e<40;e+=2)o+=a/e,a*=i;return n+2*o/Math.LN2}function Ci(e,t){let n=1,r=e,i=t;for(;i>0;)i&1&&(n*=r),r*=r,i>>>=1;return n}function wi(e,t){if(t<=0||e>=1)return 1;let n=0,r=1;for(let i=0;i<64;i++){let i=(n+r)/2;Ci(i,t)<e?n=i:r=i}return(n+r)/2}function Ti(e,t){let n=Math.abs(e)+Math.abs(t);if(n===0)return 0;let r=e/n;return t>=0?1-r:3+r}function Ei(e,t){let n=Math.abs(e-t);return n>2?4-n:n}var Di,Y=t((()=>{Di=(e,t,n)=>Math.min(n,Math.max(t,e))}));function Oi(e,t){return e*(1+.15*Si(1+t))}function ki(e,t,n,r,i){let a=1/Math.max(1,Math.min(e.degree[t],e.degree[n]));if(!i)return a;let o=Math.max(e.crowding[t],e.crowding[n]),s=Ii*r;return o>s?a*s/o:a}function Ai(e,t,n,r){let i=n/Ni,a=-(220+40*Math.sqrt(e.degree[t]))*i*i;if(!r)return a;let o=e.boxArea[t]/(Fi*n*n);return a*Math.min(Pi,Math.max(1,o))}function ji(e){let t=Math.max(1,e/16);if(t<=Ri)return Li/Math.sqrt(t);let n=t/Ri;return Li/Math.sqrt(Ri)/(Math.sqrt(n)*Math.sqrt(Math.sqrt(n)))}function Mi(e,t){return e>=.5?900:Math.min(900,4*t)}var Ni,Pi,Fi,Ii,Li,Ri,zi=t((()=>{Y(),Ni=56,Pi=3,Fi=1.5,Ii=2,Li=.3,Ri=25}));function Bi(e,t,n,r,i){let a=t.boxHalfWidth[n];e.minX=Math.min(e.minX,r-a),e.maxX=Math.max(e.maxX,r+a),e.minY=Math.min(e.minY,i+t.boxTop[n]),e.maxY=Math.max(e.maxY,i+t.boxBottom[n])}function Vi(e,t,n,r){let i=Ui();for(let a of t)Bi(i,e,a,n[a],r[a]);return i}function Hi(e){if(Wi(e))return Object.freeze({x:0,y:0,width:0,height:0});let t=Gi(e.minX),n=Gi(e.minY);return Object.freeze({x:t,y:n,width:Math.round((Ki(e.maxX)-t)*100)/100,height:Math.round((Ki(e.maxY)-n)*100)/100})}var Ui,Wi,Gi,Ki,qi=t((()=>{Ui=()=>({minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}),Wi=e=>!(e.maxX>=e.minX),Gi=e=>Math.floor(e*100)/100||0,Ki=e=>Math.ceil(e*100)/100||0}));function Ji(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}function Yi(e,t=0){let n=(2166136261^t)>>>0;for(let t=0;t<e.length;t++)n^=e.charCodeAt(t),n=Math.imul(n,16777619);return n^=n>>>16,n=Math.imul(n,2246822507),n^=n>>>13,n=Math.imul(n,3266489909),n^=n>>>16,n>>>0}function Xi(e){return Number.isInteger(e)?e>>>0:Yi(String(e))}function Zi(e,t){return Ji(Yi(t,e))}function Qi(e){for(let t=0;t<32;t++){let t=e()*2-1,n=e()*2-1,r=t*t+n*n;if(r>1e-4&&r<=1){let e=Math.sqrt(r);return{x:t/e,y:n/e}}}return{x:1,y:0}}var $i=t((()=>{}));function ea(e){let t=Array.from({length:e.n},()=>[]);for(let{mover:n,anchor:r}of e.partners)t[n].push(r),t[r].push(n);for(let e of t)e.sort((e,t)=>e-t);return t}function ta(e,t,n,r){for(let t=e.offsets[n];t<e.offsets[n+1];t++)r(e.adjacency[t]);for(let e of t[n])r(e)}function na(e,t,n,r,i,a,o,s){let c=n[0];if(c===void 0)return;for(let t of n)e.degree[t]>e.degree[c]&&(c=t);let l=Qi(i),u=l.x,d=l.y,f=r*.3,p=1;a[c]=1,o[c]=0,s[c]=0;let m=[c];for(;m.length>0;){let n=[],c=[];for(let r of m){let i=[];ta(e,t,r,e=>{a[e]||(a[e]=1,i.push(e))}),i.sort((t,n)=>e.degree[n]-e.degree[t]||t-n);let l=Ti(o[r],s[r]);for(let e of i)n.push(e),c.push(l)}if(n.length===0)break;let l=[];for(let e=0;e<n.length;e++,p++){let e=r*Math.sqrt(p);l.push({x:e*u,y:e*d,angle:Ti(u,d)});let t=u*aa-d*oa;d=u*oa+d*aa,u=t}l.sort((e,t)=>e.angle-t.angle);let h=n.length,g=Math.max(1,Math.ceil(h/sa)),_=0,v=1/0;for(let e=0;e<h;e+=g){let t=0;for(let n=0;n<h;n++)t+=Ei(c[n],l[(n+e)%h].angle);t<v&&(v=t,_=e)}for(let e=0;e<h;e++){let t=n[e],r=l[(e+_)%h];o[t]=r.x+(i()-.5)*f,s[t]=r.y+(i()-.5)*f}m=n.map(e=>({v:e,angle:Ti(o[e],s[e])})).sort((e,t)=>e.angle-t.angle||e.v-t.v).map(e=>e.v)}}function ra(e,t,n,r,i,a,o,s){let c=n=>{let i=!1;return ta(e,t,n,e=>{r[e]&&(i=!0)}),i},l=n.filter(e=>!r[e]&&c(e));for(;l.length>0;){let n=l.map(n=>ia(e,t,n,r,i,a,o,s)),c=new Set;for(let e=0;e<l.length;e++){let t=l[e],o=n[e];i[t]=o.x,a[t]=o.y,r[t]=1}for(let n of l)ta(e,t,n,e=>{r[e]||c.add(e)});l=[...c].sort((e,t)=>e-t)}}function ia(e,t,n,r,i,a,o,s){let c=Zi(s,e.nodes[n].id),l=e=>{let t=0,n=0;for(let r of e)t+=i[r],n+=a[r];return{x:t/e.length,y:n/e.length}},u=t[n].filter(e=>r[e]);if(u.length>0){let e=l(u),t=Qi(c);return{x:e.x+t.x*o*.5,y:e.y+t.y*o*.5}}let d=[];for(let t=e.offsets[n];t<e.offsets[n+1];t++){let n=e.adjacency[t];r[n]&&d.push(n)}if(d.length>=2){let e=l(d),t=Qi(c);return{x:e.x+t.x*o*.25,y:e.y+t.y*o*.25}}let f=d[0],p=[];for(let t=e.offsets[f];t<e.offsets[f+1];t++){let i=e.adjacency[t];i!==n&&r[i]&&p.push(i)}let m=0,h=0;if(p.length>0){let e=l(p);m=i[f]-e.x,h=a[f]-e.y}let g=Math.sqrt(m*m+h*h);if(g<1e-9){let e=Qi(c);m=e.x,h=e.y}else m/=g,h/=g;let _=(c()*2-1)*.82,v=Math.sqrt(1-_*_),y=m*v-h*_,b=m*_+h*v;return{x:i[f]+y*o,y:a[f]+b*o}}var aa,oa,sa,ca=t((()=>{Y(),$i(),aa=-.7373688780783197,oa=.6754902942615238,sa=48}));function la(e,t,n){throw new S(`invalid-input`,`Invalid layout option ${e}: expected ${n}, got ${String(t)}`,{option:e,value:t})}function X(e,t,n,r,i){return t===void 0?n:((typeof t!=`number`||Number.isNaN(t)||!r(t))&&la(e,t,i),t)}function ua(e={}){let{strategy:t,scope:n}=e;t!==void 0&&t!==`union`&&t!==`anchored`&&la(`strategy`,t,`'union' or 'anchored'`),n!==void 0&&n!==`all`&&n!==`changes`&&la(`scope`,n,`'all' or 'changes'`);let r=Number.isFinite,i=e.pinned??new Map;for(let[e,t]of i)t&&r(t.x)&&r(t.y)||la(`pinned[${e}]`,JSON.stringify(t),`a finite point`);let a=e.iterations===void 0?void 0:X(`iterations`,e.iterations,0,e=>Number.isInteger(e)&&e>=0,`an integer ≥ 0`);return{strategy:t,scope:n,contextHops:X(`contextHops`,e.contextHops,Z.contextHops,e=>Number.isInteger(e)&&e>=0,`an integer ≥ 0`),hubDegree:X(`hubDegree`,e.hubDegree,Z.hubDegree,e=>e>=0,`a number ≥ 0`),largeGraphThreshold:X(`largeGraphThreshold`,e.largeGraphThreshold,Z.largeGraphThreshold,e=>e>=0,`a number ≥ 0`),seed:Xi(X(`seed`,e.seed,Z.seed,r,`a finite number`)),iterations:a,linkDistance:X(`linkDistance`,e.linkDistance,Z.linkDistance,e=>r(e)&&e>0,`a finite number > 0`),labelAware:e.labelAware??Z.labelAware,fontSize:X(`fontSize`,e.fontSize,Z.fontSize,e=>r(e)&&e>0,`a finite number > 0`),pinned:i,componentGap:X(`componentGap`,e.componentGap,Z.componentGap,e=>r(e)&&e>=0,`a finite number ≥ 0`)}}function da(e){return e>fa?Math.max(pa,Math.round(120*fa/e)):Di(Math.round(300-25*Si(Math.max(1,e))),120,300)}var Z,fa,pa,ma=t((()=>{dr(),Y(),$i(),Z={contextHops:1,hubDegree:40,largeGraphThreshold:3e3,seed:1,linkDistance:56,labelAware:!0,fontSize:12,componentGap:96},fa=2e3,pa=30}));function ha(e,t,n){let r=Array(e.length),i=[{x:0,y:0,w:n}],a=0,o=0,s=1e-9;for(let c of t){let{width:t,height:l}=e[c],u=1/0,d=0;for(let e=0;e<i.length;e++){let r=i[e].x;if(r+t>n+s&&r>0)break;let a=0,o=0;for(let n=e;n<i.length&&o<t-s;n++)a=Math.max(a,i[n].y),o=i[n].x+i[n].w-r;a<u-s&&(u=a,d=r)}r[c]={x:d,y:u},a=Math.max(a,d+t),o=Math.max(o,u+l);let f=d,p=d+t,m=[];for(let e of i){let t=e.x+e.w;t<=f+s||e.x>=p-s?m.push(e):(e.x<f&&m.push({x:e.x,y:e.y,w:f-e.x}),t>p&&m.push({x:p,y:e.y,w:t-p}))}m.push({x:f,y:u+l,w:t}),m.sort((e,t)=>e.x-t.x),i=[];for(let e of m){let t=i[i.length-1];t!==void 0&&Math.abs(t.y-e.y)<s?t.w=e.x+e.w-t.x:i.push({...e})}}return{positions:r,width:a,height:o}}function ga(e,t,n,r){let i=e.length;if(i===0)return{centers:[],width:0,height:0};let a=n=>{let r=t*(n-1);for(let t=0;t<n;t++){let a=0;for(let r=t;r<i;r+=n)a=Math.max(a,2*e[r].halfWidth);r+=a}return r},o=1;for(;o<i&&a(o+1)<=r;)o++;let s=[];for(let t=0;t<o;t++){let n=0;for(let r=t;r<i;r+=o)n=Math.max(n,2*e[r].halfWidth);s.push(n)}let c=[],l=0;for(let e of s)c.push(l+e/2),l+=e+t;let u=l-t,d=Array(i),f=0;for(let t=0;t*o<i;t++){let r=0,a=0;for(let n=t*o;n<Math.min(i,(t+1)*o);n++)r=Math.max(r,-e[n].top),a=Math.max(a,e[n].bottom);for(let e=t*o;e<Math.min(i,(t+1)*o);e++)d[e]={x:c[e-t*o],y:f+r};f+=r+a+n}return{centers:d,width:u,height:f-n}}function _a(e){let t=e.aspect??1.6,n=e.componentGap,r=e.components.map(e=>({width:e.width+n,height:e.height+n})),i=r.map((e,t)=>t).sort((e,t)=>r[t].height-r[e].height||r[t].width-r[e].width||e-t),a=0,o=0;for(let e of r)a+=e.width*e.height,o=Math.max(o,e.width);for(let t of e.isolated)a+=(2*t.halfWidth+e.gridGapX)*(t.bottom-t.top+e.gridGapY),o=Math.max(o,2*t.halfWidth);let s=Math.sqrt(a*t),c,l=1/0,u=new Set;for(let a of va){let d=Math.max(o,s*a);if(u.has(d))continue;u.add(d);let f=ha(r,i,d),p=f.width>0?f.width-n:0,m=f.height>0?f.height-n:0,h=ga(e.isolated,e.gridGapX,e.gridGapY,Math.max(d-n,p)),g=m>0&&h.height>0?m+n:0,_=Math.max(p,h.width),v=h.height>0?g+h.height:m,y=ya(_,v,t);y<l-1e-6&&(l=y,c={components:f.positions,isolated:h.centers.map(e=>({x:e.x,y:e.y+g})),width:_,height:v})}return c??{components:[],isolated:[],width:0,height:0}}var va,ya,ba=t((()=>{va=[.55,.7,.85,1,1.15,1.3,1.5,1.75,2],ya=(e,t,n)=>{let r=Math.max(e,t*n);return r/n*r}}));function Q(e){return function(){return e}}var xa=t((()=>{}));function $(e){return(e()-.5)*1e-6}var Sa=t((()=>{}));function Ca(e){return e.index}function wa(e,t){var n=e.get(t);if(!n)throw Error(`node not found: `+t);return n}function Ta(e){var t=Ca,n=d,r,i=Q(30),a,o,s,c,l,u=1;e??=[];function d(e){return 1/Math.min(s[e.source.index],s[e.target.index])}function f(t){for(var n=0,i=e.length;n<u;++n)for(var o=0,s,d,f,p,m,h,g;o<i;++o)s=e[o],d=s.source,f=s.target,p=f.x+f.vx-d.x-d.vx||$(l),m=f.y+f.vy-d.y-d.vy||$(l),h=Math.sqrt(p*p+m*m),h=(h-a[o])/h*t*r[o],p*=h,m*=h,f.vx-=p*(g=c[o]),f.vy-=m*g,d.vx+=p*(g=1-g),d.vy+=m*g}function p(){if(o){var n,i=o.length,l=e.length,u=new Map(o.map((e,n)=>[t(e,n,o),e])),d;for(n=0,s=Array(i);n<l;++n)d=e[n],d.index=n,typeof d.source!=`object`&&(d.source=wa(u,d.source)),typeof d.target!=`object`&&(d.target=wa(u,d.target)),s[d.source.index]=(s[d.source.index]||0)+1,s[d.target.index]=(s[d.target.index]||0)+1;for(n=0,c=Array(l);n<l;++n)d=e[n],c[n]=s[d.source.index]/(s[d.source.index]+s[d.target.index]);r=Array(l),m(),a=Array(l),h()}}function m(){if(o)for(var t=0,i=e.length;t<i;++t)r[t]=+n(e[t],t,e)}function h(){if(o)for(var t=0,n=e.length;t<n;++t)a[t]=+i(e[t],t,e)}return f.initialize=function(e,t){o=e,l=t,p()},f.links=function(t){return arguments.length?(e=t,p(),f):e},f.id=function(e){return arguments.length?(t=e,f):t},f.iterations=function(e){return arguments.length?(u=+e,f):u},f.strength=function(e){return arguments.length?(n=typeof e==`function`?e:Q(+e),m(),f):n},f.distance=function(e){return arguments.length?(i=typeof e==`function`?e:Q(+e),h(),f):i},f}var Ea=t((()=>{xa(),Sa()}));function Da(e){return e.x}function Oa(e){return e.y}var ka=t((()=>{Math.PI*(3-Math.sqrt(5))}));function Aa(){var e,t,n,r,i=Q(-30),a,o=1,s=1/0,c=.81;function l(n){var i,a=e.length,o=Hr(e,Da,Oa).visitAfter(d);for(r=n,i=0;i<a;++i)t=e[i],o.visit(f)}function u(){if(e){var t,n=e.length,r;for(a=Array(n),t=0;t<n;++t)r=e[t],a[r.index]=+i(r,t,e)}}function d(e){var t=0,n,r,i=0,o,s,c;if(e.length){for(o=s=c=0;c<4;++c)(n=e[c])&&(r=Math.abs(n.value))&&(t+=n.value,i+=r,o+=r*n.x,s+=r*n.y);e.x=o/i,e.y=s/i}else{n=e,n.x=n.data.x,n.y=n.data.y;do t+=a[n.data.index];while(n=n.next)}e.value=t}function f(e,i,l,u){if(!e.value)return!0;var d=e.x-t.x,f=e.y-t.y,p=u-i,m=d*d+f*f;if(p*p/c<m)return m<s&&(d===0&&(d=$(n),m+=d*d),f===0&&(f=$(n),m+=f*f),m<o&&(m=Math.sqrt(o*m)),t.vx+=d*e.value*r/m,t.vy+=f*e.value*r/m),!0;if(!(e.length||m>=s)){(e.data!==t||e.next)&&(d===0&&(d=$(n),m+=d*d),f===0&&(f=$(n),m+=f*f),m<o&&(m=Math.sqrt(o*m)));do e.data!==t&&(p=a[e.data.index]*r/m,t.vx+=d*p,t.vy+=f*p);while(e=e.next)}}return l.initialize=function(t,r){e=t,n=r,u()},l.strength=function(e){return arguments.length?(i=typeof e==`function`?e:Q(+e),u(),l):i},l.distanceMin=function(e){return arguments.length?(o=e*e,l):Math.sqrt(o)},l.distanceMax=function(e){return arguments.length?(s=e*e,l):Math.sqrt(s)},l.theta=function(e){return arguments.length?(c=e*e,l):Math.sqrt(c)},l}var ja=t((()=>{Kr(),xa(),Sa(),ka()})),Ma=t((()=>{Kr(),xa(),Sa(),Ea(),ja(),ka()}));function Na(e,t,n,r,i){let a=.2;for(let{mover:o,anchor:s}of t){let t=e[o],c=e[s];if(t===void 0||c===void 0)continue;let l=c.x+c.vx-t.x-t.vx,u=c.y+c.vy-t.y-t.vy,d=Math.sqrt(l*l+u*u);if(d<=i)continue;let f=(d-i)/d*n*r;t.vx+=l*f*.8,t.vy+=u*f*.8,c.vx-=l*f*a,c.vy-=u*f*a}}function Pa(e,t,n){let r=n*t;for(let t of e)t.vx-=t.x*r,t.vy-=t.y*r}var Fa=t((()=>{}));function Ia(e){let{nodes:t,ticks:n}=e,r=t.length;if(r===0)return 0;if(n>0){let i=Ta(e.links).distance(e=>e.distance).strength(e=>e.strength);i.initialize(t,e.random);let a=Aa().strength(t=>e.charge[t.index]??0).theta(.9).distanceMax(e.chargeRange);a.initialize(t,e.random);let o=wi(Va/e.alpha,n),s=Math.round(n*Ua),c=Math.max(1,Math.round(n*Wa)),l=La(e.nodeBoxes),u=ei(r),d=e.alpha;for(let r=0;r<n;r++){d*=o,i(d),a(d),e.springs.length>0&&Na(t,e.springs,d,e.springStrength,e.springLength),e.gravity>0&&Pa(t,d,e.gravity);let n=e.nodeBoxes;if(r>=s){let t=Math.min(1,(r-s+1)/c);n=t>=1?e.labelBoxes:Ra(e.nodeBoxes,e.labelBoxes,Ga+.5*t,l)}n!==void 0&&ti(t,n,e.padding,Ka,u);for(let e of t)e.fx==null?(e.vx*=Ha,e.x+=e.vx):(e.x=e.fx,e.vx=0),e.fy==null?(e.vy*=Ha,e.y+=e.vy):(e.y=e.fy,e.vy=0);r+1===s&&(e.orient&&za(t),Ba(t,e.labelBoxes,e.padding,qa))}}let i=ni(t,e.labelBoxes,e.padding,Ja),a=i.passes;if(e.springs.length>0&&e.dockDistance>0){let n=pi(t,e.springs,e.labelBoxes,e.padding,e.dockDistance);if(n.length>0){let r=Float64Array.from(e.labelBoxes.invMass),o=Uint8Array.from(i.unresolved);for(let e of n)r[e]=0,o[e]=1;let s=ni(t,{...e.labelBoxes,invMass:r},e.padding,Ja,o),c=Uint8Array.from(s.unresolved);for(let e of n)c[e]=1;a+=s.passes,a+=ni(t,e.labelBoxes,e.padding,Ja,c).passes}}return a}function La(e){let t=e.halfWidth.length;return{halfWidth:new Float64Array(t),halfHeight:new Float64Array(t),offsetY:new Float64Array(t),invMass:e.invMass}}function Ra(e,t,n,r){let i=e.halfWidth.length;for(let a=0;a<i;a++){let i=e.offsetY[a]-e.halfHeight[a],o=e.offsetY[a]+e.halfHeight[a],s=o+(t.offsetY[a]+t.halfHeight[a]-o)*n;r.halfWidth[a]=e.halfWidth[a]+(t.halfWidth[a]-e.halfWidth[a])*n,r.halfHeight[a]=(s-i)/2,r.offsetY[a]=(s+i)/2}return r}function za(e){let t=0,n=0;for(let r of e)t+=r.x,n+=r.y;t/=e.length,n/=e.length;let r=0,i=0,a=0;for(let o of e){let e=o.x-t,s=o.y-n;r+=e*e,i+=s*s,a+=e*s}let o=(r-i)/2,s=(r+i)/2+Math.sqrt(o*o+a*a),c=a,l=s-r;Math.abs(c)+Math.abs(l)<1e-12*(r+i+1)&&(c=s-i,l=a);let u=Math.sqrt(c*c+l*l),d=u>0?c/u:1,f=u>0?l/u:0,p=0,m=0;for(let r of e){let e=r.x-t,i=r.y-n,a=d*e+f*i,o=-f*e+d*i;r.x=a,r.y=o;let s=d*r.vx+f*r.vy;r.vy=-f*r.vx+d*r.vy,r.vx=s,p+=a*a*a,m+=o*o*o}let h=p<0?-1:1,g=m<0?-1:1;if(h!==1||g!==1)for(let t of e)t.x*=h,t.vx*=h,t.y*=g,t.vy*=g}function Ba(e,t,n,r){if(e.length<3||t.invMass.some(e=>e===0))return;let i=1/0,a=1/0,o=-1/0,s=-1/0,c=0,l=0,u=0;for(let r of e)i=Math.min(i,r.x),o=Math.max(o,r.x),a=Math.min(a,r.y),s=Math.max(s,r.y),l+=r.x,u+=r.y,c+=(2*t.halfWidth[r.index]+n)*(2*t.halfHeight[r.index]+n);let d=Math.max(1,o-i)*Math.max(1,s-a),f=c/(r*d);if(f<=1)return;let p=Math.sqrt(f);l/=e.length,u/=e.length;for(let t of e)t.x=l+(t.x-l)*p,t.y=u+(t.y-u)*p}var Va,Ha,Ua,Wa,Ga,Ka,qa,Ja,Ya=t((()=>{Ma(),ui(),bi(),Fa(),Y(),Va=.001,Ha=.6,Ua=.35,Wa=.25,Ga=.5,Ka=.7,qa=.4,Ja=150}));function Xa(e){let t=uo(e),n=Yr(e.graph),r=$a(e,t,n),i=n.flat(),a=Vi(e.graph,i,e.x,e.y);return Wi(a)||eo(e,i,-(a.minX+a.maxX)/2,-(a.minY+a.maxY)/2),r.ticks}function Za(e,t){let{graph:n}=e,r=uo(e),i=Yr(n),a=[],o=[];for(let e of i)(e.some(e=>t[e]===1)?a:o).push(e);let s=a.flat().sort((e,t)=>e-t),c=Uint8Array.from(t);ra(n,r.partners,s,c,e.x,e.y,e.options.linkDistance,e.options.seed);let l=s.filter(e=>t[e]!==1),u=0,d=0;if(l.length>0){let n=l.length/s.length,i=Qa(e,s,l,t);u=fo(e,i.length),d=i.length,ro(e,r,i,t,u,.3+.7*n,!1,0,Mi(n,e.options.linkDistance)),io(e,s,t)}if(o.length>0){let t=$a(e,r,o);t.largest>d&&(u=t.ticks);let i=Vi(n,s,e.x,e.y),a=o.flat(),c=e.options.componentGap,l={dx:i.maxX+c,dy:i.minY},f={dx:i.minX,dy:i.maxY+c},p=(e,n)=>{let r=Math.max(i.maxX,e+t.width)-Math.min(i.minX,e),a=Math.max(i.maxY,n+t.height)-Math.min(i.minY,n),o=Math.max(r,a*co);return o*o},m=p(f.dx,f.dy)<p(l.dx,l.dy)-1e-6?f:l;eo(e,a,m.dx,m.dy)}return u}function Qa(e,t,n,r){let{graph:i,x:a,y:o}=e;if(n.length*2>=t.length)return[...t];let s=new Uint8Array(i.n),c=4*e.options.linkDistance;for(let e of n){c=Math.max(c,2*i.boxHalfWidth[e],2*i.boxBottom[e]),s[e]=1;for(let t=i.offsets[e];t<i.offsets[e+1];t++)s[i.adjacency[t]]=1}let l=Hr().x(e=>a[e]).y(e=>o[e]).addAll(t.filter(e=>r[e]===1));for(let e of n){let t=a[e]-c,n=a[e]+c,r=o[e]-c,i=o[e]+c;l.visit((e,c,l,u,d)=>{if(!e.length){let c=e;for(;c!==void 0;){let e=c.data;a[e]>=t&&a[e]<=n&&o[e]>=r&&o[e]<=i&&(s[e]=1),c=c.next}}return c>n||u<t||l>i||d<r})}return t.filter(e=>s[e]===1)}function $a(e,t,n){let{graph:r,x:i,y:a,options:o}=e,s=new Uint8Array(r.n),c=[],l=[],u=[],d=0,f=0;for(let p of n){if(p.length===1){l.push(p[0]);continue}na(r,t.partners,p,o.linkDistance*so,t.random,s,i,a);let n=fo(e,p.length);p.length>f&&(f=p.length,d=n),ro(e,t,p,void 0,n,1,!0,ji(p.length),900),c.push(p),u.push(Vi(r,p,i,a))}l.sort((e,t)=>e-t);let p=_a({components:u.map(e=>({width:e.maxX-e.minX,height:e.maxY-e.minY})),isolated:l.map(e=>({halfWidth:r.boxHalfWidth[e],top:r.boxTop[e],bottom:r.boxBottom[e]})),componentGap:o.componentGap,gridGapX:o.fontSize*1.5,gridGapY:o.fontSize,aspect:co});for(let t=0;t<c.length;t++){let n=p.components[t],r=u[t];eo(e,c[t],n.x-r.minX,n.y-r.minY)}for(let e=0;e<l.length;e++){let t=l[e],n=p.isolated[e];i[t]=n.x,a[t]=n.y}return{width:p.width,height:p.height,ticks:d,largest:f}}function eo(e,t,n,r){for(let i of t)e.x[i]+=n,e.y[i]+=r}function to(e,t,n){let{graph:r,x:i,y:a,options:o}=e,s=t.length,c={halfWidth:new Float64Array(s),halfHeight:new Float64Array(s),offsetY:new Float64Array(s),invMass:new Float64Array(s)},l=o.labelAware?{halfWidth:new Float64Array(s),halfHeight:new Float64Array(s),offsetY:new Float64Array(s),invMass:c.invMass}:c,u=new Float64Array(s),d=[];for(let e=0;e<s;e++){let s=t[e],f=r.radius[s],p=n!==void 0&&n[s]===1,m={index:e,x:i[s],y:a[s],vx:0,vy:0};p&&(m.fx=m.x,m.fy=m.y),d.push(m),c.halfWidth[e]=f,c.halfHeight[e]=f,c.invMass[e]=p?0:1/(1+r.degree[s]),l!==c&&(l.halfWidth[e]=r.boxHalfWidth[s],l.halfHeight[e]=(r.boxBottom[s]-r.boxTop[s])/2,l.offsetY[e]=(r.boxBottom[s]+r.boxTop[s])/2),u[e]=Ai(r,s,o.linkDistance,o.labelAware)}return{nodes:d,nodeBoxes:c,labelBoxes:l,charge:u}}function no(e,t,n){for(let r=0;r<t.length;r++){let i=n[r];i.fx??(e.x[t[r]]=i.x,e.y[t[r]]=i.y)}}function ro(e,t,n,r,i,a,o,s,c){let{graph:l,options:u}=e,{slot:d}=t;for(let e=0;e<n.length;e++)d[n[e]]=e;let{nodes:f,nodeBoxes:p,labelBoxes:m,charge:h}=to(e,n,r),g=e=>r!==void 0&&r[e]===1,_=u.linkDistance,v=[];for(let e=0;e<n.length;e++){let t=n[e];for(let n=l.offsets[t];n<l.offsets[t+1];n++){let r=l.adjacency[n],i=d[r];if(r<=t||i<0||g(t)&&g(r))continue;let a=Oi(_,Math.max(1,Math.min(l.degree[t],l.degree[r])));v.push({source:f[e],target:f[i],distance:a,strength:ki(l,t,r,a,u.labelAware)})}}let y=[];for(let{mover:e,anchor:t}of l.partners){let n=d[e],r=d[t];n>=0&&r>=0&&y.push({mover:n,anchor:r})}for(let e of n)d[e]=-1;Ia({nodes:f,links:v,springs:y,charge:h,nodeBoxes:p,labelBoxes:m,ticks:i,alpha:a,gravity:s,orient:o,springStrength:ao,springLength:_*oo,dockDistance:_,chargeRange:c,padding:4,random:t.random}),no(e,n,f)}function io(e,t,n){let{graph:r,x:i,y:a}=e,{nodes:o,labelBoxes:s}=to(e,t,n);ni(o,s,4,lo);let c=new Map;t.forEach((e,t)=>{c.set(e,t)}),mi(o,s,4,e=>{let n=t[e],s=0,l=0,u=0;for(let e=r.offsets[n];e<r.offsets[n+1];e++){let t=o[c.get(r.adjacency[e])??-1];t!==void 0&&(s+=t.x,l+=t.y,u++)}return u>0?{x:s/u,y:l/u}:{x:i[n],y:a[n]}}),no(e,t,o)}var ao,oo,so,co,lo,uo,fo,po=t((()=>{Kr(),Xr(),ui(),bi(),zi(),qi(),ca(),ma(),ba(),$i(),Ya(),ao=.08,oo=.5,so=.4,co=1.6,lo=24,uo=e=>({partners:ea(e.graph),slot:new Int32Array(e.graph.n).fill(-1),random:Ji(e.options.seed)}),fo=(e,t)=>e.options.iterations??da(t)}));function mo(e,t){let n=0,r=t.length-1;for(;n<=r;){let i=n+r>>>1,a=t[i];if(a===void 0)return!1;if(e<a[0])r=i-1;else if(e>a[1])n=i+1;else return!0}return!1}function ho(e){return e===32||e===9?Co:e<32||e===127?0:e>=48&&e<=57?bo:e>=65&&e<=90?xo:So}function go(e){let t=e.codePointAt(0)??0;return t<128?ho(t):Eo.test(e)||t>=127995&&t<=127999?0:t>=127462&&t<=127487?wo:mo(t,To)?yo:Do.test(e)?Co:Oo.test(e)?bo:ko.test(e)?xo:So}function _o(e,t){let n=0;for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<128){n+=ho(r);continue}let i=e.codePointAt(t)??r,a=String.fromCodePoint(i);i>65535&&t++,n+=go(a)}return n*t}function vo(e,t,n){let r=32*n,i=Math.min(r,_o(e,n)),a=Ao*n;if(t!==void 0&&t!==e){let e=n*Mo;i=Math.max(i,Math.min(r,_o(t,e))),a+=jo*n}return{width:i,height:a}}var yo,bo,xo,So,Co,wo,To,Eo,Do,Oo,ko,Ao,jo,Mo,No=t((()=>{yo=1,bo=.6,xo=.68,So=.56,Co=.3,wo=.5,To=[[4352,4447],[8986,8987],[9001,9002],[9193,9196],[9200,9200],[9203,9203],[9725,9726],[9728,10175],[11035,11036],[11088,11088],[11093,11093],[11904,12350],[12353,13311],[13312,19903],[19968,40959],[40960,42191],[43360,43391],[44032,55203],[63744,64255],[65040,65049],[65072,65135],[65280,65376],[65504,65510],[94176,101119],[110592,111359],[126980,126980],[127183,127183],[127374,127374],[127377,127386],[127488,127743],[127744,128591],[128640,128767],[128992,129003],[129280,129535],[129648,129791],[131072,196605],[196608,262141]],Eo=/[\p{Mn}\p{Me}\p{Cf}\p{Cc}]/u,Do=/\s/u,Oo=/\p{Nd}/u,ko=/\p{Lu}/u,Ao=1.25,jo=14/12,Mo=11/12}));function Po(e){for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(n!==void 0&&r!==void 0&&Lo(n.id,r.id)>0)return[...e].sort((e,t)=>Lo(e.id,t.id))}return e}function Fo(e,t){let n=new Int32Array(e+1);for(let e=0;e<t.length;e++)n[(t[e]??0)+1]++;for(let t=0;t<e;t++)n[t+1]+=n[t];let r=n.slice(0,e),i=new Int32Array(t.length);for(let e=0;e<t.length;e+=2){let n=t[e],a=t[e+1];i[r[n]++]=a,i[r[a]++]=n}for(let t=0;t<e;t++)i.subarray(n[t],n[t+1]).sort();return{offsets:n,adjacency:i}}function Io(e){let t=Po(e.nodes),n=t.length,r=new Map;for(let e=0;e<n;e++)r.set(t[e].id,e);let i=new Uint8Array(n);for(let e=0;e<n;e++)t[e].status!==`unchanged`&&(i[e]=1);let a=new Set,o=[],s=(e,t)=>{if(e===void 0||t===void 0||e===t)return;let r=e<t?e:t,i=e<t?t:e,s=r*n+i;a.has(s)||(a.add(s),o.push(r,i))};for(let t of Po(e.edges)){let e=r.get(t.source),n=r.get(t.target);s(e,n);let a=t.sourceBefore===void 0?e:r.get(t.sourceBefore),o=t.targetBefore===void 0?n:r.get(t.targetBefore);if((a!==e||o!==n)&&s(a,o),t.status!==`unchanged`)for(let t of[e,n,a,o])t!==void 0&&(i[t]=1)}let c=Int32Array.from(o),{offsets:l,adjacency:u}=Fo(n,c),d=[],f=new Set,p=(e,t)=>{if(t===void 0||t===e)return;let r=e*n+t;f.has(r)||(f.add(r),d.push({mover:e,anchor:t}))};for(let e=0;e<n;e++)for(let n of t[e].facets)if(n.kind===`mergedInto`)p(e,r.get(n.target));else if(n.kind===`splitFrom`)p(e,r.get(n.source));else if(n.kind===`mergeTarget`)for(let t of n.sources){let n=r.get(t);n!==void 0&&p(n,e)}else if(n.kind===`splitInto`)for(let t of n.targets){let n=r.get(t);n!==void 0&&p(n,e)}return d.sort((e,t)=>e.mover-t.mover||e.anchor-t.anchor),{nodes:t,indexOf:r,pairs:c,offsets:l,adjacency:u,partners:d,changed:i}}var Lo,Ro=t((()=>{Lo=(e,t)=>e<t?-1:+(e>t)}));function zo(e){for(let t of e.facets)if(t.kind===`rename`)return t.from}function Bo(e,t,n){let r=new Int32Array(e.nodes.length).fill(-1),i=[];for(let n=0;n<e.nodes.length;n++)t[n]&&(r[n]=i.length,i.push(e.nodes[n]));let a=i.length,o=new Map,s=new Float64Array(a),c=new Float64Array(a),l=new Float64Array(a),u=new Float64Array(a);for(let e=0;e<a;e++){let t=i[e];o.set(t.id,e);let r=n.nodeRadius(Math.max(t.degree.before,t.degree.after)),a=vo(t.label,zo(t),n.fontSize);s[e]=r,c[e]=Math.max(r,a.width/2),l[e]=-r,u[e]=r+5+a.height}let d=[];for(let t=0;t<e.pairs.length;t+=2){let n=r[e.pairs[t]],i=r[e.pairs[t+1]];n>=0&&i>=0&&d.push(Math.min(n,i),Math.max(n,i))}let f=Int32Array.from(d),{offsets:p,adjacency:m}=Fo(a,f),h=new Int32Array(a),g=new Float64Array(a);for(let e=0;e<a;e++)h[e]=p[e+1]-p[e],g[e]=(2*c[e]+4)*(u[e]-l[e]+4);let _=new Float64Array(a);for(let e=0;e<a;e++){let t=0;for(let n=p[e];n<p[e+1];n++)t+=g[m[n]];_[e]=Math.sqrt(t/Math.PI)}let v=[];for(let t of e.partners){let e=r[t.mover],n=r[t.anchor];e>=0&&n>=0&&v.push({mover:e,anchor:n})}return{n:a,nodes:i,indexOf:o,radius:s,boxHalfWidth:c,boxTop:l,boxBottom:u,boxArea:g,crowding:_,degree:h,pairs:f,offsets:p,adjacency:m,partners:v}}var Vo=t((()=>{qi(),No(),Ro()}));function Ho(e){let{graph:t}=e,n=new Float64Array(t.n),r=new Float64Array(t.n),i=Ui();for(let a=0;a<t.n;a++){let o=e.positions.get(t.nodes[a].id);o!==void 0&&(n[a]=o.x,r[a]=o.y,Bi(i,t,a,o.x,o.y))}let a=Yr(t).map(e=>Object.freeze({nodes:Object.freeze(e.map(e=>t.nodes[e].id)),bounds:Hi(Vi(t,e,n,r))})),o=Wo(e.positions);return Object.freeze({positions:o,radii:Wo(e.radii),bounds:Hi(i),scope:e.scope,hidden:Wo(e.hidden),components:Object.freeze(a),stats:Object.freeze({strategy:e.strategy,iterations:e.iterations,nodes:o.size,ms:Uo()-e.started})})}var Uo,Wo,Go=t((()=>{Xr(),qi(),Uo=()=>typeof performance==`object`&&typeof performance.now==`function`?performance.now():Date.now(),Wo=e=>new Map([...e].sort(([e],[t])=>e<t?-1:+(e>t)))}));function Ko(e,t,n,r){let i=e.nodes.length,a=new Uint8Array(i);if(t===`all`)return a.fill(1),{visible:a,hidden:new Map};let o=new Int32Array(i).fill(-1),s=[];for(let t=0;t<i;t++)e.nodes[t].status!==`unchanged`&&(o[t]=0,s.push(t));let c=[];for(let t=0;t<i;t++)e.changed[t]&&o[t]===-1&&(o[t]=1,c.push(t));for(let t=0;t<n;t++){let n=t===0?[...c]:[];for(let i of s){let{degree:a}=e.nodes[i];if(!(Math.max(a.before,a.after)>r))for(let r=e.offsets[i];r<e.offsets[i+1];r++){let i=e.adjacency[r];o[i]===-1&&(o[i]=t+1,n.push(i))}}s=n.sort((e,t)=>e-t)}for(let e=0;e<i;e++)o[e]>=0&&(a[e]=1);return{visible:a,hidden:qo(e,a)}}function qo(e,t){let n=new Map;for(let r=0;r<e.nodes.length;r++){if(!t[r])continue;let i=0;for(let n=e.offsets[r];n<e.offsets[r+1];n++)t[e.adjacency[n]]||i++;i>0&&n.set(e.nodes[r].id,i)}return n}var Jo=t((()=>{}));function Yo(e,t,n,r,i){let a=Uo(),o=ua(r),s=Io(e),c=new Set;for(let e of n){if(!s.indexOf.has(e))throw new S(`invalid-input`,`extendLayout: node "${e}" is not in the diff`,{node:e});t.positions.has(e)||c.add(e)}if(c.size===0)return t;let l=new Uint8Array(s.nodes.length);for(let e of t.positions.keys()){let t=s.indexOf.get(e);t!==void 0&&(l[t]=1)}for(let e of c)l[s.indexOf.get(e)]=1;let u=Bo(s,l,{fontSize:o.fontSize,nodeRadius:i}),d=new Uint8Array(u.n),f=new Float64Array(u.n),p=new Float64Array(u.n);for(let e=0;e<u.n;e++){let n=t.positions.get(u.nodes[e].id);n!==void 0&&(d[e]=1,f[e]=n.x,p[e]=n.y)}Za({graph:u,options:o,x:f,y:p},d);let m=new Map(t.positions),h=new Map(t.radii);for(let e of c){let t=u.indexOf.get(e);m.set(e,Object.freeze({x:xi(f[t]),y:xi(p[t])})),h.set(e,u.radius[t])}return Ho({graph:u,positions:m,radii:h,hidden:t.scope===`changes`?qo(s,l):t.hidden,scope:t.scope,strategy:t.stats.strategy,iterations:t.stats.iterations,started:a})}var Xo=t((()=>{dr(),po(),Vo(),Y(),ma(),Go(),Jo(),Ro()}));function Zo(e,t){let n=new Uint8Array(e.n),r=new Float64Array(e.n),i=new Float64Array(e.n),a=0;for(let o=0;o<e.n;o++){let s=e.nodes[o],c=[t.pinned.get(s.id),s.before?.position,s.after?.position].find($o);c!==void 0&&(n[o]=1,r[o]=c.x,i[o]=c.y,a++)}return{fixed:n,x:r,y:i,count:a}}function Qo(e,t,n){let r=Uo(),i=ua(t),a=Io(e),o=i.scope??(a.nodes.length>i.largeGraphThreshold?`changes`:`all`),s=Ko(a,o,i.contextHops,i.hubDegree),c=Bo(a,s.visible,{fontSize:i.fontSize,nodeRadius:n}),l=Zo(c,i),u=i.strategy??(l.count>0?`anchored`:`union`),d=u===`anchored`&&l.count>0,f={graph:c,options:i,x:d?l.x:new Float64Array(c.n),y:d?l.y:new Float64Array(c.n)},p=d?Za(f,l.fixed):Xa(f),m=new Map,h=new Map;for(let e=0;e<c.n;e++){let t=c.nodes[e].id,n=d&&l.fixed[e]===1,r=n?f.x[e]:xi(f.x[e]),i=n?f.y[e]:xi(f.y[e]);m.set(t,Object.freeze({x:r,y:i})),h.set(t,c.radius[e])}return Ho({graph:c,positions:m,radii:h,hidden:s.hidden,scope:o,strategy:u,iterations:p,started:r})}var $o,es=t((()=>{po(),Vo(),Y(),ma(),Go(),Jo(),Ro(),$o=e=>e!==void 0&&Number.isFinite(e.x)&&Number.isFinite(e.y)}));function ts(e,t){return Qo(e,t,rs)}function ns(e,t,n,r){return Yo(e,t,n,r,rs)}function rs(e){return Math.min(14,Math.max(4,4+2.2*Math.sqrt(Math.max(0,e))))}var is=t((()=>{Xo(),es()})),as=n({diff:()=>ur,extendLayout:()=>ns,layoutDiff:()=>ts});t((()=>{dr(),is()}))();var os=`KgdiffCompute`;globalThis[os]=as})();