1import{g as ve,r as y,I as Se,p as e,a0 as B,a1 as S,T as D,v as L,a5 as J,aj as $,ag as M,B as v,w as Te,a6 as Pe,L as K,aZ as ke,J as De,q as ee,y as te,bj as C,bS as Ae,b8 as Ie}from"./index-C9IH3k-2.js";import{I as w,T as A,c as W,g as H,R as Re,N as Ne,Y as Ee}from"./TemplateUtil-D1DzmWLm.js";import{A as X}from"./Wrapper-ChjuDa3w.js";import{P as ne,a3 as Fe}from"./MainApp-BoiAvjMg.js";import{C as G}from"./index-BOwvFOZJ.js";import{F as $e}from"./Table-isZ0WXp4.js";import{S as Le}from"./index-DcM_eZHc.js";import"./HelperMethods-C-ewwU_x.js";import"./Pagination-D1z-xPUv.js";import"./HolderOutlined-YOHjCGKZ.js";var U={},se;function Be(){if(se)return U;se=1,Object.defineProperty(U,"__esModule",{value:!0});var t={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v-63H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v752zM320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 160h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z"}}]},name:"container",theme:"outlined"};return U.default=t,U}var qe=Be();const Oe=ve(qe);function Y(){return Y=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var a=arguments[n];for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i])}return t},Y.apply(this,arguments)}const Ve=(t,n)=>y.createElement(Se,Y({},t,{ref:n,icon:Oe})),ze=y.forwardRef(Ve),{Title:re,Text:ae}=D,Ue=({selectedItems:t,resourceList:n,resourceConfig:a,destinationTypes:i,formValues:r,availablePhones:u,externalAccountPhones:T})=>{const x=()=>e.jsxs(S,{span:24,children:[e.jsxs(re,{level:5,children:["Selected ",a?.title,"s (",t.length,")"]}),e.jsx(L,{wrap:!0,children:t.map(g=>e.jsx(A,{color:"blue",children:g?.name},g.id))})]}),j=()=>e.jsx(w,{size:"small",style:{marginBottom:i.includes("external-account")?16:0},title:"Same Account (Different Phone Numbers)",children:r.phoneNumbers?.map(g=>{const R=u.find(s=>s.value===g);return e.jsx(A,{icon:e.jsx(W,{}),color:"green",children:R?.label},g)})}),I=()=>e.jsx(w,{size:"small",title:"External Account(s)",style:{marginBottom:16},children:e.jsx(e.Fragment,{children:r.accounts?.map((g,R)=>{const s=`account_${R}`,l=T[s]||[],p=g.phoneNumbers||[];return e.jsxs(B,{gutter:[8,8],children:[e.jsxs(S,{span:24,children:[e.jsxs(ae,{strong:!0,children:[e.jsx(J,{})," ",g.username]}),e.jsx(A,{color:"green",style:{marginLeft:8},children:"Verified"})]}),e.jsxs(S,{span:24,children:[e.jsx(ae,{type:"secondary",children:"Selected Phone Numbers:"}),e.jsx("div",{style:{marginTop:4},children:p.map(f=>{const N=l.find(P=>P.phoneNumberId===f);return e.jsx(A,{icon:e.jsx(W,{}),color:"blue",children:N?.displayPhoneNumber},f)})})]})]})})})});return e.jsxs(w,{title:"Confirmation",className:"step-card",children:[e.jsx(X,{message:"Review Your Duplication Settings",description:"Please review the details below before proceeding with the duplication.",type:"info",showIcon:!0}),e.jsxs(B,{gutter:[16,16],children:[x(),e.jsxs(S,{span:24,children:[e.jsx(re,{level:5,children:"Destination(s)"}),i.includes("same-account")&&e.jsx("div",{style:{marginBottom:i.includes("external-account")?16:0},children:j()}),i.includes("external-account")&&e.jsx("div",{children:I()})]})]})]})},_e=({destinationTypes:t,availablePhones:n,externalAccountPhones:a,verifyingAccounts:i,verificationErrors:r,onVerifyCredentials:u})=>{const T=()=>e.jsx($.Item,{label:"Select Target Phone Numbers",name:"phoneNumbers",rules:[{required:!0,message:"Please select at least one phone number"}],children:e.jsx(ne,{mode:"multiple",placeholder:"Choose phone numbers",phones:n,style:{width:"100%"}})}),x=()=>e.jsx($.List,{name:"accounts",children:(j,{add:I,remove:g})=>e.jsxs(e.Fragment,{children:[j.map(({key:R,name:s,...l})=>{const p=`account_${s}`,f=i[p],N=r[p],P=a[p]||[],E=P.length>0;return e.jsxs("span",{style:{marginBottom:16},children:[e.jsxs(B,{gutter:16,children:[e.jsx(S,{span:12,children:e.jsx($.Item,{...l,label:"Username",name:[s,"username"],rules:[{required:!0,message:"Username is required"}],children:e.jsx(M,{placeholder:"Account username",prefix:e.jsx(J,{}),disabled:f})})}),e.jsx(S,{span:12,children:e.jsx($.Item,{...l,label:"Password",name:[s,"password"],rules:[{required:!0,message:"Password is required"}],children:e.jsx(M.Password,{placeholder:"Account password",disabled:f})})})]}),e.jsx(B,{gutter:16,style:{marginBottom:16},children:e.jsx(S,{span:24,children:e.jsx(v,{type:E?"default":"primary",onClick:()=>u(s),loading:f,children:f?"Verifying Credentials...":E?"Re-verify Credentials":"Verify Credentials & Fetch Phone Numbers"})})}),N&&e.jsx(X,{message:"Verification Failed",description:N,type:"error",style:{marginBottom:16},showIcon:!0,closable:!0}
1),e.jsx($.Item,{...l,label:"Phone Numbers",name:[s,"phoneNumbers"],rules:E?[{required:!0,message:"Please select at least one phone number"}]:[],children:e.jsx(ne,{mode:"multiple",phones:P.map(q=>({value:q?.phoneNumberId,label:q?.displayPhoneNumber})),placeholder:E?"Select phone numbers for this account":"Verify credentials first to load phone numbers",disabled:!E,allowClear:!0,style:{width:"100%"}})}),e.jsx(v,{type:"link",danger:!0,onClick:()=>g(s),children:"Remove Account"})]},R)}),e.jsx(v,{type:"dashed",onClick:()=>I(),children:"Add Account"})]})});return e.jsxs(w,{title:"Configure Destination Details",className:"step-card",children:[t.includes("same-account")&&e.jsx(w,{size:"small",title:"Configure Using Logged-in Account",style:{marginBottom:t.includes("external-account")?16:0},children:T()}),t.includes("external-account")&&e.jsx(w,{size:"small",title:"External Account Configuration",style:{marginBottom:16},children:x()})]})},{Text:_}=D,He=({destinationTypes:t,onDestinationTypesChange:n,availablePhones:a})=>{const i=(u,T)=>{let x=[...t||[]];T?x.includes(u)||x.push(u):x=x.filter(j=>j!==u),n(x)},r=u=>t&&t.includes(u);return e.jsx(w,{title:"Choose Destination Type(s)",className:"step-card",children:e.jsxs(L,{orientation:"vertical",size:"large",style:{width:"100%"},children:[a.length>0&&e.jsx(w,{size:"small",className:r("same-account")?"selected-option":"",style:{cursor:"pointer"},children:e.jsx(G,{checked:r("same-account"),onChange:u=>i("same-account",u.target.checked),children:e.jsxs(L,{orientation:"vertical",size:"small",children:[e.jsx(_,{strong:!0,children:"Copy to Same Account (Different Phone Number)"}),e.jsx(_,{type:"secondary",children:"Duplicate to other phone numbers in your current account"}),e.jsxs(A,{icon:e.jsx(W,{}),color:"blue",children:[a.length," phone numbers available"]})]})})}),e.jsx(w,{size:"small",className:r("external-account")?"selected-option":"",style:{cursor:"pointer"},children:e.jsx(G,{checked:r("external-account"),onChange:u=>i("external-account",u.target.checked),children:e.jsxs(L,{orientation:"vertical",size:"small",children:[e.jsx(_,{strong:!0,children:"Copy to External Account"}),e.jsx(_,{type:"secondary",children:"Duplicate to different WhatsApp Business accounts"}),e.jsx(A,{icon:e.jsx(J,{}),color:"green",children:"Requires account credentials"})]})})})]})})},oe=[{text:"DRAFT",value:"DRAFT"},{text:"PUBLISHED",value:"PUBLISHED"}],Me=[{text:"Approved",value:"APPROVED"},{text:"Rejected",value:"REJECTED"},{text:"Pending",value:"PENDING"}],Ke=[{text:"Marketing",value:"MARKETING"},{text:"Utility",value:"UTILITY"},{text:"Authentication",value:"AUTHENTICATION"}],k={chatbot:{title:"Chatbot",apiEndpoint:"/api/v1/chatbot",cloneEndpoint:"/api/v1/chatbot/clone",stepTitle:"Select Chatbots to Duplicate",tableColumns:[{title:"Name",dataIndex:"name",key:"name",searchable:!0,render:(t,n)=>e.jsx(Pe,{to:`/Chatbot/AdvanceChatBot/${n.id}`,children:t})},{title:"Status",dataIndex:"status",key:"status",filters:oe,onFilter:(t,n)=>n.status===t,render:(t,n)=>{const a=n?.status;return e.jsx(A,{color:a==="DRAFT"?"#ff4d50":a==="PUBLISHED"?"#20bbc9":"#000",children:a})}},{title:"Updated At",dataIndex:"lastUpdateTime",key:"lastUpdateTime",sorter:(t,n)=>new Date(t.lastUpdateTime)-new Date(n.lastUpdateTime),defaultSortOrder:"descend",render:(t,n)=>e.jsx(D.Text,{children:H(n.lastUpdateTime)})}]},template:{title:"Template",apiEndpoint:"/api/v1/messageTemplate/getTemplates",cloneEndpoint:"/api/v1/messageTemplate/clone",stepTitle:"Select Templates to Duplicate",tableColumns:[{title:"Template Name",dataIndex:["template","name"],key:"name",searchable:!0},{title:"Category",dataIndex:["template","category"],key:"category",filters:Ke,onFilter:(t,n)=>n.template?.category===t},{title:"Status",dataIndex:["template","status"],key:"status",filters:Me,onFilter:(t,n)=>n.template?.status===t,render:t=>e.jsx(A,{color:t==="APPROVED"?"green":t==="REJECTED"?"red":"orange",children:t})},{title:"Language",dataIndex:["template","language"],key:"language",render:(t,n)=>{const a=n.template?.components?.filter(i=>i.type==="BODY").map(i=>i.text).join(" ")||"No preview available";return e.jsxs(Te,{title:a,children:[e.jsx(D.Text,{ellipsis:{tooltip:!1},children:t}),e.jsx(D.Text,{type:"secondary",style:{display:"block"},children:a.length>30?`${a.slice(0,30)}...`:a})]})}},{title:"Creation Time",dataIndex:"creationTime",key:"creationTime",sorter:(t,n)=>new Date(t.creationTime)-new Date(n.creationTime),render:t=>e.jsx("span",{children:H(t)})}]},flows:{title:"Flows",apiEndpoint:"/api/v1/whatsapp/flow/list",cloneEndpoint:"/api/v1/whatsapp/flow/clone",stepTitle:"Select Flows to Duplicate",tableColumns:[{title:"Flow ID",dataIndex:"flowId",key:"flowId",ellipsis:!0,searchable:!0,render:t=>e.jsx(D.Text,{copyable:!0,children:t})},{title:"Flow Name",dataIndex:"name",key:"name",searchable:!0,render:t=>e.jsx(D.Text,{strong:!0,children:t})},{title:"Categories",dataIndex:"categories",key:"categories",render:t=>t?.length>0?e.jsx("span",{children:t.map((n,a)=>e.jsx(A,{color:"blue",children:n},a))}):null},{title:"Status",dataIndex:"status",key:"status",filters:oe,onFilter:(t,n)=>n.status===t,render:t=>{const n=t==="PUBLISHED"?"green":"red";return e.jsx(A,{color:n,children:t})}},{title:"Creation Time",dataIndex:"creationTime",key:"creationTime",sorter:(t,n)=>new Date(t.creationTime)-new Date(n.creationTime),defaultSortOrder:"descend",render:(t,n)=>e.jsx(D.Text,{children:H(n.creationTime)})},{title:"Action",dataIndex:"action",key:"action",render:(t,n)=>e.jsx(e.Fragment,{children:n.preview_url&&e.jsx(v,{type:"link",href:n.preview_url,target:"_blank",style:{padding:0},children:"Preview Flow"})})}]}},ie=(t,n)=>Array.isArray(n)?n.reduce((a,i)=>a?.[i],t):t?.[n],We=({resourceType:t,resourceList:n,selectedItems:a,onSelectionChange:i,loading:r,tableColumns:u,title:T})=>{const x=s=>
1{const l=u.find(p=>p.key==="name");return l?.dataIndex?ie(s,l.dataIndex):s.name||s.id},j=y.useMemo(()=>new Set(a.map(s=>typeof s=="string"?s:s.id)),[a]),I=()=>{const s=n.filter(l=>!j.has(l.id)).map(l=>({id:l.id,name:x(l)}));i([...a,...s])},g=s=>({filterDropdown:({setSelectedKeys:l,selectedKeys:p,confirm:f,close:N})=>e.jsxs(K,{gap:"small",vertical:!0,style:{padding:8},children:[e.jsx(M,{placeholder:"Search",value:p[0],onChange:P=>l(P.target.value?[P.target.value]:[]),onPressEnter:()=>f()}),e.jsxs(L,{children:[e.jsx(v,{type:"primary",onClick:()=>f(),icon:e.jsx(ke,{}),children:"Search"}),e.jsx(v,{type:"link",onClick:()=>N(),children:"Close"})]})]}),onFilter:(l,p)=>ie(p,s)?.toString().toLowerCase().includes(l.toLowerCase())}),R=[{title:"Select",dataIndex:"id",key:"select",width:80,render:(s,l)=>e.jsx(G,{checked:j.has(s),onChange:p=>{p.target.checked?i([...a,{id:s,name:x(l)}]):i(a.filter(f=>(typeof f=="string"?f:f.id)!==s))}})},...u.map(s=>s.searchable?{...s,...g(s.dataIndex)}:s)];return e.jsxs(w,{title:T||`Select ${t}s to Duplicate`,className:"step-card",children:[e.jsxs(B,{gutter:[16,16],style:{marginBottom:16},children:[e.jsx(S,{children:e.jsx(v,{type:"link",onClick:I,children:"Select All"})}),e.jsx(S,{children:e.jsx(v,{type:"link",onClick:()=>i([]),children:"Clear Selection"})}),e.jsx(S,{children:e.jsxs(v,{type:"text",style:{cursor:"default"},disabled:!0,children:["Selected: ",a.length]})})]}),e.jsx($e,{columns:R,dataSource:n,loading:r,rowKey:"id",pagination:{defaultPageSize:20},scroll:{y:"calc(100vh - 250px)",x:"max-content"},style:{tableLayout:"fixed"}})]})},{Title:Ge,Text:Ye}=D,Je=({selectedResourceType:t,onResourceTypeChange:n})=>{const{token:a}=De.useToken(),i=[{key:"chatbot",title:"Chatbot",description:"Duplicate your chatbot configurations",icon:e.jsx(Re,{}),color:"blue"},{key:"template",title:"Template",description:"Duplicate message templates across accounts",icon:e.jsx(ze,{}),color:"red"},{key:"flows",title:"Flows",description:"Duplicate WhatsApp flows for seamless automation",icon:e.jsx(Fe,{}),color:"green"}];return e.jsx(w,{title:"Select Resource Type to Duplicate",className:"step-card",children:e.jsx(B,{gutter:[16,16],children:i.map(r=>e.jsx(S,{xs:24,sm:12,md:8,children:e.jsx(w,{size:"small",className:`resource-option ${t===r.key?"selected-option":""}`,style:{opacity:1,border:t===r.key?`2px solid ${a.colorPrimary}`:`1px solid ${a.colorBorder}`},onClick:()=>n(r.key),children:e.jsxs("div",{style:{textAlign:"center",padding:"16px 8px"},children:[e.jsx("div",{style:{fontSize:"32px",marginBottom:"12px"},children:r.icon}),e.jsx(Ge,{level:4,style:{marginBottom:"8px"},children:r.title}),e.jsx(Ye,{type:"secondary",style:{fontSize:"12px",display:"block",marginBottom:"12px"},children:r.description})]})})},r.key))})})},{confirm:Xe}=Ne,ct=()=>{const[t,n]=y.useState(0),[a,i]=y.useState(!1),[r,u]=y.useState(""),[T,x]=y.useState([]),[j,I]=y.useState([]),[g,R]=y.useState([]),[s,l]=y.useState([]),[p,f]=y.useState({}),[N,P]=y.useState({}),[E,q]=y.useState({}),[O,Z]=y.useState({phoneNumbers:[],accounts:[]}),[V]=$.useForm(),Q=ee(o=>o.selectedPhoneRec),ce=ee(o=>o.connectedPhonesList),z=()=>{const o=V.getFieldsValue();Z(h=>({...h,...o}))};y.useEffect(()=>{const o=ce?.filter(h=>h.value!==Q?.value);R(o)},[Q]);const le=async()=>{if(!r||!k[r])return;i(!0);const o=k[r],h={};try{const c=await te(o.apiEndpoint,h);if(c?.data){const d=c.data.results||[];x(d)}}catch{C.error({title:"Error",description:`Failed to fetch ${o.title.toLowerCase()}s. Please try again.`})}i(!1)};y.useEffect(()=>{r&&k[r]&&le()},[r]);const de=async(o,h,c)=>{const d=`account_${c}`;P(b=>({...b,[d]:!0})),q(b=>({...b,[d]:null}));try{const m=await Ae("/api/v1/auth/login",{username:o,password:h},"",!1);if(m?.status===200&&m?.data?.accessToken){const F=await Ie("/api/v1/onboard/getPhones",{headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/json",Authorization:`Bearer ${m.data.accessToken}`}});F?.data&&(f(we=>({...we,[d]:F.data})),C.success({title:"Verification Successful",description:`Found ${F.data.length} phone number(s) for this account.`}))}else throw new Error(m?.message||"Invalid credentials")}catch(b){const m=b.message||"Failed to verify credentials. Please check username and password.";q(F=>
1({...F,[d]:m}))}finally{P(b=>({...b,[d]:!1}))}},ue=async o=>{try{const c=(O.accounts||[])[o];if(!c?.username||!c?.password){C.warning({title:"Incomplete Information",description:"Please enter both username and password before verification."});return}await de(c.username,c.password,o)}catch{C.warning({title:"Form Validation",description:"Please complete the required fields before verification."})}},pe=()=>{if(z(),t===0&&!r){C.warning({title:"Selection Required",description:"Please select a resource type to continue."});return}if(t===1&&j.length===0){C.warning({title:"Selection Required",description:`Please select at least one ${k[r]?.title.toLowerCase()} to duplicate.`});return}if(t===2&&s.length===0){C.warning({title:"Destination Selection Required",description:"Please select at least one destination type to continue."});return}if(t===3){if(s.includes("same-account")&&(O.phoneNumbers||[]).length===0){C.warning({title:"Phone Selection Required",description:"Please select at least one phone number for same-account duplication."});return}if(s.includes("external-account")){const o=O.accounts||[];if(o.length===0){C.warning({title:"Account Required",description:"Please add at least one external account."});return}if(o.filter((d,b)=>{const m=`account_${b}`;return(p[m]||[]).length===0}).length>0){C.warning({title:"Verification Required",description:"Please verify credentials for all external accounts before proceeding."});return}if(o.filter((d,b)=>{const m=`account_${b}`;return(p[m]||[]).length>0&&(!d.phoneNumbers||d.phoneNumbers.length===0)}).length>0){C.warning({title:"Phone Selection Required",description:"Please select phone numbers for all verified accounts."});return}}}n(t+1)},he=()=>{z(),n(t-1)},me=async()=>{try{z();const o=k[r];Xe({title:"Confirm Duplication",icon:e.jsx(Ee,{}),content:`Are you sure you want to duplicate ${j.length} ${o.title.toLowerCase()}(s)?`,onOk:()=>xe(O)})}catch{C.error({title:"Form Validation Error",description:"Please fill in all required fields before proceeding."})}},xe=async o=>{try{const h=ge(o),c=await fe(h);if(c?.data?.success||c?.data){const d=k[r];C.success({title:"Clone Request Accepted",description:c?.data?.message||`Clone request for ${j.length} ${d.title.toLowerCase()}(s) accepted â this may take a few minutes to complete.`}),ye()}else throw new Error(c?.data?.message||c?.message||"Duplication failed")}catch(h){C.error({title:"Duplication Failed",description:h.message||"An error occurred during duplication."})}},ge=o=>{const c={sourceIds:j.map(d=>typeof d=="string"?d:d.id),targets:[]};if(s.includes("same-account")){const d=o.phoneNumbers||[];d.length>0&&c.targets.push({phoneNumberIds:d})}if(s.includes("external-account")){const b=(o.accounts||[]).map(m=>({username:m.username,password:m.password,phoneNumberIds:m.phoneNumbers||[]})).filter(m=>m.username&&m.password&&m.phoneNumberIds.length>0);c.targets.push(...b)}return c},fe=async o=>{const c=k[r]?.cloneEndpoint||`/api/v1/${r}/clone`;return await te(c,o)},ye=()=>{n(0),u(""),I([]),x([]),l([]),Z({phoneNumbers:[],accounts:[]}),V.resetFields()},je=o=>{u(o),x([]),I([]),i(!1),V.resetFields()},be=()=>{switch(t){case 0:return e.jsx(Je,{selectedResourceType:r,onResourceTypeChange:je});case 1:if(!r||!k[r])return e.jsx(w,{children:e.jsx(X,{title:"Please select a resource type first",description:"Go back to step 1 and select a resource type to continue.",type:"warning",showIcon:!0})});const o=k[r];return e.jsx(We,{resourceType:r,resourceList:T,selectedItems:j,onSelectionChange:I,loading:a,tableColumns:o.tableColumns,title:o.stepTitle});case 2:return e.jsx(He,{destinationTypes:s,onDestinationTypesChange:l,availablePhones:g});case 3:return e.jsx(_e,{form:V,destinationTypes:s,availablePhones:g,externalAccountPhones:p,verifyingAccounts:N,verificationErrors:E,onVerifyCredentials:ue,onFormChange:z});case 4:const h=k[r];return e.jsx(Ue,{selectedItems:j,resourceList:T,resourceConfig:h,destinationTypes:s,formValues:O,availablePhones:g,externalAccountPhones:p});default:return null}},Ce=[{title:"Source Type"},{title:"Source Item(s)"},{title:"Target Type"},{title:"Target(s)"},{title:"Summary"}];return e.jsxs(K,{vertical:!0,gap:"large",children:[e.jsx(K,{justify:"space-between",children:e.jsx(D.Title,{level:4,style:{margin:0},children:"Duplicate Resources"})}),e.jsx(Le,{current:t,size:"small",labelPlacement:"vertical",items:Ce}),e.jsxs($,{form:V,layout:"vertical",onValuesChange:z,children:[be(),e.jsx("div",{style:{marginTop:24,textAlign:"right"},children:e.jsxs(L,{children:[t>0&&e.jsx(v,{onClick:he,children:"Previous"}),t<4&&e.jsx(v,{type:"primary",onClick:pe,children:"Next"}),t===4&&e.jsx(v,{type:"primary",onClick:me,loading:a,children:"Start Duplication"})]})})]})]})};export{ct as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.