diff --git a/lightrag/api/webui/assets/index-wQn2WOIs.js b/lightrag/api/webui/assets/index-rk_r9aLl.js similarity index 99% rename from lightrag/api/webui/assets/index-wQn2WOIs.js rename to lightrag/api/webui/assets/index-rk_r9aLl.js index 3ff28e37..b4ca7afe 100644 --- a/lightrag/api/webui/assets/index-wQn2WOIs.js +++ b/lightrag/api/webui/assets/index-rk_r9aLl.js @@ -1134,7 +1134,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho animation: pulse 2s infinite; border: 1px solid; } -`;function Tie(){const[e,t]=w.useState(!1),{t:n}=At(),r=Sr.use.health(),a=Sr.use.pipelineBusy(),[o,s]=w.useState(null),u=Le.use.currentTab(),c=Le.use.showFileName(),d=Le.use.setShowFileName(),p=w.useRef({processed:0,processing:0,pending:0,failed:0});w.useEffect(()=>{const b=document.createElement("style");return b.textContent=kie,document.head.appendChild(b),()=>{document.head.removeChild(b)}},[]),w.useEffect(()=>{if(!o)return;const b=v=>{const y=document.querySelector(".flex-1.relative.p-0");if(!y)return;const k=y.getBoundingClientRect(),A=k.top+k.height/2;document.querySelectorAll('.group:hover > div[class*="invisible group-hover:visible absolute"]').forEach(R=>{v.clientY>A?R.classList.add("tooltip-top"):R.classList.remove("tooltip-top")})};return document.addEventListener("mousemove",b),()=>{document.removeEventListener("mousemove",b)}},[o]);const g=w.useCallback(async()=>{var b,v,y,k,A,x,R,O;try{const C=await yV(),_={processed:((v=(b=C==null?void 0:C.statuses)==null?void 0:b.processed)==null?void 0:v.length)||0,processing:((k=(y=C==null?void 0:C.statuses)==null?void 0:y.processing)==null?void 0:k.length)||0,pending:((x=(A=C==null?void 0:C.statuses)==null?void 0:A.pending)==null?void 0:x.length)||0,failed:((O=(R=C==null?void 0:C.statuses)==null?void 0:R.failed)==null?void 0:O.length)||0};Object.keys(_).some(M=>_[M]!==p.current[M])&&Sr.getState().check(),p.current=_,C&&C.statuses&&Object.values(C.statuses).reduce((D,I)=>D+I.length,0)>0?s(C):s(null)}catch(C){Wt.error(n("documentPanel.documentManager.errors.loadFailed",{error:tr(C)}))}},[s,n]);w.useEffect(()=>{u==="documents"&&g()},[u,g]);const m=w.useCallback(async()=>{try{const{status:b}=await vV();Wt.message(b)}catch(b){Wt.error(n("documentPanel.documentManager.errors.scanFailed",{error:tr(b)}))}},[n]);return w.useEffect(()=>{if(u!=="documents"||!r)return;const b=setInterval(async()=>{try{await g()}catch(v){Wt.error(n("documentPanel.documentManager.errors.scanProgressFailed",{error:tr(v)}))}},5e3);return()=>clearInterval(b)},[r,g,n,u]),E.jsxs(Ps,{className:"!rounded-none !overflow-hidden flex flex-col h-full min-h-0",children:[E.jsx(Cu,{className:"py-2 px-6",children:E.jsx(Nu,{className:"text-lg",children:n("documentPanel.documentManager.title")})}),E.jsxs(Ou,{className:"flex-1 flex flex-col min-h-0 overflow-hidden",children:[E.jsxs("div",{className:"flex gap-2 mb-2",children:[E.jsxs("div",{className:"flex gap-2",children:[E.jsxs(pt,{variant:"outline",onClick:m,side:"bottom",tooltip:n("documentPanel.documentManager.scanTooltip"),size:"sm",children:[E.jsx(k3,{})," ",n("documentPanel.documentManager.scanButton")]}),E.jsxs(pt,{variant:"outline",onClick:()=>t(!0),side:"bottom",tooltip:n("documentPanel.documentManager.pipelineStatusTooltip"),size:"sm",className:Me(a&&"pipeline-busy"),children:[E.jsx(xZ,{})," ",n("documentPanel.documentManager.pipelineStatusButton")]})]}),E.jsx("div",{className:"flex-1"}),E.jsx(Eie,{}),E.jsx(Sie,{}),E.jsx(wie,{open:e,onOpenChange:t})]}),E.jsxs(Ps,{className:"flex-1 flex flex-col border rounded-md min-h-0 mb-0",children:[E.jsxs(Cu,{className:"flex-none py-2 px-4",children:[E.jsxs("div",{className:"flex justify-between items-center",children:[E.jsx(Nu,{children:n("documentPanel.documentManager.uploadedTitle")}),E.jsxs("div",{className:"flex items-center gap-2",children:[E.jsx("span",{className:"text-sm text-gray-500",children:n("documentPanel.documentManager.fileNameLabel")}),E.jsx(pt,{variant:"outline",size:"sm",onClick:()=>d(!c),className:"border-gray-200 dark:border-gray-700 hover:bg-gray-100 dark:hover:bg-gray-800",children:n(c?"documentPanel.documentManager.hideButton":"documentPanel.documentManager.showButton")})]})]}),E.jsx(Ap,{"aria-hidden":"true",className:"hidden",children:n("documentPanel.documentManager.uploadedDescription")})]}),E.jsxs(Ou,{className:"flex-1 relative p-0",children:[!o&&E.jsx("div",{className:"absolute inset-0 p-0",children:E.jsx(roe,{title:n("documentPanel.documentManager.emptyTitle"),description:n("documentPanel.documentManager.emptyDescription")})}),o&&E.jsx("div",{className:"absolute inset-0 flex flex-col p-0",children:E.jsx("div",{className:"w-full h-full flex flex-col rounded-lg border border-gray-200 dark:border-gray-700",children:E.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:E.jsxs(C5,{className:"w-full",children:[E.jsx(N5,{className:"sticky top-0 bg-background z-10 shadow-sm",children:E.jsxs(t0,{className:"border-b bg-card/95 backdrop-blur supports-[backdrop-filter]:bg-card/75 shadow-[inset_0_-1px_0_rgba(0,0,0,0.1)]",children:[E.jsx(wo,{children:n("documentPanel.documentManager.columns.id")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.summary")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.status")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.length")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.chunks")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.created")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.updated")})]})}),E.jsx(O5,{className:"text-sm overflow-auto",children:Object.entries(o.statuses).map(([b,v])=>v.map(y=>E.jsxs(t0,{children:[E.jsx(xo,{className:"truncate font-mono overflow-visible",children:c?E.jsxs(E.Fragment,{children:[E.jsxs("div",{className:"group relative overflow-visible",children:[E.jsx("div",{className:"truncate",children:xie(y,35)}),E.jsx("div",{className:"invisible group-hover:visible absolute z-[9999] mt-1 max-w-[800px] whitespace-normal break-all rounded-md bg-black/95 px-3 py-2 text-sm text-white shadow-lg dark:bg-white/95 dark:text-black",children:y.file_path})]}),E.jsx("div",{className:"text-xs text-gray-500",children:y.id})]}):E.jsxs("div",{className:"group relative overflow-visible",children:[E.jsx("div",{className:"truncate",children:y.id}),E.jsx("div",{className:"invisible group-hover:visible absolute z-[9999] mt-1 max-w-[800px] whitespace-normal break-all rounded-md bg-black/95 px-3 py-2 text-sm text-white shadow-lg dark:bg-white/95 dark:text-black",children:y.file_path})]})}),E.jsx(xo,{className:"max-w-xs min-w-24 truncate overflow-visible",children:E.jsxs("div",{className:"group relative overflow-visible",children:[E.jsx("div",{className:"truncate",children:y.content_summary}),E.jsx("div",{className:"invisible group-hover:visible absolute z-[9999] mt-1 max-w-[800px] whitespace-normal break-all rounded-md bg-black/95 px-3 py-2 text-sm text-white shadow-lg dark:bg-white/95 dark:text-black",children:y.content_summary})]})}),E.jsxs(xo,{children:[b==="processed"&&E.jsx("span",{className:"text-green-600",children:n("documentPanel.documentManager.status.completed")}),b==="processing"&&E.jsx("span",{className:"text-blue-600",children:n("documentPanel.documentManager.status.processing")}),b==="pending"&&E.jsx("span",{className:"text-yellow-600",children:n("documentPanel.documentManager.status.pending")}),b==="failed"&&E.jsx("span",{className:"text-red-600",children:n("documentPanel.documentManager.status.failed")}),y.error&&E.jsx("span",{className:"ml-2 text-red-500",title:y.error,children:"⚠️"})]}),E.jsx(xo,{children:y.content_length??"-"}),E.jsx(xo,{children:y.chunks_count??"-"}),E.jsx(xo,{className:"truncate",children:new Date(y.created_at).toLocaleString()}),E.jsx(xo,{className:"truncate",children:new Date(y.updated_at).toLocaleString()})]},y.id)))})]})})})})]})]})]})]})}function oG(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a=u?a=a+WO("0",s-u):a=(a.substring(0,s)||"0")+"."+a.substring(s),n+a}function YO(e,t,n){if(["","-"].indexOf(e)!==-1)return e;var r=(e.indexOf(".")!==-1||n)&&t,a=BT(e),o=a.beforeDecimal,s=a.afterDecimal,u=a.hasNegation,c=parseFloat("0."+(s||"0")),d=s.length<=t?"0."+s:c.toFixed(t),p=d.split("."),g=o;o&&Number(p[0])&&(g=o.split("").reverse().reduce(function(y,k,A){return y.length>A?(Number(y[0])+Number(k)).toString()+y.substring(1,y.length):k+y},p[0]));var m=lG(p[1]||"",t,n),b=u?"-":"",v=r?".":"";return""+b+g+v+m}function di(e,t){if(e.value=e.value,e!==null){if(e.createTextRange){var n=e.createTextRange();return n.move("character",t),n.select(),!0}return e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}var cG=Aie(function(e,t){for(var n=0,r=0,a=e.length,o=t.length;e[n]===t[n]&&nn&&a-r>n;)r++;return{from:{start:n,end:a-r},to:{start:n,end:o-r}}}),Die=function(e,t){var n=Math.min(e.selectionStart,t);return{from:{start:n,end:e.selectionEnd},to:{start:n,end:t}}};function Iie(e,t,n){return Math.min(Math.max(e,t),n)}function cb(e){return Math.max(e.selectionStart,e.selectionEnd)}function Lie(){return typeof navigator<"u"&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function Mie(e){return{from:{start:0,end:0},to:{start:0,end:e.length},lastValue:""}}function Pie(e){var t=e.currentValue,n=e.formattedValue,r=e.currentValueIndex,a=e.formattedValueIndex;return t[r]===n[a]}function Fie(e,t,n,r,a,o,s){s===void 0&&(s=Pie);var u=a.findIndex(function(O){return O}),c=e.slice(0,u);!t&&!n.startsWith(c)&&(t=c,n=c+n,r=r+c.length);for(var d=n.length,p=e.length,g={},m=new Array(d),b=0;b0&&m[A]===-1;)A--;var R=A===-1||m[A]===-1?0:m[A]+1;return R>x?x:r-R=0&&!n[t];)t--;t===-1&&(t=n.indexOf(!0))}else{for(;t<=a&&!n[t];)t++;t>a&&(t=n.lastIndexOf(!0))}return t===-1&&(t=a),t}function zie(e){for(var t=Array.from({length:e.length+1}).map(function(){return!0}),n=0,r=t.length;nN.length-s.length||_H||g>e.length-s.length)&&(I=g),e=e.substring(0,I),e=Gie(R?"-"+e:e,a),e=(e.match(Hie(v))||[]).join("");var $=e.indexOf(v);e=e.replace(new RegExp(sG(v),"g"),function(j,z){return z===$?".":""});var U=BT(e,a),W=U.beforeDecimal,Q=U.afterDecimal,G=U.addNegation;return d.end-d.start{const b=document.createElement("style");return b.textContent=kie,document.head.appendChild(b),()=>{document.head.removeChild(b)}},[]),w.useEffect(()=>{if(!o)return;const b=v=>{const y=document.querySelector(".flex-1.relative.p-0");if(!y)return;const k=y.getBoundingClientRect(),A=k.top+k.height/2;document.querySelectorAll('.group:hover > div[class*="invisible group-hover:visible absolute"]').forEach(R=>{v.clientY>A?R.classList.add("tooltip-top"):R.classList.remove("tooltip-top")})};return document.addEventListener("mousemove",b),()=>{document.removeEventListener("mousemove",b)}},[o]);const g=w.useCallback(async()=>{var b,v,y,k,A,x,R,O;try{const C=await yV(),_={processed:((v=(b=C==null?void 0:C.statuses)==null?void 0:b.processed)==null?void 0:v.length)||0,processing:((k=(y=C==null?void 0:C.statuses)==null?void 0:y.processing)==null?void 0:k.length)||0,pending:((x=(A=C==null?void 0:C.statuses)==null?void 0:A.pending)==null?void 0:x.length)||0,failed:((O=(R=C==null?void 0:C.statuses)==null?void 0:R.failed)==null?void 0:O.length)||0};Object.keys(_).some(M=>_[M]!==p.current[M])&&Sr.getState().check(),p.current=_,C&&C.statuses&&Object.values(C.statuses).reduce((D,I)=>D+I.length,0)>0?s(C):s(null)}catch(C){Wt.error(n("documentPanel.documentManager.errors.loadFailed",{error:tr(C)}))}},[s,n]);w.useEffect(()=>{u==="documents"&&g()},[u,g]);const m=w.useCallback(async()=>{try{const{status:b}=await vV();Wt.message(b)}catch(b){Wt.error(n("documentPanel.documentManager.errors.scanFailed",{error:tr(b)}))}},[n]);return w.useEffect(()=>{if(u!=="documents"||!r)return;const b=setInterval(async()=>{try{await g()}catch(v){Wt.error(n("documentPanel.documentManager.errors.scanProgressFailed",{error:tr(v)}))}},5e3);return()=>clearInterval(b)},[r,g,n,u]),E.jsxs(Ps,{className:"!rounded-none !overflow-hidden flex flex-col h-full min-h-0",children:[E.jsx(Cu,{className:"py-2 px-6",children:E.jsx(Nu,{className:"text-lg",children:n("documentPanel.documentManager.title")})}),E.jsxs(Ou,{className:"flex-1 flex flex-col min-h-0 overflow-hidden",children:[E.jsxs("div",{className:"flex gap-2 mb-2",children:[E.jsxs("div",{className:"flex gap-2",children:[E.jsxs(pt,{variant:"outline",onClick:m,side:"bottom",tooltip:n("documentPanel.documentManager.scanTooltip"),size:"sm",children:[E.jsx(k3,{})," ",n("documentPanel.documentManager.scanButton")]}),E.jsxs(pt,{variant:"outline",onClick:()=>t(!0),side:"bottom",tooltip:n("documentPanel.documentManager.pipelineStatusTooltip"),size:"sm",className:Me(a&&"pipeline-busy"),children:[E.jsx(xZ,{})," ",n("documentPanel.documentManager.pipelineStatusButton")]})]}),E.jsx("div",{className:"flex-1"}),E.jsx(Eie,{}),E.jsx(Sie,{}),E.jsx(wie,{open:e,onOpenChange:t})]}),E.jsxs(Ps,{className:"flex-1 flex flex-col border rounded-md min-h-0 mb-0",children:[E.jsxs(Cu,{className:"flex-none py-2 px-4",children:[E.jsxs("div",{className:"flex justify-between items-center",children:[E.jsx(Nu,{children:n("documentPanel.documentManager.uploadedTitle")}),E.jsxs("div",{className:"flex items-center gap-2",children:[E.jsx("span",{className:"text-sm text-gray-500",children:n("documentPanel.documentManager.fileNameLabel")}),E.jsx(pt,{variant:"outline",size:"sm",onClick:()=>d(!c),className:"border-gray-200 dark:border-gray-700 hover:bg-gray-100 dark:hover:bg-gray-800",children:n(c?"documentPanel.documentManager.hideButton":"documentPanel.documentManager.showButton")})]})]}),E.jsx(Ap,{"aria-hidden":"true",className:"hidden",children:n("documentPanel.documentManager.uploadedDescription")})]}),E.jsxs(Ou,{className:"flex-1 relative p-0",children:[!o&&E.jsx("div",{className:"absolute inset-0 p-0",children:E.jsx(roe,{title:n("documentPanel.documentManager.emptyTitle"),description:n("documentPanel.documentManager.emptyDescription")})}),o&&E.jsx("div",{className:"absolute inset-0 flex flex-col p-0",children:E.jsx("div",{className:"w-full h-full flex flex-col rounded-lg border border-gray-200 dark:border-gray-700",children:E.jsx("div",{className:"flex-1 overflow-hidden flex flex-col",children:E.jsxs(C5,{className:"w-full",style:{minHeight:"calc(100% - 10px)"},children:[E.jsx(N5,{className:"sticky top-0 bg-background z-10 shadow-sm",children:E.jsxs(t0,{className:"border-b bg-card/95 backdrop-blur supports-[backdrop-filter]:bg-card/75 shadow-[inset_0_-1px_0_rgba(0,0,0,0.1)]",children:[E.jsx(wo,{children:n("documentPanel.documentManager.columns.id")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.summary")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.status")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.length")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.chunks")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.created")}),E.jsx(wo,{children:n("documentPanel.documentManager.columns.updated")})]})}),E.jsx(O5,{className:"text-sm overflow-auto",children:Object.entries(o.statuses).map(([b,v])=>v.map(y=>E.jsxs(t0,{children:[E.jsx(xo,{className:"truncate font-mono overflow-visible",children:c?E.jsxs(E.Fragment,{children:[E.jsxs("div",{className:"group relative overflow-visible",children:[E.jsx("div",{className:"truncate",children:xie(y,35)}),E.jsx("div",{className:"invisible group-hover:visible absolute z-[9999] mt-1 max-w-[800px] whitespace-normal break-all rounded-md bg-black/95 px-3 py-2 text-sm text-white shadow-lg dark:bg-white/95 dark:text-black",children:y.file_path})]}),E.jsx("div",{className:"text-xs text-gray-500",children:y.id})]}):E.jsxs("div",{className:"group relative overflow-visible",children:[E.jsx("div",{className:"truncate",children:y.id}),E.jsx("div",{className:"invisible group-hover:visible absolute z-[9999] mt-1 max-w-[800px] whitespace-normal break-all rounded-md bg-black/95 px-3 py-2 text-sm text-white shadow-lg dark:bg-white/95 dark:text-black",children:y.file_path})]})}),E.jsx(xo,{className:"max-w-xs min-w-24 truncate overflow-visible",children:E.jsxs("div",{className:"group relative overflow-visible",children:[E.jsx("div",{className:"truncate",children:y.content_summary}),E.jsx("div",{className:"invisible group-hover:visible absolute z-[9999] mt-1 max-w-[800px] whitespace-normal break-all rounded-md bg-black/95 px-3 py-2 text-sm text-white shadow-lg dark:bg-white/95 dark:text-black",children:y.content_summary})]})}),E.jsxs(xo,{children:[b==="processed"&&E.jsx("span",{className:"text-green-600",children:n("documentPanel.documentManager.status.completed")}),b==="processing"&&E.jsx("span",{className:"text-blue-600",children:n("documentPanel.documentManager.status.processing")}),b==="pending"&&E.jsx("span",{className:"text-yellow-600",children:n("documentPanel.documentManager.status.pending")}),b==="failed"&&E.jsx("span",{className:"text-red-600",children:n("documentPanel.documentManager.status.failed")}),y.error&&E.jsx("span",{className:"ml-2 text-red-500",title:y.error,children:"⚠️"})]}),E.jsx(xo,{children:y.content_length??"-"}),E.jsx(xo,{children:y.chunks_count??"-"}),E.jsx(xo,{className:"truncate",children:new Date(y.created_at).toLocaleString()}),E.jsx(xo,{className:"truncate",children:new Date(y.updated_at).toLocaleString()})]},y.id)))})]})})})})]})]})]})]})}function oG(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a=u?a=a+WO("0",s-u):a=(a.substring(0,s)||"0")+"."+a.substring(s),n+a}function YO(e,t,n){if(["","-"].indexOf(e)!==-1)return e;var r=(e.indexOf(".")!==-1||n)&&t,a=BT(e),o=a.beforeDecimal,s=a.afterDecimal,u=a.hasNegation,c=parseFloat("0."+(s||"0")),d=s.length<=t?"0."+s:c.toFixed(t),p=d.split("."),g=o;o&&Number(p[0])&&(g=o.split("").reverse().reduce(function(y,k,A){return y.length>A?(Number(y[0])+Number(k)).toString()+y.substring(1,y.length):k+y},p[0]));var m=lG(p[1]||"",t,n),b=u?"-":"",v=r?".":"";return""+b+g+v+m}function di(e,t){if(e.value=e.value,e!==null){if(e.createTextRange){var n=e.createTextRange();return n.move("character",t),n.select(),!0}return e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}var cG=Aie(function(e,t){for(var n=0,r=0,a=e.length,o=t.length;e[n]===t[n]&&nn&&a-r>n;)r++;return{from:{start:n,end:a-r},to:{start:n,end:o-r}}}),Die=function(e,t){var n=Math.min(e.selectionStart,t);return{from:{start:n,end:e.selectionEnd},to:{start:n,end:t}}};function Iie(e,t,n){return Math.min(Math.max(e,t),n)}function cb(e){return Math.max(e.selectionStart,e.selectionEnd)}function Lie(){return typeof navigator<"u"&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function Mie(e){return{from:{start:0,end:0},to:{start:0,end:e.length},lastValue:""}}function Pie(e){var t=e.currentValue,n=e.formattedValue,r=e.currentValueIndex,a=e.formattedValueIndex;return t[r]===n[a]}function Fie(e,t,n,r,a,o,s){s===void 0&&(s=Pie);var u=a.findIndex(function(O){return O}),c=e.slice(0,u);!t&&!n.startsWith(c)&&(t=c,n=c+n,r=r+c.length);for(var d=n.length,p=e.length,g={},m=new Array(d),b=0;b0&&m[A]===-1;)A--;var R=A===-1||m[A]===-1?0:m[A]+1;return R>x?x:r-R=0&&!n[t];)t--;t===-1&&(t=n.indexOf(!0))}else{for(;t<=a&&!n[t];)t++;t>a&&(t=n.lastIndexOf(!0))}return t===-1&&(t=a),t}function zie(e){for(var t=Array.from({length:e.length+1}).map(function(){return!0}),n=0,r=t.length;nN.length-s.length||_H||g>e.length-s.length)&&(I=g),e=e.substring(0,I),e=Gie(R?"-"+e:e,a),e=(e.match(Hie(v))||[]).join("");var $=e.indexOf(v);e=e.replace(new RegExp(sG(v),"g"),function(j,z){return z===$?".":""});var U=BT(e,a),W=U.beforeDecimal,Q=U.afterDecimal,G=U.addNegation;return d.end-d.start