1"use strict";(globalThis.webpackChunkopenrag_docs=globalThis.webpackChunkopenrag_docs||[]).push([[8136],{7454(t,e,a){function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(6827).K)(r,"populateCommonDb")},8136(t,e,a){a.d(e,{diagram:()=>m});var r=a(7454),i=a(2422),o=a(4502),n=a(9069),s=a(1293),l=a(6827),c=a(8731),d=n.UI.packet,p=class{constructor(){this.packet=[],this.setAccTitle=n.SV,this.getAccTitle=n.iN,this.setDiagramTitle=n.ke,this.getDiagramTitle=n.ab,this.getAccDescription=n.m7,this.setAccDescription=n.EI}static{(0,l.K)(this,"PacketDB")}getConfig(){const t=(0,o.$t)({...d,...(0,n.zj)().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){(0,n.IU)(),this.packet=[]}},b=(0,l.K)((t,e)=>{(0,r.S)(t,e);let a=-1,i=[],o=1;const{bitsPerRow:n}=e.getConfig();for(let{start:r,end:l,bits:c,label:d}of t.blocks){if(void 0!==r&&void 0!==l&&l<r)throw new Error(`Packet block ${r} - ${l} is invalid. End must be greater than start.`);if(r??=a+1,r!==a+1)throw new Error(`Packet block ${r} - ${l??r} is not contiguous. It should start from ${a+1}.`);if(0===c)throw new Error(`Packet block ${r} is invalid. Cannot have a zero bit field.`);for(l??=r+(c??1)-1,c??=l-r+1,a=l,s.R.debug(`Packet block ${r} - ${a} with label ${d}`);i.length<=n+1&&e.getPacket().length<1e4;){const[t,a]=h({start:r,end:l,bits:c,label:d},o,n);if(i.push(t),t.end+1===o*n&&(e.pushWord(i),i=[],o++),!a)break;({start:r,end:l,bits:c,label:d}=a)}}e.pushWord(i)},"populate"),h=(0,l.K)((t,e,a)=>{if(void 0===t.start)throw new Error("start should have been set during first phase");if(void 0===t.end)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*a)return[t,void 0];const r=e*a-1,i=e*a;return[{start:t.start,end:r,label:t.label,bits:r-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),k={parser:{yy:void 0},parse:(0,l.K)(async t=>{const e=await(0,c.qg)("packet",t),a=k.parser?.yy;if(!(a instanceof p))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");s.R.debug(e),b(e,a)},"parse")},g=(0,l.K)((t,e,a,r)=>{const o=r.db,s=o.getConfig(),{rowHeight:l,paddingY:c,bitWidth:d,bitsPerRow:p}=s,b=o.getPacket(),h=o.getDiagramTitle(),k=l+c,g=k*(b.length+1)-(h?0:l),f=d*p+2,w=(0,i.D)(e);w.attr("viewBox",`0 0 ${f} ${g}`),(0,n.a$)(w,g,f,s.useMaxWidth);for(const[i,n]of b.entries())u(w,n,i,s);w.append("text").text(h).attr("x",f/2).attr("y",g-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),u=(0,l.K)((t,e,a,{rowHeight:r,paddingX:i,paddingY:o,bitWidth:n,bitsPerRow:s,showBits:l})=>{const c=t.append("g"),d=a*(r+o)+o;for(const p of e){const t=p.start%s*n+1,e=(p.end-p.start+1)*n-i;if(c.append("rect").attr("x",t).attr("y",d).attr("width",e).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",t+e/2).attr("y",d+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(p.label),!l)continue;const a=p.end===p.start,o=d-2;c.append("text").attr("x",t+(a?e/2:0)).attr("y",o).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",a?"middle":"start").text(p.start),a||c.append("text").attr("x",t+e).attr("y",o).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(p.end)}},"drawWord"),f={draw:g},w={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},$=(0,l.K)(({packet:t}={})=>{const e=(0,o.$t)(w,t);return`\n\t.packetByte {\n\t\tfont-size: ${e.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${e.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${e.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${e.labelColor};\n\t\tfont-size: ${e.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${e.titleColor};\n\t\tfont-size: ${e.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${e.blockStrokeColor};\n\t\tstroke-width: ${e.blockStrokeWidth};
1\n\t\tfill: ${e.blockFillColor};\n\t}\n\t`},"styles"),m={parser:k,get db(){return new p},renderer:f,styles:$}}}]);
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.