HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Python311/Lib/site-packages/notebook/static/4406.c435ee1d9e07c37b46e4.js.map
{"version":3,"file":"4406.c435ee1d9e07c37b46e4.js?v=c435ee1d9e07c37b46e4","mappings":"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CAAkC,2CAA2C,gBAAgB,wBAAwB,GAAG;;;;;;;;;;;ACAr/N;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,UAAU;AACZ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,aAAa;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,eAAe;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,EAAE,iBAAiB,EAAE,MAAM;AACzD;AACA,8BAA8B,aAAa;AAC3C,wDAAwD;AACxD,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,gBAAgB,sBAAsB;AACtC,gBAAgB,sBAAsB;AACtC,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,kDAAkD;AAClD,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,0EAA0E;AAC1E,sFAAsF;AACtF;AACA;AACA,gFAAgF;AAChF,wEAAwE;AACxE,wEAAwE;AACxE;AACA,qDAAqD;AACrD,qDAAqD;AACrD,oEAAoE;AACpE,uEAAuE;AACvE,0DAA0D;AAC1D,+CAA+C;AAC/C,kDAAkD;AAClD,0CAA0C;AAC1C,4DAA4D;AAC5D,4DAA4D;AAC5D,0CAA0C;AAC1C,+CAA+C;AAC/C,8DAA8D;AAC9D,+CAA+C;AAC/C,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,oFAAoF,6DAA6D;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qTAAqT;AACrT;AACA;AACA;AACA,MAAM,wCAAwC,oFAAoF,oKAAoK,iHAAiH;AACvZ;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE6B;AAC7B;;;;;;;;;;;;;;;;;;;;ACzzCA;AACuC;AACvC;AACA;AACA;AACA;AACA,oBAAoB,qBAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,2CAAe,IAAI,EAAC;;;ACzBpB;AACkC;AACL;AACU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,wBAAwB,IAAI;AAC5B;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,yBAAyB,qBAAI;AAC7B;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA,qBAAqB,oBAAC;AACtB;AACA,qBAAqB,oBAAC;AACtB;AACA,qBAAqB,oBAAC;AACtB;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA,qBAAqB,oBAAC;AACtB;AACA,qBAAqB,oBAAC;AACtB;AACA,qBAAqB,oBAAC;AACtB;AACA;AACA;AACA;AACA;AACA,0BAA0B,qBAAI;AAC9B;AACA;AACA,eAAe,oBAAC;AAChB;AACA;AACA;AACA;AACA,0BAA0B,qBAAI;AAC9B;AACA;AACA,eAAe,oBAAC;AAChB;AACA;AACA;AACA;AACA,0BAA0B,qBAAI;AAC9B;AACA;AACA,eAAe,oBAAC;AAChB;AACA;AACA;AACA;AACA,0BAA0B,qBAAI;AAC9B;AACA;AACA,eAAe,oBAAC;AAChB;AACA;AACA;AACA;AACA,0BAA0B,qBAAI;AAC9B;AACA;AACA,eAAe,oBAAC;AAChB;AACA;AACA;AACA;AACA,0BAA0B,qBAAI;AAC9B;AACA;AACA,eAAe,oBAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qBAAI;AAC1B;AACA;AACA;AACA;AACA,sBAAsB,qBAAI;AAC1B;AACA;AACA;AACA;AACA,sBAAsB,qBAAI;AAC1B;AACA;AACA;AACA;AACA,sBAAsB,qBAAI;AAC1B;AACA;AACA;AACA;AACA,sBAAsB,qBAAI;AAC1B;AACA;AACA;AACA;AACA,sBAAsB,qBAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAAe,QAAQ,EAAC;;;ACnIxB;AACmC;AACnC;AACA,MAAM,iBAAQ,OAAO,QAAQ,GAAG,wBAAwB;AACxD;AACA,+CAAe,iBAAQ,EAAC;;;;;;;;;;;;;;;;;;;;ACLxB;AACkC;AACqB;AACb;AAC1C;AACA;AACA;AACA,wBAAwB,EAAE,EAAE,IAAI,UAAU,EAAE;AAC5C;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAgB;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,gBAAgB,aAAa;AAC7B,qBAAqB;AACrB,uBAAuB,wBAAO,gBAAgB,EAAE,wBAAO,gBAAgB,EAAE,wBAAO,gBAAgB,EAAE,wBAAO,sBAAsB;AAC/H;AACA,eAAe;AACf,uBAAuB,wBAAO,gBAAgB,EAAE,wBAAO,gBAAgB,EAAE,wBAAO,gBAAgB;AAChG;AACA;AACA;AACA;AACA,gDAAe,GAAG,EAAC;;;;;AC1CnB;AACkC;AACqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAC;AACrC,mCAAmC,oBAAC;AACpC,oCAAoC,oBAAC;AACrC;AACA;AACA,eAAe,oBAAC;AAChB,KAAK;AACL;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,eAAe,uBAAgB;AAC/B;AACA,eAAe,oBAAC;AAChB,eAAe,oBAAC;AAChB,mBAAmB,oBAAC;AACpB,SAAS;AACT,KAAK;AACL;AACA,gBAAgB,aAAa;AAC7B,qBAAqB;AACrB,2BAA2B,oBAAC,eAAe,IAAI,oBAAC,eAAe,KAAK,oBAAC,eAAe,KAAK,EAAE;AAC3F;AACA,eAAe;AACf,0BAA0B,oBAAC,eAAe,IAAI,oBAAC,eAAe,KAAK,oBAAC,eAAe;AACnF;AACA;AACA;AACA;AACA,0CAAe,GAAG,EAAC;;;AChDnB;AAC2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAG;AAClB,KAAK;AACL;AACA,oBAAoB,SAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAAe,OAAO,EAAC;;;AC5KvB;AACkC;AACqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,eAAe,uBAAgB;AAC/B,eAAe,oBAAC;AAChB,eAAe,oBAAC;AAChB,eAAe,oBAAC;AAChB,mBAAmB,oBAAC;AACpB,SAAS;AACT,KAAK;AACL;AACA,gBAAgB,aAAa;AAC7B,qBAAqB;AACrB,2BAA2B,oBAAC,eAAe,IAAI,oBAAC,eAAe,IAAI,oBAAC,eAAe,IAAI,oBAAC,eAAe;AACvG;AACA,eAAe;AACf,0BAA0B,oBAAC,eAAe,IAAI,oBAAC,eAAe,IAAI,oBAAC,eAAe;AAClF;AACA;AACA;AACA;AACA,0CAAe,GAAG,EAAC;;;AClCnB;AACkC;AACP;AACA;AACQ;AACR;AACY;AACvC;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,aAAa,SAAG;AAChB,aAAa,GAAG;AAChB,cAAc,GAAG;AACjB,aAAa,GAAG;AAChB,cAAc,GAAG;AACjB,KAAK;AACL;AACA;AACA;AACA;AACA,yBAAyB,SAAG,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,OAAO,eAAe;AAC3G;AACA;AACA,sDAAsD,MAAM;AAC5D,KAAK;AACL;AACA;AACA;AACA;AACA,6BAA6B,qBAAI;AACjC,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,SAAG;AACtB;AACA;AACA;AACA;AACA,4CAAe,KAAK,EAAC;;;;;;;;;;;;;;AC3CrB;AACiC;AACjC;AACA;AACA,gBAAgB,UAAU;AAC1B,iBAAiB,gEAAC,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACyB;;;;;;;;;;;;;;ACZzB;AACkC;AACI;AACtC;AACA;AACA,qBAAqB,gEAAK;AAC1B;AACA,uBAAuB,gEAAC;AACxB;AACA;AACA,WAAW,gEAAK;AAChB;AACA;AACA,iEAAe,aAAa,EAAC;;;;;;;;;;;;;;ACb7B;AACkC;AACI;AACtC;AACA;AACA,eAAe,gEAAK;AACpB;AACA,gBAAgB,gEAAC;AACjB;AACA,WAAW,gEAAK;AAChB;AACA;AACA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;ACZtB;AACgD;AAChD;AACA;AACA,WAAW,uEAAa;AACxB;AACA;AACA,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;;;ACPtB;AACkC;AACI;AACtC;AACA;AACA;AACA,YAAY,UAAU,EAAE,yBAAK;AAC7B,8BAA8B,oBAAC,+BAA+B,oBAAC,+BAA+B,oBAAC;AAC/F,WAAW,oBAAC;AACZ;AACA;AACA,wDAAe,SAAS,EAAC;;;ACXzB;AACuC;AACvC;AACA;AACA,WAAW,iBAAS;AACpB;AACA;AACA,+CAAe,OAAO,EAAC;;;ACPvB;AACoC;AACpC;AACA;AACA,YAAY,QAAO;AACnB;AACA;AACA,8CAAe,MAAM,EAAC;;;;;;;;;;;;;ACPtB;AACgD;AAChD;AACA;AACA,WAAW,uEAAa;AACxB;AACA;AACA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;ACPvB;AACkC;AACqB;AACjB;AACL;AACjC;AACA;AACA;AACA,eAAe,+DAAM,MAAM,MAAM;AACjC,qBAAqB,sEAAgB;AACrC,WAAW,gEAAC;AACZ,WAAW,gEAAC;AACZ,WAAW,gEAAC;AACZ,WAAW,gEAAC;AACZ,KAAK;AACL,WAAW,gEAAK;AAChB;AACA;AACA,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;AClBpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,SAAS;AACzB;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,8CAAe,OAAO,EAAC;;;ACxFvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,2CAAe,IAAI,EAAC;;;ACbpB;AACA;AACA;AACA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA,2CAAe,IAAI,EAAC;;;ACTpB;AACmC;AACN;AACA;AAC7B;AACA;AACA,WAAW;AACX,QAAQ;AACR,QAAQ;AACR;AACA;AACA,4CAAe,KAAK,EAAC;;;;;;;;;;;;;;;;ACXrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAe,cAAc,EAAC;;;;;ACZL;;AAEzB;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,QAAQ,qBAAE;AACV;AACA;AACA;AACA;AACA;;AAEA,oDAAe,YAAY,EAAC;;;ACpBkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA,cAAc,aAAY;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA,uDAAe,eAAe,EAAC;;;AClCe;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA,cAAc,aAAY;;AAE1B;AACA;;AAEA,oDAAe,YAAY,EAAC;;;AClBkB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA,SAAS,aAAY;AACrB;;AAEA,oDAAe,YAAY,EAAC;;;ACfkB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA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CvB;AACA,kBAAkB,SAAQ,CAAC,gBAAe;;AAE1C,mDAAe,WAAW,EAAC;;;;;;;;;;;;ACb3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;ACzBxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA,YAAY,QAAQ,IAAI,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;ACzBxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,EAAE,EAAC;;;;;;;;;;;;ACpClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,GAAG;AAChB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;;ACpBkB;AACG;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,SAAS,+BAAY,WAAW,8BAAU;AAC1C;;AAEA,uDAAe,eAAe,EAAC;;;ACjBqB;AACP;;AAE7C;AACA;;AAEA;AACA,IAAI,0BAAc;;AAElB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA,kBAAkB,gBAAe,cAAc,mBAAmB,MAAM,gBAAe;AACvF,SAAS,+BAAY,WAAW,0BAAc;AAC9C;AACA;;AAEA,4DAAe,WAAW,EAAC;;;;;;;;;;;;ACnC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;ACzBkB;AACJ;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iEAAQ,mBAAmB,mEAAU;AAC/D;;AAEA,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;AChCgB;AACE;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qEAAY,WAAW,oEAAW;AAC3C;;AAEA,iEAAe,iBAAiB,EAAC;;;;;;;;;;;;;;;;;;AChCjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAAe,SAAS,EAAC;;;;ACjBK;AACS;;AAEvC;AACA;;AAEA;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA,6BAA6B,oBAAI;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAS;;AAE1C,yDAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;;ACrCc;AACJ;AACS;AACR;AACQ;AACN;AACO;AACC;;AAE7C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oEAAW;AACjB,OAAO,gEAAO;AACd,QAAQ,iEAAQ,WAAW,qEAAY,WAAW,oEAAW;AAC7D;AACA;AACA,YAAY,+DAAM;AAClB;AACA;AACA;AACA,MAAM,oEAAW;AACjB,YAAY,iEAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;AC5EmB;AACL;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,iEAAQ;AACf;AACA;AACA;AACA;AACA,YAAY,mEAAU;AACtB;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;ACpC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;AClCxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;AC9BxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;;;;AC5Bc;AACL;AACQ;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,SAAS,+BAAY;AACrB,IAAI,2BAAQ,mCAAmC,8BAAU;AACzD;;AAEA,wDAAe,gBAAgB,EAAC;;;;;;;AC3DsB;AACd;AACF;;AAEtC;AACA,uBAAuB,wBAAQ,IAAI,wBAAQ;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6BAAS,qBAAqB,iBAAgB;;AAEpF,6DAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;;;;AC1B5B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAe,YAAY,EAAC;;;ACnBS;AACO;AACE;;AAE9C;AACA;;AAEA;AACA,IAAI,0BAAc;;AAElB;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA,OAAO,2BAAQ;AACf,WAAW,aAAY;AACvB;AACA,gBAAgB,+BAAW;AAC3B;;AAEA;AACA,+CAA+C,0BAAc;AAC7D;AACA;AACA;AACA;AACA;;AAEA,kDAAe,UAAU,EAAC;;;;;AChCsB;AACN;AACC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8BAAW,WAAW,iCAAa,iBAAiB,WAAU;AACvE;;AAEA,uDAAe,MAAM,EAAC;;;;;;;;;;;;;AC/BgB;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6DAAQ;AACjD;AACA;;AAEA;AACA,gBAAgB,6DAAQ;;AAExB,iEAAe,OAAO,EAAC;;;;;;;;;;;;;;;;;;;;;;ACxE6B;AAC3B;;AAEzB;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA,+BAA+B,qBAAE;AACjC;AACA,IAAI,mCAAe;AACnB;AACA;;AAEA,wDAAe,gBAAgB,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBU;AACI;AACD;;AAE7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAI,4BAAc;;AAElB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,+BAAY,WAAW,8BAAU;AACxC;AACA;AACA,cAAc,gCAAY;AAC1B;AACA;AACA;AACA,aAAa,4BAAc;AAC3B;AACA;AACA;;AAEA,8DAAe,aAAa,EAAC;;;;;AC7D7B;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+CAAe,OAAO,EAAC;;;;;;;ACpBmB;AACT;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA;AACA,SAAS,8BAAU,QAAQ,yBAAM;AACjC;;AAEA,8DAAe,aAAa,EAAC;;;AC/ByB;AACV;AACQ;AACZ;AACY;AACT;AACR;AACoB;AAClB;AACI;AACJ;AACU;AACF;AACT;AACW;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA,iBAAiB,QAAO;AACxB,iBAAiB,QAAO;AACxB;;AAEA;AACA,IAAI,iBAAgB;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,0BAAO;AACvB,2BAA2B,2BAAQ;AACnC,uCAAuC,+BAAY;;AAEnD;AACA;AACA,UAAU,0BAAO;AACjB;AACA;AACA,eAAe,oCAAiB;AAChC,mBAAmB,6BAAS;AAC5B;AACA;AACA;AACA,mBAAmB,+BAAW;AAC9B;AACA;AACA;AACA,mBAAmB,mCAAe;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa,uBAAa,cAAc,8BAAW;AACnD;AACA,UAAU,8BAAW;AACrB,mBAAmB,uBAAa;AAChC;AACA,gBAAgB,2BAAQ,cAAc,6BAAU;AAChD,mBAAmB,mCAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAgB;AAClB;;AAEA,qDAAe,aAAa,EAAC;;;AC7FG;AACsB;AAClB;AACY;AACX;AACJ;AACG;;AAEpC;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAAO;AACT,0BAA0B,qBAAK;AAC/B,QAAQ,2BAAQ;AAChB,MAAM,cAAa;AACnB;AACA;AACA;AACA,qBAAqB,QAAO;AAC5B;;AAEA;AACA;AACA;AACA,MAAM,iBAAgB;AACtB;AACA,GAAG,EAAE,qBAAM;AACX;;AAEA,iDAAe,SAAS,EAAC;;;;;ACzCe;AACU;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,WAAW;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,aAAa,QAAQ,IAAI,QAAQ;AACjC;AACA;AACA;AACA,WAAW,QAAQ,gBAAgB,IAAI,gBAAgB;AACvD;AACA,YAAY,kCAAc;AAC1B,EAAE,UAAS;AACX,CAAC;;AAED,sDAAe,KAAK,EAAC;;;;;;;;;;;;ACtCrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIE;;;;;;;;;;;;;;AC9I4B;;AAE9B;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,qDAAqD,qEAAM;AAC3D;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0BAA0B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,qEAAM;AACN;AACA;AACA,cAAc;AACd,gBAAgB;AAChB,eAAe;AACf,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,EAAE,qEAAM;AACR,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN,4CAA4C,qEAAM;AAClD;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ,sGAAsG,kCAAkC;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,6BAA6B,qEAAM;AACnC;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA,6BAA6B,qEAAM;AACnC;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA,6BAA6B,qEAAM;AACnC;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qEAAM;AACrC;AACA,KAAK;AACL,+BAA+B,qEAAM;AACrC;AACA,KAAK;AACL,+BAA+B,qEAAM;AACrC;AACA,KAAK;AACL,+BAA+B,qEAAM;AACrC;AACA,KAAK;AACL,2BAA2B,qEAAM;AACjC;AACA,KAAK;AACL,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,qEAAM;AACrC;AACA,KAAK;AACL,+BAA+B,qEAAM;AACrC;AACA,KAAK;AACL,+BAA+B,qEAAM;AACrC;AACA,KAAK;AACL,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qEAAM;AAClC;AACA,KAAK;AACL,2BAA2B,qEAAM;AACjC;AACA,KAAK;AACL,6BAA6B,qEAAM;AACnC;AACA,KAAK;AACL;AACA,iCAAiC,qEAAM;AACvC;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,EAAE;AACzC;AACA,sCAAsC,EAAE,eAAe,EAAE,YAAY;AACrE;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA,wBAAwB,qEAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,qEAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,gDAAgD,kBAAkB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,+CAA+C,kBAAkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,kBAAkB;AACrE;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA,6EAA6E;AAC7E,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA,8HAA8H;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR,6DAA6D,sBAAsB;AACnF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,oEAAoE;AACpE,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR,+DAA+D;AAC/D,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,8DAA8D;AAC9D;AACA,mEAAmE,0BAA0B;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA,0DAA0D,0BAA0B;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gBAAgB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,uDAAuD,gBAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qEAAM;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qEAAM;AACN;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA,QAAQ;AACR;AACA,uDAAuD,gBAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAKE;AACF;;AAEA;AACA;AACA;;;;;;;;;;;;;;ACppF8B;;AAE9B;AAC4B;AAC5B,uCAAuC,qEAAM;AAC7C,UAAU,gBAAgB,EAAE,yEAAS;AACrC,aAAa,oDAAM;AACnB;AACA,2BAA2B,oDAAM,MAAM,GAAG;AAC1C;AACA,WAAW,oDAAM;AACjB;AACA,8BAA8B,GAAG;AACjC;AACA,CAAC;;AAIC;;;;;;;;;;;;;;;;;;;;ACnB4B;AAQA;;AAE9B;AAC4B;;AAE5B;AACgC;AACG;AACnC,wCAAwC,kBAAkB;AAC1D;AACA,wDAAwD,GAAG;AAC3D,6BAA6B,0DAAM;AACnC;AACA,mDAAmD;AACnD;AACA;AACA;AACA,qEAAM;AACN,8CAA8C;AAC9C;AACA,gBAAgB,0CAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,sCAAsC,iCAAiC;AACvE;AACA,SAAS;AACT,OAAO;AACP,MAAM;AACN;AACA;AACA,OAAO;AACP,MAAM;AACN,gCAAgC,oCAAoC;AACpE;AACA;AACA,EAAE,qEAAM;AACR;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN,gCAAgC,wCAAwC;AACxE;AACA,GAAG;AACH;AACA;AACA,qEAAM;AACN,oCAAoC,mBAAmB,IAAI;AAC3D,gBAAgB,0CAAM;AACtB;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA,MAAM;AACN,wBAAwB,kCAAkC;AAC1D,MAAM;AACN,oBAAoB,kCAAkC;AACtD,MAAM;AACN,mBAAmB,kCAAkC;AACrD,MAAM;AACN;AACA,MAAM;AACN,gBAAgB,UAAU;AAC1B,MAAM;AACN;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA,EAAE,qEAAM;AACR;AACA;AACA,qEAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,QAAQ,mCAAmC;AAC3C,QAAQ;AACR;AACA;AACA;AACA;AACA,kBAAkB,iCAAiC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mCAAmC;AACzC,MAAM;AACN;AACA;AACA,qEAAM;AACN;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,4BAA4B,iCAAiC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA,sBAAsB,WAAW;AACjC,uBAAuB,WAAW;AAClC;AACA;AACA,oBAAoB,uEAAQ;AAC5B,kBAAkB,0EAAW,oBAAoB,yEAAc,wBAAwB,yEAAS;AAChG;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY,EAAE,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,0CAA0C,+BAA+B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qEAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA,qEAAM;AACN,iCAAiC,qEAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI;AACN,EAAE,8DAAG;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6EAAc;AACnE;AACA;AACA;AACA,aAAa,uEAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,GAAG,kCAAkC,GAAG,0BAA0B,GAAG;AAC/H,MAAM,oDAAM;AACZ,MAAM;AACN,0DAA0D,GAAG,kCAAkC,GAAG,0BAA0B,GAAG;AAC/H,MAAM,oDAAM;AACZ,0DAA0D,GAAG,kCAAkC,GAAG,0BAA0B,GAAG;AAC/H,MAAM,oDAAM;AACZ;AACA;AACA;AACA,CAAC;;AAMC;;;;;;;;;;;;;;;;;;;;ACxVF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEyD;;;ACpDzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;AAEwG;;;ACvBzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEoC;;;ACfkD;AACrB;;AAEjE;AACA,iBAAiB,wBAAwB;AACzC,oBAAoB,wBAAwB;AAC5C,eAAe,0BAA0B;AACzC;AACA,sBAAsB,0BAA0B;AAChD;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEyB;;;ACnBzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEwB;;;ACtB0B;AACR;AACZ;AACO;;AAErC;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa;AACtB;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;;AAE4C;;;AC3BsB;;AAElE;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,KAAK,0BAA0B;AAC/B,CAAC;;AAEmE;;;ACbpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEyB;;;ACvCzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE6D;;;AC7BL;AACmB;AAChC;AACC;;AAE5C;AACA;AACA;AACA,OAAO,gBAAgB;AACvB;AACA;AACA;AACA,OAAO,yBAAyB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,IAAI;AACJ;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqC;;;ACtHrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEsB;;;ACRtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,0CAA0C;AAC1C;AACA,sBAAsB;AACtB;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEsB;;;ACxBQ;;AAE9B;AAC8F;AAC9F;AACA,+DAA+D,kBAAkB,+DAA+D,6BAA6B,mBAAmB;AAChM;AACA;AACA;AACA;AACA;AACA,wCAAwC,iCAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAAG;AACP;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN,MAAM,0BAAG;AACT;AACA;AACA;AACA,CAAC;AACD,4CAA4C,iCAAM;AAClD,eAAe,YAAY;AAC3B;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA;AACA,gBAAgB;AAChB;AACA,MAAM;AACN,MAAM,0BAAG;AACT,kDAAkD,YAAY;AAC9D;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA,uCAAuC,SAAS;AAChD;AACA;AACA,CAAC;AACD,iCAAiC,iCAAM;AACvC;AACA;AACA;AACA,IAAI;AACJ,IAAI,0BAAG;AACP;AACA;AACA,qBAAqB,SAAS;AAC9B,cAAc,UAAU,CAAC,UAAU;AACnC;AACA,CAAC;;AAMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7E4B;AAGA;AAGA;AAMA;AAcA;;AAE9B;AAC4B;AAC5B,kCAAkC,qEAAM;AACxC;AACA,8CAA8C,uEAAQ,CAAC,yEAAU;AACjE;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,4EAA4E,kFAAmB;AAC/F;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,sBAAsB,yEAAU,UAAU,2EAAY,CAAC,6EAAc,SAAS,yEAAU;AACxF;AACA,yBAAyB,yEAAU;AACnC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,oDAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yEAAU,cAAc,yEAAU;AACvE;AACA,4CAA4C,gFAAqB,aAAa,4EAAa;AAC3F;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,YAAY,qEAAM;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD,kCAAkC,qEAAM;AACxC,iDAAiD,uEAAQ,CAAC,yEAAU;AACpE;AACA,sBAAsB,yEAAU,UAAU,2EAAY,CAAC,6EAAc,SAAS,yEAAU;AACxF;AACA,4BAA4B,yEAAU;AACtC;AACA;AACA,GAAG;AACH;AACA;AACA,MAAM,uEAAQ,CAAC,yEAAU;AACzB;AACA,eAAe,oDAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD,uCAAuC,qEAAM;AAC7C;AACA;AACA;AACA,CAAC;AACD,qCAAqC,qEAAM;AAC3C;AACA,+CAA+C,oBAAoB,EAAE,IAAI,GAAG,IAAI;AAChF;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA,qEAAM;;AAEN;AACuC;AACX;;AAE5B;AACA,oCAAoC,qEAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD;;AAEA;AACuC;AACvC;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA,aAAa,oDAAO;AACpB;AACA;AACA,oBAAoB,uEAAQ;AAC5B,kBAAkB,0EAAW,oBAAoB,yEAAc,wBAAwB,yEAAU;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN,kCAAkC,qEAAM;AACxC;AACA;AACA;AACA;AACA,MAAM,uEAAQ,CAAC,yEAAU;AACzB;AACA,IAAI,8DAAG;AACP;AACA;AACA,aAAa,6EAAc;AAC3B;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA,6CAA6C,qEAAM;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,qEAAM;AAC3C,UAAU,gBAAgB,EAAE,yEAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,oCAAoC,qEAAM;AAC1C;AACA,WAAW;AACX,CAAC;AACD,iCAAiC,qEAAM;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD,mCAAmC,qEAAM;AACzC;AACA,CAAC;AACD,oCAAoC,qEAAM;AAC1C,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,oCAAoC;AACpC,kCAAkC;AAClC;AACA;AACA;AACA;AACA,CAAC;AACD,wCAAwC,qEAAM;AAC9C,UAAU,gCAAgC,EAAE,yEAAU;AACtD,UAAU,sBAAsB;AAChC,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;;AAED;AACA,2BAA2B,qEAAM;AACjC,EAAE,8DAAG;AACL,qBAAqB,yEAAU;AAC/B,UAAU,gCAAgC;AAC1C,UAAU,4BAA4B;AACtC,UAAU,0DAA0D;AACpE;AACA,wBAAwB,uEAAQ;AAChC;AACA,sBAAsB,yEAAU;AAChC;AACA;AACA;AACA,GAAG;AACH;AACA,MAAM,uEAAQ;AACd;AACA,eAAe,oDAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE,8DAAG;AACL;AACA;AACA,eAAe,wDAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM,8DAAG;AACT;AACA,KAAK;AACL,wEAAwE;AACxE,+DAA+D;AAC/D,IAAI;AACJ;AACA;AACA;AACA,UAAU,yBAAyB,EAAE,qFAAuB;AAC5D;AACA;AACA;AACA,iBAAiB,wBAAwB,IAAI,kDAAkD;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD,gCAAgC,qEAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gCAAgC;AAC3C,CAAC;AACD,uCAAuC,qEAAM;AAC7C,qBAAqB,yEAAU;AAC/B,UAAU,gCAAgC;AAC1C,UAAU,2EAA2E;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uEAAQ;AACd;AACA,eAAe,oDAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,wCAAwC,qBAAqB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB,IAAI,SAAS,uEAAQ,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD,oCAAoC,qEAAM;AAC1C,EAAE,8DAAG;AACL,qBAAqB,yEAAU;AAC/B,UAAU,gCAAgC;AAC1C,UAAU,4BAA4B;AACtC,UAAU,0DAA0D;AACpE;AACA,wBAAwB,uEAAQ;AAChC;AACA,sBAAsB,yEAAU;AAChC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,MAAM,uEAAQ;AACd;AACA,eAAe,oDAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE,8DAAG;AACL;AACA;AACA,eAAe,wDAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,MAAM,8DAAG;AACT;AACA,KAAK;AACL,wEAAwE;AACxE,+DAA+D;AAC/D,IAAI;AACJ;AACA;AACA;AACA,UAAU,yBAAyB,EAAE,qFAAuB;AAC5D;AACA;AACA;AACA,iBAAiB,wBAAwB,IAAI,kDAAkD;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD,8BAA8B,qEAAM;AACpC,qBAAqB,yEAAU;AAC/B,UAAU,gCAAgC;AAC1C,UAAU,aAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qEAAM;AAC1C;AACA;AACA;AACA;AACA,CAAC;AACD,4BAA4B,qEAAM;AAClC;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,qEAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,qEAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,qEAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA,QAAQ,+BAA+B;AACvC,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qEAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAC6B;AAC7B;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAM;AACnB,4CAA4C,mDAAmD;AAC/F;AACA;AACA;AACA;AACA;AACA,mDAAmD,kFAAmB;AACtE;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA,qEAAM;AACN;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B;AACA,MAAM,oBAAoB;AAC1B;AACA;AACA,aAAa,wDAAM;AACnB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qEAAM;;AAEN;AACA;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2BAA2B;AACjC,MAAM,kBAAkB;AACxB,MAAM,qBAAqB;AAC3B,MAAM,oBAAoB;AAC1B,MAAM,2BAA2B;AACjC,MAAM;AACN;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAM;AACrB,8CAA8C;AAC9C;AACA;AACA,8FAA8F,OAAO,IAAI,MAAM;AAC/G;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC6B;AAC7B;AACA,UAAU,aAAa;AACvB;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA,MAAM,gBAAgB;AACtB,MAAM,gBAAgB;AACtB,MAAM,iBAAiB;AACvB,MAAM;AACN;AACA,aAAa,wDAAM;AACnB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC6B;AAC7B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,8BAA8B;AACxC;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAM;AACrB,8CAA8C;AAC9C;AACA;AACA,oEAAoE,kFAAmB;AACvF,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC6B;AAC7B;AACA;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,cAAc,UAAU,GAAG,WAAW,IAAI,UAAU,GAAG;AACvD,uBAAuB,UAAU,GAAG,WAAW,IAAI,UAAU,GAAG,UAAU;AAC1E;AACA,qEAAM;AACN;AACA,UAAU,0BAA0B;AACpC;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAM;AACnB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG,yCAAyC,eAAe;AAC/D;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA,qEAAM;AACN;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA,MAAM,+BAA+B;AACrC;AACA;AACA,MAAM,+BAA+B;AACrC;AACA;AACA;AACA,MAAM,8BAA8B;AACpC,MAAM,+BAA+B;AACrC;AACA,MAAM,gCAAgC;AACtC;AACA;AACA,MAAM,8BAA8B;AACpC;AACA,MAAM,8BAA8B;AACpC,MAAM;AACN;AACA,aAAa,wDAAM;AACnB,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,OAAO;AAC5D;AACA;AACA,iBAAiB,8CAA8C,GAAG,8DAA8D;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA,kBAAkB,MAAM;AACxB;AACA;AACA;AACA,qEAAM;AACN;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA,MAAM,+BAA+B;AACrC;AACA;AACA,MAAM,6BAA6B;AACnC;AACA;AACA;AACA,MAAM,+BAA+B;AACrC,MAAM,8BAA8B;AACpC;AACA,MAAM,+BAA+B;AACrC;AACA;AACA,MAAM,6BAA6B;AACnC;AACA,MAAM,6BAA6B;AACnC,MAAM;AACN;AACA,aAAa,wDAAM;AACnB,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,QAAQ;AAC9D;AACA;AACA,iBAAiB,+DAA+D,GAAG,8DAA8D;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA,qEAAM;AACN;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA,MAAM,+BAA+B;AACrC;AACA;AACA,MAAM,+BAA+B;AACrC;AACA;AACA;AACA;AACA,MAAM,kCAAkC;AACxC;AACA;AACA,MAAM,mCAAmC;AACzC;AACA;AACA;AACA,MAAM,8BAA8B;AACpC,MAAM,+BAA+B;AACrC;AACA,MAAM,gCAAgC;AACtC;AACA;AACA,MAAM,8BAA8B;AACpC;AACA,MAAM,8BAA8B;AACpC,MAAM,mDAAmD;AACzD;AACA,MAAM,kCAAkC;AACxC;AACA;AACA,MAAM,mCAAmC;AACzC;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oBAAoB;AACtE;AACA;AACA,iBAAiB,+DAA+D,GAAG,8DAA8D;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB,MAAM,aAAa;AACnB,MAAM,0BAA0B;AAChC,MAAM,uBAAuB;AAC7B,MAAM,uBAAuB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO,IAAI,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,0CAA0C,qEAAM;AAChD;AACA,QAAQ,EAAE,GAAG,OAAO;AACpB,QAAQ,GAAG,GAAG,IAAI,QAAQ,MAAM;AAChC,QAAQ,GAAG,GAAG,IAAI,QAAQ,OAAO;AACjC,UAAU,OAAO;AACjB,QAAQ,GAAG,GAAG,IAAI,QAAQ,MAAM;AAChC,UAAU,QAAQ;AAClB;AACA,CAAC;AACD,+CAA+C,qEAAM;AACrD;AACA,QAAQ,EAAE,GAAG,OAAO;AACpB,QAAQ,UAAU,GAAG,OAAO;AAC5B,QAAQ,GAAG,GAAG,IAAI,QAAQ,OAAO;AACjC,UAAU,OAAO;AACjB,QAAQ,GAAG,GAAG,IAAI,QAAQ,MAAM;AAChC,UAAU,QAAQ;AAClB;AACA,CAAC;AACD,+CAA+C,qEAAM;AACrD,cAAc,cAAc,GAAG,YAAY,OAAO,GAAG,GAAG,IAAI,QAAQ,MAAM;AAC1E,CAAC;AACD;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAO;AACtB;AACA;AACA,uEAAuE;AACvE,uEAAuE,cAAc;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,iIAAiI,kFAAmB;AACpJ;AACA;AACA,2CAA2C,OAAO,IAAI,cAAc;AACpE;AACA;AACA;AACA,iBAAiB,gDAAgD,IAAI,4EAA4E;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB;AAC5B,MAAM,0BAA0B;AAChC,MAAM,cAAc;AACpB,MAAM,UAAU;AAChB,MAAM,MAAM;AACZ,MAAM,UAAU;AAChB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0DAA0D,IAAI,sEAAsE;AACrJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAO;AACtB,mDAAmD,kCAAkC;AACrF,mDAAmD,kCAAkC;AACrF;AACA;AACA;AACA,8BAA8B,kFAAmB,iCAAiC,kFAAmB;AACrG;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,sCAAsC,UAAU,kBAAkB;AAClE,UAAU,0BAA0B;AACpC;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,UAAU,aAAa;AACvB,4CAA4C,oBAAoB;AAChE;AACA;AACA;AACA;AACA;AACA,yDAAyD,YAAY,WAAW;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG,wCAAwC,eAAe;AAC9D;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB,MAAM,cAAc;AACpB,MAAM;AACN;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,2GAA2G,OAAO,IAAI,MAAM;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8CAA8C,IAAI,8DAA8D;AACjI;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,kCAAkC,eAAe,iCAAiC;AAClF,UAAU,aAAa;AACvB;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wDAAO;AACpB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB;AAC5B,MAAM,8BAA8B;AACpC;AACA,MAAM,6BAA6B;AACnC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG,gCAAgC,eAAe;AACtD;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,yCAAyC,qEAAM;AAC/C;AACA,QAAQ,MAAM,GAAG,EAAE;AACnB,QAAQ,cAAc,GAAG,EAAE;AAC3B,QAAQ,UAAU,GAAG,eAAe;AACpC,QAAQ,cAAc,GAAG,WAAW;AACpC,QAAQ,MAAM,GAAG,WAAW;AAC5B,QAAQ,EAAE,GAAG,eAAe;AAC5B;AACA;AACA,CAAC;AACD;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY;AAClB,MAAM,gBAAgB;AACtB,MAAM,iBAAiB;AACvB,MAAM,iBAAiB;AACvB,MAAM,aAAa;AACnB,MAAM;AACN;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAO;AACtB,8CAA8C;AAC9C;AACA;AACA,8FAA8F,OAAO,IAAI,MAAM;AAC/G;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA;AACA,UAAU,WAAW;AACrB;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO,IAAI,OAAO;AAC3D;AACA;AACA,IAAI,8DAAG,gCAAgC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,oCAAoC,UAAU,6BAA6B;AAC3E,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,UAAU,aAAa;AACvB,UAAU,YAAY;AACtB;AACA;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C,8BAA8B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,yEAAU;AAC5B;AACA;AACA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB,GAAG,sIAAsI;AACnL;AACA,qCAAqC,uCAAuC;AAC5E;AACA;AACA;AACA,iBAAiB,8CAA8C,GAAG,4DAA4D;AAC9H;AACA;AACA;AACA,iBAAiB,EAAE,GAAG,oFAAoF;AAC1G;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D,UAAU,gDAAgD;AAC1D,UAAU,6EAA6E;AACvF,UAAU,wEAAwE;AAClF,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,wEAAwE;AAClF,UAAU;AACV;AACA,MAAM;AACN;AACA,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,oDAAoD;AAC9D,UAAU,yDAAyD;AACnE,UAAU,oDAAoD;AAC9D,UAAU,gDAAgD;AAC1D,UAAU,yDAAyD;AACnE,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,0CAA0C,UAAU,6BAA6B;AACjF,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,yEAAU;AAC5B;AACA;AACA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB,GAAG,sIAAsI;AACjL;AACA,mCAAmC,uCAAuC;AAC1E;AACA;AACA,iBAAiB,8CAA8C,GAAG,4DAA4D;AAC9H;AACA;AACA;AACA,iBAAiB,EAAE,GAAG,oFAAoF;AAC1G;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,2CAA2C,UAAU,6BAA6B;AAClF,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,qCAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU,YAAY;AACtB;AACA;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,yEAAU;AAC5B;AACA;AACA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB,GAAG,sIAAsI;AACnL;AACA,qCAAqC,uCAAuC;AAC5E;AACA;AACA;AACA,iBAAiB,8CAA8C,GAAG,4DAA4D;AAC9H;AACA;AACA;AACA,iBAAiB,EAAE,GAAG,oFAAoF;AAC1G;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D,UAAU,gDAAgD;AAC1D,UAAU,6EAA6E;AACvF,UAAU,wEAAwE;AAClF,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,wEAAwE;AAClF,UAAU;AACV;AACA,MAAM;AACN;AACA,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,oDAAoD;AAC9D,UAAU,yDAAyD;AACnE,UAAU,oDAAoD;AAC9D,UAAU,gDAAgD;AAC1D,UAAU,yDAAyD;AACnE,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,0CAA0C,UAAU,6BAA6B;AACjF,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,qCAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC,UAAU,YAAY;AACtB;AACA;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM,yEAAU;AAC5B;AACA;AACA;AACA,OAAO,EAAE;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB,GAAG,sIAAsI;AACnL;AACA,qCAAqC,uCAAuC;AAC5E;AACA;AACA;AACA,iBAAiB,8CAA8C,GAAG,4DAA4D;AAC9H;AACA;AACA;AACA,iBAAiB,EAAE,GAAG,oFAAoF;AAC1G;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D,UAAU,gDAAgD;AAC1D,UAAU,6EAA6E;AACvF,UAAU,wEAAwE;AAClF,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,wEAAwE;AAClF,UAAU;AACV;AACA,MAAM;AACN;AACA,UAAU,2CAA2C;AACrD,UAAU,2CAA2C;AACrD,UAAU,oDAAoD;AAC9D,UAAU,yDAAyD;AACnE,UAAU,oDAAoD;AAC9D,UAAU,gDAAgD;AAC1D,UAAU,yDAAyD;AACnE,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,2CAA2C,UAAU,aAAa;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB,GAAG,4DAA4D;AAClG;AACA;AACA;AACA;AACA,iBAAiB,8CAA8C,GAAG,wHAAwH;AAC1L;AACA;AACA;AACA,iBAAiB,EAAE,GAAG,oFAAoF;AAC1G;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gDAAgD;AAC1D,UAAU,gDAAgD;AAC1D,UAAU,6EAA6E;AACvF,UAAU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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mBAAmB;AAC5D;AACA;AACA,iBAAiB,6DAA6D,IAAI,iFAAiF;AACnK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,oCAAoC,UAAU,kBAAkB;AAChE,UAAU,0BAA0B;AACpC;AACA,8CAA8C,wEAAS;AACvD;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,6CAA6C,qEAAM;AACnD;AACA,QAAQ,aAAa,GAAG,EAAE;AAC1B,QAAQ,SAAS,GAAG,aAAa;AACjC,QAAQ,aAAa,GAAG,SAAS;AACjC,QAAQ,EAAE,GAAG,aAAa;AAC1B;AACA;AACA,CAAC;AACD;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA,MAAM,gBAAgB;AACtB,MAAM,iBAAiB;AACvB,MAAM,iBAAiB;AACvB,MAAM;AACN;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAO;AACtB,8CAA8C;AAC9C;AACA;AACA,8FAA8F,OAAO,IAAI,MAAM;AAC/G;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB;AACvB,MAAM,SAAS;AACf,MAAM,qBAAqB;AAC3B,MAAM,cAAc;AACpB,MAAM;AACN;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA,iBAAiB,0DAA0D,IAAI,gDAAgD;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACuC;AACT;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,MAAM,uEAAQ,CAAC,yEAAU;AACzB;AACA,gBAAgB,oDAAO;AACvB;AACA;AACA;AACA;AACA,EAAE,8DAAG;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oDAAO;AACpB;AACA;AACA;AACA;AACA,EAAE,oDAAO;AACT;AACA;AACA;AACA,EAAE,oDAAO;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAO;AACtB,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8DAAG;AACT;AACA,KAAK;AACL;AACA,MAAM,8DAAG;AACT;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM;AACZ,MAAM,iBAAiB;AACvB,MAAM,wBAAwB;AAC9B,MAAM,oBAAoB;AAC1B,MAAM,aAAa;AACnB,MAAM,MAAM;AACZ,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,kFAAmB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+DAA+D,GAAG,0DAA0D;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM;AACZ,MAAM,aAAa;AACnB,MAAM,oBAAoB;AAC1B,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,MAAM;AAClD;AACA;AACA,iBAAiB,2DAA2D,IAAI,0DAA0D;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAO;AACtB,8CAA8C;AAC9C;AACA;AACA;AACA,+DAA+D,kFAAmB;AAClF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,kCAAkC,UAAU,kBAAkB;AAC9D,UAAU,0BAA0B;AACpC;AACA,UAAU,YAAY;AACtB,UAAU,qCAAqC;AAC/C;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,oCAAoC,UAAU,kBAAkB;AAChE,UAAU,YAAY;AACtB;AACA;AACA;AACA,eAAe,wDAAO;AACtB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,aAAa;AACnB,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,gBAAgB;AACtB,MAAM,iBAAiB;AACvB,MAAM,cAAc;AACpB,MAAM;AACN;AACA;AACA,eAAe,wDAAO;AACtB,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB,+DAA+D,kFAAmB;AAClF;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA,MAAM,wBAAwB;AAC9B,MAAM,4BAA4B;AAClC,MAAM,mCAAmC;AACzC,MAAM;AACN;AACA;AACA,MAAM,mCAAmC;AACzC,MAAM,mCAAmC;AACzC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gCAAgC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,wCAAwC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wCAAwC;AAC9C,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM,uCAAuC;AAC7C,MAAM,gCAAgC;AACtC,MAAM,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,mBAAmB;AACnE;AACA;AACA,iBAAiB,2DAA2D,GAAG,8EAA8E;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,2CAA2C,qEAAM;AACjD,aAAa,EAAE,GAAG;AAClB,OAAO,GAAG,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC9B,OAAO,MAAM,GAAG;AAChB,OAAO,GAAG,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC9B,OAAO,MAAM,GAAG;AAChB,OAAO,GAAG,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC9B,OAAO,OAAO,GAAG,EAAE;AACnB,CAAC;AACD,gDAAgD,qEAAM;AACtD;AACA,QAAQ,EAAE,GAAG,EAAE;AACf,QAAQ,UAAU,GAAG,EAAE;AACvB,QAAQ,GAAG,GAAG,IAAI,QAAQ,EAAE,GAAG,QAAQ;AACvC,QAAQ,OAAO;AACf,QAAQ,GAAG,GAAG,IAAI,QAAQ,EAAE,GAAG,OAAO;AACtC,QAAQ,MAAM;AACd;AACA,CAAC;AACD,gDAAgD,qEAAM;AACtD,cAAc,cAAc,GAAG,YAAY,OAAO,GAAG,GAAG,IAAI,UAAU,OAAO;AAC7E,CAAC;AACD;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,qCAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA,eAAe,wDAAO;AACtB;AACA;AACA,uEAAuE;AACvE,uEAAuE,cAAc;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,iIAAiI,kFAAmB;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO,IAAI,OAAO;AAC7D;AACA;AACA,iBAAiB,qDAAqD,IAAI,gDAAgD;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,MAAM,qBAAqB;AAC3B,MAAM,wBAAwB;AAC9B,MAAM,aAAa;AACnB,MAAM;AACN;AACA;AACA,UAAU,YAAY;AACtB;AACA,eAAe,wDAAO;AACtB,8CAA8C;AAC9C;AACA;AACA,8FAA8F,OAAO,IAAI,MAAM;AAC/G;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,4BAA4B;AAClC,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AACjC,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAC3B,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC,wBAAwB,uEAAQ,CAAC,yEAAU;AAC3C;AACA;AACA;AACA;AACA,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM;AACN;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,OAAO,IAAI,MAAM;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8CAA8C,IAAI,mGAAmG;AACtK;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,mCAAmC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mCAAmC;AACzC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,mBAAmB;AACnE;AACA;AACA,iBAAiB,2DAA2D,GAAG,0EAA0E;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,MAAM,0BAA0B;AAChC;AACA,MAAM,0BAA0B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B;AACA,UAAU,0BAA0B;AACpC;AACA,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA,UAAU,YAAY;AACtB,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA,MAAM,sCAAsC;AAC5C,MAAM,6BAA6B;AACnC,MAAM,oBAAoB;AAC1B,MAAM;AACN;AACA,mBAAmB,eAAe,GAAG,gBAAgB,GAAG,MAAM,GAAG,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO,GAAG,eAAe,GAAG;AACrJ,mBAAmB,eAAe,GAAG,GAAG,GAAG,MAAM,GAAG;AACpD,mBAAmB,EAAE,GAAG,gBAAgB,GAAG,EAAE,GAAG,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe,IAAI,eAAe;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iEAAiE,IAAI,iEAAiE;AACvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AACS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kCAAkC,EAAE,wEAAS;AACzD,YAAY,aAAa;AACzB;AACA;AACA;AACA;AACA,2CAA2C,WAAW;AACtD;AACA;AACA;AACA,iBAAiB,wEAAS;AAC1B;AACA;AACA;AACA,UAAU,YAAY;AACtB,UAAU,cAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iFAAkB;AAC1B;AACA;AACA;AACA,SAAS,uEAAQ;AACjB;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6BAA6B,IAAI,oDAAoD;AACxG;AACA,GAAG;AACH;AACA;AACA;AACA,UAAU,iBAAiB,EAAE,wEAAS;AACtC,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6GAA6G,6BAA6B;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA,4DAA4D,kBAAkB,kCAAkC,WAAW,IAAI,WAAW;AAC1I,oBAAoB,gFAAiB;AACrC,gBAAgB,gFAAiB;AACjC,+CAA+C,wBAAwB;AACvE;AACA;AACA,UAAU,yEAAU;AACpB;AACA;AACA;AACA,eAAe,iFAAkB;AACjC;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,8BAA8B,8BAA8B;AAC5D;AACA,0DAA0D,wBAAwB;AAClF;AACA;AACA,4DAA4D,wBAAwB;AACpF;AACA;AACA;AACA,MAAM,uEAAQ;AACd;AACA;AACA,eAAe,oDAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACuC;AACT;;AAE9B;AACuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa,WAAW,OAAO;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,+BAA+B;AAClF;AACA,4CAA4C,0BAA0B,IAAI,sBAAsB;AAChG;AACA;AACA;AACA,iBAAiB,EAAE,IAAI,mDAAmD;AAC1E;AACA;AACA;AACA;AACA,iBAAiB,EAAE,IAAI,yGAAyG;AAChI;AACA;AACA,WAAW;AACX;AACA,qEAAM;AACN;AACA,6FAA6F;AAC7F,iBAAiB,wEAAS;AAC1B,qEAAqE,uEAAQ;AAC7E;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM,uEAAQ;AACd;AACA;AACA,sBAAsB,yEAAU;AAChC;AACA,IAAI,4EAAa,CAAC,6EAAc;AAChC;AACA,aAAa,iFAAkB;AAC/B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oDAAO;AACb;AACA;AACA;AACA;AACA,wFAAwF,wBAAwB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,eAAe,oDAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,YAAY,qEAAM;AAClB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA,iBAAiB,yEAAU;AAC3B;AACA;AACA,8CAA8C,uEAAQ;AACtD;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B,UAAU,0BAA0B;AACpC;AACA;AACA,0CAA0C;AAC1C;AACA,iEAAiE;AACjE;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,yCAAyC,cAAc,IAAI,cAAc;AACzE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AAC8B;AACS;AACvC;AACA,UAAU,0BAA0B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI,EAAE,qBAAqB,IAAI,IAAI;AAC9C;AACA;AACA;AACA,IAAI;AACJ,+CAA+C,IAAI,WAAW,IAAI;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA,SAAS,uCAAuC,8BAA8B,OAAO;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gCAAgC,qBAAqB,OAAO;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gCAAgC,qBAAqB,OAAO;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gDAAgD,6BAA6B,OAAO;AAC7F;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,SAAS,4BAA4B,iBAAiB,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iCAAiC,mBAAmB,OAAO;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wDAAO;AACpB,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,cAAc,IAAI,wBAAwB;AACnF,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA,iBAAiB,yEAAU;AAC3B;AACA,sBAAsB,yEAAU;AAChC;AACA,IAAI,4EAAa,CAAC,6EAAc;AAChC;AACA,aAAa,iFAAkB;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,wBAAwB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,eAAe,oDAAO;AACtB;AACA;AACA;AACA;AACA,wCAAwC,gBAAgB,GAAG,2BAA2B;AACtF;AACA;AACA,qEAAM;;AAEN;AAC8B;AAC9B,wCAAwC,qEAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gDAAgD,QAAQ;AACxD,UAAU,0BAA0B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,8BAA8B;AACrC;AACA;AACA;AACA;AACA,IAAI;AACJ,OAAO,8BAA8B;AACrC;AACA;AACA;AACA;AACA;AACA,UAAU,6CAA6C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,SAAS;AACnB,UAAU,YAAY;AACtB;AACA,eAAe,wDAAO;AACtB,qDAAqD;AACrD;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qEAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,qEAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,sCAAsC,WAAW;AACjD;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN,kCAAkC,qEAAM;AACxC;AACA,CAAC;AACD,6BAA6B,qEAAM;AACnC;AACA,CAAC;AACD,mCAAmC,qEAAM;AACzC;AACA,EAAE,8DAAG;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,CAAC;;AAcC;;;;;;;;;;;;;;;;;;;;;;;;ACpoK4B;AAIA;AAGA;AAGA;AAGA;AAMA;;AAE9B;AAgBY;AACgB;;AAE5B;AACA,qCAAqC,qEAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,iBAAiB,4BAA4B;AAC7C,iBAAiB,2BAA2B;AAC5C,gBAAgB,0BAA0B;AAC1C,kBAAkB,6BAA6B;AAC/C,iBAAiB,kCAAkC;AACnD,eAAe,gCAAgC;AAC/C,iBAAiB,iCAAiC;AAClD,gBAAgB,gCAAgC;AAChD,cAAc,+BAA+B;AAC7C,cAAc,8BAA8B;AAC5C,iBAAiB,gCAAgC;AACjD,iBAAiB,gCAAgC;AACjD,kBAAkB,iCAAiC;AACnD,uBAAuB,wCAAwC;AAC/D,0BAA0B;AAC1B;AACA,oCAAoC,qEAAM;AAC1C;AACA;AACA,IAAI,8DAAG,6BAA6B,UAAU;AAC9C;AACA;AACA;AACA;AACA,8BAA8B,GAAG,GAAG,YAAY,GAAG,cAAc,EAAE,OAAO;AAC1E;AACA;AACA,+BAA+B,iBAAiB,GAAG,QAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2BAA2B,SAAS,UAAU,IAAI,GAAG,gBAAgB;AACrE,IAAI;AACJ,2BAA2B,SAAS,UAAU,IAAI,GAAG,iBAAiB;AACtE;AACA,CAAC;;AAED;AACA;AACA;AACA,4BAA4B,qEAAM;AAClC;AACA;AACA,CAAC;AACD,qCAAqC,qEAAM;AAC3C,sEAAsE;AACtE;AACA,CAAC;AACD,sCAAsC,qEAAM;AAC5C,sBAAsB,uEAAQ,CAAC,yEAAS;AACxC,6BAA6B,yEAAU;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,8DAAG;AACL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oDAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kFAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,oCAAoC,kFAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,kCAAkC,kFAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,kCAAkC,kFAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,MAAM,yEAAS;AACf;AACA;AACA;AACA;AACA,qEAAM;AACN,wCAAwC,qEAAM;AAC9C,EAAE,8DAAG;AACL;AACA,qBAAqB,yEAAS;AAC9B,UAAU,2BAA2B,EAAE,qFAAuB;AAC9D;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAa;AAC/B,MAAM,8DAAG;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,EAAE,IAAI,iCAAiC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAa;AAC/B;AACA;AACA;AACA,sCAAsC,EAAE,IAAI,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,EAAE,IAAI,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAa;AAC/B;AACA;AACA;AACA,sCAAsC,EAAE,IAAI,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wEAAa;AAC/B;AACA;AACA;AACA,sCAAsC,EAAE,IAAI,EAAE;AAC9C;AACA,CAAC;AACD,kCAAkC,qEAAM;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mCAAmC,qEAAM;AACzC,EAAE,8DAAG;AACL,kBAAkB;AAClB,kBAAkB;AAClB,oBAAoB,QAAQ,IAAI,QAAQ,IAAI,YAAY,IAAI,YAAY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG,mCAAmC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AACpE;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,QAAQ;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,CAAC;AACD,yCAAyC,qEAAM;AAC/C,EAAE,8DAAG;AACL;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA,MAAM,8DAAG;AACT,MAAM,8DAAG;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,QAAQ;AACR,QAAQ,8DAAG;AACX;AACA;AACA,MAAM;AACN,MAAM,8DAAG;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE,8DAAG;AACL;AACA,CAAC;AACD;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,qEAAM;AACN,wCAAwC,qEAAM;AAC9C;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD,iCAAiC,qEAAM;AACvC,UAAU,uBAAuB;AACjC;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,QAAQ,8DAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ,8DAAG;AACX;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD,iCAAiC,qEAAM;AACvC,UAAU,gBAAgB,EAAE,yEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2EAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qDAAU;AACxB,UAAU,sDAAW;AACrB;AACA;AACA,cAAc,sDAAW;AACzB;AACA;AACA,cAAc,qDAAU;AACxB;AACA;AACA,cAAc,wDAAa;AAC3B;AACA;AACA,cAAc,qDAAU;AACxB;AACA;AACA,cAAc,qDAAU;AACxB;AACA;AACA,cAAc,0DAAe;AAC7B;AACA;AACA,cAAc,yDAAc;AAC5B;AACA;AACA,cAAc,yDAAc;AAC5B;AACA;AACA,cAAc,uDAAY;AAC1B;AACA;AACA,cAAc,oDAAS;AACvB;AACA;AACA,cAAc,yDAAc;AAC5B;AACA;AACA,cAAc,yDAAe;AAC7B;AACA;AACA,cAAc,qDAAU;AACxB;AACA,UAAU,OAAO,EAAE,wFAA0B;AAC7C,uBAAuB,mDAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wDAAK;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,cAAc,oDAAM,oMAAoM;AACxN;AACA;AACA;AACA,IAAI;AACJ,qDAAqD;AACrD,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,eAAe;AAC/E;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,MAAM,yEAAS,oCAAoC,yEAAS;AAC5D;AACA;AACA;AACA,EAAE,8DAAG;AACL,EAAE,8DAAG;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,oCAAoC,qEAAM;AAC1C;AACA;AACA,GAAG;AACH,CAAC;AACD,gCAAgC,qEAAM;AACtC,EAAE,8DAAG;AACL;AACA;AACA,CAAC;AACD,kCAAkC,qEAAM;AACxC;AACA;AACA,CAAC;AACD,kCAAkC,qEAAM;AACxC;AACA;AACA,CAAC;AACD,iCAAiC,qEAAM;AACvC;AACA;AACA,CAAC;AACD,+BAA+B,qEAAM;AACrC;AACA;AACA,CAAC;AACD,4BAA4B,qEAAM;AAClC;AACA;AACA,CAAC;AACD,6BAA6B,qEAAM;AACnC;AACA;AACA,CAAC;AACD,4BAA4B,qEAAM;AAClC;AACA;AACA,CAAC;AACD,2BAA2B,qEAAM;AACjC;AACA,CAAC;AACD,+BAA+B,qEAAM;AACrC;AACA;AACA,CAAC;AACD,kCAAkC,qEAAM;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kCAAkC,qEAAM;AACxC;AACA;AACA,CAAC;AACD,mCAAmC,qEAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,wCAAwC,qEAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,2CAA2C,qEAAM;AACjD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQE;;;;;;;;;;;;;AChtB4B;;AAE9B;AACA,8CAA8C,qEAAM;AACpD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAIC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZ4B;;AAE9B;AACsD;AAuB1C;AAC+B;AACJ;AACvC;AACA;AACA,YAAY;AACZ,kBAAkB;AAClB,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,aAAa;AACb,qBAAqB;AACrB,mBAAmB;AACnB,eAAe;AACf,uBAAuB;AACvB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,mBAAmB;AACnB,gBAAgB;AAChB,gBAAgB;AAChB,cAAc;AACd,WAAW;AACX,gBAAgB;AAChB,iBAAiB;AACjB;AACA,wEAAwE,EAAE,EAAE,oBAAoB,EAAE,EAAE;AACpG,iCAAiC,qEAAM;AACvC;AACA;AACA;AACA;AACA,IAAI,gFAAiB;AACrB,cAAc,sFAAuB;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,aAAa,yEAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,sCAAsC,qEAAM;AAC5C;AACA;AACA,WAAW,EAAE,KAAK,GAAG,4BAA4B,MAAM,KAAK,EAAE;AAC9D;AACA;AACA;AACA;AACA,IAAI,8DAAG;AACP,oCAAoC,sCAAsC,oBAAoB,KAAK;AACnG;AACA;AACA;AACA,oBAAoB,yEAAc;AAClC,0BAA0B,yEAAc;AACxC,QAAQ,yEAAc;AACtB;AACA;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,IAAI;AACJ,IAAI,8DAAG;AACP,gBAAgB,eAAe,qCAAqC,KAAK,wBAAwB,KAAK;AACtG;AACA,aAAa;AACb;AACA,CAAC;AACD,uCAAuC,qEAAM;AAC7C,sBAAsB,yEAAc;AACpC,CAAC;AACD,yCAAyC,qEAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,4BAA4B,2DAA2D;AACvF;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,6EAAW;AACtB;AACA;AACA;AACA,qEAAM;AACN,8BAA8B,qEAAM;AACpC;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA,MAAM,8DAAG,yBAAyB,cAAc;AAChD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN,kCAAkC,qEAAM;AACxC;AACA;AACA,CAAC;AACD,qCAAqC,qEAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,8CAA8C,qEAAM;AACpD,EAAE,8DAAG,oBAAoB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,EAAE,8DAAG;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,QAAQ;AACR,oCAAoC;AACpC;AACA;AACA;AACA,WAAW;AACX;AACA,qEAAM;AACN;AACA,iCAAiC,qEAAM;AACvC;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA,qEAAM;AACN,6BAA6B,qEAAM;AACnC;AACA,CAAC;AACD,iCAAiC,qEAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qCAAqC,qEAAM;AAC3C,sCAAsC,yEAAc;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gBAAgB,yEAAO;AACvB;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAuE;AAC/E;AACA;AACA,QAAQ,yEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,MAAM;AACrD;AACA;AACA,gBAAgB,mCAAmC;AACnD;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH,kCAAkC,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB;AAC/H;AACA,kBAAkB,yEAAO;AACzB;AACA;AACA,QAAQ,+DAA+D;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,YAAY,EAAE,UAAU;AAClD;AACA;AACA;AACA;AACA,sCAAsC,SAAS,EAAE,gBAAgB;AACjE;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL,aAAa;AACb,GAAG;AACH,wDAAwD,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB;AACpJ;AACA;AACA;AACA;AACA,qEAAM;AACN;AACA;AACA;AACA,qEAAM;AACN,8BAA8B,yEAAO;AACrC;AACA,YAAY,wDAAwD;AACpE;AACA,eAAe;AACf;AACA;AACA;AACA,6BAA6B,yEAAc;AAC3C;AACA,iBAAiB,oDAAM;AACvB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qEAAM;AACV;AACA;AACA;AACA,mCAAmC,qEAAM;AACzC;AACA,kFAAkF;AAClF;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,qEAAM;AACN,kCAAkC,qEAAM;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,oCAAoC,qEAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,CAAC;AACD;AACA,SAAS,uEAAK,GAAG;AACjB;AACA,qEAAM;AACN;AACA,mBAAmB,kFAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,qEAAM;AAC3C;AACA,oCAAoC;AACpC;AACA,GAAG;AACH,uCAAuC;AACvC;AACA,GAAG;AACH,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD,qCAAqC,qEAAM;AAC3C,yEAAyE;AACzE,CAAC;AACD,gCAAgC,qEAAM;AACtC;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,YAAY,YAAY,OAAO,QAAQ,EAAE,KAAK,GAAG,GAAG,GAAG,QAAQ,EAAE,aAAa,OAAO,OAAO;AAC5F,CAAC;AACD;AACA;AACA;AACA,qEAAM;;AAoBJ;;;;;;;;;;;;;;;;;;ACtjB4B;AAKA;AAGA;AAMA;;AAE9B;AACA;AACA,UAAU,yEAAc;AACxB,WAAW;AACX,eAAe;AACf,YAAY;AACZ,iBAAiB;AACjB,iBAAiB,0EAAe;AAChC,YAAY;AACZ,oBAAoB;AACpB,aAAa;AACb,KAAK;AACL,mBAAmB;AACnB;;AAEA;AACA;AACA,4CAA4C,qEAAM;AAClD;AACA;AACA;AACA,CAAC;AACD,mDAAmD,qEAAM;AACzD;AACA;AACA;AACA,8BAA8B,qEAAM,mBAAmB,4KAA8B;AACrF;AACA;AACA,CAAC;AACD;AACA,6BAA6B,qEAAM;AACnC;AACA,iDAAiD,4BAA4B;AAC7E;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,mDAAmD,qEAAM,oBAAoB,qBAAqB,IAAI;AACtG;AACA;AACA;AACA;AACA,IAAI,8DAAG,0BAA0B,WAAW,2BAA2B,UAAU;AACjF;AACA;AACA,4CAA4C,WAAW,MAAM,UAAU;AACvE,CAAC;;AAMC;;;;;;;;;;;;;AC3E4B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,qEAAM;AACN,uCAAuC,qEAAM;AAC7C;AACA,aAAa;AACb;AACA;AACA,CAAC;AACD,iDAAiD,qEAAM;AACvD;AACA,uBAAuB,qEAAM;AAC7B;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA,QAAQ;AACR,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uBAAuB,qEAAM;AAC7B;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA,QAAQ;AACR,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA,UAAU,uBAAuB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,sCAAsC,YAAY;AAClD;AACA;AACA;AACA,OAAO;AACP,sCAAsC,YAAY,IAAI,YAAY;AAClE;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;;AAIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtJF;AACsC;AACL;AACjC;AACA;AACA,eAAe,yBAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,yBAAM;AACjB;AACA;AACA,qDAAe,MAAM,EAAC;;;;;ACftB;AACsC;AACT;AAC7B;AACA;AACA;AACA,YAAY,6BAA6B,EAAE,yBAAK;AAChD,YAAY,6BAA6B,EAAE,yBAAK;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAI;AACf;AACA;AACA,kDAAe,GAAG,EAAC;;;ACrBnB;AACsC;AACX;AAC3B;AACA;AACA,oBAAoB,yBAAK;AACzB;AACA;AACA;AACA,WAAW,WAAG;AACd;AACA;AACA,qDAAe,MAAM,EAAC;;;;;;;;;;;ACZtB;AACA,4DAA4D,2BAA2B;AACvF;AACA;AACA,8BAA8B,kCAAkC;AAChE;;AAEA;AAC0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,eAAe,mBAAK;AACpB,cAAc,MAAM,IAAI,OAAO;AAC/B,CAAC;;AAED;AACA,2BAA2B,EAAE,sBAAsB,EAAE;AACrD,wBAAwB,GAAG,0CAA0C,EAAE,EAAE,oBAAoB,EAAE,EAAE;AACjG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,KAAK;AAC5E;AACA,CAAC;AACD;AACA,eAAe,uBAAuB;AACtC;AACA;AACA,CAAC;AACD;AACA;AACA,kCAAkC,KAAK;AACvC;AACA,qBAAqB;AACrB,iCAAiC,KAAK,OAAO,6BAA6B;AAC1E,CAAC;AACD;AACA;AACA,CAAC;;AAED;AACA,0DAA0D,6BAA6B,IAAI;AAC3F,oBAAoB;AACpB;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,2BAA2B;AACpF,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;;AAEA;AAC4E;;AAE5E;AACA;AACA;;AAEA;AACgC;AAChC,oEAAoE,cAAM,QAAQ,eAAe,IAAI,cAAM,QAAQ,gBAAgB;;AAEnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,cAAO,sBAAsB,SAAS;AACvF,+CAA+C,cAAO,sBAAsB,cAAc;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,cAAM;AAC/D,uDAAuD,cAAM;AAC7D,uCAAuC,cAAM;AAC7C,iDAAiD,cAAM;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,yBAAM;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,yBAAM;AACrE;AACA,2DAA2D,cAAM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,0BAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yBAAM;AACzC,qCAAqC,yBAAM;AAC3C,MAAM;AACN,mCAAmC,0BAAO;AAC1C,qCAAqC,0BAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AAC+H;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAAQ;AAClC,yBAAyB,cAAO,sBAAsB,SAAS;AAC/D,8BAA8B,cAAO;AACrC;AACA;AACA,4BAA4B,cAAO;AACnC,8BAA8B,cAAO;AACrC,6BAA6B,cAAO;AACpC,qBAAqB,cAAO;AAC5B,qBAAqB,cAAO;AAC5B;AACA;AACA;AACA,yBAAyB,0BAAQ,CAAC,cAAO;AACzC;AACA;AACA,mBAAmB,uBAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAO;AAClC;AACA;AACA,2BAA2B,yBAAO;AAClC,2BAA2B,uBAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAAQ;AACzC,mCAAmC,yBAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,cAAO,sBAAsB,OAAO;AACzD,qBAAqB,cAAO,wBAAwB,OAAO;AAC3D,qBAAqB,cAAO,sBAAsB,QAAQ;AAC1D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AAkB,yBAAO;AACzB,kBAAkB,yBAAO;AACzB,kBAAkB,yBAAO;AACzB,kBAAkB,yBAAO;AACzB,kBAAkB,yBAAO;AACzB;AACA,mCAAmC,yBAAO,CAAC,cAAO;AAClD,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mDAAmD,cAAO;AAC1D;AACA;AACA,mDAAmD,cAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACyH;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0BAAQ;AACjC;AACA;AACA;AACA,4BAA4B,cAAO;AACnC,8BAA8B,cAAO;AACrC,6BAA6B,cAAO;AACpC,qBAAqB,cAAO;AAC5B,qBAAqB,cAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAO,sBAAsB,OAAO;AACvE,mCAAmC,cAAO,sBAAsB,OAAO;AACvE,mCAAmC,cAAO,sBAAsB,OAAO;AACvE,mCAAmC,cAAO,sBAAsB,QAAQ;AACxE,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CA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACyH;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAAQ;AAClC;AACA,yBAAyB,cAAO,sBAAsB,SAAS;AAC/D;AACA;AACA;AACA,4BAA4B,cAAO;AACnC,8BAA8B,cAAO;AACrC,6BAA6B,cAAO;AACpC,qBAAqB,cAAO;AAC5B,qBAAqB,cAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0BAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAAQ;AAC7B;AACA,uBAAuB,0BAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD,uDAAuD,cAAO;AAC9D;AACA,oBAAoB,4BAA4B;AAChD;AACA,2DAA2D,0BAAQ;AACnE,QAAQ;AACR,2DAA2D,yBAAO;AAClE;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA,oBAAoB,OAAO;AAC3B,mDAAmD,cAAO,iBAAiB,iBAAiB;AAC5F,2DAA2D,cAAO,iBAAiB,iBAAiB;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAAQ;AACnC,4BAA4B,0BAAQ;AACpC,2BAA2B,yBAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAAQ;AAC7B;AACA;AACA;AACA,2BAA2B,yBAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,cAAO,sBAAsB,OAAO;AACzD,qBAAqB,cAAO,wBAAwB,OAAO;AAC3D,qBAAqB,cAAO,sBAAsB,QAAQ;AAC1D,qBAAqB,cAAO,wBAAwB,QAAQ;AAC5D,qBAAqB,cAAO,sBAAsB,QAAQ;AAC1D,qBAAqB,cAAO,wBAAwB,QAAQ;AAC5D,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAO,sBAAsB,kBAAkB;AAC9F,+CAA+C,cAAO,sBAAsB,qBAAqB;AACjG,+CAA+C,cAAO,sBAAsB,qBAAqB;AACjG;AACA,uDAAuD,cAAO,0BAA0B,qBAAqB;AAC7G,uDAAuD,cAAO,0BAA0B,wBAAwB;AAChH,uDAAuD,cAAO,0BAA0B,wBAAwB;AAChH,uDAAuD,0BAAO,uBAAuB,0BAAQ,uBAAuB,yBAAO;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAO;AACvB;AACA;AACA,6BAA6B,cAAO,sBAAsB,QAAQ;AAClE,6BAA6B,cAAO,sBAAsB,QAAQ;AAClE,6BAA6B,cAAO,sBAAsB,QAAQ;AAClE,6BAA6B,cAAO,sBAAsB,OAAO;AACjE,6BAA6B,cAAO,sBAAsB,QAAQ;AAClE,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C,mCAAmC,cAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,gBAAgB,6BAA6B;AAC7C;AACA,sBAAsB;AACtB;AACA,MAAM,uBAAuB;AAC7B;AACA;AACA;AACA;AACA,cAAc,6BAA6B;AAC3C;AACA;AACA,CAAC;;AAED;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,8CAA8C;AAC9C;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,mDAAmD;AACnD,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,mCAAmC;AACnC,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,mCAAmC;AACnC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,IAAI;AAC7D;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,IAAI,oBAAK;AACT;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,EAAE,wBAAS;AACX;AACA;AACA;AACA,GAAG;AACH,EAAE,wBAAS;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,wBAAwB,wBAAS;AACjC;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,qCAAqC,sBAAsB;AAC3D,yCAAyC;AACzC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAS;AACpB,IAAI;AACJ,WAAW,wBAAS;AACpB;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iBAAiB,QAAQ,oGAAe;AAClD;AACA;AACA,2DAA2D,qBAAqB,yBAAyB,oBAAoB,IAAI,KAAK,kBAAkB,KAAK;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,qCAAqC,MAAM,GAAG;AAC9C,IAAI;AACJ;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B,OAAO,GAAG,QAAQ;AAC5C;AACA;AACA,4BAA4B,MAAM,GAAG,OAAO;AAC5C;AACA;AACA,iCAAiC,MAAM,GAAG,OAAO;AACjD;AACA,kBAAkB,uBAAuB,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,+BAA+B;AACpI;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mCAAmC,KAAK;AACxC;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ,cAAc;AACd;AACA;AACA,cAAc;AACd;;AAEA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA,IAAI;;AAEJ,IAAI;AACJ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,qBAAqB,MAAM;AAC3B;AACA;;AAsDE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACliGK;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrBP;AACA,WAAW;AACX,YAAY;AACZ;AACO;;AAEP;AACA,WAAW;AACX,YAAY;AACZ;AACO,IAAI,YAAI;;AAEf;AACA,WAAW;AACX,YAAY;AACZ;AACO,IAAI,cAAM;;AAEjB;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACO;AACP;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,YAAY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yD;AAC/F,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,+IAA4D;AAClG,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,qGAA2D;AACjG,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,iCAAM;AACjC,EAAE,0BAAG;AACL,cAAc,0CAAgB;AAC9B;AACA;AACA,EAAE,2CAAgB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gKAAgK,QAAQ;AACxK,CAAC;AACD,iBAAiB;AACjB;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,2BAA2B,iCAAM;AACjC;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,qGAAwD;AAC9F,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,qGAAgE;AACtG,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,+IAA+D;AACrG,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,qGAA8D;AACpG,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,qGAA0D;AAChG,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,6KAAoD;AAC1F,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,4KAAoD;AAC1F,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,gJAAyD;AAC/F,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,iCAAM;AACvC;AACA,CAAC;AACD,+BAA+B,iCAAM;AACrC,UAAU,oBAAoB,QAAQ,0MAAgE;AACtG,WAAW;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,iCAAM;AACxC;AACA;AACA;AACA;AACA,EAAE,0CAAe;AACjB;AACA,GAAG;AACH,EAAE,0CAAe;AACjB;AACA;AACA;AACA;AACA,+BAA+B,iCAAM;AACrC,SAAS;AACT,OAAO;AACP,gBAAgB;AAChB;AACA;AACA,8BAA8B,iCAAM;AACpC,SAAS;AACT,OAAO;AACP;AACA,+BAA+B,iCAAM;AACrC;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,4BAA4B,iCAAM;AAClC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE,qDAA0B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,6CAA6C,iCAAM;AACnD,EAAE,0BAAG;AACL;AACA,mBAAmB,gCAAS,qBAAqB,wCAAwC;AACzF;AACA;AACA,UAAU,qCAAU;AACpB,UAAU;AACV;AACA,oBAAoB,8BAA8B;AAClD,YAAY,0CAAe;AAC3B,YAAY;AACZ,YAAY,0BAAG,mDAAmD,IAAI;AACtE,mBAAmB,gCAAS;AAC5B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI,0BAAG,yBAAyB,eAAe;AAC/C;AACA,MAAM,0BAAG;AACT;AACA,sCAAsC,eAAe;AACrD;AACA,CAAC;;AAED;AAC4B;AAC2B;AACrB;AACS;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAM;AACN;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA,iCAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iCAAM;AACV;AACA,2CAA2C;AAC3C,mBAAmB,oCAAS;AAC5B,iBAAiB,qCAAU;AAC3B,WAAW,yCAAc;AACzB;AACA,MAAM,qCAAU;AAChB,MAAM;AACN,uBAAuB,2CAAgB;AACvC;AACA,kBAAkB,0CAAmB,YAAY,MAAM;AACvD;AACA,cAAc,8BAA8B;AAC5C,MAAM,0CAAe;AACrB;AACA,YAAY,+CAA+C,EAAE,qCAAU;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,iCAAM;AAC5C;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA,sCAAsC,iCAAM;AAC5C,iCAAiC;AACjC,CAAC;;AAED;AACA;AACA,6BAA6B,uCAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8BAAI;AACnB;AACA;AACA,YAAY,iCAAW;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAM;;AAEN;AACA,kCAAkC,iCAAM;AACxC;AACA;AACA;AACA;AACA,CAAC;AACD,yCAAyC,iCAAM;AAC/C,UAAU,iBAAiB;AAC3B,UAAU,kCAAkC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,CAAC;AACD,wCAAwC,iCAAM;AAC9C,wBAAwB,oCAAa;AACrC,yBAAyB,oCAAa;AACtC;AACA,gDAAgD,MAAM;AACtD,IAAI;AACJ;AACA;AACA;AACA,UAAU,2CAAgB;AAC1B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iBAAiB,wCAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA,iCAAM;;AAEN;AACA;AACA,4CAA4C,yCAAyC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gCAAK;AACP,EAAE,uCAAY,uBAAuB;AACrC;AACA;AACA,iCAAM;AACN,eAAe,kBAAK;AACpB;AACA;AACA,YAAY,eAAe;AAC3B;AACA,aAAa;AACb,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,iCAAM,CAAC,kBAAK;AACZ,yCAAyC,iCAAM;AAC/C;AACA,GAAG,UAAU,EAAE,WAAW,EAAE,8BAA8B,IAAI,aAAa;AAC3E,CAAC;AACD,sCAAsC,iCAAM;AAC5C;AACA;AACA;AACA,EAAE,gBAAgB;AAClB;AACA;AACA;AACA,QAAQ,yBAAyB,mBAAmB;AACpD;AACA;AACA;AACA,QAAQ,6BAA6B,sBAAsB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0BAAO;AAClB;AACA;AACA,SAAS;AACT;AACA,WAAW,0BAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD,uCAAuC,iCAAM;AAC7C;AACA,oBAAoB,yCAAc;AAClC,SAAS,SAAS,CAAC,OAAO,IAAI,OAAO,EAAE,WAAW,IAAI,SAAS;AAC/D,CAAC;AACD,qCAAqC,iCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yCAAc;AAC/B;AACA;AACA,CAAC;AACD,oCAAoC,iCAAM;AAC1C;AACA,oDAAoD,kBAAkB,IAAI,QAAQ;AAClF,iCAAiC,cAAc,SAAS,QAAQ,EAAE,cAAc,sBAAsB,cAAc,SAAS,iBAAiB,aAAa,oBAAoB;AAC/K,IAAI;AACJ;AACA,CAAC;AACD,oCAAoC,iCAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,sFAAsF,aAAa;AACnG;AACA,iCAAM;AACN,6CAA6C,iCAAM;AACnD;AACA;AACA;AACA,CAAC;AACD,6BAA6B,iCAAM;AACnC;AACA;AACA;AACA,iBAAiB,oCAAS;AAC1B,EAAE,0BAAG;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAM;AACnD;AACA,iBAAiB,sBAAM;AACvB;AACA;AACA;AACA,GAAG;AACH,aAAa,sBAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sBAAM;AAC3C,aAAa,sBAAM;AACnB;AACA,MAAM;AACN,aAAa,sBAAM;AACnB;AACA,8DAA8D,WAAW;AACzE,IAAI;AACJ;AACA;AACA,qCAAqC,sBAAM;AAC3C,aAAa,sBAAM;AACnB;AACA,MAAM;AACN,aAAa,sBAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qCAAe;AACxD,IAAI;AACJ;AACA;AACA,MAAM;AACN,6CAA6C,qCAAe;AAC5D;AACA;AACA;AACA,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA,EAAE,0BAAG;AACL,iDAAiD,mCAAQ;AACzD;AACA;AACA;AACA,IAAI;AACJ,cAAc,wBAAS;AACvB;AACA;AACA,iCAAiC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,oCAAoC;AACpC,kBAAkB,kDAAuB,GAAG;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mDAAwB;AAC1B,yCAAyC,qCAAc;AACvD,6BAA6B,qCAAc;AAC3C;AACA;AACA,IAAI;AACJ,6BAA6B,qCAAc;AAC3C;AACA,+CAA+C,wCAAa,YAAY,wCAAa;AACrF,EAAE,sCAAW;AACb;AACA;AACA,iCAAM;AACN,yCAAyC,iCAAM,qBAAqB;AACpE,UAAU,OAAO;AACjB;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,iCAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA,WAAW;AACX,WAAW;AACX,eAAe;AACf,kBAAkB;AAClB,yBAAyB,iCAAM;AAC/B,IAAI,gCAAK;AACT,GAAG;AACH,+BAA+B,iCAAM;AACrC,IAAI,gCAAK,CAAC,oCAAa;AACvB,GAAG;AACH,eAAe;AACf,CAAC;AACD,sCAAW,CAAC,oCAAS;AACrB,gCAAK,CAAC,oCAAS;;AAEf;AACA,kCAAkC,iCAAM;AACxC,EAAE,0BAAG;AACL,MAAM,0CAAe;AACrB;AACA;AACA;AACA,kBAAkB,qCAAqC;AACvD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,CAAC;AACD,0BAA0B,iCAAM;AAChC;AACA,CAAC;AACD;AACA;AACA,IAAI;AACJ,QAAQ,0CAAe;AACvB,MAAM,0BAAG;AACT;AACA;AACA;AACA;AACA;AACA,MAAM,0BAAG;AACT;AACA;AACA;AACA,CAAC;AACD,sCAAsC,iCAAM,kBAAkB,2CAA2C;AACzG;AACA,CAAC;AACD;AACA,EAAE,0BAAG,UAAU,iCAAiC;AAChD;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,EAAE,0BAAG,gBAAgB,uBAAuB;AAC5C;AACA,IAAI,0BAAG;AACP,kCAAkC,gCAAgC;AAClE;AACA,0BAA0B,oCAAa;AACvC;AACA;AACA;AACA,IAAI,0BAAG;AACP;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA,UAAU,qBAAM,CAAC,oCAAa;AAC9B,kBAAkB,oCAAa;AAC/B;AACA,MAAM,0BAAG;AACT;AACA;AACA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kCAAkC,iCAAM;AACxC;AACA,CAAC;AACD,2BAA2B,iCAAM;AACjC,EAAE,0BAAG;AACL;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD,+CAA+C,iCAAM;AACrD;AACA,EAAE,IAAI;AACN;AACA,EAAE,qDAA0B;AAC5B;AACA;AACA;AACA,CAAC;AACD,oCAAoC,iCAAM;AAC1C;AACA,YAAY,cAAc;AAC1B;AACA,mCAAmC,0BAAG;AACtC;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,2CAA2C,iCAAM;AACjD;AACA,CAAC;AACD;AACA;AACA,mCAAmC,iCAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,QAAQ,0BAAG;AACX;AACA;AACA;AACA;AACA,CAAC;AACD,6BAA6B,iCAAM;AACnC;AACA,wCAAwC,iCAAM;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,UAAU,0BAAG;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,CAAC;AACD,8BAA8B,iCAAM;AACpC;AACA,wCAAwC,iCAAM;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,UAAU,0BAAG;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,YAAY;AACZ,mBAAmB;AACnB;AACA;AAGE;AACF;AACA;AACA;AACA;;;;;;;;;;;;ACpzCA,kBAAkB,gBAAgB,yDAAyD,kBAAkB,aAAa,gDAAgD,gBAAgB,gCAAgC,sBAAsB,mFAAmF,+BAA+B,wBAAwB,WAAW,kBAAkB,eAAe,uEAAuE,WAAW,iBAAiB,WAAW,6BAA6B,aAAa,KAAK,sBAAsB,gBAAgB,4BAA4B,QAAQ,oFAAoF,GAAG,uJAAuJ,yBAAyB,KAAK,mBAAmB,EAAE,aAAa,SAAS,YAAY,2BAA2B,QAAQ,6BAA6B,QAAQ,WAAW,EAAE,GAAG,qKAAqK,WAAW,MAAM,YAAY,qBAAqB,8BAA8B,kDAAkD,oBAAoB,kCAAkC,OAAO,SAAS,QAAQ,MAAM,2BAA2B,iBAAiB,WAAW,sCAAsC,SAAS,SAAS,gBAAgB,MAAM,0BAA0B,mBAAmB,sDAAsD,QAAQ,sHAAsH,QAAQ,eAAe,cAAc,kBAAkB,+BAA+B,mBAAmB,eAAe,OAAO,6CAA6C,iBAAiB,WAAW,yFAAyF,UAAU,cAAc,oBAAoB,8DAA8D,kBAAkB,kBAAkB,mBAAmB,0CAA0C,4BAA4B,IAAI,aAAa,2EAA2E,uFAAuF,OAAO,8CAA8C,kBAAkB,kBAAkB,kDAAkD,IAAI,+BAA+B,4BAA4B,oCAAoC,QAAQ,eAAe,cAAc,kBAAkB,8BAA8B,IAAI,eAAe,GAAG,6BAA6B,iBAAiB,WAAW,mBAAmB,0CAA0C,mBAAmB,yBAAyB,YAAY,kBAAkB,kGAAkG,YAAY,IAAI,KAAK,iGAAiG,kBAAkB,OAAO,0BAA0B,QAAQ,eAAe,cAAc,kBAAkB,eAAe,OAAO,4CAA4C,gBAAgB,yJAAyJ,sBAAsB,qDAAqD,kBAAkB,2BAA2B,2CAA2C,YAAY,IAAI,KAAK,kKAAkK,6DAA6D,MAAM,QAAQ,eAAe,cAAc,kBAAkB,gHAAgH,IAAI,eAAe,GAAG,OAAO,+CAA+C,mBAAmB,WAAW,sBAAsB,mCAAmC,kBAAkB,2BAA2B,2CAA2C,YAAY,IAAI,KAAK,yMAAyM,iHAAiH,MAAM,WAAW,QAAQ,eAAe,YAAY,OAAO,uFAAuF,qBAAqB,iFAAiF,gBAAgB,kBAAkB,cAAc,yBAAyB,kBAAkB,KAAK,OAAO,2DAA2D,0DAA0D,sBAAsB,8BAA8B,KAAK,oFAAoF,aAAa,eAAe,sBAAsB,EAAE,8BAA8B,oBAAoB,eAAe,GAAG,IAAI,uBAAuB,KAAK,QAAQ,EAAE,QAAQ,WAAW,cAAc,iDAAiD,yBAAyB,8CAA8C,4DAA4D,YAAY,MAAM,KAAK,aAAa,gEAAgE,oBAAoB,6DAA6D,SAAS,cAAc,yDAAyD,SAAS,cAAc,oBAAoB,WAAW,UAAU,aAAa,eAAe,gBAAgB,oBAAoB,kBAAkB,MAAM,gCAAgC,mBAAmB,UAAU,MAAM,gBAAgB,oBAAoB,UAAU,MAAM,gCAAgC,mBAAmB,EAAE,MAAM,gBAAgB,oBAAoB,gBAAgB,MAAM,SAAS,oCAAoC,QAAQ,eAAe,gBAAgB,MAAM,gBAAgB,oBAAoB,gBAAgB,MAAM,SAAS,oCAAoC,QAAQ,eAAe,gBAAgB,MAAM,gBAAgB,oBAAoB,gBAAgB,MAAM,gCAAgC,4CAA4C,EAAE,MAAM,gBAAgB,oBAAoB,SAAS,MAAM,wBAAwB,iBAAiB,EAAE,MAAM,gBAAgB,oBAAoB,SAAS,MAAM,wBAAwB,iBAAiB,EAAE,MAAM,gBAAgB,oBAAoB,gBAAgB,MAAM,SAAS,oCAAoC,QAAQ,eAAe,gBAAgB,MAAM,gBAAgB,oBAAoB,gBAAgB,MAAM,gCAAgC,mBAAmB,EAAE,MAAM,wBAAwB,gBAAgB,UAAU,SAAS,cAAc,WAAW,iCAAiC,UAAU,aAAa,MAAM,UAAU,gBAAgB,oBAAoB,kBAAkB,MAAM,gBAAgB,oBAAoB,8BAA8B,MAAM,gBAAgB,oBAAoB,UAAU,MAAM,uBAAuB,mBAAmB,EAAE,MAAM,uBAAuB,mBAAmB,EAAE,MAAM,SAAS,YAAY,yDAAyD,wBAAwB,8BAA8B,MAAM,SAAS,aAAa,YAAY,iDAAiD,8DAA8D,QAAQ,2BAA2B,kBAAkB,MAAM,SAAS,yEAAyE,QAAQ,2BAA2B,kBAAkB,MAAM,SAAS,2EAA2E,wBAAwB,2BAA2B,UAAU,sBAAsB,0CAA0C,QAAQ,eAAe,EAAE,WAAW,MAAM,gBAAgB,gBAAgB,UAAU,IAAI,SAAS,kBAAkB,gEAAgE,gCAAgC,4BAA4B,MAAM,yBAAyB,iBAAiB,KAAK,gCAAgC,0BAA0B,0BAA0B,gCAAgC,0FAA0F,gQAAgQ,UAAU,gCAAgC,kBAAkB,mHAAmH,MAAM,kJAAkJ,gEAAgE,oBAAoB,WAAW,YAAY,WAAW,MAAM,mFAAmF,wCAAwC,UAAU,SAAS,yBAAyB,cAAc,qCAAqC,gBAAgB,6BAA6B,iBAAiB,wBAAwB,mCAAmC,yBAAyB,sBAAsB,OAAO,8BAA8B,kBAAkB,uBAAuB,QAAQ,WAAW,YAAY,MAAM,wDAAwD,+DAA+D,mBAAmB,mDAAmD,oBAAoB,sBAAsB,qBAAqB,iBAAiB,sCAAsC,gBAAgB,aAAa,uIAAuI,YAAY,WAAW,KAAK,aAAa,aAAa,gGAAgG,0CAA0C,2CAA2C,OAAO,6BAA6B,OAAO,oBAAoB,kBAAkB,oKAAoK,oCAAoC,yBAAyB,gCAAgC,uBAAuB,oBAAoB,0EAA0E,kBAAkB,2CAA2C,4DAA4D,cAAc,OAAO,yBAAyB,oBAAoB,8BAA8B,cAAc,oCAAoC,4BAA4B,YAAY,KAAK,IAAI,2BAA2B,iCAAiC,kFAAkF,0BAA0B,+BAA+B,aAAa,qHAAqH,uBAAuB,EAAE,mDAAmD,IAAI,mBAAmB,gBAAgB,wBAAwB,oBAAoB,UAAU,aAAa,eAAe,oCAAoC,MAAM,0DAA0D,MAAM,SAAS,qBAAqB,sCAAsC,MAAM,0DAA0D,OAAO,mBAAmB,gBAAgB,WAAW,8BAA8B,4CAA4C,QAAQ,QAAQ,+CAA+C,EAAE,YAAY,IAAI,YAAY,iDAAiD,GAAG,OAAO,uBAAuB,gBAAgB,qBAAqB,6BAA6B,mBAAmB,mCAAmC,MAAM,wCAAwC,MAAM,iCAAiC,MAAM,mCAAmC,MAAM,wCAAwC,MAAM,0CAA0C,YAAY,wBAAwB,cAAc,wBAAwB,IAAI,uDAAuD,cAAc,yEAAyE,sBAAsB,oCAAoC,oBAAoB,mBAAmB,2BAA2B,6EAA6E,cAAc,2BAA2B,mBAAmB,0BAA0B,uDAAuD,QAAQ,wCAAwC,+BAA+B,oBAAoB,yBAAyB,0FAA0F,sBAAsB,8DAA8D,qBAAqB,yCAAyC,UAAU,mDAAmD,aAAa,iHAAiH,UAAU,iHAAiH,IAAI,kBAAkB,sBAAsB,WAAW,gFAAgF,YAAY,WAAW,oGAAoG,mBAAmB,kBAAkB,sBAAsB,QAAQ,gCAAgC,QAAQ,iCAAiC,EAAE,YAAY,MAAM,KAAK,aAAa,4MAA4M,qEAAqE,EAAE,oBAAoB,8BAA8B,QAAQ,2CAA2C,GAAG,oBAAoB,iCAAiC,UAAU,qEAAqE,gEAAgE,SAAS,4BAA4B,gBAAgB,oBAAoB,iDAAiD,YAAY,aAAa,MAAM,0CAA0C,oBAAoB,oFAAoF,KAAK,0BAA0B,kEAAkE,wBAAwB,YAAY,IAAI,MAAM,wDAAwD,oBAAoB,kOAAkO,YAAY,8BAA8B,uBAAuB,kEAAkE,YAAY,KAAK,6DAA6D,uGAAuG,4BAA4B,sEAAsE,YAAY,sDAAsD,YAAY,IAAI,kBAAkB,2BAA2B,UAAU,2DAA2D,8CAA8C,+EAA+E,EAAE,SAAS,cAAc,aAAa,kBAAkB,iBAAiB,mEAAmE,WAAW,iDAAiD,KAAK,WAAW,kBAAkB,YAAY,WAAW,8CAA8C,iBAAiB,gBAAgB,YAAY,aAAa,KAAK,aAAa,4NAA4N,SAAS,gBAAgB,mDAAmD,kBAAkB,eAAe,uBAAuB,0DAA0D,iDAAiD,kBAAkB,8CAA8C,oBAAoB,cAAc,iBAAiB,0CAA0C,yBAAyB,KAAK,yBAAyB,KAAK,yBAAyB,KAAK,yBAAyB,sCAAsC,SAAS,eAAe,aAAa,qDAAqD,eAAe,eAAe,KAAK,iHAAiH,sCAAsC,QAAQ,SAAS,gBAAgB,yBAAyB,sBAAsB,8BAA8B,YAAY,cAAc,MAAM,KAAK,oBAAoB,eAAe,sFAAsF,sBAAsB,4BAA4B,YAAY,IAAI,KAAK,aAAa,kCAAkC,gBAAgB,SAAS,eAAe,qBAAqB,yUAAyU,kBAAkB,yEAAyE,iBAAiB,uCAAuC,MAAM,yBAAyB,4CAA4C,UAAU,OAAO,mDAAmD,gBAAgB,mBAAmB,wCAAwC,qBAAqB,uCAAuC,WAAW,0CAA0C,wDAAwD,yDAAyD,mBAAmB,gDAAgD,oCAAoC,yBAAyB,4BAA4B,sCAAsC,6DAA6D,gBAAgB,gCAAgC,0BAA0B,gBAAgB,mBAAmB,2CAA2C,wBAAwB,gDAAgD,uCAAuC,wBAAwB,IAAI,wBAAwB,+BAA+B,4BAA4B,oCAAoC,cAAc,oCAAoC,4BAA4B,YAAY,KAAK,IAAI,2BAA2B,iCAAiC,oCAAoC,YAAY,KAAK,+CAA+C,wEAAwE,iBAAiB,mDAAmD,WAAW,iCAAiC,iDAAiD,0CAA0C,KAAK,mFAAmF,GAAG,QAAQ,6CAA6C,EAAE,KAAK,eAAe,aAAa,uCAAuC,0JAA0J,2BAA2B,qDAAqD,aAAa,oCAAoC,yHAAyH,UAAU,wBAAwB,iCAAiC,0EAA0E,iIAAiI,wBAAwB,sBAAsB,aAAa,oCAAoC,QAAQ,gCAAgC,UAAU,aAAa,eAAe,oCAAoC,MAAM,gCAAgC,MAAM,sBAAsB,iCAAiC,oBAAoB,4DAA4D,MAAM,gCAAgC,mBAAmB,WAAW,kBAAkB,eAAe,oBAAoB,SAAS,6DAA6D,+CAA+C,0CAA0C,KAAK,mFAAmF,GAAG,QAAQ,6CAA6C,EAAE,oBAAoB,oBAAoB,4BAA4B,kBAAkB,kCAAkC,eAAe,SAAS,sBAAsB,uEAAuE,aAAa,kBAAkB,MAAM,EAAE,MAAM,EAAE,MAAM,sBAAsB,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,oBAAoB,MAAM,EAAE,MAAM,GAAG,gBAAgB,WAAW,yDAAyD,kBAAkB,WAAW,eAAe,cAAc,uEAAuE,MAAM,kBAAkB,6DAA6D,MAAM,wCAAwC,aAAa,SAAS,gBAAgB,mBAAmB,iCAAiC,6DAA6D,gBAAgB,gDAAgD,SAAS,iBAAiB,uEAAuE,QAAQ,wGAAwG,gCAAgC,gQAAgQ,MAAM,gBAAgB,gCAAgC,qFAAqF,yCAAyC,MAAM,yCAAyC,kBAAkB,mBAAmB,oPAAoP,kCAAkC,cAAc,sBAAsB,uEAAuE,aAAa,+BAA+B,MAAM,8DAA8D,MAAM,kCAAkC,yCAAyC,gBAAgB,gBAAgB,oBAAoB,+BAA+B,gBAAgB,iCAAiC,sBAAsB,qBAAqB,sCAAsC,sBAAsB,mBAAmB,oCAAoC,sBAAsB,gBAAgB,iCAAiC,sBAAsB,gBAAgB,iCAAiC,sBAAsB,aAAa,8BAA8B,sBAAsB,wBAAwB,sCAAsC,sBAAsB,WAAW,4BAA4B,sBAAsB,UAAU,2BAA2B,uBAAuB,sCAAsC,SAAS,iBAAiB,8BAA8B,QAAQ,mKAAmK,kBAAkB,WAAW,eAAe,uVAAuV,uBAAuB,GAAG,MAAM,yQAAyQ,MAAM,0CAA0C,oBAAoB,SAAS,kBAAkB,mBAAmB,yBAAyB,qCAAqC,4TAA4T,qBAAqB,KAAK,gBAAgB,gBAAgB,oBAAoB,+BAA+B,eAAe,+BAA+B,gBAAgB,iCAAiC,oBAAoB,qBAAqB,sCAAsC,oBAAoB,mBAAmB,oCAAoC,oBAAoB,gBAAgB,iCAAiC,oBAAoB,gBAAgB,iCAAiC,oBAAoB,aAAa,8BAA8B,oBAAoB,wBAAwB,sCAAsC,oBAAoB,WAAW,4BAA4B,oBAAoB,UAAU,2BAA2B,qBAAqB,QAAQ,kGAAwH;;;;;;;;;;;;ACA5l2B;AACP;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,YAAY,+HAA+H;AACxM;AACA;AACA,KAAK;AACL;AACA,4CAA4C,4CAA4C;AACxF,+CAA+C,sCAAsC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sEAAe,sDAAM,IAAC;AACtB","sources":["webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@braintree/sanitize-url/dist/constants.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@braintree/sanitize-url/dist/index.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/dayjs/dayjs.min.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/dompurify/dist/purify.es.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/channels/type.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/channels/index.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/channels/reusable.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/color/hex.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/color/hsl.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/color/keyword.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/color/rgb.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/color/index.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/constants.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/adjust_channel.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/change.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/darken.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/luminance.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/is_light.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/is_dark.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/lighten.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/rgba.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/utils/channel.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/utils/lang.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/utils/unit.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/utils/index.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_listCacheClear.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_assocIndexOf.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_listCacheDelete.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_listCacheGet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_listCacheHas.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_listCacheSet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_ListCache.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_Map.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_nativeCreate.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_hashClear.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_hashDelete.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_hashGet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_hashHas.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_hashSet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_Hash.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_mapCacheClear.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_isKeyable.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_getMapData.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_mapCacheDelete.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_mapCacheGet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_mapCacheHas.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_mapCacheSet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_MapCache.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_Set.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_stackClear.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_stackDelete.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_stackGet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_stackHas.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_stackSet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_Stack.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_Symbol.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_Uint8Array.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseTimes.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_arrayLikeKeys.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_assignValue.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseAssignValue.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_createBaseFor.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseFor.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_getRawTag.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_objectToString.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseGetTag.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_nativeKeys.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseKeys.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseRest.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseUnary.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_cloneArrayBuffer.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_cloneBuffer.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_cloneTypedArray.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_copyArray.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_copyObject.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_createAssigner.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_defineProperty.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_freeGlobal.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_coreJsData.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_isMasked.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseIsNative.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_getValue.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_getNative.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_getPrototype.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_DataView.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_Promise.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_WeakMap.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_getTag.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseCreate.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_initCloneObject.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_isIndex.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_isIterateeCall.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_isPrototype.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_nodeUtil.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_overArg.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_apply.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_overRest.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_root.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseSetToString.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_shortOut.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_setToString.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_toSource.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/constant.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/eq.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/identity.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseIsArguments.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isArguments.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isArray.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isArrayLike.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isArrayLikeObject.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/stubFalse.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isBuffer.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isEmpty.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isFunction.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isLength.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isObject.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isObjectLike.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseIsTypedArray.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isTypedArray.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_nativeKeysIn.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseKeysIn.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/keysIn.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/memoize.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_assignMergeValue.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/isPlainObject.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_safeGet.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/toPlainObject.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseMergeDeep.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/_baseMerge.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash-es/merge.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-5NNNAHNI.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-6JRP7KZX.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-7B677QYD.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-C3MQ5ANM.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/icon/name.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/icon/defaults.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/icon/transformations.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/icon/merge.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/icon-set/tree.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/icon-set/get-icon.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/customisations/defaults.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/svg/size.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/svg/defs.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/svg/build.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/svg/html.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@iconify/utils/lib/svg/id.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-H2D2JQ3I.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-HRU6DDCH.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-IIMUDSI4.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-K557N5IZ.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-O4NI6UNU.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-TYCBKAJE.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-VV3M67IP.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/adjust.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/mix.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/khroma/dist/methods/invert.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/chunk-YTJNT7DU.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/stylis/src/Enum.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/stylis/src/Utility.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/stylis/src/Serializer.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/stylis/src/Tokenizer.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/stylis/src/Parser.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/mermaid.core.mjs","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/roughjs/bundled/rough.esm.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/ts-dedent/esm/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|&colon;)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar constants_1 = require(\"./constants\");\nfunction isRelativeUrlWithoutProtocol(url) {\n    return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\nfunction decodeHtmlCharacters(str) {\n    var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n    return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n        return String.fromCharCode(dec);\n    });\n}\nfunction isValidUrl(url) {\n    return URL.canParse(url);\n}\nfunction decodeURI(uri) {\n    try {\n        return decodeURIComponent(uri);\n    }\n    catch (e) {\n        // Ignoring error\n        // It is possible that the URI contains a `%` not associated\n        // with URI/URL-encoding.\n        return uri;\n    }\n}\nfunction sanitizeUrl(url) {\n    if (!url) {\n        return constants_1.BLANK_URL;\n    }\n    var charsToDecode;\n    var decodedUrl = decodeURI(url.trim());\n    do {\n        decodedUrl = decodeHtmlCharacters(decodedUrl)\n            .replace(constants_1.htmlCtrlEntityRegex, \"\")\n            .replace(constants_1.ctrlCharactersRegex, \"\")\n            .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n            .trim();\n        decodedUrl = decodeURI(decodedUrl);\n        charsToDecode =\n            decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n                decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n                decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n                decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n    } while (charsToDecode && charsToDecode.length > 0);\n    var sanitizedUrl = decodedUrl;\n    if (!sanitizedUrl) {\n        return constants_1.BLANK_URL;\n    }\n    if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n        return sanitizedUrl;\n    }\n    // Remove any leading whitespace before checking the URL scheme\n    var trimmedUrl = sanitizedUrl.trimStart();\n    var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);\n    if (!urlSchemeParseResults) {\n        return sanitizedUrl;\n    }\n    var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();\n    if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n        return constants_1.BLANK_URL;\n    }\n    var backSanitized = trimmedUrl.replace(/\\\\/g, \"/\");\n    // Handle special cases for mailto: and custom deep-link protocols\n    if (urlScheme === \"mailto:\" || urlScheme.includes(\"://\")) {\n        return backSanitized;\n    }\n    // For http and https URLs, perform additional validation\n    if (urlScheme === \"http:\" || urlScheme === \"https:\") {\n        if (!isValidUrl(backSanitized)) {\n            return constants_1.BLANK_URL;\n        }\n        var url_1 = new URL(backSanitized);\n        url_1.protocol = url_1.protocol.toLowerCase();\n        url_1.hostname = url_1.hostname.toLowerCase();\n        return url_1.toString();\n    }\n    return backSanitized;\n}\nexports.sanitizeUrl = sanitizeUrl;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","/*! @license DOMPurify 3.2.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.4/LICENSE */\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func, args) {\n    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return function (thisArg) {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    return construct(func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.2.4';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes\n  } = window;\n  const ElementPrototype = Element.prototype;\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName\n  } = document;\n  const {\n    importNode\n  } = originalDocument;\n  let hooks = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT\n  } = EXPRESSIONS;\n  let {\n    IS_ALLOWED_URI: IS_ALLOWED_URI$1\n  } = EXPRESSIONS;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n      }\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, expr, ' ');\n      });\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      let value = name === 'value' ? attrValue : stringTrim(attrValue);\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n        if (_isClobbered(currentNode)) {\n          _forceRemove(currentNode);\n        } else {\n          arrayPop(DOMPurify.removed);\n        }\n      } catch (_) {}\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n    constructor() {\n        /* VARIABLES */\n        this.type = TYPE.ALL;\n    }\n    /* API */\n    get() {\n        return this.type;\n    }\n    set(type) {\n        if (this.type && this.type !== type)\n            throw new Error('Cannot change both RGB and HSL channels at the same time');\n        this.type = type;\n    }\n    reset() {\n        this.type = TYPE.ALL;\n    }\n    is(type) {\n        return this.type === type;\n    }\n}\n/* EXPORT */\nexport default Type;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n    /* CONSTRUCTOR */\n    constructor(data, color) {\n        this.color = color;\n        this.changed = false;\n        this.data = data; //TSC\n        this.type = new Type();\n    }\n    /* API */\n    set(data, color) {\n        this.color = color;\n        this.changed = false;\n        this.data = data; //TSC\n        this.type.type = TYPE.ALL;\n        return this;\n    }\n    /* HELPERS */\n    _ensureHSL() {\n        const data = this.data;\n        const { h, s, l } = data;\n        if (h === undefined)\n            data.h = _.channel.rgb2hsl(data, 'h');\n        if (s === undefined)\n            data.s = _.channel.rgb2hsl(data, 's');\n        if (l === undefined)\n            data.l = _.channel.rgb2hsl(data, 'l');\n    }\n    _ensureRGB() {\n        const data = this.data;\n        const { r, g, b } = data;\n        if (r === undefined)\n            data.r = _.channel.hsl2rgb(data, 'r');\n        if (g === undefined)\n            data.g = _.channel.hsl2rgb(data, 'g');\n        if (b === undefined)\n            data.b = _.channel.hsl2rgb(data, 'b');\n    }\n    /* GETTERS */\n    get r() {\n        const data = this.data;\n        const r = data.r;\n        if (!this.type.is(TYPE.HSL) && r !== undefined)\n            return r;\n        this._ensureHSL();\n        return _.channel.hsl2rgb(data, 'r');\n    }\n    get g() {\n        const data = this.data;\n        const g = data.g;\n        if (!this.type.is(TYPE.HSL) && g !== undefined)\n            return g;\n        this._ensureHSL();\n        return _.channel.hsl2rgb(data, 'g');\n    }\n    get b() {\n        const data = this.data;\n        const b = data.b;\n        if (!this.type.is(TYPE.HSL) && b !== undefined)\n            return b;\n        this._ensureHSL();\n        return _.channel.hsl2rgb(data, 'b');\n    }\n    get h() {\n        const data = this.data;\n        const h = data.h;\n        if (!this.type.is(TYPE.RGB) && h !== undefined)\n            return h;\n        this._ensureRGB();\n        return _.channel.rgb2hsl(data, 'h');\n    }\n    get s() {\n        const data = this.data;\n        const s = data.s;\n        if (!this.type.is(TYPE.RGB) && s !== undefined)\n            return s;\n        this._ensureRGB();\n        return _.channel.rgb2hsl(data, 's');\n    }\n    get l() {\n        const data = this.data;\n        const l = data.l;\n        if (!this.type.is(TYPE.RGB) && l !== undefined)\n            return l;\n        this._ensureRGB();\n        return _.channel.rgb2hsl(data, 'l');\n    }\n    get a() {\n        return this.data.a;\n    }\n    /* SETTERS */\n    set r(r) {\n        this.type.set(TYPE.RGB);\n        this.changed = true;\n        this.data.r = r;\n    }\n    set g(g) {\n        this.type.set(TYPE.RGB);\n        this.changed = true;\n        this.data.g = g;\n    }\n    set b(b) {\n        this.type.set(TYPE.RGB);\n        this.changed = true;\n        this.data.b = b;\n    }\n    set h(h) {\n        this.type.set(TYPE.HSL);\n        this.changed = true;\n        this.data.h = h;\n    }\n    set s(s) {\n        this.type.set(TYPE.HSL);\n        this.changed = true;\n        this.data.s = s;\n    }\n    set l(l) {\n        this.type.set(TYPE.HSL);\n        this.changed = true;\n        this.data.l = l;\n    }\n    set a(a) {\n        this.changed = true;\n        this.data.a = a;\n    }\n}\n/* EXPORT */\nexport default Channels;\n","/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n    /* VARIABLES */\n    re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n    /* API */\n    parse: (color) => {\n        if (color.charCodeAt(0) !== 35)\n            return; // '#'\n        const match = color.match(Hex.re);\n        if (!match)\n            return;\n        const hex = match[1];\n        const dec = parseInt(hex, 16);\n        const length = hex.length;\n        const hasAlpha = length % 4 === 0;\n        const isFullLength = length > 4;\n        const multiplier = isFullLength ? 1 : 17;\n        const bits = isFullLength ? 8 : 4;\n        const bitsOffset = hasAlpha ? 0 : -1;\n        const mask = isFullLength ? 255 : 15;\n        return ChannelsReusable.set({\n            r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n            g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n            b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n            a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n        }, color);\n    },\n    stringify: (channels) => {\n        const { r, g, b, a } = channels;\n        if (a < 1) { // #RRGGBBAA\n            return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n        }\n        else { // #RRGGBB\n            return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n        }\n    }\n};\n/* EXPORT */\nexport default Hex;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n    /* VARIABLES */\n    re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n    hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n    /* HELPERS */\n    _hue2deg: (hue) => {\n        const match = hue.match(HSL.hueRe);\n        if (match) {\n            const [, number, unit] = match;\n            switch (unit) {\n                case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n                case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n                case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n            }\n        }\n        return _.channel.clamp.h(parseFloat(hue));\n    },\n    /* API */\n    parse: (color) => {\n        const charCode = color.charCodeAt(0);\n        if (charCode !== 104 && charCode !== 72)\n            return; // 'h'/'H'\n        const match = color.match(HSL.re);\n        if (!match)\n            return;\n        const [, h, s, l, a, isAlphaPercentage] = match;\n        return ChannelsReusable.set({\n            h: HSL._hue2deg(h),\n            s: _.channel.clamp.s(parseFloat(s)),\n            l: _.channel.clamp.l(parseFloat(l)),\n            a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n        }, color);\n    },\n    stringify: (channels) => {\n        const { h, s, l, a } = channels;\n        if (a < 1) { // HSLA\n            return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n        }\n        else { // HSL\n            return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n        }\n    }\n};\n/* EXPORT */\nexport default HSL;\n","/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n    /* VARIABLES */\n    colors: {\n        aliceblue: '#f0f8ff',\n        antiquewhite: '#faebd7',\n        aqua: '#00ffff',\n        aquamarine: '#7fffd4',\n        azure: '#f0ffff',\n        beige: '#f5f5dc',\n        bisque: '#ffe4c4',\n        black: '#000000',\n        blanchedalmond: '#ffebcd',\n        blue: '#0000ff',\n        blueviolet: '#8a2be2',\n        brown: '#a52a2a',\n        burlywood: '#deb887',\n        cadetblue: '#5f9ea0',\n        chartreuse: '#7fff00',\n        chocolate: '#d2691e',\n        coral: '#ff7f50',\n        cornflowerblue: '#6495ed',\n        cornsilk: '#fff8dc',\n        crimson: '#dc143c',\n        cyanaqua: '#00ffff',\n        darkblue: '#00008b',\n        darkcyan: '#008b8b',\n        darkgoldenrod: '#b8860b',\n        darkgray: '#a9a9a9',\n        darkgreen: '#006400',\n        darkgrey: '#a9a9a9',\n        darkkhaki: '#bdb76b',\n        darkmagenta: '#8b008b',\n        darkolivegreen: '#556b2f',\n        darkorange: '#ff8c00',\n        darkorchid: '#9932cc',\n        darkred: '#8b0000',\n        darksalmon: '#e9967a',\n        darkseagreen: '#8fbc8f',\n        darkslateblue: '#483d8b',\n        darkslategray: '#2f4f4f',\n        darkslategrey: '#2f4f4f',\n        darkturquoise: '#00ced1',\n        darkviolet: '#9400d3',\n        deeppink: '#ff1493',\n        deepskyblue: '#00bfff',\n        dimgray: '#696969',\n        dimgrey: '#696969',\n        dodgerblue: '#1e90ff',\n        firebrick: '#b22222',\n        floralwhite: '#fffaf0',\n        forestgreen: '#228b22',\n        fuchsia: '#ff00ff',\n        gainsboro: '#dcdcdc',\n        ghostwhite: '#f8f8ff',\n        gold: '#ffd700',\n        goldenrod: '#daa520',\n        gray: '#808080',\n        green: '#008000',\n        greenyellow: '#adff2f',\n        grey: '#808080',\n        honeydew: '#f0fff0',\n        hotpink: '#ff69b4',\n        indianred: '#cd5c5c',\n        indigo: '#4b0082',\n        ivory: '#fffff0',\n        khaki: '#f0e68c',\n        lavender: '#e6e6fa',\n        lavenderblush: '#fff0f5',\n        lawngreen: '#7cfc00',\n        lemonchiffon: '#fffacd',\n        lightblue: '#add8e6',\n        lightcoral: '#f08080',\n        lightcyan: '#e0ffff',\n        lightgoldenrodyellow: '#fafad2',\n        lightgray: '#d3d3d3',\n        lightgreen: '#90ee90',\n        lightgrey: '#d3d3d3',\n        lightpink: '#ffb6c1',\n        lightsalmon: '#ffa07a',\n        lightseagreen: '#20b2aa',\n        lightskyblue: '#87cefa',\n        lightslategray: '#778899',\n        lightslategrey: '#778899',\n        lightsteelblue: '#b0c4de',\n        lightyellow: '#ffffe0',\n        lime: '#00ff00',\n        limegreen: '#32cd32',\n        linen: '#faf0e6',\n        magenta: '#ff00ff',\n        maroon: '#800000',\n        mediumaquamarine: '#66cdaa',\n        mediumblue: '#0000cd',\n        mediumorchid: '#ba55d3',\n        mediumpurple: '#9370db',\n        mediumseagreen: '#3cb371',\n        mediumslateblue: '#7b68ee',\n        mediumspringgreen: '#00fa9a',\n        mediumturquoise: '#48d1cc',\n        mediumvioletred: '#c71585',\n        midnightblue: '#191970',\n        mintcream: '#f5fffa',\n        mistyrose: '#ffe4e1',\n        moccasin: '#ffe4b5',\n        navajowhite: '#ffdead',\n        navy: '#000080',\n        oldlace: '#fdf5e6',\n        olive: '#808000',\n        olivedrab: '#6b8e23',\n        orange: '#ffa500',\n        orangered: '#ff4500',\n        orchid: '#da70d6',\n        palegoldenrod: '#eee8aa',\n        palegreen: '#98fb98',\n        paleturquoise: '#afeeee',\n        palevioletred: '#db7093',\n        papayawhip: '#ffefd5',\n        peachpuff: '#ffdab9',\n        peru: '#cd853f',\n        pink: '#ffc0cb',\n        plum: '#dda0dd',\n        powderblue: '#b0e0e6',\n        purple: '#800080',\n        rebeccapurple: '#663399',\n        red: '#ff0000',\n        rosybrown: '#bc8f8f',\n        royalblue: '#4169e1',\n        saddlebrown: '#8b4513',\n        salmon: '#fa8072',\n        sandybrown: '#f4a460',\n        seagreen: '#2e8b57',\n        seashell: '#fff5ee',\n        sienna: '#a0522d',\n        silver: '#c0c0c0',\n        skyblue: '#87ceeb',\n        slateblue: '#6a5acd',\n        slategray: '#708090',\n        slategrey: '#708090',\n        snow: '#fffafa',\n        springgreen: '#00ff7f',\n        tan: '#d2b48c',\n        teal: '#008080',\n        thistle: '#d8bfd8',\n        transparent: '#00000000',\n        turquoise: '#40e0d0',\n        violet: '#ee82ee',\n        wheat: '#f5deb3',\n        white: '#ffffff',\n        whitesmoke: '#f5f5f5',\n        yellow: '#ffff00',\n        yellowgreen: '#9acd32'\n    },\n    /* API */\n    parse: (color) => {\n        color = color.toLowerCase();\n        const hex = Keyword.colors[color];\n        if (!hex)\n            return;\n        return Hex.parse(hex);\n    },\n    stringify: (channels) => {\n        const hex = Hex.stringify(channels);\n        for (const name in Keyword.colors) {\n            if (Keyword.colors[name] === hex)\n                return name;\n        }\n        return;\n    }\n};\n/* EXPORT */\nexport default Keyword;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n    /* VARIABLES */\n    re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n    /* API */\n    parse: (color) => {\n        const charCode = color.charCodeAt(0);\n        if (charCode !== 114 && charCode !== 82)\n            return; // 'r'/'R'\n        const match = color.match(RGB.re);\n        if (!match)\n            return;\n        const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n        return ChannelsReusable.set({\n            r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n            g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n            b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n            a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n        }, color);\n    },\n    stringify: (channels) => {\n        const { r, g, b, a } = channels;\n        if (a < 1) { // RGBA\n            return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n        }\n        else { // RGB\n            return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n        }\n    }\n};\n/* EXPORT */\nexport default RGB;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n    /* VARIABLES */\n    format: {\n        keyword: Keyword,\n        hex: Hex,\n        rgb: RGB,\n        rgba: RGB,\n        hsl: HSL,\n        hsla: HSL\n    },\n    /* API */\n    parse: (color) => {\n        if (typeof color !== 'string')\n            return color;\n        const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n        if (channels)\n            return channels;\n        throw new Error(`Unsupported color format: \"${color}\"`);\n    },\n    stringify: (channels) => {\n        // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n        if (!channels.changed && channels.color)\n            return channels.color;\n        if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n            return HSL.stringify(channels);\n        }\n        else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n            return RGB.stringify(channels);\n        }\n        else {\n            return Hex.stringify(channels);\n        }\n    }\n};\n/* EXPORT */\nexport default Color;\n","/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n    DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n    ALL: 0,\n    RGB: 1,\n    HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n    const channels = Color.parse(color);\n    const amountCurrent = channels[channel];\n    const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n    if (amountCurrent !== amountNext)\n        channels[channel] = amountNext;\n    return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n    const ch = Color.parse(color);\n    for (const c in channels) {\n        ch[c] = _.channel.clamp[c](channels[c]);\n    }\n    return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n    return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\n//SOURCE: https://planetcalc.com/7779\nconst luminance = (color) => {\n    const { r, g, b } = Color.parse(color);\n    const luminance = .2126 * _.channel.toLinear(r) + .7152 * _.channel.toLinear(g) + .0722 * _.channel.toLinear(b);\n    return _.lang.round(luminance);\n};\n/* EXPORT */\nexport default luminance;\n","/* IMPORT */\nimport luminance from './luminance.js';\n/* MAIN */\nconst isLight = (color) => {\n    return luminance(color) >= .5;\n};\n/* EXPORT */\nexport default isLight;\n","/* IMPORT */\nimport isLight from './is_light.js';\n/* MAIN */\nconst isDark = (color) => {\n    return !isLight(color);\n};\n/* EXPORT */\nexport default isDark;\n","/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n    return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n","/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n    if (typeof r !== 'number')\n        return change(r, { a: g });\n    const channels = ChannelsReusable.set({\n        r: _.channel.clamp.r(r),\n        g: _.channel.clamp.g(g),\n        b: _.channel.clamp.b(b),\n        a: _.channel.clamp.a(a)\n    });\n    return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n","/* IMPORT */\n/* MAIN */\nconst Channel = {\n    /* CLAMP */\n    min: {\n        r: 0,\n        g: 0,\n        b: 0,\n        s: 0,\n        l: 0,\n        a: 0\n    },\n    max: {\n        r: 255,\n        g: 255,\n        b: 255,\n        h: 360,\n        s: 100,\n        l: 100,\n        a: 1\n    },\n    clamp: {\n        r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n        g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n        b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n        h: (h) => h % 360,\n        s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n        l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n        a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n    },\n    /* CONVERSION */\n    //SOURCE: https://planetcalc.com/7779\n    toLinear: (c) => {\n        const n = c / 255;\n        return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n    },\n    //SOURCE: https://gist.github.com/mjackson/5311256\n    hue2rgb: (p, q, t) => {\n        if (t < 0)\n            t += 1;\n        if (t > 1)\n            t -= 1;\n        if (t < 1 / 6)\n            return p + (q - p) * 6 * t;\n        if (t < 1 / 2)\n            return q;\n        if (t < 2 / 3)\n            return p + (q - p) * (2 / 3 - t) * 6;\n        return p;\n    },\n    hsl2rgb: ({ h, s, l }, channel) => {\n        if (!s)\n            return l * 2.55; // Achromatic\n        h /= 360;\n        s /= 100;\n        l /= 100;\n        const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n        const p = 2 * l - q;\n        switch (channel) {\n            case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n            case 'g': return Channel.hue2rgb(p, q, h) * 255;\n            case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n        }\n    },\n    rgb2hsl: ({ r, g, b }, channel) => {\n        r /= 255;\n        g /= 255;\n        b /= 255;\n        const max = Math.max(r, g, b);\n        const min = Math.min(r, g, b);\n        const l = (max + min) / 2;\n        if (channel === 'l')\n            return l * 100;\n        if (max === min)\n            return 0; // Achromatic\n        const d = max - min;\n        const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n        if (channel === 's')\n            return s * 100;\n        switch (max) {\n            case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n            case g: return ((b - r) / d + 2) * 60;\n            case b: return ((r - g) / d + 4) * 60;\n            default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n        }\n    }\n};\n/* EXPORT */\nexport default Channel;\n","/* MAIN */\nconst Lang = {\n    /* API */\n    clamp: (number, lower, upper) => {\n        if (lower > upper)\n            return Math.min(lower, Math.max(upper, number));\n        return Math.min(upper, Math.max(lower, number));\n    },\n    round: (number) => {\n        return Math.round(number * 10000000000) / 10000000000;\n    }\n};\n/* EXPORT */\nexport default Lang;\n","/* MAIN */\nconst Unit = {\n    /* API */\n    dec2hex: (dec) => {\n        const hex = Math.round(dec).toString(16);\n        return hex.length > 1 ? hex : `0${hex}`;\n    }\n};\n/* EXPORT */\nexport default Unit;\n","/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n    channel,\n    lang,\n    unit\n};\n/* EXPORT */\nexport default Utils;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nexport default baseTimes;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default arrayLikeKeys;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignValue;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nexport default baseAssignValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nexport default baseGetTag;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeys;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nexport default baseUnary;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nexport default cloneArrayBuffer;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nexport default cloneBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nexport default copyArray;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nexport default copyObject;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nexport default createAssigner;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nexport default defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nexport default getTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nexport default initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nexport default isIterateeCall;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nexport default isPrototype;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nexport default nodeUtil;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nexport default overArg;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nexport default overRest;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nexport default toSource;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nexport default constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default isEmpty;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nexport default assignMergeValue;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\nexport default baseMerge;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n *   'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n *   'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","// package.json\nvar package_default = {\n  name: \"mermaid\",\n  version: \"11.6.0\",\n  description: \"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.\",\n  type: \"module\",\n  module: \"./dist/mermaid.core.mjs\",\n  types: \"./dist/mermaid.d.ts\",\n  exports: {\n    \".\": {\n      types: \"./dist/mermaid.d.ts\",\n      import: \"./dist/mermaid.core.mjs\",\n      default: \"./dist/mermaid.core.mjs\"\n    },\n    \"./*\": \"./*\"\n  },\n  keywords: [\n    \"diagram\",\n    \"markdown\",\n    \"flowchart\",\n    \"sequence diagram\",\n    \"gantt\",\n    \"class diagram\",\n    \"git graph\",\n    \"mindmap\",\n    \"packet diagram\",\n    \"c4 diagram\",\n    \"er diagram\",\n    \"pie chart\",\n    \"pie diagram\",\n    \"quadrant chart\",\n    \"requirement diagram\",\n    \"graph\"\n  ],\n  scripts: {\n    clean: \"rimraf dist\",\n    dev: \"pnpm -w dev\",\n    \"docs:code\": \"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup\",\n    \"docs:build\": \"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts\",\n    \"docs:verify\": \"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify\",\n    \"docs:pre:vitepress\": \"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts\",\n    \"docs:build:vitepress\": \"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing\",\n    \"docs:dev\": 'pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./src/vitepress dev\" \"tsx scripts/docs.cli.mts --watch --vitepress\"',\n    \"docs:dev:docker\": 'pnpm docs:pre:vitepress && concurrently \"pnpm --filter ./src/vitepress dev:docker\" \"tsx scripts/docs.cli.mts --watch --vitepress\"',\n    \"docs:serve\": \"pnpm docs:build:vitepress && vitepress serve src/vitepress\",\n    \"docs:spellcheck\": 'cspell \"src/docs/**/*.md\"',\n    \"docs:release-version\": \"tsx scripts/update-release-version.mts\",\n    \"docs:verify-version\": \"tsx scripts/update-release-version.mts --verify\",\n    \"types:build-config\": \"tsx scripts/create-types-from-json-schema.mts\",\n    \"types:verify-config\": \"tsx scripts/create-types-from-json-schema.mts --verify\",\n    checkCircle: \"npx madge --circular ./src\",\n    prepublishOnly: \"pnpm docs:verify-version\"\n  },\n  repository: {\n    type: \"git\",\n    url: \"https://github.com/mermaid-js/mermaid\"\n  },\n  author: \"Knut Sveidqvist\",\n  license: \"MIT\",\n  standard: {\n    ignore: [\n      \"**/parser/*.js\",\n      \"dist/**/*.js\",\n      \"cypress/**/*.js\"\n    ],\n    globals: [\n      \"page\"\n    ]\n  },\n  dependencies: {\n    \"@braintree/sanitize-url\": \"^7.0.4\",\n    \"@iconify/utils\": \"^2.1.33\",\n    \"@mermaid-js/parser\": \"workspace:^\",\n    \"@types/d3\": \"^7.4.3\",\n    cytoscape: \"^3.29.3\",\n    \"cytoscape-cose-bilkent\": \"^4.1.0\",\n    \"cytoscape-fcose\": \"^2.2.0\",\n    d3: \"^7.9.0\",\n    \"d3-sankey\": \"^0.12.3\",\n    \"dagre-d3-es\": \"7.0.11\",\n    dayjs: \"^1.11.13\",\n    dompurify: \"^3.2.4\",\n    katex: \"^0.16.9\",\n    khroma: \"^2.1.0\",\n    \"lodash-es\": \"^4.17.21\",\n    marked: \"^15.0.7\",\n    roughjs: \"^4.6.6\",\n    stylis: \"^4.3.6\",\n    \"ts-dedent\": \"^2.2.0\",\n    uuid: \"^11.1.0\"\n  },\n  devDependencies: {\n    \"@adobe/jsonschema2md\": \"^8.0.2\",\n    \"@iconify/types\": \"^2.0.0\",\n    \"@types/cytoscape\": \"^3.21.9\",\n    \"@types/cytoscape-fcose\": \"^2.2.4\",\n    \"@types/d3-sankey\": \"^0.12.4\",\n    \"@types/d3-scale\": \"^4.0.9\",\n    \"@types/d3-scale-chromatic\": \"^3.1.0\",\n    \"@types/d3-selection\": \"^3.0.11\",\n    \"@types/d3-shape\": \"^3.1.7\",\n    \"@types/jsdom\": \"^21.1.7\",\n    \"@types/katex\": \"^0.16.7\",\n    \"@types/lodash-es\": \"^4.17.12\",\n    \"@types/micromatch\": \"^4.0.9\",\n    \"@types/stylis\": \"^4.2.7\",\n    \"@types/uuid\": \"^10.0.0\",\n    ajv: \"^8.17.1\",\n    chokidar: \"^4.0.3\",\n    concurrently: \"^9.1.2\",\n    \"csstree-validator\": \"^4.0.1\",\n    globby: \"^14.0.2\",\n    jison: \"^0.4.18\",\n    \"js-base64\": \"^3.7.7\",\n    jsdom: \"^26.0.0\",\n    \"json-schema-to-typescript\": \"^15.0.4\",\n    micromatch: \"^4.0.8\",\n    \"path-browserify\": \"^1.0.1\",\n    prettier: \"^3.5.2\",\n    remark: \"^15.0.1\",\n    \"remark-frontmatter\": \"^5.0.0\",\n    \"remark-gfm\": \"^4.0.1\",\n    rimraf: \"^6.0.1\",\n    \"start-server-and-test\": \"^2.0.10\",\n    \"type-fest\": \"^4.35.0\",\n    typedoc: \"^0.27.8\",\n    \"typedoc-plugin-markdown\": \"^4.4.2\",\n    typescript: \"~5.7.3\",\n    \"unist-util-flatmap\": \"^1.0.0\",\n    \"unist-util-visit\": \"^5.0.0\",\n    vitepress: \"^1.0.2\",\n    \"vitepress-plugin-search\": \"1.0.4-alpha.22\"\n  },\n  files: [\n    \"dist/\",\n    \"README.md\"\n  ],\n  publishConfig: {\n    access: \"public\"\n  }\n};\n\nexport {\n  package_default\n};\n","import {\n  __name\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// ../../node_modules/.pnpm/[email protected]/node_modules/js-yaml/dist/js-yaml.mjs\nfunction isNothing(subject) {\n  return typeof subject === \"undefined\" || subject === null;\n}\n__name(isNothing, \"isNothing\");\nfunction isObject(subject) {\n  return typeof subject === \"object\" && subject !== null;\n}\n__name(isObject, \"isObject\");\nfunction toArray(sequence) {\n  if (Array.isArray(sequence)) return sequence;\n  else if (isNothing(sequence)) return [];\n  return [sequence];\n}\n__name(toArray, \"toArray\");\nfunction extend(target, source) {\n  var index, length, key, sourceKeys;\n  if (source) {\n    sourceKeys = Object.keys(source);\n    for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n      key = sourceKeys[index];\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n__name(extend, \"extend\");\nfunction repeat(string, count) {\n  var result = \"\", cycle;\n  for (cycle = 0; cycle < count; cycle += 1) {\n    result += string;\n  }\n  return result;\n}\n__name(repeat, \"repeat\");\nfunction isNegativeZero(number) {\n  return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n}\n__name(isNegativeZero, \"isNegativeZero\");\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\nvar common = {\n  isNothing: isNothing_1,\n  isObject: isObject_1,\n  toArray: toArray_1,\n  repeat: repeat_1,\n  isNegativeZero: isNegativeZero_1,\n  extend: extend_1\n};\nfunction formatError(exception2, compact) {\n  var where = \"\", message = exception2.reason || \"(unknown reason)\";\n  if (!exception2.mark) return message;\n  if (exception2.mark.name) {\n    where += 'in \"' + exception2.mark.name + '\" ';\n  }\n  where += \"(\" + (exception2.mark.line + 1) + \":\" + (exception2.mark.column + 1) + \")\";\n  if (!compact && exception2.mark.snippet) {\n    where += \"\\n\\n\" + exception2.mark.snippet;\n  }\n  return message + \" \" + where;\n}\n__name(formatError, \"formatError\");\nfunction YAMLException$1(reason, mark) {\n  Error.call(this);\n  this.name = \"YAMLException\";\n  this.reason = reason;\n  this.mark = mark;\n  this.message = formatError(this, false);\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    this.stack = new Error().stack || \"\";\n  }\n}\n__name(YAMLException$1, \"YAMLException$1\");\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\nYAMLException$1.prototype.toString = /* @__PURE__ */ __name(function toString(compact) {\n  return this.name + \": \" + formatError(this, compact);\n}, \"toString\");\nvar exception = YAMLException$1;\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n  var head = \"\";\n  var tail = \"\";\n  var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n  if (position - lineStart > maxHalfLength) {\n    head = \" ... \";\n    lineStart = position - maxHalfLength + head.length;\n  }\n  if (lineEnd - position > maxHalfLength) {\n    tail = \" ...\";\n    lineEnd = position + maxHalfLength - tail.length;\n  }\n  return {\n    str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"\\u2192\") + tail,\n    pos: position - lineStart + head.length\n    // relative position\n  };\n}\n__name(getLine, \"getLine\");\nfunction padStart(string, max) {\n  return common.repeat(\" \", max - string.length) + string;\n}\n__name(padStart, \"padStart\");\nfunction makeSnippet(mark, options) {\n  options = Object.create(options || null);\n  if (!mark.buffer) return null;\n  if (!options.maxLength) options.maxLength = 79;\n  if (typeof options.indent !== \"number\") options.indent = 1;\n  if (typeof options.linesBefore !== \"number\") options.linesBefore = 3;\n  if (typeof options.linesAfter !== \"number\") options.linesAfter = 2;\n  var re = /\\r?\\n|\\r|\\0/g;\n  var lineStarts = [0];\n  var lineEnds = [];\n  var match;\n  var foundLineNo = -1;\n  while (match = re.exec(mark.buffer)) {\n    lineEnds.push(match.index);\n    lineStarts.push(match.index + match[0].length);\n    if (mark.position <= match.index && foundLineNo < 0) {\n      foundLineNo = lineStarts.length - 2;\n    }\n  }\n  if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n  var result = \"\", i, line;\n  var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n  var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n  for (i = 1; i <= options.linesBefore; i++) {\n    if (foundLineNo - i < 0) break;\n    line = getLine(\n      mark.buffer,\n      lineStarts[foundLineNo - i],\n      lineEnds[foundLineNo - i],\n      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n      maxLineLength\n    );\n    result = common.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\" + result;\n  }\n  line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n  result += common.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n  result += common.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n  for (i = 1; i <= options.linesAfter; i++) {\n    if (foundLineNo + i >= lineEnds.length) break;\n    line = getLine(\n      mark.buffer,\n      lineStarts[foundLineNo + i],\n      lineEnds[foundLineNo + i],\n      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n      maxLineLength\n    );\n    result += common.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n  }\n  return result.replace(/\\n$/, \"\");\n}\n__name(makeSnippet, \"makeSnippet\");\nvar snippet = makeSnippet;\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n  \"kind\",\n  \"multi\",\n  \"resolve\",\n  \"construct\",\n  \"instanceOf\",\n  \"predicate\",\n  \"represent\",\n  \"representName\",\n  \"defaultStyle\",\n  \"styleAliases\"\n];\nvar YAML_NODE_KINDS = [\n  \"scalar\",\n  \"sequence\",\n  \"mapping\"\n];\nfunction compileStyleAliases(map2) {\n  var result = {};\n  if (map2 !== null) {\n    Object.keys(map2).forEach(function(style) {\n      map2[style].forEach(function(alias) {\n        result[String(alias)] = style;\n      });\n    });\n  }\n  return result;\n}\n__name(compileStyleAliases, \"compileStyleAliases\");\nfunction Type$1(tag, options) {\n  options = options || {};\n  Object.keys(options).forEach(function(name) {\n    if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n      throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n    }\n  });\n  this.options = options;\n  this.tag = tag;\n  this.kind = options[\"kind\"] || null;\n  this.resolve = options[\"resolve\"] || function() {\n    return true;\n  };\n  this.construct = options[\"construct\"] || function(data) {\n    return data;\n  };\n  this.instanceOf = options[\"instanceOf\"] || null;\n  this.predicate = options[\"predicate\"] || null;\n  this.represent = options[\"represent\"] || null;\n  this.representName = options[\"representName\"] || null;\n  this.defaultStyle = options[\"defaultStyle\"] || null;\n  this.multi = options[\"multi\"] || false;\n  this.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n  if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n    throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n  }\n}\n__name(Type$1, \"Type$1\");\nvar type = Type$1;\nfunction compileList(schema2, name) {\n  var result = [];\n  schema2[name].forEach(function(currentType) {\n    var newIndex = result.length;\n    result.forEach(function(previousType, previousIndex) {\n      if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {\n        newIndex = previousIndex;\n      }\n    });\n    result[newIndex] = currentType;\n  });\n  return result;\n}\n__name(compileList, \"compileList\");\nfunction compileMap() {\n  var result = {\n    scalar: {},\n    sequence: {},\n    mapping: {},\n    fallback: {},\n    multi: {\n      scalar: [],\n      sequence: [],\n      mapping: [],\n      fallback: []\n    }\n  }, index, length;\n  function collectType(type2) {\n    if (type2.multi) {\n      result.multi[type2.kind].push(type2);\n      result.multi[\"fallback\"].push(type2);\n    } else {\n      result[type2.kind][type2.tag] = result[\"fallback\"][type2.tag] = type2;\n    }\n  }\n  __name(collectType, \"collectType\");\n  for (index = 0, length = arguments.length; index < length; index += 1) {\n    arguments[index].forEach(collectType);\n  }\n  return result;\n}\n__name(compileMap, \"compileMap\");\nfunction Schema$1(definition) {\n  return this.extend(definition);\n}\n__name(Schema$1, \"Schema$1\");\nSchema$1.prototype.extend = /* @__PURE__ */ __name(function extend2(definition) {\n  var implicit = [];\n  var explicit = [];\n  if (definition instanceof type) {\n    explicit.push(definition);\n  } else if (Array.isArray(definition)) {\n    explicit = explicit.concat(definition);\n  } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n    if (definition.implicit) implicit = implicit.concat(definition.implicit);\n    if (definition.explicit) explicit = explicit.concat(definition.explicit);\n  } else {\n    throw new exception(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n  }\n  implicit.forEach(function(type$1) {\n    if (!(type$1 instanceof type)) {\n      throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n    }\n    if (type$1.loadKind && type$1.loadKind !== \"scalar\") {\n      throw new exception(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");\n    }\n    if (type$1.multi) {\n      throw new exception(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n    }\n  });\n  explicit.forEach(function(type$1) {\n    if (!(type$1 instanceof type)) {\n      throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n    }\n  });\n  var result = Object.create(Schema$1.prototype);\n  result.implicit = (this.implicit || []).concat(implicit);\n  result.explicit = (this.explicit || []).concat(explicit);\n  result.compiledImplicit = compileList(result, \"implicit\");\n  result.compiledExplicit = compileList(result, \"explicit\");\n  result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n  return result;\n}, \"extend\");\nvar schema = Schema$1;\nvar str = new type(\"tag:yaml.org,2002:str\", {\n  kind: \"scalar\",\n  construct: /* @__PURE__ */ __name(function(data) {\n    return data !== null ? data : \"\";\n  }, \"construct\")\n});\nvar seq = new type(\"tag:yaml.org,2002:seq\", {\n  kind: \"sequence\",\n  construct: /* @__PURE__ */ __name(function(data) {\n    return data !== null ? data : [];\n  }, \"construct\")\n});\nvar map = new type(\"tag:yaml.org,2002:map\", {\n  kind: \"mapping\",\n  construct: /* @__PURE__ */ __name(function(data) {\n    return data !== null ? data : {};\n  }, \"construct\")\n});\nvar failsafe = new schema({\n  explicit: [\n    str,\n    seq,\n    map\n  ]\n});\nfunction resolveYamlNull(data) {\n  if (data === null) return true;\n  var max = data.length;\n  return max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n}\n__name(resolveYamlNull, \"resolveYamlNull\");\nfunction constructYamlNull() {\n  return null;\n}\n__name(constructYamlNull, \"constructYamlNull\");\nfunction isNull(object) {\n  return object === null;\n}\n__name(isNull, \"isNull\");\nvar _null = new type(\"tag:yaml.org,2002:null\", {\n  kind: \"scalar\",\n  resolve: resolveYamlNull,\n  construct: constructYamlNull,\n  predicate: isNull,\n  represent: {\n    canonical: /* @__PURE__ */ __name(function() {\n      return \"~\";\n    }, \"canonical\"),\n    lowercase: /* @__PURE__ */ __name(function() {\n      return \"null\";\n    }, \"lowercase\"),\n    uppercase: /* @__PURE__ */ __name(function() {\n      return \"NULL\";\n    }, \"uppercase\"),\n    camelcase: /* @__PURE__ */ __name(function() {\n      return \"Null\";\n    }, \"camelcase\"),\n    empty: /* @__PURE__ */ __name(function() {\n      return \"\";\n    }, \"empty\")\n  },\n  defaultStyle: \"lowercase\"\n});\nfunction resolveYamlBoolean(data) {\n  if (data === null) return false;\n  var max = data.length;\n  return max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n}\n__name(resolveYamlBoolean, \"resolveYamlBoolean\");\nfunction constructYamlBoolean(data) {\n  return data === \"true\" || data === \"True\" || data === \"TRUE\";\n}\n__name(constructYamlBoolean, \"constructYamlBoolean\");\nfunction isBoolean(object) {\n  return Object.prototype.toString.call(object) === \"[object Boolean]\";\n}\n__name(isBoolean, \"isBoolean\");\nvar bool = new type(\"tag:yaml.org,2002:bool\", {\n  kind: \"scalar\",\n  resolve: resolveYamlBoolean,\n  construct: constructYamlBoolean,\n  predicate: isBoolean,\n  represent: {\n    lowercase: /* @__PURE__ */ __name(function(object) {\n      return object ? \"true\" : \"false\";\n    }, \"lowercase\"),\n    uppercase: /* @__PURE__ */ __name(function(object) {\n      return object ? \"TRUE\" : \"FALSE\";\n    }, \"uppercase\"),\n    camelcase: /* @__PURE__ */ __name(function(object) {\n      return object ? \"True\" : \"False\";\n    }, \"camelcase\")\n  },\n  defaultStyle: \"lowercase\"\n});\nfunction isHexCode(c) {\n  return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;\n}\n__name(isHexCode, \"isHexCode\");\nfunction isOctCode(c) {\n  return 48 <= c && c <= 55;\n}\n__name(isOctCode, \"isOctCode\");\nfunction isDecCode(c) {\n  return 48 <= c && c <= 57;\n}\n__name(isDecCode, \"isDecCode\");\nfunction resolveYamlInteger(data) {\n  if (data === null) return false;\n  var max = data.length, index = 0, hasDigits = false, ch;\n  if (!max) return false;\n  ch = data[index];\n  if (ch === \"-\" || ch === \"+\") {\n    ch = data[++index];\n  }\n  if (ch === \"0\") {\n    if (index + 1 === max) return true;\n    ch = data[++index];\n    if (ch === \"b\") {\n      index++;\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === \"_\") continue;\n        if (ch !== \"0\" && ch !== \"1\") return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== \"_\";\n    }\n    if (ch === \"x\") {\n      index++;\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === \"_\") continue;\n        if (!isHexCode(data.charCodeAt(index))) return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== \"_\";\n    }\n    if (ch === \"o\") {\n      index++;\n      for (; index < max; index++) {\n        ch = data[index];\n        if (ch === \"_\") continue;\n        if (!isOctCode(data.charCodeAt(index))) return false;\n        hasDigits = true;\n      }\n      return hasDigits && ch !== \"_\";\n    }\n  }\n  if (ch === \"_\") return false;\n  for (; index < max; index++) {\n    ch = data[index];\n    if (ch === \"_\") continue;\n    if (!isDecCode(data.charCodeAt(index))) {\n      return false;\n    }\n    hasDigits = true;\n  }\n  if (!hasDigits || ch === \"_\") return false;\n  return true;\n}\n__name(resolveYamlInteger, \"resolveYamlInteger\");\nfunction constructYamlInteger(data) {\n  var value = data, sign = 1, ch;\n  if (value.indexOf(\"_\") !== -1) {\n    value = value.replace(/_/g, \"\");\n  }\n  ch = value[0];\n  if (ch === \"-\" || ch === \"+\") {\n    if (ch === \"-\") sign = -1;\n    value = value.slice(1);\n    ch = value[0];\n  }\n  if (value === \"0\") return 0;\n  if (ch === \"0\") {\n    if (value[1] === \"b\") return sign * parseInt(value.slice(2), 2);\n    if (value[1] === \"x\") return sign * parseInt(value.slice(2), 16);\n    if (value[1] === \"o\") return sign * parseInt(value.slice(2), 8);\n  }\n  return sign * parseInt(value, 10);\n}\n__name(constructYamlInteger, \"constructYamlInteger\");\nfunction isInteger(object) {\n  return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 === 0 && !common.isNegativeZero(object));\n}\n__name(isInteger, \"isInteger\");\nvar int = new type(\"tag:yaml.org,2002:int\", {\n  kind: \"scalar\",\n  resolve: resolveYamlInteger,\n  construct: constructYamlInteger,\n  predicate: isInteger,\n  represent: {\n    binary: /* @__PURE__ */ __name(function(obj) {\n      return obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n    }, \"binary\"),\n    octal: /* @__PURE__ */ __name(function(obj) {\n      return obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n    }, \"octal\"),\n    decimal: /* @__PURE__ */ __name(function(obj) {\n      return obj.toString(10);\n    }, \"decimal\"),\n    /* eslint-disable max-len */\n    hexadecimal: /* @__PURE__ */ __name(function(obj) {\n      return obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n    }, \"hexadecimal\")\n  },\n  defaultStyle: \"decimal\",\n  styleAliases: {\n    binary: [2, \"bin\"],\n    octal: [8, \"oct\"],\n    decimal: [10, \"dec\"],\n    hexadecimal: [16, \"hex\"]\n  }\n});\nvar YAML_FLOAT_PATTERN = new RegExp(\n  // 2.5e4, 2.5 and integers\n  \"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\"\n);\nfunction resolveYamlFloat(data) {\n  if (data === null) return false;\n  if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`\n  // Probably should update regexp & check speed\n  data[data.length - 1] === \"_\") {\n    return false;\n  }\n  return true;\n}\n__name(resolveYamlFloat, \"resolveYamlFloat\");\nfunction constructYamlFloat(data) {\n  var value, sign;\n  value = data.replace(/_/g, \"\").toLowerCase();\n  sign = value[0] === \"-\" ? -1 : 1;\n  if (\"+-\".indexOf(value[0]) >= 0) {\n    value = value.slice(1);\n  }\n  if (value === \".inf\") {\n    return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n  } else if (value === \".nan\") {\n    return NaN;\n  }\n  return sign * parseFloat(value, 10);\n}\n__name(constructYamlFloat, \"constructYamlFloat\");\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\nfunction representYamlFloat(object, style) {\n  var res;\n  if (isNaN(object)) {\n    switch (style) {\n      case \"lowercase\":\n        return \".nan\";\n      case \"uppercase\":\n        return \".NAN\";\n      case \"camelcase\":\n        return \".NaN\";\n    }\n  } else if (Number.POSITIVE_INFINITY === object) {\n    switch (style) {\n      case \"lowercase\":\n        return \".inf\";\n      case \"uppercase\":\n        return \".INF\";\n      case \"camelcase\":\n        return \".Inf\";\n    }\n  } else if (Number.NEGATIVE_INFINITY === object) {\n    switch (style) {\n      case \"lowercase\":\n        return \"-.inf\";\n      case \"uppercase\":\n        return \"-.INF\";\n      case \"camelcase\":\n        return \"-.Inf\";\n    }\n  } else if (common.isNegativeZero(object)) {\n    return \"-0.0\";\n  }\n  res = object.toString(10);\n  return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n}\n__name(representYamlFloat, \"representYamlFloat\");\nfunction isFloat(object) {\n  return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common.isNegativeZero(object));\n}\n__name(isFloat, \"isFloat\");\nvar float = new type(\"tag:yaml.org,2002:float\", {\n  kind: \"scalar\",\n  resolve: resolveYamlFloat,\n  construct: constructYamlFloat,\n  predicate: isFloat,\n  represent: representYamlFloat,\n  defaultStyle: \"lowercase\"\n});\nvar json = failsafe.extend({\n  implicit: [\n    _null,\n    bool,\n    int,\n    float\n  ]\n});\nvar core = json;\nvar YAML_DATE_REGEXP = new RegExp(\n  \"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"\n);\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n  \"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\"\n);\nfunction resolveYamlTimestamp(data) {\n  if (data === null) return false;\n  if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n  if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n  return false;\n}\n__name(resolveYamlTimestamp, \"resolveYamlTimestamp\");\nfunction constructYamlTimestamp(data) {\n  var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date;\n  match = YAML_DATE_REGEXP.exec(data);\n  if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n  if (match === null) throw new Error(\"Date resolve error\");\n  year = +match[1];\n  month = +match[2] - 1;\n  day = +match[3];\n  if (!match[4]) {\n    return new Date(Date.UTC(year, month, day));\n  }\n  hour = +match[4];\n  minute = +match[5];\n  second = +match[6];\n  if (match[7]) {\n    fraction = match[7].slice(0, 3);\n    while (fraction.length < 3) {\n      fraction += \"0\";\n    }\n    fraction = +fraction;\n  }\n  if (match[9]) {\n    tz_hour = +match[10];\n    tz_minute = +(match[11] || 0);\n    delta = (tz_hour * 60 + tz_minute) * 6e4;\n    if (match[9] === \"-\") delta = -delta;\n  }\n  date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n  if (delta) date.setTime(date.getTime() - delta);\n  return date;\n}\n__name(constructYamlTimestamp, \"constructYamlTimestamp\");\nfunction representYamlTimestamp(object) {\n  return object.toISOString();\n}\n__name(representYamlTimestamp, \"representYamlTimestamp\");\nvar timestamp = new type(\"tag:yaml.org,2002:timestamp\", {\n  kind: \"scalar\",\n  resolve: resolveYamlTimestamp,\n  construct: constructYamlTimestamp,\n  instanceOf: Date,\n  represent: representYamlTimestamp\n});\nfunction resolveYamlMerge(data) {\n  return data === \"<<\" || data === null;\n}\n__name(resolveYamlMerge, \"resolveYamlMerge\");\nvar merge = new type(\"tag:yaml.org,2002:merge\", {\n  kind: \"scalar\",\n  resolve: resolveYamlMerge\n});\nvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\nfunction resolveYamlBinary(data) {\n  if (data === null) return false;\n  var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP;\n  for (idx = 0; idx < max; idx++) {\n    code = map2.indexOf(data.charAt(idx));\n    if (code > 64) continue;\n    if (code < 0) return false;\n    bitlen += 6;\n  }\n  return bitlen % 8 === 0;\n}\n__name(resolveYamlBinary, \"resolveYamlBinary\");\nfunction constructYamlBinary(data) {\n  var idx, tailbits, input = data.replace(/[\\r\\n=]/g, \"\"), max = input.length, map2 = BASE64_MAP, bits = 0, result = [];\n  for (idx = 0; idx < max; idx++) {\n    if (idx % 4 === 0 && idx) {\n      result.push(bits >> 16 & 255);\n      result.push(bits >> 8 & 255);\n      result.push(bits & 255);\n    }\n    bits = bits << 6 | map2.indexOf(input.charAt(idx));\n  }\n  tailbits = max % 4 * 6;\n  if (tailbits === 0) {\n    result.push(bits >> 16 & 255);\n    result.push(bits >> 8 & 255);\n    result.push(bits & 255);\n  } else if (tailbits === 18) {\n    result.push(bits >> 10 & 255);\n    result.push(bits >> 2 & 255);\n  } else if (tailbits === 12) {\n    result.push(bits >> 4 & 255);\n  }\n  return new Uint8Array(result);\n}\n__name(constructYamlBinary, \"constructYamlBinary\");\nfunction representYamlBinary(object) {\n  var result = \"\", bits = 0, idx, tail, max = object.length, map2 = BASE64_MAP;\n  for (idx = 0; idx < max; idx++) {\n    if (idx % 3 === 0 && idx) {\n      result += map2[bits >> 18 & 63];\n      result += map2[bits >> 12 & 63];\n      result += map2[bits >> 6 & 63];\n      result += map2[bits & 63];\n    }\n    bits = (bits << 8) + object[idx];\n  }\n  tail = max % 3;\n  if (tail === 0) {\n    result += map2[bits >> 18 & 63];\n    result += map2[bits >> 12 & 63];\n    result += map2[bits >> 6 & 63];\n    result += map2[bits & 63];\n  } else if (tail === 2) {\n    result += map2[bits >> 10 & 63];\n    result += map2[bits >> 4 & 63];\n    result += map2[bits << 2 & 63];\n    result += map2[64];\n  } else if (tail === 1) {\n    result += map2[bits >> 2 & 63];\n    result += map2[bits << 4 & 63];\n    result += map2[64];\n    result += map2[64];\n  }\n  return result;\n}\n__name(representYamlBinary, \"representYamlBinary\");\nfunction isBinary(obj) {\n  return Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n}\n__name(isBinary, \"isBinary\");\nvar binary = new type(\"tag:yaml.org,2002:binary\", {\n  kind: \"scalar\",\n  resolve: resolveYamlBinary,\n  construct: constructYamlBinary,\n  predicate: isBinary,\n  represent: representYamlBinary\n});\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\nfunction resolveYamlOmap(data) {\n  if (data === null) return true;\n  var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data;\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n    pairHasKey = false;\n    if (_toString$2.call(pair) !== \"[object Object]\") return false;\n    for (pairKey in pair) {\n      if (_hasOwnProperty$3.call(pair, pairKey)) {\n        if (!pairHasKey) pairHasKey = true;\n        else return false;\n      }\n    }\n    if (!pairHasKey) return false;\n    if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n    else return false;\n  }\n  return true;\n}\n__name(resolveYamlOmap, \"resolveYamlOmap\");\nfunction constructYamlOmap(data) {\n  return data !== null ? data : [];\n}\n__name(constructYamlOmap, \"constructYamlOmap\");\nvar omap = new type(\"tag:yaml.org,2002:omap\", {\n  kind: \"sequence\",\n  resolve: resolveYamlOmap,\n  construct: constructYamlOmap\n});\nvar _toString$1 = Object.prototype.toString;\nfunction resolveYamlPairs(data) {\n  if (data === null) return true;\n  var index, length, pair, keys, result, object = data;\n  result = new Array(object.length);\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n    if (_toString$1.call(pair) !== \"[object Object]\") return false;\n    keys = Object.keys(pair);\n    if (keys.length !== 1) return false;\n    result[index] = [keys[0], pair[keys[0]]];\n  }\n  return true;\n}\n__name(resolveYamlPairs, \"resolveYamlPairs\");\nfunction constructYamlPairs(data) {\n  if (data === null) return [];\n  var index, length, pair, keys, result, object = data;\n  result = new Array(object.length);\n  for (index = 0, length = object.length; index < length; index += 1) {\n    pair = object[index];\n    keys = Object.keys(pair);\n    result[index] = [keys[0], pair[keys[0]]];\n  }\n  return result;\n}\n__name(constructYamlPairs, \"constructYamlPairs\");\nvar pairs = new type(\"tag:yaml.org,2002:pairs\", {\n  kind: \"sequence\",\n  resolve: resolveYamlPairs,\n  construct: constructYamlPairs\n});\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\nfunction resolveYamlSet(data) {\n  if (data === null) return true;\n  var key, object = data;\n  for (key in object) {\n    if (_hasOwnProperty$2.call(object, key)) {\n      if (object[key] !== null) return false;\n    }\n  }\n  return true;\n}\n__name(resolveYamlSet, \"resolveYamlSet\");\nfunction constructYamlSet(data) {\n  return data !== null ? data : {};\n}\n__name(constructYamlSet, \"constructYamlSet\");\nvar set = new type(\"tag:yaml.org,2002:set\", {\n  kind: \"mapping\",\n  resolve: resolveYamlSet,\n  construct: constructYamlSet\n});\nvar _default = core.extend({\n  implicit: [\n    timestamp,\n    merge\n  ],\n  explicit: [\n    binary,\n    omap,\n    pairs,\n    set\n  ]\n});\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\nfunction _class(obj) {\n  return Object.prototype.toString.call(obj);\n}\n__name(_class, \"_class\");\nfunction is_EOL(c) {\n  return c === 10 || c === 13;\n}\n__name(is_EOL, \"is_EOL\");\nfunction is_WHITE_SPACE(c) {\n  return c === 9 || c === 32;\n}\n__name(is_WHITE_SPACE, \"is_WHITE_SPACE\");\nfunction is_WS_OR_EOL(c) {\n  return c === 9 || c === 32 || c === 10 || c === 13;\n}\n__name(is_WS_OR_EOL, \"is_WS_OR_EOL\");\nfunction is_FLOW_INDICATOR(c) {\n  return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n}\n__name(is_FLOW_INDICATOR, \"is_FLOW_INDICATOR\");\nfunction fromHexCode(c) {\n  var lc;\n  if (48 <= c && c <= 57) {\n    return c - 48;\n  }\n  lc = c | 32;\n  if (97 <= lc && lc <= 102) {\n    return lc - 97 + 10;\n  }\n  return -1;\n}\n__name(fromHexCode, \"fromHexCode\");\nfunction escapedHexLen(c) {\n  if (c === 120) {\n    return 2;\n  }\n  if (c === 117) {\n    return 4;\n  }\n  if (c === 85) {\n    return 8;\n  }\n  return 0;\n}\n__name(escapedHexLen, \"escapedHexLen\");\nfunction fromDecimalCode(c) {\n  if (48 <= c && c <= 57) {\n    return c - 48;\n  }\n  return -1;\n}\n__name(fromDecimalCode, \"fromDecimalCode\");\nfunction simpleEscapeSequence(c) {\n  return c === 48 ? \"\\0\" : c === 97 ? \"\\x07\" : c === 98 ? \"\\b\" : c === 116 ? \"\t\" : c === 9 ? \"\t\" : c === 110 ? \"\\n\" : c === 118 ? \"\\v\" : c === 102 ? \"\\f\" : c === 114 ? \"\\r\" : c === 101 ? \"\\x1B\" : c === 32 ? \" \" : c === 34 ? '\"' : c === 47 ? \"/\" : c === 92 ? \"\\\\\" : c === 78 ? \"\\x85\" : c === 95 ? \"\\xA0\" : c === 76 ? \"\\u2028\" : c === 80 ? \"\\u2029\" : \"\";\n}\n__name(simpleEscapeSequence, \"simpleEscapeSequence\");\nfunction charFromCodepoint(c) {\n  if (c <= 65535) {\n    return String.fromCharCode(c);\n  }\n  return String.fromCharCode(\n    (c - 65536 >> 10) + 55296,\n    (c - 65536 & 1023) + 56320\n  );\n}\n__name(charFromCodepoint, \"charFromCodepoint\");\nvar simpleEscapeCheck = new Array(256);\nvar simpleEscapeMap = new Array(256);\nfor (i = 0; i < 256; i++) {\n  simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n  simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\nvar i;\nfunction State$1(input, options) {\n  this.input = input;\n  this.filename = options[\"filename\"] || null;\n  this.schema = options[\"schema\"] || _default;\n  this.onWarning = options[\"onWarning\"] || null;\n  this.legacy = options[\"legacy\"] || false;\n  this.json = options[\"json\"] || false;\n  this.listener = options[\"listener\"] || null;\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.typeMap = this.schema.compiledTypeMap;\n  this.length = input.length;\n  this.position = 0;\n  this.line = 0;\n  this.lineStart = 0;\n  this.lineIndent = 0;\n  this.firstTabInLine = -1;\n  this.documents = [];\n}\n__name(State$1, \"State$1\");\nfunction generateError(state, message) {\n  var mark = {\n    name: state.filename,\n    buffer: state.input.slice(0, -1),\n    // omit trailing \\0\n    position: state.position,\n    line: state.line,\n    column: state.position - state.lineStart\n  };\n  mark.snippet = snippet(mark);\n  return new exception(message, mark);\n}\n__name(generateError, \"generateError\");\nfunction throwError(state, message) {\n  throw generateError(state, message);\n}\n__name(throwError, \"throwError\");\nfunction throwWarning(state, message) {\n  if (state.onWarning) {\n    state.onWarning.call(null, generateError(state, message));\n  }\n}\n__name(throwWarning, \"throwWarning\");\nvar directiveHandlers = {\n  YAML: /* @__PURE__ */ __name(function handleYamlDirective(state, name, args) {\n    var match, major, minor;\n    if (state.version !== null) {\n      throwError(state, \"duplication of %YAML directive\");\n    }\n    if (args.length !== 1) {\n      throwError(state, \"YAML directive accepts exactly one argument\");\n    }\n    match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n    if (match === null) {\n      throwError(state, \"ill-formed argument of the YAML directive\");\n    }\n    major = parseInt(match[1], 10);\n    minor = parseInt(match[2], 10);\n    if (major !== 1) {\n      throwError(state, \"unacceptable YAML version of the document\");\n    }\n    state.version = args[0];\n    state.checkLineBreaks = minor < 2;\n    if (minor !== 1 && minor !== 2) {\n      throwWarning(state, \"unsupported YAML version of the document\");\n    }\n  }, \"handleYamlDirective\"),\n  TAG: /* @__PURE__ */ __name(function handleTagDirective(state, name, args) {\n    var handle, prefix;\n    if (args.length !== 2) {\n      throwError(state, \"TAG directive accepts exactly two arguments\");\n    }\n    handle = args[0];\n    prefix = args[1];\n    if (!PATTERN_TAG_HANDLE.test(handle)) {\n      throwError(state, \"ill-formed tag handle (first argument) of the TAG directive\");\n    }\n    if (_hasOwnProperty$1.call(state.tagMap, handle)) {\n      throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n    }\n    if (!PATTERN_TAG_URI.test(prefix)) {\n      throwError(state, \"ill-formed tag prefix (second argument) of the TAG directive\");\n    }\n    try {\n      prefix = decodeURIComponent(prefix);\n    } catch (err) {\n      throwError(state, \"tag prefix is malformed: \" + prefix);\n    }\n    state.tagMap[handle] = prefix;\n  }, \"handleTagDirective\")\n};\nfunction captureSegment(state, start, end, checkJson) {\n  var _position, _length, _character, _result;\n  if (start < end) {\n    _result = state.input.slice(start, end);\n    if (checkJson) {\n      for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n        _character = _result.charCodeAt(_position);\n        if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {\n          throwError(state, \"expected valid JSON character\");\n        }\n      }\n    } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n      throwError(state, \"the stream contains non-printable characters\");\n    }\n    state.result += _result;\n  }\n}\n__name(captureSegment, \"captureSegment\");\nfunction mergeMappings(state, destination, source, overridableKeys) {\n  var sourceKeys, key, index, quantity;\n  if (!common.isObject(source)) {\n    throwError(state, \"cannot merge mappings; the provided source object is unacceptable\");\n  }\n  sourceKeys = Object.keys(source);\n  for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n    key = sourceKeys[index];\n    if (!_hasOwnProperty$1.call(destination, key)) {\n      destination[key] = source[key];\n      overridableKeys[key] = true;\n    }\n  }\n}\n__name(mergeMappings, \"mergeMappings\");\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n  var index, quantity;\n  if (Array.isArray(keyNode)) {\n    keyNode = Array.prototype.slice.call(keyNode);\n    for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n      if (Array.isArray(keyNode[index])) {\n        throwError(state, \"nested arrays are not supported inside keys\");\n      }\n      if (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") {\n        keyNode[index] = \"[object Object]\";\n      }\n    }\n  }\n  if (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") {\n    keyNode = \"[object Object]\";\n  }\n  keyNode = String(keyNode);\n  if (_result === null) {\n    _result = {};\n  }\n  if (keyTag === \"tag:yaml.org,2002:merge\") {\n    if (Array.isArray(valueNode)) {\n      for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n        mergeMappings(state, _result, valueNode[index], overridableKeys);\n      }\n    } else {\n      mergeMappings(state, _result, valueNode, overridableKeys);\n    }\n  } else {\n    if (!state.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) {\n      state.line = startLine || state.line;\n      state.lineStart = startLineStart || state.lineStart;\n      state.position = startPos || state.position;\n      throwError(state, \"duplicated mapping key\");\n    }\n    if (keyNode === \"__proto__\") {\n      Object.defineProperty(_result, keyNode, {\n        configurable: true,\n        enumerable: true,\n        writable: true,\n        value: valueNode\n      });\n    } else {\n      _result[keyNode] = valueNode;\n    }\n    delete overridableKeys[keyNode];\n  }\n  return _result;\n}\n__name(storeMappingPair, \"storeMappingPair\");\nfunction readLineBreak(state) {\n  var ch;\n  ch = state.input.charCodeAt(state.position);\n  if (ch === 10) {\n    state.position++;\n  } else if (ch === 13) {\n    state.position++;\n    if (state.input.charCodeAt(state.position) === 10) {\n      state.position++;\n    }\n  } else {\n    throwError(state, \"a line break is expected\");\n  }\n  state.line += 1;\n  state.lineStart = state.position;\n  state.firstTabInLine = -1;\n}\n__name(readLineBreak, \"readLineBreak\");\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n  var lineBreaks = 0, ch = state.input.charCodeAt(state.position);\n  while (ch !== 0) {\n    while (is_WHITE_SPACE(ch)) {\n      if (ch === 9 && state.firstTabInLine === -1) {\n        state.firstTabInLine = state.position;\n      }\n      ch = state.input.charCodeAt(++state.position);\n    }\n    if (allowComments && ch === 35) {\n      do {\n        ch = state.input.charCodeAt(++state.position);\n      } while (ch !== 10 && ch !== 13 && ch !== 0);\n    }\n    if (is_EOL(ch)) {\n      readLineBreak(state);\n      ch = state.input.charCodeAt(state.position);\n      lineBreaks++;\n      state.lineIndent = 0;\n      while (ch === 32) {\n        state.lineIndent++;\n        ch = state.input.charCodeAt(++state.position);\n      }\n    } else {\n      break;\n    }\n  }\n  if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n    throwWarning(state, \"deficient indentation\");\n  }\n  return lineBreaks;\n}\n__name(skipSeparationSpace, \"skipSeparationSpace\");\nfunction testDocumentSeparator(state) {\n  var _position = state.position, ch;\n  ch = state.input.charCodeAt(_position);\n  if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {\n    _position += 3;\n    ch = state.input.charCodeAt(_position);\n    if (ch === 0 || is_WS_OR_EOL(ch)) {\n      return true;\n    }\n  }\n  return false;\n}\n__name(testDocumentSeparator, \"testDocumentSeparator\");\nfunction writeFoldedLines(state, count) {\n  if (count === 1) {\n    state.result += \" \";\n  } else if (count > 1) {\n    state.result += common.repeat(\"\\n\", count - 1);\n  }\n}\n__name(writeFoldedLines, \"writeFoldedLines\");\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n  var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch;\n  ch = state.input.charCodeAt(state.position);\n  if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {\n    return false;\n  }\n  if (ch === 63 || ch === 45) {\n    following = state.input.charCodeAt(state.position + 1);\n    if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n      return false;\n    }\n  }\n  state.kind = \"scalar\";\n  state.result = \"\";\n  captureStart = captureEnd = state.position;\n  hasPendingContent = false;\n  while (ch !== 0) {\n    if (ch === 58) {\n      following = state.input.charCodeAt(state.position + 1);\n      if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n        break;\n      }\n    } else if (ch === 35) {\n      preceding = state.input.charCodeAt(state.position - 1);\n      if (is_WS_OR_EOL(preceding)) {\n        break;\n      }\n    } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n      break;\n    } else if (is_EOL(ch)) {\n      _line = state.line;\n      _lineStart = state.lineStart;\n      _lineIndent = state.lineIndent;\n      skipSeparationSpace(state, false, -1);\n      if (state.lineIndent >= nodeIndent) {\n        hasPendingContent = true;\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      } else {\n        state.position = captureEnd;\n        state.line = _line;\n        state.lineStart = _lineStart;\n        state.lineIndent = _lineIndent;\n        break;\n      }\n    }\n    if (hasPendingContent) {\n      captureSegment(state, captureStart, captureEnd, false);\n      writeFoldedLines(state, state.line - _line);\n      captureStart = captureEnd = state.position;\n      hasPendingContent = false;\n    }\n    if (!is_WHITE_SPACE(ch)) {\n      captureEnd = state.position + 1;\n    }\n    ch = state.input.charCodeAt(++state.position);\n  }\n  captureSegment(state, captureStart, captureEnd, false);\n  if (state.result) {\n    return true;\n  }\n  state.kind = _kind;\n  state.result = _result;\n  return false;\n}\n__name(readPlainScalar, \"readPlainScalar\");\nfunction readSingleQuotedScalar(state, nodeIndent) {\n  var ch, captureStart, captureEnd;\n  ch = state.input.charCodeAt(state.position);\n  if (ch !== 39) {\n    return false;\n  }\n  state.kind = \"scalar\";\n  state.result = \"\";\n  state.position++;\n  captureStart = captureEnd = state.position;\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 39) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n      if (ch === 39) {\n        captureStart = state.position;\n        state.position++;\n        captureEnd = state.position;\n      } else {\n        return true;\n      }\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, \"unexpected end of the document within a single quoted scalar\");\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n  throwError(state, \"unexpected end of the stream within a single quoted scalar\");\n}\n__name(readSingleQuotedScalar, \"readSingleQuotedScalar\");\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n  var captureStart, captureEnd, hexLength, hexResult, tmp, ch;\n  ch = state.input.charCodeAt(state.position);\n  if (ch !== 34) {\n    return false;\n  }\n  state.kind = \"scalar\";\n  state.result = \"\";\n  state.position++;\n  captureStart = captureEnd = state.position;\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    if (ch === 34) {\n      captureSegment(state, captureStart, state.position, true);\n      state.position++;\n      return true;\n    } else if (ch === 92) {\n      captureSegment(state, captureStart, state.position, true);\n      ch = state.input.charCodeAt(++state.position);\n      if (is_EOL(ch)) {\n        skipSeparationSpace(state, false, nodeIndent);\n      } else if (ch < 256 && simpleEscapeCheck[ch]) {\n        state.result += simpleEscapeMap[ch];\n        state.position++;\n      } else if ((tmp = escapedHexLen(ch)) > 0) {\n        hexLength = tmp;\n        hexResult = 0;\n        for (; hexLength > 0; hexLength--) {\n          ch = state.input.charCodeAt(++state.position);\n          if ((tmp = fromHexCode(ch)) >= 0) {\n            hexResult = (hexResult << 4) + tmp;\n          } else {\n            throwError(state, \"expected hexadecimal character\");\n          }\n        }\n        state.result += charFromCodepoint(hexResult);\n        state.position++;\n      } else {\n        throwError(state, \"unknown escape sequence\");\n      }\n      captureStart = captureEnd = state.position;\n    } else if (is_EOL(ch)) {\n      captureSegment(state, captureStart, captureEnd, true);\n      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n      captureStart = captureEnd = state.position;\n    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n      throwError(state, \"unexpected end of the document within a double quoted scalar\");\n    } else {\n      state.position++;\n      captureEnd = state.position;\n    }\n  }\n  throwError(state, \"unexpected end of the stream within a double quoted scalar\");\n}\n__name(readDoubleQuotedScalar, \"readDoubleQuotedScalar\");\nfunction readFlowCollection(state, nodeIndent) {\n  var readNext = true, _line, _lineStart, _pos, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;\n  ch = state.input.charCodeAt(state.position);\n  if (ch === 91) {\n    terminator = 93;\n    isMapping = false;\n    _result = [];\n  } else if (ch === 123) {\n    terminator = 125;\n    isMapping = true;\n    _result = {};\n  } else {\n    return false;\n  }\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n  ch = state.input.charCodeAt(++state.position);\n  while (ch !== 0) {\n    skipSeparationSpace(state, true, nodeIndent);\n    ch = state.input.charCodeAt(state.position);\n    if (ch === terminator) {\n      state.position++;\n      state.tag = _tag;\n      state.anchor = _anchor;\n      state.kind = isMapping ? \"mapping\" : \"sequence\";\n      state.result = _result;\n      return true;\n    } else if (!readNext) {\n      throwError(state, \"missed comma between flow collection entries\");\n    } else if (ch === 44) {\n      throwError(state, \"expected the node content, but found ','\");\n    }\n    keyTag = keyNode = valueNode = null;\n    isPair = isExplicitPair = false;\n    if (ch === 63) {\n      following = state.input.charCodeAt(state.position + 1);\n      if (is_WS_OR_EOL(following)) {\n        isPair = isExplicitPair = true;\n        state.position++;\n        skipSeparationSpace(state, true, nodeIndent);\n      }\n    }\n    _line = state.line;\n    _lineStart = state.lineStart;\n    _pos = state.position;\n    composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n    keyTag = state.tag;\n    keyNode = state.result;\n    skipSeparationSpace(state, true, nodeIndent);\n    ch = state.input.charCodeAt(state.position);\n    if ((isExplicitPair || state.line === _line) && ch === 58) {\n      isPair = true;\n      ch = state.input.charCodeAt(++state.position);\n      skipSeparationSpace(state, true, nodeIndent);\n      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n      valueNode = state.result;\n    }\n    if (isMapping) {\n      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n    } else if (isPair) {\n      _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n    } else {\n      _result.push(keyNode);\n    }\n    skipSeparationSpace(state, true, nodeIndent);\n    ch = state.input.charCodeAt(state.position);\n    if (ch === 44) {\n      readNext = true;\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      readNext = false;\n    }\n  }\n  throwError(state, \"unexpected end of the stream within a flow collection\");\n}\n__name(readFlowCollection, \"readFlowCollection\");\nfunction readBlockScalar(state, nodeIndent) {\n  var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;\n  ch = state.input.charCodeAt(state.position);\n  if (ch === 124) {\n    folding = false;\n  } else if (ch === 62) {\n    folding = true;\n  } else {\n    return false;\n  }\n  state.kind = \"scalar\";\n  state.result = \"\";\n  while (ch !== 0) {\n    ch = state.input.charCodeAt(++state.position);\n    if (ch === 43 || ch === 45) {\n      if (CHOMPING_CLIP === chomping) {\n        chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n      } else {\n        throwError(state, \"repeat of a chomping mode identifier\");\n      }\n    } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n      if (tmp === 0) {\n        throwError(state, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n      } else if (!detectedIndent) {\n        textIndent = nodeIndent + tmp - 1;\n        detectedIndent = true;\n      } else {\n        throwError(state, \"repeat of an indentation width identifier\");\n      }\n    } else {\n      break;\n    }\n  }\n  if (is_WHITE_SPACE(ch)) {\n    do {\n      ch = state.input.charCodeAt(++state.position);\n    } while (is_WHITE_SPACE(ch));\n    if (ch === 35) {\n      do {\n        ch = state.input.charCodeAt(++state.position);\n      } while (!is_EOL(ch) && ch !== 0);\n    }\n  }\n  while (ch !== 0) {\n    readLineBreak(state);\n    state.lineIndent = 0;\n    ch = state.input.charCodeAt(state.position);\n    while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) {\n      state.lineIndent++;\n      ch = state.input.charCodeAt(++state.position);\n    }\n    if (!detectedIndent && state.lineIndent > textIndent) {\n      textIndent = state.lineIndent;\n    }\n    if (is_EOL(ch)) {\n      emptyLines++;\n      continue;\n    }\n    if (state.lineIndent < textIndent) {\n      if (chomping === CHOMPING_KEEP) {\n        state.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n      } else if (chomping === CHOMPING_CLIP) {\n        if (didReadContent) {\n          state.result += \"\\n\";\n        }\n      }\n      break;\n    }\n    if (folding) {\n      if (is_WHITE_SPACE(ch)) {\n        atMoreIndented = true;\n        state.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n      } else if (atMoreIndented) {\n        atMoreIndented = false;\n        state.result += common.repeat(\"\\n\", emptyLines + 1);\n      } else if (emptyLines === 0) {\n        if (didReadContent) {\n          state.result += \" \";\n        }\n      } else {\n        state.result += common.repeat(\"\\n\", emptyLines);\n      }\n    } else {\n      state.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n    }\n    didReadContent = true;\n    detectedIndent = true;\n    emptyLines = 0;\n    captureStart = state.position;\n    while (!is_EOL(ch) && ch !== 0) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n    captureSegment(state, captureStart, state.position, false);\n  }\n  return true;\n}\n__name(readBlockScalar, \"readBlockScalar\");\nfunction readBlockSequence(state, nodeIndent) {\n  var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch;\n  if (state.firstTabInLine !== -1) return false;\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n  ch = state.input.charCodeAt(state.position);\n  while (ch !== 0) {\n    if (state.firstTabInLine !== -1) {\n      state.position = state.firstTabInLine;\n      throwError(state, \"tab characters must not be used in indentation\");\n    }\n    if (ch !== 45) {\n      break;\n    }\n    following = state.input.charCodeAt(state.position + 1);\n    if (!is_WS_OR_EOL(following)) {\n      break;\n    }\n    detected = true;\n    state.position++;\n    if (skipSeparationSpace(state, true, -1)) {\n      if (state.lineIndent <= nodeIndent) {\n        _result.push(null);\n        ch = state.input.charCodeAt(state.position);\n        continue;\n      }\n    }\n    _line = state.line;\n    composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n    _result.push(state.result);\n    skipSeparationSpace(state, true, -1);\n    ch = state.input.charCodeAt(state.position);\n    if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {\n      throwError(state, \"bad indentation of a sequence entry\");\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = \"sequence\";\n    state.result = _result;\n    return true;\n  }\n  return false;\n}\n__name(readBlockSequence, \"readBlockSequence\");\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n  var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;\n  if (state.firstTabInLine !== -1) return false;\n  if (state.anchor !== null) {\n    state.anchorMap[state.anchor] = _result;\n  }\n  ch = state.input.charCodeAt(state.position);\n  while (ch !== 0) {\n    if (!atExplicitKey && state.firstTabInLine !== -1) {\n      state.position = state.firstTabInLine;\n      throwError(state, \"tab characters must not be used in indentation\");\n    }\n    following = state.input.charCodeAt(state.position + 1);\n    _line = state.line;\n    if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {\n      if (ch === 63) {\n        if (atExplicitKey) {\n          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n          keyTag = keyNode = valueNode = null;\n        }\n        detected = true;\n        atExplicitKey = true;\n        allowCompact = true;\n      } else if (atExplicitKey) {\n        atExplicitKey = false;\n        allowCompact = true;\n      } else {\n        throwError(state, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n      }\n      state.position += 1;\n      ch = following;\n    } else {\n      _keyLine = state.line;\n      _keyLineStart = state.lineStart;\n      _keyPos = state.position;\n      if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n        break;\n      }\n      if (state.line === _line) {\n        ch = state.input.charCodeAt(state.position);\n        while (is_WHITE_SPACE(ch)) {\n          ch = state.input.charCodeAt(++state.position);\n        }\n        if (ch === 58) {\n          ch = state.input.charCodeAt(++state.position);\n          if (!is_WS_OR_EOL(ch)) {\n            throwError(state, \"a whitespace character is expected after the key-value separator within a block mapping\");\n          }\n          if (atExplicitKey) {\n            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n            keyTag = keyNode = valueNode = null;\n          }\n          detected = true;\n          atExplicitKey = false;\n          allowCompact = false;\n          keyTag = state.tag;\n          keyNode = state.result;\n        } else if (detected) {\n          throwError(state, \"can not read an implicit mapping pair; a colon is missed\");\n        } else {\n          state.tag = _tag;\n          state.anchor = _anchor;\n          return true;\n        }\n      } else if (detected) {\n        throwError(state, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n      } else {\n        state.tag = _tag;\n        state.anchor = _anchor;\n        return true;\n      }\n    }\n    if (state.line === _line || state.lineIndent > nodeIndent) {\n      if (atExplicitKey) {\n        _keyLine = state.line;\n        _keyLineStart = state.lineStart;\n        _keyPos = state.position;\n      }\n      if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n        if (atExplicitKey) {\n          keyNode = state.result;\n        } else {\n          valueNode = state.result;\n        }\n      }\n      if (!atExplicitKey) {\n        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n        keyTag = keyNode = valueNode = null;\n      }\n      skipSeparationSpace(state, true, -1);\n      ch = state.input.charCodeAt(state.position);\n    }\n    if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {\n      throwError(state, \"bad indentation of a mapping entry\");\n    } else if (state.lineIndent < nodeIndent) {\n      break;\n    }\n  }\n  if (atExplicitKey) {\n    storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n  }\n  if (detected) {\n    state.tag = _tag;\n    state.anchor = _anchor;\n    state.kind = \"mapping\";\n    state.result = _result;\n  }\n  return detected;\n}\n__name(readBlockMapping, \"readBlockMapping\");\nfunction readTagProperty(state) {\n  var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;\n  ch = state.input.charCodeAt(state.position);\n  if (ch !== 33) return false;\n  if (state.tag !== null) {\n    throwError(state, \"duplication of a tag property\");\n  }\n  ch = state.input.charCodeAt(++state.position);\n  if (ch === 60) {\n    isVerbatim = true;\n    ch = state.input.charCodeAt(++state.position);\n  } else if (ch === 33) {\n    isNamed = true;\n    tagHandle = \"!!\";\n    ch = state.input.charCodeAt(++state.position);\n  } else {\n    tagHandle = \"!\";\n  }\n  _position = state.position;\n  if (isVerbatim) {\n    do {\n      ch = state.input.charCodeAt(++state.position);\n    } while (ch !== 0 && ch !== 62);\n    if (state.position < state.length) {\n      tagName = state.input.slice(_position, state.position);\n      ch = state.input.charCodeAt(++state.position);\n    } else {\n      throwError(state, \"unexpected end of the stream within a verbatim tag\");\n    }\n  } else {\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n      if (ch === 33) {\n        if (!isNamed) {\n          tagHandle = state.input.slice(_position - 1, state.position + 1);\n          if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n            throwError(state, \"named tag handle cannot contain such characters\");\n          }\n          isNamed = true;\n          _position = state.position + 1;\n        } else {\n          throwError(state, \"tag suffix cannot contain exclamation marks\");\n        }\n      }\n      ch = state.input.charCodeAt(++state.position);\n    }\n    tagName = state.input.slice(_position, state.position);\n    if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n      throwError(state, \"tag suffix cannot contain flow indicator characters\");\n    }\n  }\n  if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n    throwError(state, \"tag name cannot contain such characters: \" + tagName);\n  }\n  try {\n    tagName = decodeURIComponent(tagName);\n  } catch (err) {\n    throwError(state, \"tag name is malformed: \" + tagName);\n  }\n  if (isVerbatim) {\n    state.tag = tagName;\n  } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {\n    state.tag = state.tagMap[tagHandle] + tagName;\n  } else if (tagHandle === \"!\") {\n    state.tag = \"!\" + tagName;\n  } else if (tagHandle === \"!!\") {\n    state.tag = \"tag:yaml.org,2002:\" + tagName;\n  } else {\n    throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n  }\n  return true;\n}\n__name(readTagProperty, \"readTagProperty\");\nfunction readAnchorProperty(state) {\n  var _position, ch;\n  ch = state.input.charCodeAt(state.position);\n  if (ch !== 38) return false;\n  if (state.anchor !== null) {\n    throwError(state, \"duplication of an anchor property\");\n  }\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n  if (state.position === _position) {\n    throwError(state, \"name of an anchor node must contain at least one character\");\n  }\n  state.anchor = state.input.slice(_position, state.position);\n  return true;\n}\n__name(readAnchorProperty, \"readAnchorProperty\");\nfunction readAlias(state) {\n  var _position, alias, ch;\n  ch = state.input.charCodeAt(state.position);\n  if (ch !== 42) return false;\n  ch = state.input.charCodeAt(++state.position);\n  _position = state.position;\n  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n    ch = state.input.charCodeAt(++state.position);\n  }\n  if (state.position === _position) {\n    throwError(state, \"name of an alias node must contain at least one character\");\n  }\n  alias = state.input.slice(_position, state.position);\n  if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {\n    throwError(state, 'unidentified alias \"' + alias + '\"');\n  }\n  state.result = state.anchorMap[alias];\n  skipSeparationSpace(state, true, -1);\n  return true;\n}\n__name(readAlias, \"readAlias\");\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n  var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent;\n  if (state.listener !== null) {\n    state.listener(\"open\", state);\n  }\n  state.tag = null;\n  state.anchor = null;\n  state.kind = null;\n  state.result = null;\n  allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n  if (allowToSeek) {\n    if (skipSeparationSpace(state, true, -1)) {\n      atNewLine = true;\n      if (state.lineIndent > parentIndent) {\n        indentStatus = 1;\n      } else if (state.lineIndent === parentIndent) {\n        indentStatus = 0;\n      } else if (state.lineIndent < parentIndent) {\n        indentStatus = -1;\n      }\n    }\n  }\n  if (indentStatus === 1) {\n    while (readTagProperty(state) || readAnchorProperty(state)) {\n      if (skipSeparationSpace(state, true, -1)) {\n        atNewLine = true;\n        allowBlockCollections = allowBlockStyles;\n        if (state.lineIndent > parentIndent) {\n          indentStatus = 1;\n        } else if (state.lineIndent === parentIndent) {\n          indentStatus = 0;\n        } else if (state.lineIndent < parentIndent) {\n          indentStatus = -1;\n        }\n      } else {\n        allowBlockCollections = false;\n      }\n    }\n  }\n  if (allowBlockCollections) {\n    allowBlockCollections = atNewLine || allowCompact;\n  }\n  if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n    if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n      flowIndent = parentIndent;\n    } else {\n      flowIndent = parentIndent + 1;\n    }\n    blockIndent = state.position - state.lineStart;\n    if (indentStatus === 1) {\n      if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {\n        hasContent = true;\n      } else {\n        if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {\n          hasContent = true;\n        } else if (readAlias(state)) {\n          hasContent = true;\n          if (state.tag !== null || state.anchor !== null) {\n            throwError(state, \"alias node should not have any properties\");\n          }\n        } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n          hasContent = true;\n          if (state.tag === null) {\n            state.tag = \"?\";\n          }\n        }\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n      }\n    } else if (indentStatus === 0) {\n      hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n    }\n  }\n  if (state.tag === null) {\n    if (state.anchor !== null) {\n      state.anchorMap[state.anchor] = state.result;\n    }\n  } else if (state.tag === \"?\") {\n    if (state.result !== null && state.kind !== \"scalar\") {\n      throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n    }\n    for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n      type2 = state.implicitTypes[typeIndex];\n      if (type2.resolve(state.result)) {\n        state.result = type2.construct(state.result);\n        state.tag = type2.tag;\n        if (state.anchor !== null) {\n          state.anchorMap[state.anchor] = state.result;\n        }\n        break;\n      }\n    }\n  } else if (state.tag !== \"!\") {\n    if (_hasOwnProperty$1.call(state.typeMap[state.kind || \"fallback\"], state.tag)) {\n      type2 = state.typeMap[state.kind || \"fallback\"][state.tag];\n    } else {\n      type2 = null;\n      typeList = state.typeMap.multi[state.kind || \"fallback\"];\n      for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n        if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n          type2 = typeList[typeIndex];\n          break;\n        }\n      }\n    }\n    if (!type2) {\n      throwError(state, \"unknown tag !<\" + state.tag + \">\");\n    }\n    if (state.result !== null && type2.kind !== state.kind) {\n      throwError(state, \"unacceptable node kind for !<\" + state.tag + '> tag; it should be \"' + type2.kind + '\", not \"' + state.kind + '\"');\n    }\n    if (!type2.resolve(state.result, state.tag)) {\n      throwError(state, \"cannot resolve a node with !<\" + state.tag + \"> explicit tag\");\n    } else {\n      state.result = type2.construct(state.result, state.tag);\n      if (state.anchor !== null) {\n        state.anchorMap[state.anchor] = state.result;\n      }\n    }\n  }\n  if (state.listener !== null) {\n    state.listener(\"close\", state);\n  }\n  return state.tag !== null || state.anchor !== null || hasContent;\n}\n__name(composeNode, \"composeNode\");\nfunction readDocument(state) {\n  var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;\n  state.version = null;\n  state.checkLineBreaks = state.legacy;\n  state.tagMap = /* @__PURE__ */ Object.create(null);\n  state.anchorMap = /* @__PURE__ */ Object.create(null);\n  while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n    skipSeparationSpace(state, true, -1);\n    ch = state.input.charCodeAt(state.position);\n    if (state.lineIndent > 0 || ch !== 37) {\n      break;\n    }\n    hasDirectives = true;\n    ch = state.input.charCodeAt(++state.position);\n    _position = state.position;\n    while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n      ch = state.input.charCodeAt(++state.position);\n    }\n    directiveName = state.input.slice(_position, state.position);\n    directiveArgs = [];\n    if (directiveName.length < 1) {\n      throwError(state, \"directive name must not be less than one character in length\");\n    }\n    while (ch !== 0) {\n      while (is_WHITE_SPACE(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n      if (ch === 35) {\n        do {\n          ch = state.input.charCodeAt(++state.position);\n        } while (ch !== 0 && !is_EOL(ch));\n        break;\n      }\n      if (is_EOL(ch)) break;\n      _position = state.position;\n      while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n        ch = state.input.charCodeAt(++state.position);\n      }\n      directiveArgs.push(state.input.slice(_position, state.position));\n    }\n    if (ch !== 0) readLineBreak(state);\n    if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n      directiveHandlers[directiveName](state, directiveName, directiveArgs);\n    } else {\n      throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n    }\n  }\n  skipSeparationSpace(state, true, -1);\n  if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) {\n    state.position += 3;\n    skipSeparationSpace(state, true, -1);\n  } else if (hasDirectives) {\n    throwError(state, \"directives end mark is expected\");\n  }\n  composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n  skipSeparationSpace(state, true, -1);\n  if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n    throwWarning(state, \"non-ASCII line breaks are interpreted as content\");\n  }\n  state.documents.push(state.result);\n  if (state.position === state.lineStart && testDocumentSeparator(state)) {\n    if (state.input.charCodeAt(state.position) === 46) {\n      state.position += 3;\n      skipSeparationSpace(state, true, -1);\n    }\n    return;\n  }\n  if (state.position < state.length - 1) {\n    throwError(state, \"end of the stream or a document separator is expected\");\n  } else {\n    return;\n  }\n}\n__name(readDocument, \"readDocument\");\nfunction loadDocuments(input, options) {\n  input = String(input);\n  options = options || {};\n  if (input.length !== 0) {\n    if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {\n      input += \"\\n\";\n    }\n    if (input.charCodeAt(0) === 65279) {\n      input = input.slice(1);\n    }\n  }\n  var state = new State$1(input, options);\n  var nullpos = input.indexOf(\"\\0\");\n  if (nullpos !== -1) {\n    state.position = nullpos;\n    throwError(state, \"null byte is not allowed in input\");\n  }\n  state.input += \"\\0\";\n  while (state.input.charCodeAt(state.position) === 32) {\n    state.lineIndent += 1;\n    state.position += 1;\n  }\n  while (state.position < state.length - 1) {\n    readDocument(state);\n  }\n  return state.documents;\n}\n__name(loadDocuments, \"loadDocuments\");\nfunction loadAll$1(input, iterator, options) {\n  if (iterator !== null && typeof iterator === \"object\" && typeof options === \"undefined\") {\n    options = iterator;\n    iterator = null;\n  }\n  var documents = loadDocuments(input, options);\n  if (typeof iterator !== \"function\") {\n    return documents;\n  }\n  for (var index = 0, length = documents.length; index < length; index += 1) {\n    iterator(documents[index]);\n  }\n}\n__name(loadAll$1, \"loadAll$1\");\nfunction load$1(input, options) {\n  var documents = loadDocuments(input, options);\n  if (documents.length === 0) {\n    return void 0;\n  } else if (documents.length === 1) {\n    return documents[0];\n  }\n  throw new exception(\"expected a single document in the stream, but found more\");\n}\n__name(load$1, \"load$1\");\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\nvar loader = {\n  loadAll: loadAll_1,\n  load: load_1\n};\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar CHAR_BOM = 65279;\nvar CHAR_TAB = 9;\nvar CHAR_LINE_FEED = 10;\nvar CHAR_CARRIAGE_RETURN = 13;\nvar CHAR_SPACE = 32;\nvar CHAR_EXCLAMATION = 33;\nvar CHAR_DOUBLE_QUOTE = 34;\nvar CHAR_SHARP = 35;\nvar CHAR_PERCENT = 37;\nvar CHAR_AMPERSAND = 38;\nvar CHAR_SINGLE_QUOTE = 39;\nvar CHAR_ASTERISK = 42;\nvar CHAR_COMMA = 44;\nvar CHAR_MINUS = 45;\nvar CHAR_COLON = 58;\nvar CHAR_EQUALS = 61;\nvar CHAR_GREATER_THAN = 62;\nvar CHAR_QUESTION = 63;\nvar CHAR_COMMERCIAL_AT = 64;\nvar CHAR_LEFT_SQUARE_BRACKET = 91;\nvar CHAR_RIGHT_SQUARE_BRACKET = 93;\nvar CHAR_GRAVE_ACCENT = 96;\nvar CHAR_LEFT_CURLY_BRACKET = 123;\nvar CHAR_VERTICAL_LINE = 124;\nvar CHAR_RIGHT_CURLY_BRACKET = 125;\nvar ESCAPE_SEQUENCES = {};\nESCAPE_SEQUENCES[0] = \"\\\\0\";\nESCAPE_SEQUENCES[7] = \"\\\\a\";\nESCAPE_SEQUENCES[8] = \"\\\\b\";\nESCAPE_SEQUENCES[9] = \"\\\\t\";\nESCAPE_SEQUENCES[10] = \"\\\\n\";\nESCAPE_SEQUENCES[11] = \"\\\\v\";\nESCAPE_SEQUENCES[12] = \"\\\\f\";\nESCAPE_SEQUENCES[13] = \"\\\\r\";\nESCAPE_SEQUENCES[27] = \"\\\\e\";\nESCAPE_SEQUENCES[34] = '\\\\\"';\nESCAPE_SEQUENCES[92] = \"\\\\\\\\\";\nESCAPE_SEQUENCES[133] = \"\\\\N\";\nESCAPE_SEQUENCES[160] = \"\\\\_\";\nESCAPE_SEQUENCES[8232] = \"\\\\L\";\nESCAPE_SEQUENCES[8233] = \"\\\\P\";\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n  \"y\",\n  \"Y\",\n  \"yes\",\n  \"Yes\",\n  \"YES\",\n  \"on\",\n  \"On\",\n  \"ON\",\n  \"n\",\n  \"N\",\n  \"no\",\n  \"No\",\n  \"NO\",\n  \"off\",\n  \"Off\",\n  \"OFF\"\n];\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\nfunction compileStyleMap(schema2, map2) {\n  var result, keys, index, length, tag, style, type2;\n  if (map2 === null) return {};\n  result = {};\n  keys = Object.keys(map2);\n  for (index = 0, length = keys.length; index < length; index += 1) {\n    tag = keys[index];\n    style = String(map2[tag]);\n    if (tag.slice(0, 2) === \"!!\") {\n      tag = \"tag:yaml.org,2002:\" + tag.slice(2);\n    }\n    type2 = schema2.compiledTypeMap[\"fallback\"][tag];\n    if (type2 && _hasOwnProperty.call(type2.styleAliases, style)) {\n      style = type2.styleAliases[style];\n    }\n    result[tag] = style;\n  }\n  return result;\n}\n__name(compileStyleMap, \"compileStyleMap\");\nfunction encodeHex(character) {\n  var string, handle, length;\n  string = character.toString(16).toUpperCase();\n  if (character <= 255) {\n    handle = \"x\";\n    length = 2;\n  } else if (character <= 65535) {\n    handle = \"u\";\n    length = 4;\n  } else if (character <= 4294967295) {\n    handle = \"U\";\n    length = 8;\n  } else {\n    throw new exception(\"code point within a string may not be greater than 0xFFFFFFFF\");\n  }\n  return \"\\\\\" + handle + common.repeat(\"0\", length - string.length) + string;\n}\n__name(encodeHex, \"encodeHex\");\nvar QUOTING_TYPE_SINGLE = 1;\nvar QUOTING_TYPE_DOUBLE = 2;\nfunction State(options) {\n  this.schema = options[\"schema\"] || _default;\n  this.indent = Math.max(1, options[\"indent\"] || 2);\n  this.noArrayIndent = options[\"noArrayIndent\"] || false;\n  this.skipInvalid = options[\"skipInvalid\"] || false;\n  this.flowLevel = common.isNothing(options[\"flowLevel\"]) ? -1 : options[\"flowLevel\"];\n  this.styleMap = compileStyleMap(this.schema, options[\"styles\"] || null);\n  this.sortKeys = options[\"sortKeys\"] || false;\n  this.lineWidth = options[\"lineWidth\"] || 80;\n  this.noRefs = options[\"noRefs\"] || false;\n  this.noCompatMode = options[\"noCompatMode\"] || false;\n  this.condenseFlow = options[\"condenseFlow\"] || false;\n  this.quotingType = options[\"quotingType\"] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n  this.forceQuotes = options[\"forceQuotes\"] || false;\n  this.replacer = typeof options[\"replacer\"] === \"function\" ? options[\"replacer\"] : null;\n  this.implicitTypes = this.schema.compiledImplicit;\n  this.explicitTypes = this.schema.compiledExplicit;\n  this.tag = null;\n  this.result = \"\";\n  this.duplicates = [];\n  this.usedDuplicates = null;\n}\n__name(State, \"State\");\nfunction indentString(string, spaces) {\n  var ind = common.repeat(\" \", spaces), position = 0, next = -1, result = \"\", line, length = string.length;\n  while (position < length) {\n    next = string.indexOf(\"\\n\", position);\n    if (next === -1) {\n      line = string.slice(position);\n      position = length;\n    } else {\n      line = string.slice(position, next + 1);\n      position = next + 1;\n    }\n    if (line.length && line !== \"\\n\") result += ind;\n    result += line;\n  }\n  return result;\n}\n__name(indentString, \"indentString\");\nfunction generateNextLine(state, level) {\n  return \"\\n\" + common.repeat(\" \", state.indent * level);\n}\n__name(generateNextLine, \"generateNextLine\");\nfunction testImplicitResolving(state, str2) {\n  var index, length, type2;\n  for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n    type2 = state.implicitTypes[index];\n    if (type2.resolve(str2)) {\n      return true;\n    }\n  }\n  return false;\n}\n__name(testImplicitResolving, \"testImplicitResolving\");\nfunction isWhitespace(c) {\n  return c === CHAR_SPACE || c === CHAR_TAB;\n}\n__name(isWhitespace, \"isWhitespace\");\nfunction isPrintable(c) {\n  return 32 <= c && c <= 126 || 161 <= c && c <= 55295 && c !== 8232 && c !== 8233 || 57344 <= c && c <= 65533 && c !== CHAR_BOM || 65536 <= c && c <= 1114111;\n}\n__name(isPrintable, \"isPrintable\");\nfunction isNsCharOrWhitespace(c) {\n  return isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED;\n}\n__name(isNsCharOrWhitespace, \"isNsCharOrWhitespace\");\nfunction isPlainSafe(c, prev, inblock) {\n  var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n  var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n  return (\n    // ns-plain-safe\n    (inblock ? (\n      // c = flow-in\n      cIsNsCharOrWhitespace\n    ) : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar\n  );\n}\n__name(isPlainSafe, \"isPlainSafe\");\nfunction isPlainSafeFirst(c) {\n  return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;\n}\n__name(isPlainSafeFirst, \"isPlainSafeFirst\");\nfunction isPlainSafeLast(c) {\n  return !isWhitespace(c) && c !== CHAR_COLON;\n}\n__name(isPlainSafeLast, \"isPlainSafeLast\");\nfunction codePointAt(string, pos) {\n  var first = string.charCodeAt(pos), second;\n  if (first >= 55296 && first <= 56319 && pos + 1 < string.length) {\n    second = string.charCodeAt(pos + 1);\n    if (second >= 56320 && second <= 57343) {\n      return (first - 55296) * 1024 + second - 56320 + 65536;\n    }\n  }\n  return first;\n}\n__name(codePointAt, \"codePointAt\");\nfunction needIndentIndicator(string) {\n  var leadingSpaceRe = /^\\n* /;\n  return leadingSpaceRe.test(string);\n}\n__name(needIndentIndicator, \"needIndentIndicator\");\nvar STYLE_PLAIN = 1;\nvar STYLE_SINGLE = 2;\nvar STYLE_LITERAL = 3;\nvar STYLE_FOLDED = 4;\nvar STYLE_DOUBLE = 5;\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) {\n  var i;\n  var char = 0;\n  var prevChar = null;\n  var hasLineBreak = false;\n  var hasFoldableLine = false;\n  var shouldTrackWidth = lineWidth !== -1;\n  var previousLineBreak = -1;\n  var plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1));\n  if (singleLineOnly || forceQuotes) {\n    for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n      char = codePointAt(string, i);\n      if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      plain = plain && isPlainSafe(char, prevChar, inblock);\n      prevChar = char;\n    }\n  } else {\n    for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n      char = codePointAt(string, i);\n      if (char === CHAR_LINE_FEED) {\n        hasLineBreak = true;\n        if (shouldTrackWidth) {\n          hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented.\n          i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \";\n          previousLineBreak = i;\n        }\n      } else if (!isPrintable(char)) {\n        return STYLE_DOUBLE;\n      }\n      plain = plain && isPlainSafe(char, prevChar, inblock);\n      prevChar = char;\n    }\n    hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== \" \");\n  }\n  if (!hasLineBreak && !hasFoldableLine) {\n    if (plain && !forceQuotes && !testAmbiguousType(string)) {\n      return STYLE_PLAIN;\n    }\n    return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n  }\n  if (indentPerLevel > 9 && needIndentIndicator(string)) {\n    return STYLE_DOUBLE;\n  }\n  if (!forceQuotes) {\n    return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n  }\n  return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n__name(chooseScalarStyle, \"chooseScalarStyle\");\nfunction writeScalar(state, string, level, iskey, inblock) {\n  state.dump = function() {\n    if (string.length === 0) {\n      return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n    }\n    if (!state.noCompatMode) {\n      if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n        return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"' + string + '\"' : \"'\" + string + \"'\";\n      }\n    }\n    var indent = state.indent * Math.max(1, level);\n    var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n    var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel;\n    function testAmbiguity(string2) {\n      return testImplicitResolving(state, string2);\n    }\n    __name(testAmbiguity, \"testAmbiguity\");\n    switch (chooseScalarStyle(\n      string,\n      singleLineOnly,\n      state.indent,\n      lineWidth,\n      testAmbiguity,\n      state.quotingType,\n      state.forceQuotes && !iskey,\n      inblock\n    )) {\n      case STYLE_PLAIN:\n        return string;\n      case STYLE_SINGLE:\n        return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n      case STYLE_LITERAL:\n        return \"|\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent));\n      case STYLE_FOLDED:\n        return \">\" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n      case STYLE_DOUBLE:\n        return '\"' + escapeString(string) + '\"';\n      default:\n        throw new exception(\"impossible error: invalid scalar style\");\n    }\n  }();\n}\n__name(writeScalar, \"writeScalar\");\nfunction blockHeader(string, indentPerLevel) {\n  var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : \"\";\n  var clip = string[string.length - 1] === \"\\n\";\n  var keep = clip && (string[string.length - 2] === \"\\n\" || string === \"\\n\");\n  var chomp = keep ? \"+\" : clip ? \"\" : \"-\";\n  return indentIndicator + chomp + \"\\n\";\n}\n__name(blockHeader, \"blockHeader\");\nfunction dropEndingNewline(string) {\n  return string[string.length - 1] === \"\\n\" ? string.slice(0, -1) : string;\n}\n__name(dropEndingNewline, \"dropEndingNewline\");\nfunction foldString(string, width) {\n  var lineRe = /(\\n+)([^\\n]*)/g;\n  var result = function() {\n    var nextLF = string.indexOf(\"\\n\");\n    nextLF = nextLF !== -1 ? nextLF : string.length;\n    lineRe.lastIndex = nextLF;\n    return foldLine(string.slice(0, nextLF), width);\n  }();\n  var prevMoreIndented = string[0] === \"\\n\" || string[0] === \" \";\n  var moreIndented;\n  var match;\n  while (match = lineRe.exec(string)) {\n    var prefix = match[1], line = match[2];\n    moreIndented = line[0] === \" \";\n    result += prefix + (!prevMoreIndented && !moreIndented && line !== \"\" ? \"\\n\" : \"\") + foldLine(line, width);\n    prevMoreIndented = moreIndented;\n  }\n  return result;\n}\n__name(foldString, \"foldString\");\nfunction foldLine(line, width) {\n  if (line === \"\" || line[0] === \" \") return line;\n  var breakRe = / [^ ]/g;\n  var match;\n  var start = 0, end, curr = 0, next = 0;\n  var result = \"\";\n  while (match = breakRe.exec(line)) {\n    next = match.index;\n    if (next - start > width) {\n      end = curr > start ? curr : next;\n      result += \"\\n\" + line.slice(start, end);\n      start = end + 1;\n    }\n    curr = next;\n  }\n  result += \"\\n\";\n  if (line.length - start > width && curr > start) {\n    result += line.slice(start, curr) + \"\\n\" + line.slice(curr + 1);\n  } else {\n    result += line.slice(start);\n  }\n  return result.slice(1);\n}\n__name(foldLine, \"foldLine\");\nfunction escapeString(string) {\n  var result = \"\";\n  var char = 0;\n  var escapeSeq;\n  for (var i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {\n    char = codePointAt(string, i);\n    escapeSeq = ESCAPE_SEQUENCES[char];\n    if (!escapeSeq && isPrintable(char)) {\n      result += string[i];\n      if (char >= 65536) result += string[i + 1];\n    } else {\n      result += escapeSeq || encodeHex(char);\n    }\n  }\n  return result;\n}\n__name(escapeString, \"escapeString\");\nfunction writeFlowSequence(state, level, object) {\n  var _result = \"\", _tag = state.tag, index, length, value;\n  for (index = 0, length = object.length; index < length; index += 1) {\n    value = object[index];\n    if (state.replacer) {\n      value = state.replacer.call(object, String(index), value);\n    }\n    if (writeNode(state, level, value, false, false) || typeof value === \"undefined\" && writeNode(state, level, null, false, false)) {\n      if (_result !== \"\") _result += \",\" + (!state.condenseFlow ? \" \" : \"\");\n      _result += state.dump;\n    }\n  }\n  state.tag = _tag;\n  state.dump = \"[\" + _result + \"]\";\n}\n__name(writeFlowSequence, \"writeFlowSequence\");\nfunction writeBlockSequence(state, level, object, compact) {\n  var _result = \"\", _tag = state.tag, index, length, value;\n  for (index = 0, length = object.length; index < length; index += 1) {\n    value = object[index];\n    if (state.replacer) {\n      value = state.replacer.call(object, String(index), value);\n    }\n    if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === \"undefined\" && writeNode(state, level + 1, null, true, true, false, true)) {\n      if (!compact || _result !== \"\") {\n        _result += generateNextLine(state, level);\n      }\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        _result += \"-\";\n      } else {\n        _result += \"- \";\n      }\n      _result += state.dump;\n    }\n  }\n  state.tag = _tag;\n  state.dump = _result || \"[]\";\n}\n__name(writeBlockSequence, \"writeBlockSequence\");\nfunction writeFlowMapping(state, level, object) {\n  var _result = \"\", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, pairBuffer;\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n    pairBuffer = \"\";\n    if (_result !== \"\") pairBuffer += \", \";\n    if (state.condenseFlow) pairBuffer += '\"';\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n    if (state.replacer) {\n      objectValue = state.replacer.call(object, objectKey, objectValue);\n    }\n    if (!writeNode(state, level, objectKey, false, false)) {\n      continue;\n    }\n    if (state.dump.length > 1024) pairBuffer += \"? \";\n    pairBuffer += state.dump + (state.condenseFlow ? '\"' : \"\") + \":\" + (state.condenseFlow ? \"\" : \" \");\n    if (!writeNode(state, level, objectValue, false, false)) {\n      continue;\n    }\n    pairBuffer += state.dump;\n    _result += pairBuffer;\n  }\n  state.tag = _tag;\n  state.dump = \"{\" + _result + \"}\";\n}\n__name(writeFlowMapping, \"writeFlowMapping\");\nfunction writeBlockMapping(state, level, object, compact) {\n  var _result = \"\", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, pairBuffer;\n  if (state.sortKeys === true) {\n    objectKeyList.sort();\n  } else if (typeof state.sortKeys === \"function\") {\n    objectKeyList.sort(state.sortKeys);\n  } else if (state.sortKeys) {\n    throw new exception(\"sortKeys must be a boolean or a function\");\n  }\n  for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n    pairBuffer = \"\";\n    if (!compact || _result !== \"\") {\n      pairBuffer += generateNextLine(state, level);\n    }\n    objectKey = objectKeyList[index];\n    objectValue = object[objectKey];\n    if (state.replacer) {\n      objectValue = state.replacer.call(object, objectKey, objectValue);\n    }\n    if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n      continue;\n    }\n    explicitPair = state.tag !== null && state.tag !== \"?\" || state.dump && state.dump.length > 1024;\n    if (explicitPair) {\n      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n        pairBuffer += \"?\";\n      } else {\n        pairBuffer += \"? \";\n      }\n    }\n    pairBuffer += state.dump;\n    if (explicitPair) {\n      pairBuffer += generateNextLine(state, level);\n    }\n    if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n      continue;\n    }\n    if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n      pairBuffer += \":\";\n    } else {\n      pairBuffer += \": \";\n    }\n    pairBuffer += state.dump;\n    _result += pairBuffer;\n  }\n  state.tag = _tag;\n  state.dump = _result || \"{}\";\n}\n__name(writeBlockMapping, \"writeBlockMapping\");\nfunction detectType(state, object, explicit) {\n  var _result, typeList, index, length, type2, style;\n  typeList = explicit ? state.explicitTypes : state.implicitTypes;\n  for (index = 0, length = typeList.length; index < length; index += 1) {\n    type2 = typeList[index];\n    if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof object === \"object\" && object instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object))) {\n      if (explicit) {\n        if (type2.multi && type2.representName) {\n          state.tag = type2.representName(object);\n        } else {\n          state.tag = type2.tag;\n        }\n      } else {\n        state.tag = \"?\";\n      }\n      if (type2.represent) {\n        style = state.styleMap[type2.tag] || type2.defaultStyle;\n        if (_toString.call(type2.represent) === \"[object Function]\") {\n          _result = type2.represent(object, style);\n        } else if (_hasOwnProperty.call(type2.represent, style)) {\n          _result = type2.represent[style](object, style);\n        } else {\n          throw new exception(\"!<\" + type2.tag + '> tag resolver accepts not \"' + style + '\" style');\n        }\n        state.dump = _result;\n      }\n      return true;\n    }\n  }\n  return false;\n}\n__name(detectType, \"detectType\");\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n  state.tag = null;\n  state.dump = object;\n  if (!detectType(state, object, false)) {\n    detectType(state, object, true);\n  }\n  var type2 = _toString.call(state.dump);\n  var inblock = block;\n  var tagStr;\n  if (block) {\n    block = state.flowLevel < 0 || state.flowLevel > level;\n  }\n  var objectOrArray = type2 === \"[object Object]\" || type2 === \"[object Array]\", duplicateIndex, duplicate;\n  if (objectOrArray) {\n    duplicateIndex = state.duplicates.indexOf(object);\n    duplicate = duplicateIndex !== -1;\n  }\n  if (state.tag !== null && state.tag !== \"?\" || duplicate || state.indent !== 2 && level > 0) {\n    compact = false;\n  }\n  if (duplicate && state.usedDuplicates[duplicateIndex]) {\n    state.dump = \"*ref_\" + duplicateIndex;\n  } else {\n    if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n      state.usedDuplicates[duplicateIndex] = true;\n    }\n    if (type2 === \"[object Object]\") {\n      if (block && Object.keys(state.dump).length !== 0) {\n        writeBlockMapping(state, level, state.dump, compact);\n        if (duplicate) {\n          state.dump = \"&ref_\" + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowMapping(state, level, state.dump);\n        if (duplicate) {\n          state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n        }\n      }\n    } else if (type2 === \"[object Array]\") {\n      if (block && state.dump.length !== 0) {\n        if (state.noArrayIndent && !isblockseq && level > 0) {\n          writeBlockSequence(state, level - 1, state.dump, compact);\n        } else {\n          writeBlockSequence(state, level, state.dump, compact);\n        }\n        if (duplicate) {\n          state.dump = \"&ref_\" + duplicateIndex + state.dump;\n        }\n      } else {\n        writeFlowSequence(state, level, state.dump);\n        if (duplicate) {\n          state.dump = \"&ref_\" + duplicateIndex + \" \" + state.dump;\n        }\n      }\n    } else if (type2 === \"[object String]\") {\n      if (state.tag !== \"?\") {\n        writeScalar(state, state.dump, level, iskey, inblock);\n      }\n    } else if (type2 === \"[object Undefined]\") {\n      return false;\n    } else {\n      if (state.skipInvalid) return false;\n      throw new exception(\"unacceptable kind of an object to dump \" + type2);\n    }\n    if (state.tag !== null && state.tag !== \"?\") {\n      tagStr = encodeURI(\n        state.tag[0] === \"!\" ? state.tag.slice(1) : state.tag\n      ).replace(/!/g, \"%21\");\n      if (state.tag[0] === \"!\") {\n        tagStr = \"!\" + tagStr;\n      } else if (tagStr.slice(0, 18) === \"tag:yaml.org,2002:\") {\n        tagStr = \"!!\" + tagStr.slice(18);\n      } else {\n        tagStr = \"!<\" + tagStr + \">\";\n      }\n      state.dump = tagStr + \" \" + state.dump;\n    }\n  }\n  return true;\n}\n__name(writeNode, \"writeNode\");\nfunction getDuplicateReferences(object, state) {\n  var objects = [], duplicatesIndexes = [], index, length;\n  inspectNode(object, objects, duplicatesIndexes);\n  for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n    state.duplicates.push(objects[duplicatesIndexes[index]]);\n  }\n  state.usedDuplicates = new Array(length);\n}\n__name(getDuplicateReferences, \"getDuplicateReferences\");\nfunction inspectNode(object, objects, duplicatesIndexes) {\n  var objectKeyList, index, length;\n  if (object !== null && typeof object === \"object\") {\n    index = objects.indexOf(object);\n    if (index !== -1) {\n      if (duplicatesIndexes.indexOf(index) === -1) {\n        duplicatesIndexes.push(index);\n      }\n    } else {\n      objects.push(object);\n      if (Array.isArray(object)) {\n        for (index = 0, length = object.length; index < length; index += 1) {\n          inspectNode(object[index], objects, duplicatesIndexes);\n        }\n      } else {\n        objectKeyList = Object.keys(object);\n        for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n          inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n        }\n      }\n    }\n  }\n}\n__name(inspectNode, \"inspectNode\");\nfunction dump$1(input, options) {\n  options = options || {};\n  var state = new State(options);\n  if (!state.noRefs) getDuplicateReferences(input, state);\n  var value = input;\n  if (state.replacer) {\n    value = state.replacer.call({ \"\": value }, \"\", value);\n  }\n  if (writeNode(state, 0, value, true, true)) return state.dump + \"\\n\";\n  return \"\";\n}\n__name(dump$1, \"dump$1\");\nvar dump_1 = dump$1;\nvar dumper = {\n  dump: dump_1\n};\nfunction renamed(from, to) {\n  return function() {\n    throw new Error(\"Function yaml.\" + from + \" is removed in js-yaml 4. Use yaml.\" + to + \" instead, which is now safe by default.\");\n  };\n}\n__name(renamed, \"renamed\");\nvar JSON_SCHEMA = json;\nvar load = loader.load;\nvar loadAll = loader.loadAll;\nvar dump = dumper.dump;\nvar safeLoad = renamed(\"safeLoad\", \"load\");\nvar safeLoadAll = renamed(\"safeLoadAll\", \"loadAll\");\nvar safeDump = renamed(\"safeDump\", \"dump\");\n\nexport {\n  JSON_SCHEMA,\n  load\n};\n/*! Bundled license information:\n\njs-yaml/dist/js-yaml.mjs:\n  (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *)\n*/\n","import {\n  __name,\n  getConfig2 as getConfig\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/rendering-util/selectSvgElement.ts\nimport { select } from \"d3\";\nvar selectSvgElement = /* @__PURE__ */ __name((id) => {\n  const { securityLevel } = getConfig();\n  let root = select(\"body\");\n  if (securityLevel === \"sandbox\") {\n    const sandboxElement = select(`#i${id}`);\n    const doc = sandboxElement.node()?.contentDocument ?? document;\n    root = select(doc.body);\n  }\n  const svg = root.select(`#${id}`);\n  return svg;\n}, \"selectSvgElement\");\n\nexport {\n  selectSvgElement\n};\n","import {\n  decodeEntities\n} from \"./chunk-O4NI6UNU.mjs\";\nimport {\n  __name,\n  common_default,\n  getConfig2 as getConfig,\n  hasKatex,\n  log,\n  renderKatex\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/rendering-util/createText.ts\nimport { select } from \"d3\";\n\n// src/rendering-util/handle-markdown-text.ts\nimport { marked } from \"marked\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown, { markdownAutoWrap }) {\n  const withoutBR = markdown.replace(/<br\\/>/g, \"\\n\");\n  const withoutMultipleNewlines = withoutBR.replace(/\\n{2,}/g, \"\\n\");\n  const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n  if (markdownAutoWrap === false) {\n    return withoutExtraSpaces.replace(/ /g, \"&nbsp;\");\n  }\n  return withoutExtraSpaces;\n}\n__name(preprocessMarkdown, \"preprocessMarkdown\");\nfunction markdownToLines(markdown, config = {}) {\n  const preprocessedMarkdown = preprocessMarkdown(markdown, config);\n  const nodes = marked.lexer(preprocessedMarkdown);\n  const lines = [[]];\n  let currentLine = 0;\n  function processNode(node, parentType = \"normal\") {\n    if (node.type === \"text\") {\n      const textLines = node.text.split(\"\\n\");\n      textLines.forEach((textLine, index) => {\n        if (index !== 0) {\n          currentLine++;\n          lines.push([]);\n        }\n        textLine.split(\" \").forEach((word) => {\n          word = word.replace(/&#39;/g, `'`);\n          if (word) {\n            lines[currentLine].push({ content: word, type: parentType });\n          }\n        });\n      });\n    } else if (node.type === \"strong\" || node.type === \"em\") {\n      node.tokens.forEach((contentNode) => {\n        processNode(contentNode, node.type);\n      });\n    } else if (node.type === \"html\") {\n      lines[currentLine].push({ content: node.text, type: \"normal\" });\n    }\n  }\n  __name(processNode, \"processNode\");\n  nodes.forEach((treeNode) => {\n    if (treeNode.type === \"paragraph\") {\n      treeNode.tokens?.forEach((contentNode) => {\n        processNode(contentNode);\n      });\n    } else if (treeNode.type === \"html\") {\n      lines[currentLine].push({ content: treeNode.text, type: \"normal\" });\n    }\n  });\n  return lines;\n}\n__name(markdownToLines, \"markdownToLines\");\nfunction markdownToHTML(markdown, { markdownAutoWrap } = {}) {\n  const nodes = marked.lexer(markdown);\n  function output(node) {\n    if (node.type === \"text\") {\n      if (markdownAutoWrap === false) {\n        return node.text.replace(/\\n */g, \"<br/>\").replace(/ /g, \"&nbsp;\");\n      }\n      return node.text.replace(/\\n */g, \"<br/>\");\n    } else if (node.type === \"strong\") {\n      return `<strong>${node.tokens?.map(output).join(\"\")}</strong>`;\n    } else if (node.type === \"em\") {\n      return `<em>${node.tokens?.map(output).join(\"\")}</em>`;\n    } else if (node.type === \"paragraph\") {\n      return `<p>${node.tokens?.map(output).join(\"\")}</p>`;\n    } else if (node.type === \"space\") {\n      return \"\";\n    } else if (node.type === \"html\") {\n      return `${node.text}`;\n    } else if (node.type === \"escape\") {\n      return node.text;\n    }\n    return `Unsupported markdown: ${node.type}`;\n  }\n  __name(output, \"output\");\n  return nodes.map(output).join(\"\");\n}\n__name(markdownToHTML, \"markdownToHTML\");\n\n// src/rendering-util/splitText.ts\nfunction splitTextToChars(text) {\n  if (Intl.Segmenter) {\n    return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n  }\n  return [...text];\n}\n__name(splitTextToChars, \"splitTextToChars\");\nfunction splitWordToFitWidth(checkFit, word) {\n  const characters = splitTextToChars(word.content);\n  return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\n__name(splitWordToFitWidth, \"splitWordToFitWidth\");\nfunction splitWordToFitWidthRecursion(checkFit, usedChars, remainingChars, type) {\n  if (remainingChars.length === 0) {\n    return [\n      { content: usedChars.join(\"\"), type },\n      { content: \"\", type }\n    ];\n  }\n  const [nextChar, ...rest] = remainingChars;\n  const newWord = [...usedChars, nextChar];\n  if (checkFit([{ content: newWord.join(\"\"), type }])) {\n    return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n  }\n  if (usedChars.length === 0 && nextChar) {\n    usedChars.push(nextChar);\n    remainingChars.shift();\n  }\n  return [\n    { content: usedChars.join(\"\"), type },\n    { content: remainingChars.join(\"\"), type }\n  ];\n}\n__name(splitWordToFitWidthRecursion, \"splitWordToFitWidthRecursion\");\nfunction splitLineToFitWidth(line, checkFit) {\n  if (line.some(({ content }) => content.includes(\"\\n\"))) {\n    throw new Error(\"splitLineToFitWidth does not support newlines in the line\");\n  }\n  return splitLineToFitWidthRecursion(line, checkFit);\n}\n__name(splitLineToFitWidth, \"splitLineToFitWidth\");\nfunction splitLineToFitWidthRecursion(words, checkFit, lines = [], newLine = []) {\n  if (words.length === 0) {\n    if (newLine.length > 0) {\n      lines.push(newLine);\n    }\n    return lines.length > 0 ? lines : [];\n  }\n  let joiner = \"\";\n  if (words[0].content === \" \") {\n    joiner = \" \";\n    words.shift();\n  }\n  const nextWord = words.shift() ?? { content: \" \", type: \"normal\" };\n  const lineWithNextWord = [...newLine];\n  if (joiner !== \"\") {\n    lineWithNextWord.push({ content: joiner, type: \"normal\" });\n  }\n  lineWithNextWord.push(nextWord);\n  if (checkFit(lineWithNextWord)) {\n    return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n  }\n  if (newLine.length > 0) {\n    lines.push(newLine);\n    words.unshift(nextWord);\n  } else if (nextWord.content) {\n    const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n    lines.push([line]);\n    if (rest.content) {\n      words.unshift(rest);\n    }\n  }\n  return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\n__name(splitLineToFitWidthRecursion, \"splitLineToFitWidthRecursion\");\n\n// src/rendering-util/createText.ts\nfunction applyStyle(dom, styleFn) {\n  if (styleFn) {\n    dom.attr(\"style\", styleFn);\n  }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlSpan(element, node, width, classes, addBackground = false) {\n  const fo = element.append(\"foreignObject\");\n  fo.attr(\"width\", `${10 * width}px`);\n  fo.attr(\"height\", `${10 * width}px`);\n  const div = fo.append(\"xhtml:div\");\n  let label = node.label;\n  if (node.label && hasKatex(node.label)) {\n    label = await renderKatex(node.label.replace(common_default.lineBreakRegex, \"\\n\"), getConfig());\n  }\n  const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n  const span = div.append(\"span\");\n  span.html(label);\n  applyStyle(span, node.labelStyle);\n  span.attr(\"class\", `${labelClass} ${classes}`);\n  applyStyle(div, node.labelStyle);\n  div.style(\"display\", \"table-cell\");\n  div.style(\"white-space\", \"nowrap\");\n  div.style(\"line-height\", \"1.5\");\n  div.style(\"max-width\", width + \"px\");\n  div.style(\"text-align\", \"center\");\n  div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n  if (addBackground) {\n    div.attr(\"class\", \"labelBkg\");\n  }\n  let bbox = div.node().getBoundingClientRect();\n  if (bbox.width === width) {\n    div.style(\"display\", \"table\");\n    div.style(\"white-space\", \"break-spaces\");\n    div.style(\"width\", width + \"px\");\n    bbox = div.node().getBoundingClientRect();\n  }\n  return fo.node();\n}\n__name(addHtmlSpan, \"addHtmlSpan\");\nfunction createTspan(textElement, lineIndex, lineHeight) {\n  return textElement.append(\"tspan\").attr(\"class\", \"text-outer-tspan\").attr(\"x\", 0).attr(\"y\", lineIndex * lineHeight - 0.1 + \"em\").attr(\"dy\", lineHeight + \"em\");\n}\n__name(createTspan, \"createTspan\");\nfunction computeWidthOfText(parentNode, lineHeight, line) {\n  const testElement = parentNode.append(\"text\");\n  const testSpan = createTspan(testElement, 1, lineHeight);\n  updateTextContentAndStyles(testSpan, line);\n  const textLength = testSpan.node().getComputedTextLength();\n  testElement.remove();\n  return textLength;\n}\n__name(computeWidthOfText, \"computeWidthOfText\");\nfunction computeDimensionOfText(parentNode, lineHeight, text) {\n  const testElement = parentNode.append(\"text\");\n  const testSpan = createTspan(testElement, 1, lineHeight);\n  updateTextContentAndStyles(testSpan, [{ content: text, type: \"normal\" }]);\n  const textDimension = testSpan.node()?.getBoundingClientRect();\n  if (textDimension) {\n    testElement.remove();\n  }\n  return textDimension;\n}\n__name(computeDimensionOfText, \"computeDimensionOfText\");\nfunction createFormattedText(width, g, structuredText, addBackground = false) {\n  const lineHeight = 1.1;\n  const labelGroup = g.append(\"g\");\n  const bkg = labelGroup.insert(\"rect\").attr(\"class\", \"background\").attr(\"style\", \"stroke: none\");\n  const textElement = labelGroup.append(\"text\").attr(\"y\", \"-10.1\");\n  let lineIndex = 0;\n  for (const line of structuredText) {\n    const checkWidth = /* @__PURE__ */ __name((line2) => computeWidthOfText(labelGroup, lineHeight, line2) <= width, \"checkWidth\");\n    const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n    for (const preparedLine of linesUnderWidth) {\n      const tspan = createTspan(textElement, lineIndex, lineHeight);\n      updateTextContentAndStyles(tspan, preparedLine);\n      lineIndex++;\n    }\n  }\n  if (addBackground) {\n    const bbox = textElement.node().getBBox();\n    const padding = 2;\n    bkg.attr(\"x\", bbox.x - padding).attr(\"y\", bbox.y - padding).attr(\"width\", bbox.width + 2 * padding).attr(\"height\", bbox.height + 2 * padding);\n    return labelGroup.node();\n  } else {\n    return textElement.node();\n  }\n}\n__name(createFormattedText, \"createFormattedText\");\nfunction updateTextContentAndStyles(tspan, wrappedLine) {\n  tspan.text(\"\");\n  wrappedLine.forEach((word, index) => {\n    const innerTspan = tspan.append(\"tspan\").attr(\"font-style\", word.type === \"em\" ? \"italic\" : \"normal\").attr(\"class\", \"text-inner-tspan\").attr(\"font-weight\", word.type === \"strong\" ? \"bold\" : \"normal\");\n    if (index === 0) {\n      innerTspan.text(word.content);\n    } else {\n      innerTspan.text(\" \" + word.content);\n    }\n  });\n}\n__name(updateTextContentAndStyles, \"updateTextContentAndStyles\");\nfunction replaceIconSubstring(text) {\n  return text.replace(\n    /fa[bklrs]?:fa-[\\w-]+/g,\n    // cspell: disable-line\n    (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n  );\n}\n__name(replaceIconSubstring, \"replaceIconSubstring\");\nvar createText = /* @__PURE__ */ __name(async (el, text = \"\", {\n  style = \"\",\n  isTitle = false,\n  classes = \"\",\n  useHtmlLabels = true,\n  isNode = true,\n  width = 200,\n  addSvgBackground = false\n} = {}, config) => {\n  log.debug(\n    \"XYZ createText\",\n    text,\n    style,\n    isTitle,\n    classes,\n    useHtmlLabels,\n    isNode,\n    \"addSvgBackground: \",\n    addSvgBackground\n  );\n  if (useHtmlLabels) {\n    const htmlText = markdownToHTML(text, config);\n    const decodedReplacedText = replaceIconSubstring(decodeEntities(htmlText));\n    const inputForKatex = text.replace(/\\\\\\\\/g, \"\\\\\");\n    const node = {\n      isNode,\n      label: hasKatex(text) ? inputForKatex : decodedReplacedText,\n      labelStyle: style.replace(\"fill:\", \"color:\")\n    };\n    const vertexNode = await addHtmlSpan(el, node, width, classes, addSvgBackground);\n    return vertexNode;\n  } else {\n    const sanitizeBR = text.replace(/<br\\s*\\/?>/g, \"<br/>\");\n    const structuredText = markdownToLines(sanitizeBR.replace(\"<br>\", \"<br/>\"), config);\n    const svgLabel = createFormattedText(\n      width,\n      el,\n      structuredText,\n      text ? addSvgBackground : false\n    );\n    if (isNode) {\n      if (/stroke:/.exec(style)) {\n        style = style.replace(\"stroke:\", \"lineColor:\");\n      }\n      const nodeLabelTextStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/color:/g, \"fill:\");\n      select(svgLabel).attr(\"style\", nodeLabelTextStyle);\n    } else {\n      const edgeLabelRectStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/background:/g, \"fill:\");\n      select(svgLabel).select(\"rect\").attr(\"style\", edgeLabelRectStyle.replace(/background:/g, \"fill:\"));\n      const edgeLabelTextStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/color:/g, \"fill:\");\n      select(svgLabel).select(\"text\").attr(\"style\", edgeLabelTextStyle);\n    }\n    return svgLabel;\n  }\n}, \"createText\");\n\nexport {\n  computeDimensionOfText,\n  replaceIconSubstring,\n  createText\n};\n","const matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n  const colonSeparated = value.split(\":\");\n  if (value.slice(0, 1) === \"@\") {\n    if (colonSeparated.length < 2 || colonSeparated.length > 3) {\n      return null;\n    }\n    provider = colonSeparated.shift().slice(1);\n  }\n  if (colonSeparated.length > 3 || !colonSeparated.length) {\n    return null;\n  }\n  if (colonSeparated.length > 1) {\n    const name2 = colonSeparated.pop();\n    const prefix = colonSeparated.pop();\n    const result = {\n      // Allow provider without '@': \"provider:prefix:name\"\n      provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n      prefix,\n      name: name2\n    };\n    return validate && !validateIconName(result) ? null : result;\n  }\n  const name = colonSeparated[0];\n  const dashSeparated = name.split(\"-\");\n  if (dashSeparated.length > 1) {\n    const result = {\n      provider,\n      prefix: dashSeparated.shift(),\n      name: dashSeparated.join(\"-\")\n    };\n    return validate && !validateIconName(result) ? null : result;\n  }\n  if (allowSimpleName && provider === \"\") {\n    const result = {\n      provider,\n      prefix: \"\",\n      name\n    };\n    return validate && !validateIconName(result, allowSimpleName) ? null : result;\n  }\n  return null;\n};\nconst validateIconName = (icon, allowSimpleName) => {\n  if (!icon) {\n    return false;\n  }\n  return !!// Check prefix: cannot be empty, unless allowSimpleName is enabled\n  // Check name: cannot be empty\n  ((allowSimpleName && icon.prefix === \"\" || !!icon.prefix) && !!icon.name);\n};\n\nexport { matchIconName, stringToIcon, validateIconName };\n","const defaultIconDimensions = Object.freeze(\n  {\n    left: 0,\n    top: 0,\n    width: 16,\n    height: 16\n  }\n);\nconst defaultIconTransformations = Object.freeze({\n  rotate: 0,\n  vFlip: false,\n  hFlip: false\n});\nconst defaultIconProps = Object.freeze({\n  ...defaultIconDimensions,\n  ...defaultIconTransformations\n});\nconst defaultExtendedIconProps = Object.freeze({\n  ...defaultIconProps,\n  body: \"\",\n  hidden: false\n});\n\nexport { defaultExtendedIconProps, defaultIconDimensions, defaultIconProps, defaultIconTransformations };\n","function mergeIconTransformations(obj1, obj2) {\n  const result = {};\n  if (!obj1.hFlip !== !obj2.hFlip) {\n    result.hFlip = true;\n  }\n  if (!obj1.vFlip !== !obj2.vFlip) {\n    result.vFlip = true;\n  }\n  const rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n  if (rotate) {\n    result.rotate = rotate;\n  }\n  return result;\n}\n\nexport { mergeIconTransformations };\n","import { defaultExtendedIconProps, defaultIconTransformations } from './defaults.mjs';\nimport { mergeIconTransformations } from './transformations.mjs';\n\nfunction mergeIconData(parent, child) {\n  const result = mergeIconTransformations(parent, child);\n  for (const key in defaultExtendedIconProps) {\n    if (key in defaultIconTransformations) {\n      if (key in parent && !(key in result)) {\n        result[key] = defaultIconTransformations[key];\n      }\n    } else if (key in child) {\n      result[key] = child[key];\n    } else if (key in parent) {\n      result[key] = parent[key];\n    }\n  }\n  return result;\n}\n\nexport { mergeIconData };\n","function getIconsTree(data, names) {\n  const icons = data.icons;\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  const resolved = /* @__PURE__ */ Object.create(null);\n  function resolve(name) {\n    if (icons[name]) {\n      return resolved[name] = [];\n    }\n    if (!(name in resolved)) {\n      resolved[name] = null;\n      const parent = aliases[name] && aliases[name].parent;\n      const value = parent && resolve(parent);\n      if (value) {\n        resolved[name] = [parent].concat(value);\n      }\n    }\n    return resolved[name];\n  }\n  (names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n  return resolved;\n}\n\nexport { getIconsTree };\n","import { mergeIconData } from '../icon/merge.mjs';\nimport { getIconsTree } from './tree.mjs';\nimport '../icon/defaults.mjs';\nimport '../icon/transformations.mjs';\n\nfunction internalGetIconData(data, name, tree) {\n  const icons = data.icons;\n  const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n  let currentProps = {};\n  function parse(name2) {\n    currentProps = mergeIconData(\n      icons[name2] || aliases[name2],\n      currentProps\n    );\n  }\n  parse(name);\n  tree.forEach(parse);\n  return mergeIconData(data, currentProps);\n}\nfunction getIconData(data, name) {\n  if (data.icons[name]) {\n    return internalGetIconData(data, name, []);\n  }\n  const tree = getIconsTree(data, [name])[name];\n  return tree ? internalGetIconData(data, name, tree) : null;\n}\n\nexport { getIconData, internalGetIconData };\n","import { defaultIconTransformations } from '../icon/defaults.mjs';\n\nconst defaultIconSizeCustomisations = Object.freeze({\n  width: null,\n  height: null\n});\nconst defaultIconCustomisations = Object.freeze({\n  // Dimensions\n  ...defaultIconSizeCustomisations,\n  // Transformations\n  ...defaultIconTransformations\n});\n\nexport { defaultIconCustomisations, defaultIconSizeCustomisations };\n","const unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n  if (ratio === 1) {\n    return size;\n  }\n  precision = precision || 100;\n  if (typeof size === \"number\") {\n    return Math.ceil(size * ratio * precision) / precision;\n  }\n  if (typeof size !== \"string\") {\n    return size;\n  }\n  const oldParts = size.split(unitsSplit);\n  if (oldParts === null || !oldParts.length) {\n    return size;\n  }\n  const newParts = [];\n  let code = oldParts.shift();\n  let isNumber = unitsTest.test(code);\n  while (true) {\n    if (isNumber) {\n      const num = parseFloat(code);\n      if (isNaN(num)) {\n        newParts.push(code);\n      } else {\n        newParts.push(Math.ceil(num * ratio * precision) / precision);\n      }\n    } else {\n      newParts.push(code);\n    }\n    code = oldParts.shift();\n    if (code === void 0) {\n      return newParts.join(\"\");\n    }\n    isNumber = !isNumber;\n  }\n}\n\nexport { calculateSize };\n","function splitSVGDefs(content, tag = \"defs\") {\n  let defs = \"\";\n  const index = content.indexOf(\"<\" + tag);\n  while (index >= 0) {\n    const start = content.indexOf(\">\", index);\n    const end = content.indexOf(\"</\" + tag);\n    if (start === -1 || end === -1) {\n      break;\n    }\n    const endEnd = content.indexOf(\">\", end);\n    if (endEnd === -1) {\n      break;\n    }\n    defs += content.slice(start + 1, end).trim();\n    content = content.slice(0, index).trim() + content.slice(endEnd + 1);\n  }\n  return {\n    defs,\n    content\n  };\n}\nfunction mergeDefsAndContent(defs, content) {\n  return defs ? \"<defs>\" + defs + \"</defs>\" + content : content;\n}\nfunction wrapSVGContent(body, start, end) {\n  const split = splitSVGDefs(body);\n  return mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nexport { mergeDefsAndContent, splitSVGDefs, wrapSVGContent };\n","import { defaultIconProps } from '../icon/defaults.mjs';\nimport { defaultIconCustomisations } from '../customisations/defaults.mjs';\nimport { calculateSize } from './size.mjs';\nimport { wrapSVGContent } from './defs.mjs';\n\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\nfunction iconToSVG(icon, customisations) {\n  const fullIcon = {\n    ...defaultIconProps,\n    ...icon\n  };\n  const fullCustomisations = {\n    ...defaultIconCustomisations,\n    ...customisations\n  };\n  const box = {\n    left: fullIcon.left,\n    top: fullIcon.top,\n    width: fullIcon.width,\n    height: fullIcon.height\n  };\n  let body = fullIcon.body;\n  [fullIcon, fullCustomisations].forEach((props) => {\n    const transformations = [];\n    const hFlip = props.hFlip;\n    const vFlip = props.vFlip;\n    let rotation = props.rotate;\n    if (hFlip) {\n      if (vFlip) {\n        rotation += 2;\n      } else {\n        transformations.push(\n          \"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\"\n        );\n        transformations.push(\"scale(-1 1)\");\n        box.top = box.left = 0;\n      }\n    } else if (vFlip) {\n      transformations.push(\n        \"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\"\n      );\n      transformations.push(\"scale(1 -1)\");\n      box.top = box.left = 0;\n    }\n    let tempValue;\n    if (rotation < 0) {\n      rotation -= Math.floor(rotation / 4) * 4;\n    }\n    rotation = rotation % 4;\n    switch (rotation) {\n      case 1:\n        tempValue = box.height / 2 + box.top;\n        transformations.unshift(\n          \"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n        );\n        break;\n      case 2:\n        transformations.unshift(\n          \"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\"\n        );\n        break;\n      case 3:\n        tempValue = box.width / 2 + box.left;\n        transformations.unshift(\n          \"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n        );\n        break;\n    }\n    if (rotation % 2 === 1) {\n      if (box.left !== box.top) {\n        tempValue = box.left;\n        box.left = box.top;\n        box.top = tempValue;\n      }\n      if (box.width !== box.height) {\n        tempValue = box.width;\n        box.width = box.height;\n        box.height = tempValue;\n      }\n    }\n    if (transformations.length) {\n      body = wrapSVGContent(\n        body,\n        '<g transform=\"' + transformations.join(\" \") + '\">',\n        \"</g>\"\n      );\n    }\n  });\n  const customisationsWidth = fullCustomisations.width;\n  const customisationsHeight = fullCustomisations.height;\n  const boxWidth = box.width;\n  const boxHeight = box.height;\n  let width;\n  let height;\n  if (customisationsWidth === null) {\n    height = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n    width = calculateSize(height, boxWidth / boxHeight);\n  } else {\n    width = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n    height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n  }\n  const attributes = {};\n  const setAttr = (prop, value) => {\n    if (!isUnsetKeyword(value)) {\n      attributes[prop] = value.toString();\n    }\n  };\n  setAttr(\"width\", width);\n  setAttr(\"height\", height);\n  const viewBox = [box.left, box.top, boxWidth, boxHeight];\n  attributes.viewBox = viewBox.join(\" \");\n  return {\n    attributes,\n    viewBox,\n    body\n  };\n}\n\nexport { iconToSVG, isUnsetKeyword };\n","function iconToHTML(body, attributes) {\n  let renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n  for (const attr in attributes) {\n    renderAttribsHTML += \" \" + attr + '=\"' + attributes[attr] + '\"';\n  }\n  return '<svg xmlns=\"http://www.w3.org/2000/svg\"' + renderAttribsHTML + \">\" + body + \"</svg>\";\n}\n\nexport { iconToHTML };\n","const regex = /\\sid=\"(\\S+)\"/g;\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\nlet counter = 0;\nfunction replaceIDs(body, prefix = randomPrefix) {\n  const ids = [];\n  let match;\n  while (match = regex.exec(body)) {\n    ids.push(match[1]);\n  }\n  if (!ids.length) {\n    return body;\n  }\n  const suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n  ids.forEach((id) => {\n    const newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n    const escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n    body = body.replace(\n      // Allowed characters before id: [#;\"]\n      // Allowed characters after id: [)\"], .[a-z]\n      new RegExp('([#;\"])(' + escapedID + ')([\")]|\\\\.[a-z])', \"g\"),\n      \"$1\" + newID + suffix + \"$3\"\n    );\n  });\n  body = body.replace(new RegExp(suffix, \"g\"), \"\");\n  return body;\n}\n\nexport { replaceIDs };\n","import {\n  __name,\n  log\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/rendering-util/icons.ts\nimport { getIconData, iconToHTML, iconToSVG, replaceIDs, stringToIcon } from \"@iconify/utils\";\nvar unknownIcon = {\n  body: '<g><rect width=\"80\" height=\"80\" style=\"fill: #087ebf; stroke-width: 0px;\"/><text transform=\"translate(21.16 64.67)\" style=\"fill: #fff; font-family: ArialMT, Arial; font-size: 67.75px;\"><tspan x=\"0\" y=\"0\">?</tspan></text></g>',\n  height: 80,\n  width: 80\n};\nvar iconsStore = /* @__PURE__ */ new Map();\nvar loaderStore = /* @__PURE__ */ new Map();\nvar registerIconPacks = /* @__PURE__ */ __name((iconLoaders) => {\n  for (const iconLoader of iconLoaders) {\n    if (!iconLoader.name) {\n      throw new Error(\n        'Invalid icon loader. Must have a \"name\" property with non-empty string value.'\n      );\n    }\n    log.debug(\"Registering icon pack:\", iconLoader.name);\n    if (\"loader\" in iconLoader) {\n      loaderStore.set(iconLoader.name, iconLoader.loader);\n    } else if (\"icons\" in iconLoader) {\n      iconsStore.set(iconLoader.name, iconLoader.icons);\n    } else {\n      log.error(\"Invalid icon loader:\", iconLoader);\n      throw new Error('Invalid icon loader. Must have either \"icons\" or \"loader\" property.');\n    }\n  }\n}, \"registerIconPacks\");\nvar getRegisteredIconData = /* @__PURE__ */ __name(async (iconName, fallbackPrefix) => {\n  const data = stringToIcon(iconName, true, fallbackPrefix !== void 0);\n  if (!data) {\n    throw new Error(`Invalid icon name: ${iconName}`);\n  }\n  const prefix = data.prefix || fallbackPrefix;\n  if (!prefix) {\n    throw new Error(`Icon name must contain a prefix: ${iconName}`);\n  }\n  let icons = iconsStore.get(prefix);\n  if (!icons) {\n    const loader = loaderStore.get(prefix);\n    if (!loader) {\n      throw new Error(`Icon set not found: ${data.prefix}`);\n    }\n    try {\n      const loaded = await loader();\n      icons = { ...loaded, prefix };\n      iconsStore.set(prefix, icons);\n    } catch (e) {\n      log.error(e);\n      throw new Error(`Failed to load icon set: ${data.prefix}`);\n    }\n  }\n  const iconData = getIconData(icons, data.name);\n  if (!iconData) {\n    throw new Error(`Icon not found: ${iconName}`);\n  }\n  return iconData;\n}, \"getRegisteredIconData\");\nvar getIconSVG = /* @__PURE__ */ __name(async (iconName, customisations) => {\n  let iconData;\n  try {\n    iconData = await getRegisteredIconData(iconName, customisations?.fallbackPrefix);\n  } catch (e) {\n    log.error(e);\n    iconData = unknownIcon;\n  }\n  const renderData = iconToSVG(iconData, customisations);\n  const svg = iconToHTML(replaceIDs(renderData.body), renderData.attributes);\n  return svg;\n}, \"getIconSVG\");\n\nexport {\n  unknownIcon,\n  registerIconPacks,\n  getIconSVG\n};\n","import {\n  getSubGraphTitleMargins\n} from \"./chunk-K557N5IZ.mjs\";\nimport {\n  getIconSVG\n} from \"./chunk-H2D2JQ3I.mjs\";\nimport {\n  createText\n} from \"./chunk-C3MQ5ANM.mjs\";\nimport {\n  calculateTextWidth,\n  decodeEntities,\n  handleUndefinedAttr,\n  parseFontSize\n} from \"./chunk-O4NI6UNU.mjs\";\nimport {\n  __name,\n  common_default,\n  defaultConfig_default,\n  evaluate,\n  getConfig,\n  getConfig2,\n  hasKatex,\n  log,\n  parseGenericTypes,\n  renderKatex,\n  sanitizeText,\n  sanitizeText2\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/util.ts\nimport { select } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes) => {\n  let cssClasses;\n  const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig2()?.htmlLabels);\n  if (!_classes) {\n    cssClasses = \"node default\";\n  } else {\n    cssClasses = _classes;\n  }\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n  const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", handleUndefinedAttr(node.labelStyle));\n  let label;\n  if (node.label === void 0) {\n    label = \"\";\n  } else {\n    label = typeof node.label === \"string\" ? node.label : node.label[0];\n  }\n  const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n    useHtmlLabels,\n    width: node.width || getConfig2().flowchart?.wrappingWidth,\n    // @ts-expect-error -- This is currently not used. Should this be `classes` instead?\n    cssClasses: \"markdown-node-label\",\n    style: node.labelStyle,\n    addSvgBackground: !!node.icon || !!node.img\n  });\n  let bbox = text2.getBBox();\n  const halfPadding = (node?.padding ?? 0) / 2;\n  if (useHtmlLabels) {\n    const div = text2.children[0];\n    const dv = select(text2);\n    const images = div.getElementsByTagName(\"img\");\n    if (images) {\n      const noImgText = label.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n      await Promise.all(\n        [...images].map(\n          (img) => new Promise((res) => {\n            function setupImage() {\n              img.style.display = \"flex\";\n              img.style.flexDirection = \"column\";\n              if (noImgText) {\n                const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;\n                const enlargingFactor = 5;\n                const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n                const width = parsedBodyFontSize * enlargingFactor + \"px\";\n                img.style.minWidth = width;\n                img.style.maxWidth = width;\n              } else {\n                img.style.width = \"100%\";\n              }\n              res(img);\n            }\n            __name(setupImage, \"setupImage\");\n            setTimeout(() => {\n              if (img.complete) {\n                setupImage();\n              }\n            });\n            img.addEventListener(\"error\", setupImage);\n            img.addEventListener(\"load\", setupImage);\n          })\n        )\n      );\n    }\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  if (useHtmlLabels) {\n    labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n  } else {\n    labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n  }\n  if (node.centerLabel) {\n    labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n  }\n  labelEl.insert(\"rect\", \":first-child\");\n  return { shapeSvg, bbox, halfPadding, label: labelEl };\n}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n  const useHtmlLabels = options.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels);\n  const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n  const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n    useHtmlLabels,\n    width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n    style: options.labelStyle,\n    addSvgBackground: !!options.icon || !!options.img\n  });\n  let bbox = text2.getBBox();\n  const halfPadding = options.padding / 2;\n  if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n    const div = text2.children[0];\n    const dv = select(text2);\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  if (useHtmlLabels) {\n    labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n  } else {\n    labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n  }\n  if (options.centerLabel) {\n    labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n  }\n  labelEl.insert(\"rect\", \":first-child\");\n  return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n  const bbox = element.node().getBBox();\n  node.width = bbox.width;\n  node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n  const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n  pointStrings.push(\"Z\");\n  return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n  const points = [];\n  const steps = 50;\n  const deltaX = x2 - x1;\n  const deltaY = y2 - y1;\n  const cycleLength = deltaX / numCycles;\n  const frequency = 2 * Math.PI / cycleLength;\n  const midY = y1 + deltaY / 2;\n  for (let i = 0; i <= steps; i++) {\n    const t = i / steps;\n    const x = x1 + t * deltaX;\n    const y = midY + amplitude * Math.sin(frequency * (x - x1));\n    points.push({ x, y });\n  }\n  return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n  const points = [];\n  const startAngleRad = startAngle * Math.PI / 180;\n  const endAngleRad = endAngle * Math.PI / 180;\n  const angleRange = endAngleRad - startAngleRad;\n  const angleStep = angleRange / (numPoints - 1);\n  for (let i = 0; i < numPoints; i++) {\n    const angle = startAngleRad + i * angleStep;\n    const x = centerX + radius * Math.cos(angle);\n    const y = centerY + radius * Math.sin(angle);\n    points.push({ x: -x, y: -y });\n  }\n  return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select3 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n  var x = node.x;\n  var y = node.y;\n  var dx = point.x - x;\n  var dy = point.y - y;\n  var w = node.width / 2;\n  var h = node.height / 2;\n  var sx, sy;\n  if (Math.abs(dy) * w > Math.abs(dx) * h) {\n    if (dy < 0) {\n      h = -h;\n    }\n    sx = dy === 0 ? 0 : h * dx / dy;\n    sy = h;\n  } else {\n    if (dx < 0) {\n      w = -w;\n    }\n    sx = w;\n    sy = dx === 0 ? 0 : w * dy / dx;\n  }\n  return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/rendering-util/rendering-elements/createLabel.js\nimport { select as select2 } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n  if (styleFn) {\n    dom.attr(\"style\", styleFn);\n  }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlLabel(node) {\n  const fo = select2(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n  const div = fo.append(\"xhtml:div\");\n  let label = node.label;\n  if (node.label && hasKatex(node.label)) {\n    label = await renderKatex(node.label.replace(common_default.lineBreakRegex, \"\\n\"), getConfig2());\n  }\n  const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n  div.html(\n    '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + // codeql [js/html-constructed-from-input] : false positive\n    \">\" + label + \"</span>\"\n  );\n  applyStyle(div, node.labelStyle);\n  div.style(\"display\", \"inline-block\");\n  div.style(\"padding-right\", \"1px\");\n  div.style(\"white-space\", \"nowrap\");\n  div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n  return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n  let vertexText = _vertexText || \"\";\n  if (typeof vertexText === \"object\") {\n    vertexText = vertexText[0];\n  }\n  if (evaluate(getConfig2().flowchart.htmlLabels)) {\n    vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n    log.info(\"vertexText\" + vertexText);\n    const node = {\n      isNode,\n      label: decodeEntities(vertexText).replace(\n        /fa[blrs]?:fa-[\\w-]+/g,\n        (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n      ),\n      labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n    };\n    let vertexNode = await addHtmlLabel(node);\n    return vertexNode;\n  } else {\n    const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n    svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n    let rows = [];\n    if (typeof vertexText === \"string\") {\n      rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n    } else if (Array.isArray(vertexText)) {\n      rows = vertexText;\n    } else {\n      rows = [];\n    }\n    for (const row of rows) {\n      const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n      tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n      tspan.setAttribute(\"dy\", \"1em\");\n      tspan.setAttribute(\"x\", \"0\");\n      if (isTitle) {\n        tspan.setAttribute(\"class\", \"title-row\");\n      } else {\n        tspan.setAttribute(\"class\", \"row\");\n      }\n      tspan.textContent = row.trim();\n      svgLabel.appendChild(tspan);\n    }\n    return svgLabel;\n  }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n  \"M\",\n  x + radius,\n  y,\n  // Move to the first point\n  \"H\",\n  x + totalWidth - radius,\n  // Draw horizontal line to the beginning of the right corner\n  \"A\",\n  radius,\n  radius,\n  0,\n  0,\n  1,\n  x + totalWidth,\n  y + radius,\n  // Draw arc to the right top corner\n  \"V\",\n  y + totalHeight - radius,\n  // Draw vertical line down to the beginning of the right bottom corner\n  \"A\",\n  radius,\n  radius,\n  0,\n  0,\n  1,\n  x + totalWidth - radius,\n  y + totalHeight,\n  // Draw arc to the right bottom corner\n  \"H\",\n  x + radius,\n  // Draw horizontal line to the beginning of the left bottom corner\n  \"A\",\n  radius,\n  radius,\n  0,\n  0,\n  1,\n  x,\n  y + totalHeight - radius,\n  // Draw arc to the left bottom corner\n  \"V\",\n  y + radius,\n  // Draw vertical line up to the beginning of the left top corner\n  \"A\",\n  radius,\n  radius,\n  0,\n  0,\n  1,\n  x + radius,\n  y,\n  // Draw arc to the left top corner\n  \"Z\"\n  // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/shapes/handDrawnShapeStyles.ts\nvar solidStateFill = /* @__PURE__ */ __name((color) => {\n  const { handDrawnSeed } = getConfig2();\n  return {\n    fill: color,\n    hachureAngle: 120,\n    // angle of hachure,\n    hachureGap: 4,\n    fillWeight: 2,\n    roughness: 0.7,\n    stroke: color,\n    seed: handDrawnSeed\n  };\n}, \"solidStateFill\");\nvar compileStyles = /* @__PURE__ */ __name((node) => {\n  const stylesMap = styles2Map([...node.cssCompiledStyles || [], ...node.cssStyles || []]);\n  return { stylesMap, stylesArray: [...stylesMap] };\n}, \"compileStyles\");\nvar styles2Map = /* @__PURE__ */ __name((styles) => {\n  const styleMap = /* @__PURE__ */ new Map();\n  styles.forEach((style) => {\n    const [key, value] = style.split(\":\");\n    styleMap.set(key.trim(), value?.trim());\n  });\n  return styleMap;\n}, \"styles2Map\");\nvar isLabelStyle = /* @__PURE__ */ __name((key) => {\n  return key === \"color\" || key === \"font-size\" || key === \"font-family\" || key === \"font-weight\" || key === \"font-style\" || key === \"text-decoration\" || key === \"text-align\" || key === \"text-transform\" || key === \"line-height\" || key === \"letter-spacing\" || key === \"word-spacing\" || key === \"text-shadow\" || key === \"text-overflow\" || key === \"white-space\" || key === \"word-wrap\" || key === \"word-break\" || key === \"overflow-wrap\" || key === \"hyphens\";\n}, \"isLabelStyle\");\nvar styles2String = /* @__PURE__ */ __name((node) => {\n  const { stylesArray } = compileStyles(node);\n  const labelStyles = [];\n  const nodeStyles = [];\n  const borderStyles = [];\n  const backgroundStyles = [];\n  stylesArray.forEach((style) => {\n    const key = style[0];\n    if (isLabelStyle(key)) {\n      labelStyles.push(style.join(\":\") + \" !important\");\n    } else {\n      nodeStyles.push(style.join(\":\") + \" !important\");\n      if (key.includes(\"stroke\")) {\n        borderStyles.push(style.join(\":\") + \" !important\");\n      }\n      if (key === \"fill\") {\n        backgroundStyles.push(style.join(\":\") + \" !important\");\n      }\n    }\n  });\n  return {\n    labelStyles: labelStyles.join(\";\"),\n    nodeStyles: nodeStyles.join(\";\"),\n    stylesArray,\n    borderStyles,\n    backgroundStyles\n  };\n}, \"styles2String\");\nvar userNodeOverrides = /* @__PURE__ */ __name((node, options) => {\n  const { themeVariables, handDrawnSeed } = getConfig2();\n  const { nodeBorder, mainBkg } = themeVariables;\n  const { stylesMap } = compileStyles(node);\n  const result = Object.assign(\n    {\n      roughness: 0.7,\n      fill: stylesMap.get(\"fill\") || mainBkg,\n      fillStyle: \"hachure\",\n      // solid fill\n      fillWeight: 4,\n      hachureGap: 5.2,\n      stroke: stylesMap.get(\"stroke\") || nodeBorder,\n      seed: handDrawnSeed,\n      strokeWidth: stylesMap.get(\"stroke-width\")?.replace(\"px\", \"\") || 1.3,\n      fillLineDash: [0, 0]\n    },\n    options\n  );\n  return result;\n}, \"userNodeOverrides\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n  log.info(\"Creating subgraph rect for \", node.id, node);\n  const siteConfig = getConfig2();\n  const { themeVariables, handDrawnSeed } = siteConfig;\n  const { clusterBkg, clusterBorder } = themeVariables;\n  const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n  const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n  const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n  const text2 = await createText(labelEl, node.label, {\n    style: node.labelStyle,\n    useHtmlLabels,\n    isNode: true\n  });\n  let bbox = text2.getBBox();\n  if (evaluate(siteConfig.flowchart.htmlLabels)) {\n    const div = text2.children[0];\n    const dv = select3(text2);\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n  if (node.width <= bbox.width + node.padding) {\n    node.diff = (width - node.width) / 2 - node.padding;\n  } else {\n    node.diff = -node.padding;\n  }\n  const height = node.height;\n  const x = node.x - width / 2;\n  const y = node.y - height / 2;\n  log.trace(\"Data \", node, JSON.stringify(node));\n  let rect2;\n  if (node.look === \"handDrawn\") {\n    const rc = rough.svg(shapeSvg);\n    const options = userNodeOverrides(node, {\n      roughness: 0.7,\n      fill: clusterBkg,\n      // fill: 'red',\n      stroke: clusterBorder,\n      fillWeight: 3,\n      seed: handDrawnSeed\n    });\n    const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n    rect2 = shapeSvg.insert(() => {\n      log.debug(\"Rough node insert CXC\", roughNode);\n      return roughNode;\n    }, \":first-child\");\n    rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n    rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n  } else {\n    rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n    rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n  }\n  const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n  labelEl.attr(\n    \"transform\",\n    // This puts the label on top of the box instead of inside it\n    `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n  );\n  if (labelStyles) {\n    const span = labelEl.select(\"span\");\n    if (span) {\n      span.attr(\"style\", labelStyles);\n    }\n  }\n  const rectBox = rect2.node().getBBox();\n  node.offsetX = 0;\n  node.width = rectBox.width;\n  node.height = rectBox.height;\n  node.offsetY = bbox.height - node.padding / 2;\n  node.intersect = function(point) {\n    return intersect_rect_default(node, point);\n  };\n  return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n  const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n  const padding = 0 * node.padding;\n  const halfPadding = padding / 2;\n  rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n  const rectBox = rect2.node().getBBox();\n  node.width = rectBox.width;\n  node.height = rectBox.height;\n  node.intersect = function(point) {\n    return intersect_rect_default(node, point);\n  };\n  return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n  const siteConfig = getConfig2();\n  const { themeVariables, handDrawnSeed } = siteConfig;\n  const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n  const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n  const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n  let innerRect = shapeSvg.append(\"rect\");\n  const text2 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n  let bbox = text2.getBBox();\n  if (evaluate(siteConfig.flowchart.htmlLabels)) {\n    const div = text2.children[0];\n    const dv = select3(text2);\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  const padding = 0 * node.padding;\n  const halfPadding = padding / 2;\n  const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n  if (node.width <= bbox.width + node.padding) {\n    node.diff = (width - node.width) / 2 - node.padding;\n  } else {\n    node.diff = -node.padding;\n  }\n  const height = node.height + padding;\n  const innerHeight = node.height + padding - bbox.height - 6;\n  const x = node.x - width / 2;\n  const y = node.y - height / 2;\n  node.width = width;\n  const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n  let rect2;\n  if (node.look === \"handDrawn\") {\n    const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n    const rc = rough.svg(shapeSvg);\n    const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n      roughness: 0.7,\n      fill: compositeTitleBackground,\n      fillStyle: \"solid\",\n      stroke: nodeBorder,\n      seed: handDrawnSeed\n    }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n    rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n    const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n      fill: isAlt ? altBackground : compositeBackground,\n      fillStyle: isAlt ? \"hachure\" : \"solid\",\n      stroke: nodeBorder,\n      seed: handDrawnSeed\n    });\n    rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n    innerRect = shapeSvg.insert(() => roughInnerNode);\n  } else {\n    rect2 = outerRectG.insert(\"rect\", \":first-child\");\n    const outerRectClass = \"outer\";\n    rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n    innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n  );\n  const rectBox = rect2.node().getBBox();\n  node.height = rectBox.height;\n  node.offsetX = 0;\n  node.offsetY = bbox.height - node.padding / 2;\n  node.labelBBox = bbox;\n  node.intersect = function(point) {\n    return intersect_rect_default(node, point);\n  };\n  return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n  log.info(\"Creating subgraph rect for \", node.id, node);\n  const siteConfig = getConfig2();\n  const { themeVariables, handDrawnSeed } = siteConfig;\n  const { clusterBkg, clusterBorder } = themeVariables;\n  const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n  const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n  const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n  const text2 = await createText(labelEl, node.label, {\n    style: node.labelStyle,\n    useHtmlLabels,\n    isNode: true,\n    width: node.width\n  });\n  let bbox = text2.getBBox();\n  if (evaluate(siteConfig.flowchart.htmlLabels)) {\n    const div = text2.children[0];\n    const dv = select3(text2);\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n  if (node.width <= bbox.width + node.padding) {\n    node.diff = (width - node.width) / 2 - node.padding;\n  } else {\n    node.diff = -node.padding;\n  }\n  const height = node.height;\n  const x = node.x - width / 2;\n  const y = node.y - height / 2;\n  log.trace(\"Data \", node, JSON.stringify(node));\n  let rect2;\n  if (node.look === \"handDrawn\") {\n    const rc = rough.svg(shapeSvg);\n    const options = userNodeOverrides(node, {\n      roughness: 0.7,\n      fill: clusterBkg,\n      // fill: 'red',\n      stroke: clusterBorder,\n      fillWeight: 4,\n      seed: handDrawnSeed\n    });\n    const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n    rect2 = shapeSvg.insert(() => {\n      log.debug(\"Rough node insert CXC\", roughNode);\n      return roughNode;\n    }, \":first-child\");\n    rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n    rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n  } else {\n    rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n    rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n  }\n  const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n  labelEl.attr(\n    \"transform\",\n    // This puts the label on top of the box instead of inside it\n    `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n  );\n  if (labelStyles) {\n    const span = labelEl.select(\"span\");\n    if (span) {\n      span.attr(\"style\", labelStyles);\n    }\n  }\n  const rectBox = rect2.node().getBBox();\n  node.offsetX = 0;\n  node.width = rectBox.width;\n  node.height = rectBox.height;\n  node.offsetY = bbox.height - node.padding / 2;\n  node.intersect = function(point) {\n    return intersect_rect_default(node, point);\n  };\n  return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n  const siteConfig = getConfig2();\n  const { themeVariables, handDrawnSeed } = siteConfig;\n  const { nodeBorder } = themeVariables;\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n  const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n  const padding = 0 * node.padding;\n  const width = node.width + padding;\n  node.diff = -node.padding;\n  const height = node.height + padding;\n  const x = node.x - width / 2;\n  const y = node.y - height / 2;\n  node.width = width;\n  let rect2;\n  if (node.look === \"handDrawn\") {\n    const rc = rough.svg(shapeSvg);\n    const roughOuterNode = rc.rectangle(x, y, width, height, {\n      fill: \"lightgrey\",\n      roughness: 0.5,\n      strokeLineDash: [5],\n      stroke: nodeBorder,\n      seed: handDrawnSeed\n    });\n    rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n  } else {\n    rect2 = outerRectG.insert(\"rect\", \":first-child\");\n    const outerRectClass = \"divider\";\n    rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n  }\n  const rectBox = rect2.node().getBBox();\n  node.height = rectBox.height;\n  node.offsetX = 0;\n  node.offsetY = 0;\n  node.intersect = function(point) {\n    return intersect_rect_default(node, point);\n  };\n  return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n  rect,\n  squareRect,\n  roundedWithTitle,\n  noteGroup,\n  divider,\n  kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n  const shape = node.shape || \"rect\";\n  const cluster = await shapes[shape](elem, node);\n  clusterElems.set(node.id, cluster);\n  return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n  clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n  return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n  var cx = node.x;\n  var cy = node.y;\n  var px = cx - point.x;\n  var py = cy - point.y;\n  var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n  var dx = Math.abs(rx * ry * px / det);\n  if (point.x < cx) {\n    dx = -dx;\n  }\n  var dy = Math.abs(rx * ry * py / det);\n  if (point.y < cy) {\n    dy = -dy;\n  }\n  return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n  return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n  var a1, a2, b1, b2, c1, c2;\n  var r1, r2, r3, r4;\n  var denom, offset, num;\n  var x, y;\n  a1 = p2.y - p1.y;\n  b1 = p1.x - p2.x;\n  c1 = p2.x * p1.y - p1.x * p2.y;\n  r3 = a1 * q1.x + b1 * q1.y + c1;\n  r4 = a1 * q2.x + b1 * q2.y + c1;\n  if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n    return;\n  }\n  a2 = q2.y - q1.y;\n  b2 = q1.x - q2.x;\n  c2 = q2.x * q1.y - q1.x * q2.y;\n  r1 = a2 * p1.x + b2 * p1.y + c2;\n  r2 = a2 * p2.x + b2 * p2.y + c2;\n  if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n    return;\n  }\n  denom = a1 * b2 - a2 * b1;\n  if (denom === 0) {\n    return;\n  }\n  offset = Math.abs(denom / 2);\n  num = b1 * c2 - b2 * c1;\n  x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n  num = a2 * c1 - a1 * c2;\n  y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n  return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n  return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n  let x1 = node.x;\n  let y1 = node.y;\n  let intersections = [];\n  let minX = Number.POSITIVE_INFINITY;\n  let minY = Number.POSITIVE_INFINITY;\n  if (typeof polyPoints.forEach === \"function\") {\n    polyPoints.forEach(function(entry) {\n      minX = Math.min(minX, entry.x);\n      minY = Math.min(minY, entry.y);\n    });\n  } else {\n    minX = Math.min(minX, polyPoints.x);\n    minY = Math.min(minY, polyPoints.y);\n  }\n  let left = x1 - node.width / 2 - minX;\n  let top = y1 - node.height / 2 - minY;\n  for (let i = 0; i < polyPoints.length; i++) {\n    let p1 = polyPoints[i];\n    let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n    let intersect = intersect_line_default(\n      node,\n      point,\n      { x: left + p1.x, y: top + p1.y },\n      { x: left + p2.x, y: top + p2.y }\n    );\n    if (intersect) {\n      intersections.push(intersect);\n    }\n  }\n  if (!intersections.length) {\n    return node;\n  }\n  if (intersections.length > 1) {\n    intersections.sort(function(p, q) {\n      let pdx = p.x - point.x;\n      let pdy = p.y - point.y;\n      let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n      let qdx = q.x - point.x;\n      let qdy = q.y - point.y;\n      let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n      return distp < distq ? -1 : distp === distq ? 0 : 1;\n    });\n  }\n  return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n  node: intersect_node_default,\n  circle: intersect_circle_default,\n  ellipse: intersect_ellipse_default,\n  polygon: intersect_polygon_default,\n  rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n  const { labelStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const classes = getNodeClasses(node);\n  let cssClasses = classes;\n  if (!classes) {\n    cssClasses = \"anchor\";\n  }\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n  const radius = 1;\n  const { cssStyles } = node;\n  const rc = rough2.svg(shapeSvg);\n  const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n  }\n  const roughNode = rc.circle(0, 0, radius * 2, options);\n  const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n  circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n  updateNodeBounds(node, circleElem);\n  node.intersect = function(point) {\n    log.info(\"Circle intersect\", node, radius, point);\n    return intersect_default.circle(node, radius, point);\n  };\n  return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n  const numPoints = 20;\n  const midX = (x1 + x2) / 2;\n  const midY = (y1 + y2) / 2;\n  const angle = Math.atan2(y2 - y1, x2 - x1);\n  const dx = (x2 - x1) / 2;\n  const dy = (y2 - y1) / 2;\n  const transformedX = dx / rx;\n  const transformedY = dy / ry;\n  const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n  if (distance > 1) {\n    throw new Error(\"The given radii are too small to create an arc between the points.\");\n  }\n  const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n  const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n  const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n  const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n  const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n  let angleRange = endAngle - startAngle;\n  if (clockwise && angleRange < 0) {\n    angleRange += 2 * Math.PI;\n  }\n  if (!clockwise && angleRange > 0) {\n    angleRange -= 2 * Math.PI;\n  }\n  const points = [];\n  for (let i = 0; i < numPoints; i++) {\n    const t = i / (numPoints - 1);\n    const angle2 = startAngle + t * angleRange;\n    const x = centerX + rx * Math.cos(angle2);\n    const y = centerY + ry * Math.sin(angle2);\n    points.push({ x, y });\n  }\n  return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nasync function bowTieRect(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + node.padding + 20;\n  const h = bbox.height + node.padding;\n  const ry = h / 2;\n  const rx = ry / (2.5 + h / 50);\n  const { cssStyles } = node;\n  const points = [\n    { x: w / 2, y: -h / 2 },\n    { x: -w / 2, y: -h / 2 },\n    ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n    { x: w / 2, y: h / 2 },\n    ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n  ];\n  const rc = rough3.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const bowTieRectPath = createPathFromPoints(points);\n  const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n  const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n  bowTieRectShape.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n  updateNodeBounds(node, bowTieRectShape);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n  return parent.insert(\"polygon\", \":first-child\").attr(\n    \"points\",\n    points.map(function(d) {\n      return d.x + \",\" + d.y;\n    }).join(\" \")\n  ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nasync function card(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const h = bbox.height + node.padding;\n  const padding = 12;\n  const w = bbox.width + node.padding + padding;\n  const left = 0;\n  const right = w;\n  const top = -h;\n  const bottom = 0;\n  const points = [\n    { x: left + padding, y: top },\n    { x: right, y: top },\n    { x: right, y: bottom },\n    { x: left, y: bottom },\n    { x: left, y: top + padding },\n    { x: left + padding, y: top }\n  ];\n  let polygon;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough4.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createPathFromPoints(points);\n    const roughNode = rc.path(pathData, options);\n    polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n    if (cssStyles) {\n      polygon.attr(\"style\", cssStyles);\n    }\n  } else {\n    polygon = insertPolygonShape(shapeSvg, w, h, points);\n  }\n  if (nodeStyles) {\n    polygon.attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n  const { nodeStyles } = styles2String(node);\n  node.label = \"\";\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n  const { cssStyles } = node;\n  const s = Math.max(28, node.width ?? 0);\n  const points = [\n    { x: 0, y: s / 2 },\n    { x: s / 2, y: 0 },\n    { x: 0, y: -s / 2 },\n    { x: -s / 2, y: 0 }\n  ];\n  const rc = rough5.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const choicePath = createPathFromPoints(points);\n  const roughNode = rc.path(choicePath, options);\n  const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  node.width = 28;\n  node.height = 28;\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n  const radius = bbox.width / 2 + halfPadding;\n  let circleElem;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough6.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const roughNode = rc.circle(0, 0, radius * 2, options);\n    circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n    circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n  } else {\n    circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n  }\n  updateNodeBounds(node, circleElem);\n  node.intersect = function(point) {\n    log.info(\"Circle intersect\", node, radius, point);\n    return intersect_default.circle(node, radius, point);\n  };\n  return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n  const xAxis45 = Math.cos(Math.PI / 4);\n  const yAxis45 = Math.sin(Math.PI / 4);\n  const lineLength = r * 2;\n  const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n  const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n  const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n  const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n  return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n                   M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  node.label = \"\";\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n  const radius = Math.max(30, node?.width ?? 0);\n  const { cssStyles } = node;\n  const rc = rough7.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const circleNode = rc.circle(0, 0, radius * 2, options);\n  const linePath = createLine(radius);\n  const lineNode = rc.path(linePath, options);\n  const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n  crossedCircle2.insert(() => lineNode);\n  if (cssStyles && node.look !== \"handDrawn\") {\n    crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, crossedCircle2);\n  node.intersect = function(point) {\n    log.info(\"crossedCircle intersect\", node, { radius, point });\n    const pos = intersect_default.circle(node, radius, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n  const points = [];\n  const startAngleRad = startAngle * Math.PI / 180;\n  const endAngleRad = endAngle * Math.PI / 180;\n  const angleRange = endAngleRad - startAngleRad;\n  const angleStep = angleRange / (numPoints - 1);\n  for (let i = 0; i < numPoints; i++) {\n    const angle = startAngleRad + i * angleStep;\n    const x = centerX + radius * Math.cos(angle);\n    const y = centerY + radius * Math.sin(angle);\n    points.push({ x: -x, y: -y });\n  }\n  return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + (node.padding ?? 0);\n  const h = bbox.height + (node.padding ?? 0);\n  const radius = Math.max(5, h * 0.1);\n  const { cssStyles } = node;\n  const points = [\n    ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n    { x: -w / 2 - radius, y: radius },\n    ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n    ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n    { x: -w / 2 - radius, y: -h / 2 },\n    ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n  ];\n  const rectPoints = [\n    { x: w / 2, y: -h / 2 - radius },\n    { x: -w / 2, y: -h / 2 - radius },\n    ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n    { x: -w / 2 - radius, y: -radius },\n    ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n    ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n    { x: -w / 2 - radius, y: h / 2 },\n    ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n    { x: -w / 2, y: h / 2 + radius },\n    { x: w / 2, y: h / 2 + radius }\n  ];\n  const rc = rough8.svg(shapeSvg);\n  const options = userNodeOverrides(node, { fill: \"none\" });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const curlyBraceLeftPath = createPathFromPoints(points);\n  const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n  const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n  const rectPath = createPathFromPoints(rectPoints);\n  const rectShape = rc.path(rectPath, { ...options });\n  const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n  curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n  curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n  curlyBraceLeftShape.attr(\"class\", \"text\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, curlyBraceLeftShape);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, rectPoints, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n  const points = [];\n  const startAngleRad = startAngle * Math.PI / 180;\n  const endAngleRad = endAngle * Math.PI / 180;\n  const angleRange = endAngleRad - startAngleRad;\n  const angleStep = angleRange / (numPoints - 1);\n  for (let i = 0; i < numPoints; i++) {\n    const angle = startAngleRad + i * angleStep;\n    const x = centerX + radius * Math.cos(angle);\n    const y = centerY + radius * Math.sin(angle);\n    points.push({ x, y });\n  }\n  return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + (node.padding ?? 0);\n  const h = bbox.height + (node.padding ?? 0);\n  const radius = Math.max(5, h * 0.1);\n  const { cssStyles } = node;\n  const points = [\n    ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n    { x: w / 2 + radius, y: -radius },\n    ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n    ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n    { x: w / 2 + radius, y: h / 2 },\n    ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n  ];\n  const rectPoints = [\n    { x: -w / 2, y: -h / 2 - radius },\n    { x: w / 2, y: -h / 2 - radius },\n    ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n    { x: w / 2 + radius, y: -radius },\n    ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n    ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n    { x: w / 2 + radius, y: h / 2 },\n    ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n    { x: w / 2, y: h / 2 + radius },\n    { x: -w / 2, y: h / 2 + radius }\n  ];\n  const rc = rough9.svg(shapeSvg);\n  const options = userNodeOverrides(node, { fill: \"none\" });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const curlyBraceRightPath = createPathFromPoints(points);\n  const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n  const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n  const rectPath = createPathFromPoints(rectPoints);\n  const rectShape = rc.path(rectPath, { ...options });\n  const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n  curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n  curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n  curlyBraceRightShape.attr(\"class\", \"text\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, curlyBraceRightShape);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, rectPoints, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n  const points = [];\n  const startAngleRad = startAngle * Math.PI / 180;\n  const endAngleRad = endAngle * Math.PI / 180;\n  const angleRange = endAngleRad - startAngleRad;\n  const angleStep = angleRange / (numPoints - 1);\n  for (let i = 0; i < numPoints; i++) {\n    const angle = startAngleRad + i * angleStep;\n    const x = centerX + radius * Math.cos(angle);\n    const y = centerY + radius * Math.sin(angle);\n    points.push({ x: -x, y: -y });\n  }\n  return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + (node.padding ?? 0);\n  const h = bbox.height + (node.padding ?? 0);\n  const radius = Math.max(5, h * 0.1);\n  const { cssStyles } = node;\n  const leftCurlyBracePoints = [\n    ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n    { x: -w / 2 - radius, y: radius },\n    ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n    ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n    { x: -w / 2 - radius, y: -h / 2 },\n    ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n  ];\n  const rightCurlyBracePoints = [\n    ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n    { x: w / 2 - radius / 2, y: radius },\n    ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n    ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n    { x: w / 2 - radius / 2, y: -radius },\n    ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n  ];\n  const rectPoints = [\n    { x: w / 2, y: -h / 2 - radius },\n    { x: -w / 2, y: -h / 2 - radius },\n    ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n    { x: -w / 2 - radius, y: -radius },\n    ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n    ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n    { x: -w / 2 - radius, y: h / 2 },\n    ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n    { x: -w / 2, y: h / 2 + radius },\n    { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n    ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n    { x: w / 2 - radius / 2, y: radius },\n    ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n    ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n    { x: w / 2 - radius / 2, y: -radius },\n    ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n  ];\n  const rc = rough10.svg(shapeSvg);\n  const options = userNodeOverrides(node, { fill: \"none\" });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n  const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n  const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n  const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n  const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n  const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n  const rectPath = createPathFromPoints(rectPoints);\n  const rectShape = rc.path(rectPath, { ...options });\n  const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n  curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n  curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n  curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n  curlyBracesShape.attr(\"class\", \"text\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, curlyBracesShape);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, rectPoints, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const minWidth = 80, minHeight = 20;\n  const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n  const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const radius = h / 2;\n  const { cssStyles } = node;\n  const rc = rough11.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const totalWidth = w, totalHeight = h;\n  const rw = totalWidth - radius;\n  const tw = totalHeight / 4;\n  const points = [\n    { x: rw, y: 0 },\n    { x: tw, y: 0 },\n    { x: 0, y: totalHeight / 2 },\n    { x: tw, y: totalHeight },\n    { x: rw, y: totalHeight },\n    ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n  ];\n  const pathData = createPathFromPoints(points);\n  const shapeNode = rc.path(pathData, options);\n  const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n  polygon.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n  }\n  polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n  return [\n    `M${x},${y + ry}`,\n    `a${rx},${ry} 0,0,0 ${width},0`,\n    `a${rx},${ry} 0,0,0 ${-width},0`,\n    `l0,${height}`,\n    `a${rx},${ry} 0,0,0 ${width},0`,\n    `l0,${-height}`\n  ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n  return [\n    `M${x},${y + ry}`,\n    `M${x + width},${y + ry}`,\n    `a${rx},${ry} 0,0,0 ${-width},0`,\n    `l0,${height}`,\n    `a${rx},${ry} 0,0,0 ${width},0`,\n    `l0,${-height}`\n  ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n  return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function cylinder(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n  const rx = w / 2;\n  const ry = rx / (2.5 + w / 50);\n  const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n  let cylinder2;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough12.svg(shapeSvg);\n    const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n    const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n    const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n    const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n    cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n    cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n    cylinder2.attr(\"class\", \"basic label-container\");\n    if (cssStyles) {\n      cylinder2.attr(\"style\", cssStyles);\n    }\n  } else {\n    const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n    cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n  }\n  cylinder2.attr(\"label-offset-y\", ry);\n  cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n  updateNodeBounds(node, cylinder2);\n  label.attr(\n    \"transform\",\n    `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  node.intersect = function(point) {\n    const pos = intersect_default.rect(node, point);\n    const x = pos.x - (node.x ?? 0);\n    if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n      let y = ry * ry * (1 - x * x / (rx * rx));\n      if (y > 0) {\n        y = Math.sqrt(y);\n      }\n      y = ry - y;\n      if (point.y - (node.y ?? 0) > 0) {\n        y = -y;\n      }\n      pos.y += y;\n    }\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + node.padding;\n  const h = bbox.height + node.padding;\n  const rectOffset = h * 0.2;\n  const x = -w / 2;\n  const y = -h / 2 - rectOffset / 2;\n  const { cssStyles } = node;\n  const rc = rough13.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const pts = [\n    { x, y: y + rectOffset },\n    { x: -x, y: y + rectOffset },\n    { x: -x, y: -y },\n    { x, y: -y },\n    { x, y },\n    { x: -x, y },\n    { x: -x, y: y + rectOffset }\n  ];\n  const poly = rc.polygon(\n    pts.map((p) => [p.x, p.y]),\n    options\n  );\n  const polygon = shapeSvg.insert(() => poly, \":first-child\");\n  polygon.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    const pos = intersect_default.rect(node, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n  const gap = 5;\n  const outerRadius = bbox.width / 2 + halfPadding + gap;\n  const innerRadius = bbox.width / 2 + halfPadding;\n  let circleGroup;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough14.svg(shapeSvg);\n    const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n    const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n    const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n    const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n    circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n    circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n    circleGroup.node()?.appendChild(outerRoughNode);\n    circleGroup.node()?.appendChild(innerRoughNode);\n  } else {\n    circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n    const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n    const innerCircle = circleGroup.insert(\"circle\");\n    circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n    outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n    innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n  }\n  updateNodeBounds(node, circleGroup);\n  node.intersect = function(point) {\n    log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n    return intersect_default.circle(node, outerRadius, point);\n  };\n  return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.label = \"\";\n  node.labelStyle = labelStyles;\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n  const radius = 7;\n  const { cssStyles } = node;\n  const rc = rough15.svg(shapeSvg);\n  const { nodeBorder } = themeVariables;\n  const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n  }\n  const circleNode = rc.circle(0, 0, radius * 2, options);\n  const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n  filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n  if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n    filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, filledCircle2);\n  node.intersect = function(point) {\n    log.info(\"filledCircle intersect\", node, { radius, point });\n    const pos = intersect_default.circle(node, radius, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nasync function flippedTriangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + (node.padding ?? 0);\n  const h = w + bbox.height;\n  const tw = w + bbox.height;\n  const points = [\n    { x: 0, y: -h },\n    { x: tw, y: -h },\n    { x: tw / 2, y: 0 }\n  ];\n  const { cssStyles } = node;\n  const rc = rough16.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const pathData = createPathFromPoints(points);\n  const roughNode = rc.path(pathData, options);\n  const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n  if (cssStyles && node.look !== \"handDrawn\") {\n    flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n  }\n  node.width = w;\n  node.height = h;\n  updateNodeBounds(node, flippedTriangle2);\n  label.attr(\n    \"transform\",\n    `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n  );\n  node.intersect = function(point) {\n    log.info(\"Triangle intersect\", node, points, point);\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n  const { nodeStyles } = styles2String(node);\n  node.label = \"\";\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n  const { cssStyles } = node;\n  let width = Math.max(70, node?.width ?? 0);\n  let height = Math.max(10, node?.height ?? 0);\n  if (dir === \"LR\") {\n    width = Math.max(10, node?.width ?? 0);\n    height = Math.max(70, node?.height ?? 0);\n  }\n  const x = -1 * width / 2;\n  const y = -1 * height / 2;\n  const rc = rough17.svg(shapeSvg);\n  const options = userNodeOverrides(node, {\n    stroke: themeVariables.lineColor,\n    fill: themeVariables.lineColor\n  });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const roughNode = rc.rectangle(x, y, width, height, options);\n  const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    shape.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, shape);\n  const padding = state2?.padding ?? 0;\n  if (node.width && node.height) {\n    node.width += padding / 2 || 0;\n    node.height += padding / 2 || 0;\n  }\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const minWidth = 80, minHeight = 50;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const radius = h / 2;\n  const { cssStyles } = node;\n  const rc = rough18.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x: -w / 2, y: -h / 2 },\n    { x: w / 2 - radius, y: -h / 2 },\n    ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n    { x: w / 2 - radius, y: h / 2 },\n    { x: -w / 2, y: h / 2 }\n  ];\n  const pathData = createPathFromPoints(points);\n  const shapeNode = rc.path(pathData, options);\n  const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n  polygon.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    log.info(\"Pill intersect\", node, { radius, point });\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nvar createHexagonPathD = /* @__PURE__ */ __name((x, y, width, height, m) => {\n  return [\n    `M${x + m},${y}`,\n    `L${x + width - m},${y}`,\n    `L${x + width},${y - height / 2}`,\n    `L${x + width - m},${y - height}`,\n    `L${x + m},${y - height}`,\n    `L${x},${y - height / 2}`,\n    \"Z\"\n  ].join(\" \");\n}, \"createHexagonPathD\");\nasync function hexagon(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const f = 4;\n  const h = bbox.height + node.padding;\n  const m = h / f;\n  const w = bbox.width + 2 * m + node.padding;\n  const points = [\n    { x: m, y: 0 },\n    { x: w - m, y: 0 },\n    { x: w, y: -h / 2 },\n    { x: w - m, y: -h },\n    { x: m, y: -h },\n    { x: 0, y: -h / 2 }\n  ];\n  let polygon;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough19.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createHexagonPathD(0, 0, w, h, m);\n    const roughNode = rc.path(pathData, options);\n    polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n    if (cssStyles) {\n      polygon.attr(\"style\", cssStyles);\n    }\n  } else {\n    polygon = insertPolygonShape(shapeSvg, w, h, points);\n  }\n  if (nodeStyles) {\n    polygon.attr(\"style\", nodeStyles);\n  }\n  node.width = w;\n  node.height = h;\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.label = \"\";\n  node.labelStyle = labelStyles;\n  const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(30, node?.width ?? 0);\n  const h = Math.max(30, node?.height ?? 0);\n  const { cssStyles } = node;\n  const rc = rough20.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x: 0, y: 0 },\n    { x: w, y: 0 },\n    { x: 0, y: h },\n    { x: w, y: h }\n  ];\n  const pathData = createPathFromPoints(points);\n  const shapeNode = rc.path(pathData, options);\n  const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n  polygon.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n  }\n  polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    log.info(\"Pill intersect\", node, { points });\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n  const { labelStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const assetHeight = node.assetHeight ?? 48;\n  const assetWidth = node.assetWidth ?? 48;\n  const iconSize = Math.max(assetHeight, assetWidth);\n  const defaultWidth = flowchart?.wrappingWidth;\n  node.width = Math.max(iconSize, defaultWidth ?? 0);\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n  const topLabel = node.pos === \"t\";\n  const height = iconSize;\n  const width = iconSize;\n  const { nodeBorder } = themeVariables;\n  const { stylesMap } = compileStyles(node);\n  const x = -width / 2;\n  const y = -height / 2;\n  const labelPadding = node.label ? 8 : 0;\n  const rc = rough21.svg(shapeSvg);\n  const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const iconNode = rc.rectangle(x, y, width, height, options);\n  const outerWidth = Math.max(width, bbox.width);\n  const outerHeight = height + bbox.height + labelPadding;\n  const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n    ...options,\n    fill: \"transparent\",\n    stroke: \"none\"\n  });\n  const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n  const outerShape = shapeSvg.insert(() => outerNode);\n  if (node.icon) {\n    const iconElem = shapeSvg.append(\"g\");\n    iconElem.html(\n      `<g>${await getIconSVG(node.icon, {\n        height: iconSize,\n        width: iconSize,\n        fallbackPrefix: \"\"\n      })}</g>`\n    );\n    const iconBBox = iconElem.node().getBBox();\n    const iconWidth = iconBBox.width;\n    const iconHeight = iconBBox.height;\n    const iconX = iconBBox.x;\n    const iconY = iconBBox.y;\n    iconElem.attr(\n      \"transform\",\n      `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n    );\n    iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n  );\n  iconShape.attr(\n    \"transform\",\n    `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n  );\n  updateNodeBounds(node, outerShape);\n  node.intersect = function(point) {\n    log.info(\"iconSquare intersect\", node, point);\n    if (!node.label) {\n      return intersect_default.rect(node, point);\n    }\n    const dx = node.x ?? 0;\n    const dy = node.y ?? 0;\n    const nodeHeight = node.height ?? 0;\n    let points = [];\n    if (topLabel) {\n      points = [\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n      ];\n    } else {\n      points = [\n        { x: dx - width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n      ];\n    }\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(icon, \"icon\");\n\n// src/rendering-util/rendering-elements/shapes/iconCircle.ts\nimport rough22 from \"roughjs\";\nasync function iconCircle(parent, node, { config: { themeVariables, flowchart } }) {\n  const { labelStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const assetHeight = node.assetHeight ?? 48;\n  const assetWidth = node.assetWidth ?? 48;\n  const iconSize = Math.max(assetHeight, assetWidth);\n  const defaultWidth = flowchart?.wrappingWidth;\n  node.width = Math.max(iconSize, defaultWidth ?? 0);\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n  const padding = 20;\n  const labelPadding = node.label ? 8 : 0;\n  const topLabel = node.pos === \"t\";\n  const { nodeBorder, mainBkg } = themeVariables;\n  const { stylesMap } = compileStyles(node);\n  const rc = rough22.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const fill = stylesMap.get(\"fill\");\n  options.stroke = fill ?? mainBkg;\n  const iconElem = shapeSvg.append(\"g\");\n  if (node.icon) {\n    iconElem.html(\n      `<g>${await getIconSVG(node.icon, {\n        height: iconSize,\n        width: iconSize,\n        fallbackPrefix: \"\"\n      })}</g>`\n    );\n  }\n  const iconBBox = iconElem.node().getBBox();\n  const iconWidth = iconBBox.width;\n  const iconHeight = iconBBox.height;\n  const iconX = iconBBox.x;\n  const iconY = iconBBox.y;\n  const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n  const iconNode = rc.circle(0, 0, diameter, options);\n  const outerWidth = Math.max(diameter, bbox.width);\n  const outerHeight = diameter + bbox.height + labelPadding;\n  const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n    ...options,\n    fill: \"transparent\",\n    stroke: \"none\"\n  });\n  const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n  const outerShape = shapeSvg.insert(() => outerNode);\n  iconElem.attr(\n    \"transform\",\n    `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n  );\n  iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n  label.attr(\n    \"transform\",\n    `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n  );\n  iconShape.attr(\n    \"transform\",\n    `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n  );\n  updateNodeBounds(node, outerShape);\n  node.intersect = function(point) {\n    log.info(\"iconSquare intersect\", node, point);\n    const pos = intersect_default.rect(node, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(iconCircle, \"iconCircle\");\n\n// src/rendering-util/rendering-elements/shapes/iconRounded.ts\nimport rough23 from \"roughjs\";\nasync function iconRounded(parent, node, { config: { themeVariables, flowchart } }) {\n  const { labelStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const assetHeight = node.assetHeight ?? 48;\n  const assetWidth = node.assetWidth ?? 48;\n  const iconSize = Math.max(assetHeight, assetWidth);\n  const defaultWidth = flowchart?.wrappingWidth;\n  node.width = Math.max(iconSize, defaultWidth ?? 0);\n  const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n    parent,\n    node,\n    \"icon-shape default\"\n  );\n  const topLabel = node.pos === \"t\";\n  const height = iconSize + halfPadding * 2;\n  const width = iconSize + halfPadding * 2;\n  const { nodeBorder, mainBkg } = themeVariables;\n  const { stylesMap } = compileStyles(node);\n  const x = -width / 2;\n  const y = -height / 2;\n  const labelPadding = node.label ? 8 : 0;\n  const rc = rough23.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const fill = stylesMap.get(\"fill\");\n  options.stroke = fill ?? mainBkg;\n  const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n  const outerWidth = Math.max(width, bbox.width);\n  const outerHeight = height + bbox.height + labelPadding;\n  const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n    ...options,\n    fill: \"transparent\",\n    stroke: \"none\"\n  });\n  const iconShape = shapeSvg.insert(() => iconNode, \":first-child\").attr(\"class\", \"icon-shape2\");\n  const outerShape = shapeSvg.insert(() => outerNode);\n  if (node.icon) {\n    const iconElem = shapeSvg.append(\"g\");\n    iconElem.html(\n      `<g>${await getIconSVG(node.icon, {\n        height: iconSize,\n        width: iconSize,\n        fallbackPrefix: \"\"\n      })}</g>`\n    );\n    const iconBBox = iconElem.node().getBBox();\n    const iconWidth = iconBBox.width;\n    const iconHeight = iconBBox.height;\n    const iconX = iconBBox.x;\n    const iconY = iconBBox.y;\n    iconElem.attr(\n      \"transform\",\n      `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n    );\n    iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n  );\n  iconShape.attr(\n    \"transform\",\n    `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n  );\n  updateNodeBounds(node, outerShape);\n  node.intersect = function(point) {\n    log.info(\"iconSquare intersect\", node, point);\n    if (!node.label) {\n      return intersect_default.rect(node, point);\n    }\n    const dx = node.x ?? 0;\n    const dy = node.y ?? 0;\n    const nodeHeight = node.height ?? 0;\n    let points = [];\n    if (topLabel) {\n      points = [\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n      ];\n    } else {\n      points = [\n        { x: dx - width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n      ];\n    }\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(iconRounded, \"iconRounded\");\n\n// src/rendering-util/rendering-elements/shapes/iconSquare.ts\nimport rough24 from \"roughjs\";\nasync function iconSquare(parent, node, { config: { themeVariables, flowchart } }) {\n  const { labelStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const assetHeight = node.assetHeight ?? 48;\n  const assetWidth = node.assetWidth ?? 48;\n  const iconSize = Math.max(assetHeight, assetWidth);\n  const defaultWidth = flowchart?.wrappingWidth;\n  node.width = Math.max(iconSize, defaultWidth ?? 0);\n  const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n    parent,\n    node,\n    \"icon-shape default\"\n  );\n  const topLabel = node.pos === \"t\";\n  const height = iconSize + halfPadding * 2;\n  const width = iconSize + halfPadding * 2;\n  const { nodeBorder, mainBkg } = themeVariables;\n  const { stylesMap } = compileStyles(node);\n  const x = -width / 2;\n  const y = -height / 2;\n  const labelPadding = node.label ? 8 : 0;\n  const rc = rough24.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const fill = stylesMap.get(\"fill\");\n  options.stroke = fill ?? mainBkg;\n  const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n  const outerWidth = Math.max(width, bbox.width);\n  const outerHeight = height + bbox.height + labelPadding;\n  const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n    ...options,\n    fill: \"transparent\",\n    stroke: \"none\"\n  });\n  const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n  const outerShape = shapeSvg.insert(() => outerNode);\n  if (node.icon) {\n    const iconElem = shapeSvg.append(\"g\");\n    iconElem.html(\n      `<g>${await getIconSVG(node.icon, {\n        height: iconSize,\n        width: iconSize,\n        fallbackPrefix: \"\"\n      })}</g>`\n    );\n    const iconBBox = iconElem.node().getBBox();\n    const iconWidth = iconBBox.width;\n    const iconHeight = iconBBox.height;\n    const iconX = iconBBox.x;\n    const iconY = iconBBox.y;\n    iconElem.attr(\n      \"transform\",\n      `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n    );\n    iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n  );\n  iconShape.attr(\n    \"transform\",\n    `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n  );\n  updateNodeBounds(node, outerShape);\n  node.intersect = function(point) {\n    log.info(\"iconSquare intersect\", node, point);\n    if (!node.label) {\n      return intersect_default.rect(node, point);\n    }\n    const dx = node.x ?? 0;\n    const dy = node.y ?? 0;\n    const nodeHeight = node.height ?? 0;\n    let points = [];\n    if (topLabel) {\n      points = [\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n      ];\n    } else {\n      points = [\n        { x: dx - width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n        { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n      ];\n    }\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(iconSquare, \"iconSquare\");\n\n// src/rendering-util/rendering-elements/shapes/imageSquare.ts\nimport rough25 from \"roughjs\";\nasync function imageSquare(parent, node, { config: { flowchart } }) {\n  const img = new Image();\n  img.src = node?.img ?? \"\";\n  await img.decode();\n  const imageNaturalWidth = Number(img.naturalWidth.toString().replace(\"px\", \"\"));\n  const imageNaturalHeight = Number(img.naturalHeight.toString().replace(\"px\", \"\"));\n  node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n  const { labelStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const defaultWidth = flowchart?.wrappingWidth;\n  node.defaultWidth = flowchart?.wrappingWidth;\n  const imageRawWidth = Math.max(\n    node.label ? defaultWidth ?? 0 : 0,\n    node?.assetWidth ?? imageNaturalWidth\n  );\n  const imageWidth = node.constraint === \"on\" ? node?.assetHeight ? node.assetHeight * node.imageAspectRatio : imageRawWidth : imageRawWidth;\n  const imageHeight = node.constraint === \"on\" ? imageWidth / node.imageAspectRatio : node?.assetHeight ?? imageNaturalHeight;\n  node.width = Math.max(imageWidth, defaultWidth ?? 0);\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"image-shape default\");\n  const topLabel = node.pos === \"t\";\n  const x = -imageWidth / 2;\n  const y = -imageHeight / 2;\n  const labelPadding = node.label ? 8 : 0;\n  const rc = rough25.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n  const outerWidth = Math.max(imageWidth, bbox.width);\n  const outerHeight = imageHeight + bbox.height + labelPadding;\n  const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n    ...options,\n    fill: \"none\",\n    stroke: \"none\"\n  });\n  const iconShape = shapeSvg.insert(() => imageNode, \":first-child\");\n  const outerShape = shapeSvg.insert(() => outerNode);\n  if (node.img) {\n    const image = shapeSvg.append(\"image\");\n    image.attr(\"href\", node.img);\n    image.attr(\"width\", imageWidth);\n    image.attr(\"height\", imageHeight);\n    image.attr(\"preserveAspectRatio\", \"none\");\n    image.attr(\n      \"transform\",\n      `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n    );\n  }\n  label.attr(\n    \"transform\",\n    `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2 : imageHeight / 2 - bbox.height / 2 + labelPadding / 2})`\n  );\n  iconShape.attr(\n    \"transform\",\n    `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n  );\n  updateNodeBounds(node, outerShape);\n  node.intersect = function(point) {\n    log.info(\"iconSquare intersect\", node, point);\n    if (!node.label) {\n      return intersect_default.rect(node, point);\n    }\n    const dx = node.x ?? 0;\n    const dy = node.y ?? 0;\n    const nodeHeight = node.height ?? 0;\n    let points = [];\n    if (topLabel) {\n      points = [\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n        { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n        { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n      ];\n    } else {\n      points = [\n        { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n        { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n        { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n        { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n        { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n        { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n        { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight }\n      ];\n    }\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(imageSquare, \"imageSquare\");\n\n// src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts\nimport rough26 from \"roughjs\";\nasync function inv_trapezoid(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const points = [\n    { x: 0, y: 0 },\n    { x: w, y: 0 },\n    { x: w + 3 * h / 6, y: -h },\n    { x: -3 * h / 6, y: -h }\n  ];\n  let polygon;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough26.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createPathFromPoints(points);\n    const roughNode = rc.path(pathData, options);\n    polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n    if (cssStyles) {\n      polygon.attr(\"style\", cssStyles);\n    }\n  } else {\n    polygon = insertPolygonShape(shapeSvg, w, h, points);\n  }\n  if (nodeStyles) {\n    polygon.attr(\"style\", nodeStyles);\n  }\n  node.width = w;\n  node.height = h;\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(inv_trapezoid, \"inv_trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/drawRect.ts\nimport rough27 from \"roughjs\";\nasync function drawRect(parent, node, options) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n  const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n  const x = -totalWidth / 2;\n  const y = -totalHeight / 2;\n  let rect2;\n  let { rx, ry } = node;\n  const { cssStyles } = node;\n  if (options?.rx && options.ry) {\n    rx = options.rx;\n    ry = options.ry;\n  }\n  if (node.look === \"handDrawn\") {\n    const rc = rough27.svg(shapeSvg);\n    const options2 = userNodeOverrides(node, {});\n    const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n    rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n    rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n  } else {\n    rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n    rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", handleUndefinedAttr(rx)).attr(\"ry\", handleUndefinedAttr(ry)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n  }\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(drawRect, \"drawRect\");\n\n// src/rendering-util/rendering-elements/shapes/labelRect.ts\nasync function labelRect(parent, node) {\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"label\");\n  const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n  const totalWidth = 0.1;\n  const totalHeight = 0.1;\n  rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n  shapeSvg.attr(\"class\", \"label edgeLabel\");\n  label.attr(\n    \"transform\",\n    `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(labelRect, \"labelRect\");\n\n// src/rendering-util/rendering-elements/shapes/leanLeft.ts\nimport rough28 from \"roughjs\";\nasync function lean_left(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n  const points = [\n    { x: 0, y: 0 },\n    { x: w + 3 * h / 6, y: 0 },\n    { x: w, y: -h },\n    { x: -(3 * h) / 6, y: -h }\n  ];\n  let polygon;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough28.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createPathFromPoints(points);\n    const roughNode = rc.path(pathData, options);\n    polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n    if (cssStyles) {\n      polygon.attr(\"style\", cssStyles);\n    }\n  } else {\n    polygon = insertPolygonShape(shapeSvg, w, h, points);\n  }\n  if (nodeStyles) {\n    polygon.attr(\"style\", nodeStyles);\n  }\n  node.width = w;\n  node.height = h;\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(lean_left, \"lean_left\");\n\n// src/rendering-util/rendering-elements/shapes/leanRight.ts\nimport rough29 from \"roughjs\";\nasync function lean_right(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n  const points = [\n    { x: -3 * h / 6, y: 0 },\n    { x: w, y: 0 },\n    { x: w + 3 * h / 6, y: -h },\n    { x: 0, y: -h }\n  ];\n  let polygon;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough29.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createPathFromPoints(points);\n    const roughNode = rc.path(pathData, options);\n    polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n    if (cssStyles) {\n      polygon.attr(\"style\", cssStyles);\n    }\n  } else {\n    polygon = insertPolygonShape(shapeSvg, w, h, points);\n  }\n  if (nodeStyles) {\n    polygon.attr(\"style\", nodeStyles);\n  }\n  node.width = w;\n  node.height = h;\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(lean_right, \"lean_right\");\n\n// src/rendering-util/rendering-elements/shapes/lightningBolt.ts\nimport rough30 from \"roughjs\";\nfunction lightningBolt(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.label = \"\";\n  node.labelStyle = labelStyles;\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n  const { cssStyles } = node;\n  const width = Math.max(35, node?.width ?? 0);\n  const height = Math.max(35, node?.height ?? 0);\n  const gap = 7;\n  const points = [\n    { x: width, y: 0 },\n    { x: 0, y: height + gap / 2 },\n    { x: width - 2 * gap, y: height + gap / 2 },\n    { x: 0, y: 2 * height },\n    { x: width, y: height - gap / 2 },\n    { x: 2 * gap, y: height - gap / 2 }\n  ];\n  const rc = rough30.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const linePath = createPathFromPoints(points);\n  const lineNode = rc.path(linePath, options);\n  const lightningBolt2 = shapeSvg.insert(() => lineNode, \":first-child\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    lightningBolt2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    lightningBolt2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  lightningBolt2.attr(\"transform\", `translate(-${width / 2},${-height})`);\n  updateNodeBounds(node, lightningBolt2);\n  node.intersect = function(point) {\n    log.info(\"lightningBolt intersect\", node, point);\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(lightningBolt, \"lightningBolt\");\n\n// src/rendering-util/rendering-elements/shapes/linedCylinder.ts\nimport rough31 from \"roughjs\";\nvar createCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n  return [\n    `M${x},${y + ry}`,\n    `a${rx},${ry} 0,0,0 ${width},0`,\n    `a${rx},${ry} 0,0,0 ${-width},0`,\n    `l0,${height}`,\n    `a${rx},${ry} 0,0,0 ${width},0`,\n    `l0,${-height}`,\n    `M${x},${y + ry + outerOffset}`,\n    `a${rx},${ry} 0,0,0 ${width},0`\n  ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n  return [\n    `M${x},${y + ry}`,\n    `M${x + width},${y + ry}`,\n    `a${rx},${ry} 0,0,0 ${-width},0`,\n    `l0,${height}`,\n    `a${rx},${ry} 0,0,0 ${width},0`,\n    `l0,${-height}`,\n    `M${x},${y + ry + outerOffset}`,\n    `a${rx},${ry} 0,0,0 ${width},0`\n  ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n  return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function linedCylinder(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0), node.width ?? 0);\n  const rx = w / 2;\n  const ry = rx / (2.5 + w / 50);\n  const h = Math.max(bbox.height + ry + (node.padding ?? 0), node.height ?? 0);\n  const outerOffset = h * 0.1;\n  let cylinder2;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough31.svg(shapeSvg);\n    const outerPathData = createOuterCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n    const innerPathData = createInnerCylinderPathD2(0, ry, w, h, rx, ry);\n    const options = userNodeOverrides(node, {});\n    const outerNode = rc.path(outerPathData, options);\n    const innerLine = rc.path(innerPathData, options);\n    const innerLineEl = shapeSvg.insert(() => innerLine, \":first-child\");\n    innerLineEl.attr(\"class\", \"line\");\n    cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n    cylinder2.attr(\"class\", \"basic label-container\");\n    if (cssStyles) {\n      cylinder2.attr(\"style\", cssStyles);\n    }\n  } else {\n    const pathData = createCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n    cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n  }\n  cylinder2.attr(\"label-offset-y\", ry);\n  cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n  updateNodeBounds(node, cylinder2);\n  label.attr(\n    \"transform\",\n    `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n  );\n  node.intersect = function(point) {\n    const pos = intersect_default.rect(node, point);\n    const x = pos.x - (node.x ?? 0);\n    if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n      let y = ry * ry * (1 - x * x / (rx * rx));\n      if (y > 0) {\n        y = Math.sqrt(y);\n      }\n      y = ry - y;\n      if (point.y - (node.y ?? 0) > 0) {\n        y = -y;\n      }\n      pos.y += y;\n    }\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(linedCylinder, \"linedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts\nimport rough32 from \"roughjs\";\nasync function linedWaveEdgedRect(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const waveAmplitude = h / 4;\n  const finalH = h + waveAmplitude;\n  const { cssStyles } = node;\n  const rc = rough32.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n    { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n    ...generateFullSineWavePoints(\n      -w / 2 - w / 2 * 0.1,\n      finalH / 2,\n      w / 2 + w / 2 * 0.1,\n      finalH / 2,\n      waveAmplitude,\n      0.8\n    ),\n    { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n    { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n    { x: -w / 2, y: -finalH / 2 },\n    { x: -w / 2, y: finalH / 2 * 1.1 },\n    { x: -w / 2, y: -finalH / 2 }\n  ];\n  const poly = rc.polygon(\n    points.map((p) => [p.x, p.y]),\n    options\n  );\n  const waveEdgeRect = shapeSvg.insert(() => poly, \":first-child\");\n  waveEdgeRect.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + (node.padding ?? 0) + w / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, waveEdgeRect);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(linedWaveEdgedRect, \"linedWaveEdgedRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiRect.ts\nimport rough33 from \"roughjs\";\nasync function multiRect(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const rectOffset = 5;\n  const x = -w / 2;\n  const y = -h / 2;\n  const { cssStyles } = node;\n  const rc = rough33.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  const outerPathPoints = [\n    { x: x - rectOffset, y: y + rectOffset },\n    { x: x - rectOffset, y: y + h + rectOffset },\n    { x: x + w - rectOffset, y: y + h + rectOffset },\n    { x: x + w - rectOffset, y: y + h },\n    { x: x + w, y: y + h },\n    { x: x + w, y: y + h - rectOffset },\n    { x: x + w + rectOffset, y: y + h - rectOffset },\n    { x: x + w + rectOffset, y: y - rectOffset },\n    { x: x + rectOffset, y: y - rectOffset },\n    { x: x + rectOffset, y },\n    { x, y },\n    { x, y: y + rectOffset }\n  ];\n  const innerPathPoints = [\n    { x, y: y + rectOffset },\n    { x: x + w - rectOffset, y: y + rectOffset },\n    { x: x + w - rectOffset, y: y + h },\n    { x: x + w, y: y + h },\n    { x: x + w, y },\n    { x, y }\n  ];\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const outerPath = createPathFromPoints(outerPathPoints);\n  const outerNode = rc.path(outerPath, options);\n  const innerPath = createPathFromPoints(innerPathPoints);\n  const innerNode = rc.path(innerPath, { ...options, fill: \"none\" });\n  const multiRect2 = shapeSvg.insert(() => innerNode, \":first-child\");\n  multiRect2.insert(() => outerNode, \":first-child\");\n  multiRect2.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    multiRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    multiRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, multiRect2);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, outerPathPoints, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(multiRect, \"multiRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts\nimport rough34 from \"roughjs\";\nasync function multiWaveEdgedRectangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const waveAmplitude = h / 4;\n  const finalH = h + waveAmplitude;\n  const x = -w / 2;\n  const y = -finalH / 2;\n  const rectOffset = 5;\n  const { cssStyles } = node;\n  const wavePoints = generateFullSineWavePoints(\n    x - rectOffset,\n    y + finalH + rectOffset,\n    x + w - rectOffset,\n    y + finalH + rectOffset,\n    waveAmplitude,\n    0.8\n  );\n  const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n  const outerPathPoints = [\n    { x: x - rectOffset, y: y + rectOffset },\n    { x: x - rectOffset, y: y + finalH + rectOffset },\n    ...wavePoints,\n    { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n    { x: x + w, y: lastWavePoint.y - rectOffset },\n    { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n    { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n    { x: x + w + rectOffset, y: y - rectOffset },\n    { x: x + rectOffset, y: y - rectOffset },\n    { x: x + rectOffset, y },\n    { x, y },\n    { x, y: y + rectOffset }\n  ];\n  const innerPathPoints = [\n    { x, y: y + rectOffset },\n    { x: x + w - rectOffset, y: y + rectOffset },\n    { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n    { x: x + w, y: lastWavePoint.y - rectOffset },\n    { x: x + w, y },\n    { x, y }\n  ];\n  const rc = rough34.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const outerPath = createPathFromPoints(outerPathPoints);\n  const outerNode = rc.path(outerPath, options);\n  const innerPath = createPathFromPoints(innerPathPoints);\n  const innerNode = rc.path(innerPath, options);\n  const shape = shapeSvg.insert(() => outerNode, \":first-child\");\n  shape.insert(() => innerNode);\n  shape.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    shape.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  shape.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n  label.attr(\n    \"transform\",\n    `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, shape);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, outerPathPoints, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(multiWaveEdgedRectangle, \"multiWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/note.ts\nimport rough35 from \"roughjs\";\nasync function note(parent, node, { config: { themeVariables } }) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart?.htmlLabels !== false;\n  if (!useHtmlLabels) {\n    node.centerLabel = true;\n  }\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const x = -totalWidth / 2;\n  const y = -totalHeight / 2;\n  const { cssStyles } = node;\n  const rc = rough35.svg(shapeSvg);\n  const options = userNodeOverrides(node, {\n    fill: themeVariables.noteBkgColor,\n    stroke: themeVariables.noteBorderColor\n  });\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n  const rect2 = shapeSvg.insert(() => noteShapeNode, \":first-child\");\n  rect2.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    rect2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(note, \"note\");\n\n// src/rendering-util/rendering-elements/shapes/question.ts\nimport rough36 from \"roughjs\";\nvar createDecisionBoxPathD = /* @__PURE__ */ __name((x, y, size) => {\n  return [\n    `M${x + size / 2},${y}`,\n    `L${x + size},${y - size / 2}`,\n    `L${x + size / 2},${y - size}`,\n    `L${x},${y - size / 2}`,\n    \"Z\"\n  ].join(\" \");\n}, \"createDecisionBoxPathD\");\nasync function question(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + node.padding;\n  const h = bbox.height + node.padding;\n  const s = w + h;\n  const points = [\n    { x: s / 2, y: 0 },\n    { x: s, y: -s / 2 },\n    { x: s / 2, y: -s },\n    { x: 0, y: -s / 2 }\n  ];\n  let polygon;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough36.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createDecisionBoxPathD(0, 0, s);\n    const roughNode = rc.path(pathData, options);\n    polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-s / 2}, ${s / 2})`);\n    if (cssStyles) {\n      polygon.attr(\"style\", cssStyles);\n    }\n  } else {\n    polygon = insertPolygonShape(shapeSvg, s, s, points);\n  }\n  if (nodeStyles) {\n    polygon.attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    log.debug(\n      \"APA12 Intersect called SPLIT\\npoint:\",\n      point,\n      \"\\nnode:\\n\",\n      node,\n      \"\\nres:\",\n      intersect_default.polygon(node, points, point)\n    );\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(question, \"question\");\n\n// src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts\nimport rough37 from \"roughjs\";\nasync function rect_left_inv_arrow(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n  const x = -w / 2;\n  const y = -h / 2;\n  const notch = y / 2;\n  const points = [\n    { x: x + notch, y },\n    { x, y: 0 },\n    { x: x + notch, y: -y },\n    { x: -x, y: -y },\n    { x: -x, y }\n  ];\n  const { cssStyles } = node;\n  const rc = rough37.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const pathData = createPathFromPoints(points);\n  const roughNode = rc.path(pathData, options);\n  const polygon = shapeSvg.insert(() => roughNode, \":first-child\");\n  polygon.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  polygon.attr(\"transform\", `translate(${-notch / 2},0)`);\n  label.attr(\n    \"transform\",\n    `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(rect_left_inv_arrow, \"rect_left_inv_arrow\");\n\n// src/rendering-util/rendering-elements/shapes/rectWithTitle.ts\nimport { select as select4 } from \"d3\";\nimport rough38 from \"roughjs\";\nasync function rectWithTitle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  let classes;\n  if (!node.cssClasses) {\n    classes = \"node default\";\n  } else {\n    classes = \"node \" + node.cssClasses;\n  }\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n  const g = shapeSvg.insert(\"g\");\n  const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", nodeStyles);\n  const description = node.description;\n  const title = node.label;\n  const text2 = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n  let bbox = { width: 0, height: 0 };\n  if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n    const div2 = text2.children[0];\n    const dv2 = select4(text2);\n    bbox = div2.getBoundingClientRect();\n    dv2.attr(\"width\", bbox.width);\n    dv2.attr(\"height\", bbox.height);\n  }\n  log.info(\"Text 2\", description);\n  const textRows = description || [];\n  const titleBox = text2.getBBox();\n  const descr = label.node().appendChild(\n    await createLabel_default(\n      textRows.join ? textRows.join(\"<br/>\") : textRows,\n      node.labelStyle,\n      true,\n      true\n    )\n  );\n  const div = descr.children[0];\n  const dv = select4(descr);\n  bbox = div.getBoundingClientRect();\n  dv.attr(\"width\", bbox.width);\n  dv.attr(\"height\", bbox.height);\n  const halfPadding = (node.padding || 0) / 2;\n  select4(descr).attr(\n    \"transform\",\n    \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n  );\n  select4(text2).attr(\n    \"transform\",\n    \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n  );\n  bbox = label.node().getBBox();\n  label.attr(\n    \"transform\",\n    \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n  );\n  const totalWidth = bbox.width + (node.padding || 0);\n  const totalHeight = bbox.height + (node.padding || 0);\n  const x = -bbox.width / 2 - halfPadding;\n  const y = -bbox.height / 2 - halfPadding;\n  let rect2;\n  let innerLine;\n  if (node.look === \"handDrawn\") {\n    const rc = rough38.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const roughNode = rc.path(\n      createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n      options\n    );\n    const roughLine = rc.line(\n      -bbox.width / 2 - halfPadding,\n      -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n      bbox.width / 2 + halfPadding,\n      -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n      options\n    );\n    innerLine = shapeSvg.insert(() => {\n      log.debug(\"Rough node insert CXC\", roughNode);\n      return roughLine;\n    }, \":first-child\");\n    rect2 = shapeSvg.insert(() => {\n      log.debug(\"Rough node insert CXC\", roughNode);\n      return roughNode;\n    }, \":first-child\");\n  } else {\n    rect2 = g.insert(\"rect\", \":first-child\");\n    innerLine = g.insert(\"line\");\n    rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n    innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n  }\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nasync function roundedRect(parent, node) {\n  const options = {\n    rx: 5,\n    ry: 5,\n    classes: \"\",\n    labelPaddingX: (node?.padding || 0) * 1,\n    labelPaddingY: (node?.padding || 0) * 1\n  };\n  return drawRect(parent, node, options);\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough39 from \"roughjs\";\nasync function shadedProcess(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const halfPadding = node?.padding ?? 0;\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const x = -bbox.width / 2 - halfPadding;\n  const y = -bbox.height / 2 - halfPadding;\n  const { cssStyles } = node;\n  const rc = rough39.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x, y },\n    { x: x + w + 8, y },\n    { x: x + w + 8, y: y + h },\n    { x: x - 8, y: y + h },\n    { x: x - 8, y },\n    { x, y },\n    { x, y: y + h }\n  ];\n  const roughNode = rc.polygon(\n    points.map((p) => [p.x, p.y]),\n    options\n  );\n  const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n  rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  if (cssStyles && node.look !== \"handDrawn\") {\n    rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough40 from \"roughjs\";\nasync function slopedRect(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const x = -w / 2;\n  const y = -h / 2;\n  const { cssStyles } = node;\n  const rc = rough40.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x, y },\n    { x, y: y + h },\n    { x: x + w, y: y + h },\n    { x: x + w, y: y - h / 2 }\n  ];\n  const pathData = createPathFromPoints(points);\n  const shapeNode = rc.path(pathData, options);\n  const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n  polygon.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n  }\n  polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n  const options = {\n    rx: 0,\n    ry: 0,\n    classes: \"\",\n    labelPaddingX: (node?.padding || 0) * 2,\n    labelPaddingY: (node?.padding || 0) * 1\n  };\n  return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough41 from \"roughjs\";\nasync function stadium(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const h = bbox.height + node.padding;\n  const w = bbox.width + h / 4 + node.padding;\n  let rect2;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough41.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createRoundedRectPathD(-w / 2, -h / 2, w, h, h / 2);\n    const roughNode = rc.path(pathData, options);\n    rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n    rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n  } else {\n    rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n    rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n  }\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n  const options = {\n    rx: 5,\n    ry: 5,\n    classes: \"flowchart-node\"\n  };\n  return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough42 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { cssStyles } = node;\n  const { lineColor, stateBorder, nodeBorder } = themeVariables;\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n  const rc = rough42.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const roughNode = rc.circle(0, 0, 14, {\n    ...options,\n    stroke: lineColor,\n    strokeWidth: 2\n  });\n  const innerFill = stateBorder ?? nodeBorder;\n  const roughInnerNode = rc.circle(0, 0, 5, {\n    ...options,\n    fill: innerFill,\n    stroke: innerFill,\n    strokeWidth: 2,\n    fillStyle: \"solid\"\n  });\n  const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n  circle2.insert(() => roughInnerNode);\n  if (cssStyles) {\n    circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles) {\n    circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, circle2);\n  node.intersect = function(point) {\n    return intersect_default.circle(node, 7, point);\n  };\n  return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough43 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n  const { lineColor } = themeVariables;\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n  let circle2;\n  if (node.look === \"handDrawn\") {\n    const rc = rough43.svg(shapeSvg);\n    const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n    circle2 = shapeSvg.insert(() => roughNode);\n    circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n  } else {\n    circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n    circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n  }\n  updateNodeBounds(node, circle2);\n  node.intersect = function(point) {\n    return intersect_default.circle(node, 7, point);\n  };\n  return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough44 from \"roughjs\";\nasync function subroutine(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const halfPadding = (node?.padding || 0) / 2;\n  const w = bbox.width + node.padding;\n  const h = bbox.height + node.padding;\n  const x = -bbox.width / 2 - halfPadding;\n  const y = -bbox.height / 2 - halfPadding;\n  const points = [\n    { x: 0, y: 0 },\n    { x: w, y: 0 },\n    { x: w, y: -h },\n    { x: 0, y: -h },\n    { x: 0, y: 0 },\n    { x: -8, y: 0 },\n    { x: w + 8, y: 0 },\n    { x: w + 8, y: -h },\n    { x: -8, y: -h },\n    { x: -8, y: 0 }\n  ];\n  if (node.look === \"handDrawn\") {\n    const rc = rough44.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n    const l1 = rc.line(x, y, x, y + h, options);\n    const l2 = rc.line(x + w, y, x + w, y + h, options);\n    shapeSvg.insert(() => l1, \":first-child\");\n    shapeSvg.insert(() => l2, \":first-child\");\n    const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n    const { cssStyles } = node;\n    rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n    updateNodeBounds(node, rect2);\n  } else {\n    const el = insertPolygonShape(shapeSvg, w, h, points);\n    if (nodeStyles) {\n      el.attr(\"style\", nodeStyles);\n    }\n    updateNodeBounds(node, el);\n  }\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough45 from \"roughjs\";\nasync function taggedRect(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const x = -w / 2;\n  const y = -h / 2;\n  const tagWidth = 0.2 * h;\n  const tagHeight = 0.2 * h;\n  const { cssStyles } = node;\n  const rc = rough45.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  const rectPoints = [\n    { x: x - tagWidth / 2, y },\n    { x: x + w + tagWidth / 2, y },\n    { x: x + w + tagWidth / 2, y: y + h },\n    { x: x - tagWidth / 2, y: y + h }\n  ];\n  const tagPoints = [\n    { x: x + w - tagWidth / 2, y: y + h },\n    { x: x + w + tagWidth / 2, y: y + h },\n    { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n  ];\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const rectPath = createPathFromPoints(rectPoints);\n  const rectNode = rc.path(rectPath, options);\n  const tagPath = createPathFromPoints(tagPoints);\n  const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n  const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n  taggedRect2.insert(() => rectNode, \":first-child\");\n  taggedRect2.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, taggedRect2);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, rectPoints, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough46 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const waveAmplitude = h / 4;\n  const tagWidth = 0.2 * w;\n  const tagHeight = 0.2 * h;\n  const finalH = h + waveAmplitude;\n  const { cssStyles } = node;\n  const rc = rough46.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n    ...generateFullSineWavePoints(\n      -w / 2 - w / 2 * 0.1,\n      finalH / 2,\n      w / 2 + w / 2 * 0.1,\n      finalH / 2,\n      waveAmplitude,\n      0.8\n    ),\n    { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n    { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n  ];\n  const x = -w / 2 + w / 2 * 0.1;\n  const y = -finalH / 2 - tagHeight * 0.4;\n  const tagPoints = [\n    { x: x + w - tagWidth, y: (y + h) * 1.4 },\n    { x: x + w, y: y + h - tagHeight },\n    { x: x + w, y: (y + h) * 0.9 },\n    ...generateFullSineWavePoints(\n      x + w,\n      (y + h) * 1.3,\n      x + w - tagWidth,\n      (y + h) * 1.5,\n      -h * 0.03,\n      0.5\n    )\n  ];\n  const waveEdgeRectPath = createPathFromPoints(points);\n  const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n  const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n  const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n    ...options,\n    fillStyle: \"solid\"\n  });\n  const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n  waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n  waveEdgeRect.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, waveEdgeRect);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n  const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n  const x = -totalWidth / 2;\n  const y = -totalHeight / 2;\n  const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n  rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough47 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n  return `M${x},${y}\n    a${rx},${ry} 0,0,1 ${0},${-height}\n    l${width},${0}\n    a${rx},${ry} 0,0,1 ${0},${height}\n    M${width},${-height}\n    a${rx},${ry} 0,0,0 ${0},${height}\n    l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n  return [\n    `M${x},${y}`,\n    `M${x + width},${y}`,\n    `a${rx},${ry} 0,0,0 ${0},${-height}`,\n    `l${-width},0`,\n    `a${rx},${ry} 0,0,0 ${0},${height}`,\n    `l${width},0`\n  ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n  return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function tiltedCylinder(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n    parent,\n    node,\n    getNodeClasses(node)\n  );\n  const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n  const h = bbox.height + labelPadding;\n  const ry = h / 2;\n  const rx = ry / (2.5 + h / 50);\n  const w = bbox.width + rx + labelPadding;\n  const { cssStyles } = node;\n  let cylinder2;\n  if (node.look === \"handDrawn\") {\n    const rc = rough47.svg(shapeSvg);\n    const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n    const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n    const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n    const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n    cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n    cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n    cylinder2.attr(\"class\", \"basic label-container\");\n    if (cssStyles) {\n      cylinder2.attr(\"style\", cssStyles);\n    }\n  } else {\n    const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n    cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n    cylinder2.attr(\"class\", \"basic label-container\");\n    if (cssStyles) {\n      cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n    }\n    if (nodeStyles) {\n      cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n    }\n  }\n  cylinder2.attr(\"label-offset-x\", rx);\n  cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n  label.attr(\n    \"transform\",\n    `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, cylinder2);\n  node.intersect = function(point) {\n    const pos = intersect_default.rect(node, point);\n    const y = pos.y - (node.y ?? 0);\n    if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n      let x = rx * rx * (1 - y * y / (ry * ry));\n      if (x != 0) {\n        x = Math.sqrt(Math.abs(x));\n      }\n      x = rx - x;\n      if (point.x - (node.x ?? 0) > 0) {\n        x = -x;\n      }\n      pos.x += x;\n    }\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough48 from \"roughjs\";\nasync function trapezoid(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = bbox.width + node.padding;\n  const h = bbox.height + node.padding;\n  const points = [\n    { x: -3 * h / 6, y: 0 },\n    { x: w + 3 * h / 6, y: 0 },\n    { x: w, y: -h },\n    { x: 0, y: -h }\n  ];\n  let polygon;\n  const { cssStyles } = node;\n  if (node.look === \"handDrawn\") {\n    const rc = rough48.svg(shapeSvg);\n    const options = userNodeOverrides(node, {});\n    const pathData = createPathFromPoints(points);\n    const roughNode = rc.path(pathData, options);\n    polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n    if (cssStyles) {\n      polygon.attr(\"style\", cssStyles);\n    }\n  } else {\n    polygon = insertPolygonShape(shapeSvg, w, h, points);\n  }\n  if (nodeStyles) {\n    polygon.attr(\"style\", nodeStyles);\n  }\n  node.width = w;\n  node.height = h;\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough49 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const minWidth = 60, minHeight = 20;\n  const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const { cssStyles } = node;\n  const rc = rough49.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x: -w / 2 * 0.8, y: -h / 2 },\n    { x: w / 2 * 0.8, y: -h / 2 },\n    { x: w / 2, y: -h / 2 * 0.6 },\n    { x: w / 2, y: h / 2 },\n    { x: -w / 2, y: h / 2 },\n    { x: -w / 2, y: -h / 2 * 0.6 }\n  ];\n  const pathData = createPathFromPoints(points);\n  const shapeNode = rc.path(pathData, options);\n  const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n  polygon.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, polygon);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough50 from \"roughjs\";\nasync function triangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n  const w = bbox.width + (node.padding ?? 0);\n  const h = w + bbox.height;\n  const tw = w + bbox.height;\n  const points = [\n    { x: 0, y: 0 },\n    { x: tw, y: 0 },\n    { x: tw / 2, y: -h }\n  ];\n  const { cssStyles } = node;\n  const rc = rough50.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const pathData = createPathFromPoints(points);\n  const roughNode = rc.path(pathData, options);\n  const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n  if (cssStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n  }\n  node.width = w;\n  node.height = h;\n  updateNodeBounds(node, polygon);\n  label.attr(\n    \"transform\",\n    `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n  );\n  node.intersect = function(point) {\n    log.info(\"Triangle intersect\", node, points, point);\n    return intersect_default.polygon(node, points, point);\n  };\n  return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough51 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const waveAmplitude = h / 8;\n  const finalH = h + waveAmplitude;\n  const { cssStyles } = node;\n  const minWidth = 70;\n  const widthDif = minWidth - w;\n  const extraW = widthDif > 0 ? widthDif / 2 : 0;\n  const rc = rough51.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x: -w / 2 - extraW, y: finalH / 2 },\n    ...generateFullSineWavePoints(\n      -w / 2 - extraW,\n      finalH / 2,\n      w / 2 + extraW,\n      finalH / 2,\n      waveAmplitude,\n      0.8\n    ),\n    { x: w / 2 + extraW, y: -finalH / 2 },\n    { x: -w / 2 - extraW, y: -finalH / 2 }\n  ];\n  const waveEdgeRectPath = createPathFromPoints(points);\n  const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n  const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n  waveEdgeRect.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n  label.attr(\n    \"transform\",\n    `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, waveEdgeRect);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n  const minWidth = 100;\n  const minHeight = 50;\n  const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const aspectRatio = baseWidth / baseHeight;\n  let w = baseWidth;\n  let h = baseHeight;\n  if (w > h * aspectRatio) {\n    h = w / aspectRatio;\n  } else {\n    w = h * aspectRatio;\n  }\n  w = Math.max(w, minWidth);\n  h = Math.max(h, minHeight);\n  const waveAmplitude = Math.min(h * 0.2, h / 4);\n  const finalH = h + waveAmplitude * 2;\n  const { cssStyles } = node;\n  const rc = rough52.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const points = [\n    { x: -w / 2, y: finalH / 2 },\n    ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n    { x: w / 2, y: -finalH / 2 },\n    ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n  ];\n  const waveRectPath = createPathFromPoints(points);\n  const waveRectNode = rc.path(waveRectPath, options);\n  const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n  waveRect.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, waveRect);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, points, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough53 from \"roughjs\";\nasync function windowPane(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n  const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n  const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n  const rectOffset = 5;\n  const x = -w / 2;\n  const y = -h / 2;\n  const { cssStyles } = node;\n  const rc = rough53.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  const outerPathPoints = [\n    { x: x - rectOffset, y: y - rectOffset },\n    { x: x - rectOffset, y: y + h },\n    { x: x + w, y: y + h },\n    { x: x + w, y: y - rectOffset }\n  ];\n  const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n                M${x - rectOffset},${y} L${x + w},${y}\n                M${x},${y - rectOffset} L${x},${y + h}`;\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const no = rc.path(path, options);\n  const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n  windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n  windowPane2.attr(\"class\", \"basic label-container\");\n  if (cssStyles && node.look !== \"handDrawn\") {\n    windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n  }\n  if (nodeStyles && node.look !== \"handDrawn\") {\n    windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n  }\n  label.attr(\n    \"transform\",\n    `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n  );\n  updateNodeBounds(node, windowPane2);\n  node.intersect = function(point) {\n    const pos = intersect_default.polygon(node, outerPathPoints, point);\n    return pos;\n  };\n  return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/erBox.ts\nimport rough54 from \"roughjs\";\nimport { select as select5 } from \"d3\";\nasync function erBox(parent, node) {\n  const entityNode = node;\n  if (entityNode.alias) {\n    node.label = entityNode.alias;\n  }\n  if (node.look === \"handDrawn\") {\n    const { themeVariables: themeVariables2 } = getConfig();\n    const { background } = themeVariables2;\n    const backgroundNode = {\n      ...node,\n      id: node.id + \"-background\",\n      look: \"default\",\n      cssStyles: [\"stroke: none\", `fill: ${background}`]\n    };\n    await erBox(parent, backgroundNode);\n  }\n  const config = getConfig();\n  node.useHtmlLabels = config.htmlLabels;\n  let PADDING = config.er?.diagramPadding ?? 10;\n  let TEXT_PADDING = config.er?.entityPadding ?? 6;\n  const { cssStyles } = node;\n  const { labelStyles } = styles2String(node);\n  if (entityNode.attributes.length === 0 && node.label) {\n    const options2 = {\n      rx: 0,\n      ry: 0,\n      labelPaddingX: PADDING,\n      labelPaddingY: PADDING * 1.5,\n      classes: \"\"\n    };\n    if (calculateTextWidth(node.label, config) + options2.labelPaddingX * 2 < config.er.minEntityWidth) {\n      node.width = config.er.minEntityWidth;\n    }\n    const shapeSvg2 = await drawRect(parent, node, options2);\n    if (!evaluate(config.htmlLabels)) {\n      const textElement = shapeSvg2.select(\"text\");\n      const bbox = textElement.node()?.getBBox();\n      textElement.attr(\"transform\", `translate(${-bbox.width / 2}, 0)`);\n    }\n    return shapeSvg2;\n  }\n  if (!config.htmlLabels) {\n    PADDING *= 1.25;\n    TEXT_PADDING *= 1.25;\n  }\n  let cssClasses = getNodeClasses(node);\n  if (!cssClasses) {\n    cssClasses = \"node default\";\n  }\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n  const nameBBox = await addText(shapeSvg, node.label ?? \"\", config, 0, 0, [\"name\"], labelStyles);\n  nameBBox.height += TEXT_PADDING;\n  let yOffset = 0;\n  const yOffsets = [];\n  let maxTypeWidth = 0;\n  let maxNameWidth = 0;\n  let maxKeysWidth = 0;\n  let maxCommentWidth = 0;\n  let keysPresent = true;\n  let commentPresent = true;\n  for (const attribute of entityNode.attributes) {\n    const typeBBox = await addText(\n      shapeSvg,\n      attribute.type,\n      config,\n      0,\n      yOffset,\n      [\"attribute-type\"],\n      labelStyles\n    );\n    maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n    const nameBBox2 = await addText(\n      shapeSvg,\n      attribute.name,\n      config,\n      0,\n      yOffset,\n      [\"attribute-name\"],\n      labelStyles\n    );\n    maxNameWidth = Math.max(maxNameWidth, nameBBox2.width + PADDING);\n    const keysBBox = await addText(\n      shapeSvg,\n      attribute.keys.join(),\n      config,\n      0,\n      yOffset,\n      [\"attribute-keys\"],\n      labelStyles\n    );\n    maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n    const commentBBox = await addText(\n      shapeSvg,\n      attribute.comment,\n      config,\n      0,\n      yOffset,\n      [\"attribute-comment\"],\n      labelStyles\n    );\n    maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n    yOffset += Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING;\n    yOffsets.push(yOffset);\n  }\n  yOffsets.pop();\n  let totalWidthSections = 4;\n  if (maxKeysWidth <= PADDING) {\n    keysPresent = false;\n    maxKeysWidth = 0;\n    totalWidthSections--;\n  }\n  if (maxCommentWidth <= PADDING) {\n    commentPresent = false;\n    maxCommentWidth = 0;\n    totalWidthSections--;\n  }\n  const shapeBBox = shapeSvg.node().getBBox();\n  if (nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) > 0) {\n    const difference = nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n    maxTypeWidth += difference / totalWidthSections;\n    maxNameWidth += difference / totalWidthSections;\n    if (maxKeysWidth > 0) {\n      maxKeysWidth += difference / totalWidthSections;\n    }\n    if (maxCommentWidth > 0) {\n      maxCommentWidth += difference / totalWidthSections;\n    }\n  }\n  const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n  const rc = rough54.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n  const h = Math.max(shapeBBox.height + (yOffsets[0] || yOffset) + TEXT_PADDING, node?.height || 0);\n  const x = -w / 2;\n  const y = -h / 2;\n  shapeSvg.selectAll(\"g:not(:first-child)\").each((_, i, nodes) => {\n    const text2 = select5(nodes[i]);\n    const transform = text2.attr(\"transform\");\n    let translateX = 0;\n    let translateY = 0;\n    if (transform) {\n      const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n      const translate = regex.exec(transform);\n      if (translate) {\n        translateX = parseFloat(translate[1]);\n        translateY = parseFloat(translate[2]);\n        if (text2.attr(\"class\").includes(\"attribute-name\")) {\n          translateX += maxTypeWidth;\n        } else if (text2.attr(\"class\").includes(\"attribute-keys\")) {\n          translateX += maxTypeWidth + maxNameWidth;\n        } else if (text2.attr(\"class\").includes(\"attribute-comment\")) {\n          translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n        }\n      }\n    }\n    text2.attr(\n      \"transform\",\n      `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n    );\n  });\n  shapeSvg.select(\".name\").attr(\"transform\", \"translate(\" + -nameBBox.width / 2 + \", \" + (y + TEXT_PADDING / 2) + \")\");\n  const roughRect = rc.rectangle(x, y, w, h, options);\n  const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"style\", cssStyles.join(\"\"));\n  const { themeVariables } = getConfig();\n  const { rowEven, rowOdd, nodeBorder } = themeVariables;\n  yOffsets.push(0);\n  for (const [i, yOffset2] of yOffsets.entries()) {\n    if (i === 0 && yOffsets.length > 1) {\n      continue;\n    }\n    const isEven = i % 2 === 0 && yOffset2 !== 0;\n    const roughRect2 = rc.rectangle(x, nameBBox.height + y + yOffset2, w, nameBBox.height, {\n      ...options,\n      fill: isEven ? rowEven : rowOdd,\n      stroke: nodeBorder\n    });\n    shapeSvg.insert(() => roughRect2, \"g.label\").attr(\"style\", cssStyles.join(\"\")).attr(\"class\", `row-rect-${i % 2 === 0 ? \"even\" : \"odd\"}`);\n  }\n  let roughLine = rc.line(x, nameBBox.height + y, w + x, nameBBox.height + y, options);\n  shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n  roughLine = rc.line(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, options);\n  shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n  if (keysPresent) {\n    roughLine = rc.line(\n      maxTypeWidth + maxNameWidth + x,\n      nameBBox.height + y,\n      maxTypeWidth + maxNameWidth + x,\n      h + y,\n      options\n    );\n    shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n  }\n  if (commentPresent) {\n    roughLine = rc.line(\n      maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n      nameBBox.height + y,\n      maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n      h + y,\n      options\n    );\n    shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n  }\n  for (const yOffset2 of yOffsets) {\n    roughLine = rc.line(\n      x,\n      nameBBox.height + y + yOffset2,\n      w + x,\n      nameBBox.height + y + yOffset2,\n      options\n    );\n    shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n  }\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(erBox, \"erBox\");\nasync function addText(shapeSvg, labelText, config, translateX = 0, translateY = 0, classes = [], style = \"\") {\n  const label = shapeSvg.insert(\"g\").attr(\"class\", `label ${classes.join(\" \")}`).attr(\"transform\", `translate(${translateX}, ${translateY})`).attr(\"style\", style);\n  if (labelText !== parseGenericTypes(labelText)) {\n    labelText = parseGenericTypes(labelText);\n    labelText = labelText.replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");\n  }\n  const text2 = label.node().appendChild(\n    await createText(\n      label,\n      labelText,\n      {\n        width: calculateTextWidth(labelText, config) + 100,\n        style,\n        useHtmlLabels: config.htmlLabels\n      },\n      config\n    )\n  );\n  if (labelText.includes(\"&lt;\") || labelText.includes(\"&gt;\")) {\n    let child = text2.children[0];\n    child.textContent = child.textContent.replaceAll(\"&lt;\", \"<\").replaceAll(\"&gt;\", \">\");\n    while (child.childNodes[0]) {\n      child = child.childNodes[0];\n      child.textContent = child.textContent.replaceAll(\"&lt;\", \"<\").replaceAll(\"&gt;\", \">\");\n    }\n  }\n  let bbox = text2.getBBox();\n  if (evaluate(config.htmlLabels)) {\n    const div = text2.children[0];\n    div.style.textAlign = \"start\";\n    const dv = select5(text2);\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  return bbox;\n}\n__name(addText, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select7 } from \"d3\";\nimport rough55 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select6 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n  const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n  let annotationGroup = null;\n  let labelGroup = null;\n  let membersGroup = null;\n  let methodsGroup = null;\n  let annotationGroupHeight = 0;\n  let labelGroupHeight = 0;\n  let membersGroupHeight = 0;\n  annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n  if (node.annotations.length > 0) {\n    const annotation = node.annotations[0];\n    await addText2(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n    const annotationGroupBBox = annotationGroup.node().getBBox();\n    annotationGroupHeight = annotationGroupBBox.height;\n  }\n  labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n  await addText2(labelGroup, node, 0, [\"font-weight: bolder\"]);\n  const labelGroupBBox = labelGroup.node().getBBox();\n  labelGroupHeight = labelGroupBBox.height;\n  membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n  let yOffset = 0;\n  for (const member of node.members) {\n    const height = await addText2(membersGroup, member, yOffset, [member.parseClassifier()]);\n    yOffset += height + TEXT_PADDING;\n  }\n  membersGroupHeight = membersGroup.node().getBBox().height;\n  if (membersGroupHeight <= 0) {\n    membersGroupHeight = GAP / 2;\n  }\n  methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n  let methodsYOffset = 0;\n  for (const method of node.methods) {\n    const height = await addText2(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n    methodsYOffset += height + TEXT_PADDING;\n  }\n  let bbox = shapeSvg.node().getBBox();\n  if (annotationGroup !== null) {\n    const annotationGroupBBox = annotationGroup.node().getBBox();\n    annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n  }\n  labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n  bbox = shapeSvg.node().getBBox();\n  membersGroup.attr(\n    \"transform\",\n    `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n  );\n  bbox = shapeSvg.node().getBBox();\n  methodsGroup.attr(\n    \"transform\",\n    `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n  );\n  bbox = shapeSvg.node().getBBox();\n  return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText2(parentGroup, node, yOffset, styles = []) {\n  const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n  const config = getConfig();\n  let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n  let textContent = \"\";\n  if (\"text\" in node) {\n    textContent = node.text;\n  } else {\n    textContent = node.label;\n  }\n  if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n    textContent = textContent.substring(1);\n  }\n  if (hasKatex(textContent)) {\n    useHtmlLabels = true;\n  }\n  const text2 = await createText(\n    textEl,\n    sanitizeText2(decodeEntities(textContent)),\n    {\n      width: calculateTextWidth(textContent, config) + 50,\n      // Add room for error when splitting text into multiple lines\n      classes: \"markdown-node-label\",\n      useHtmlLabels\n    },\n    config\n  );\n  let bbox;\n  let numberOfLines = 1;\n  if (!useHtmlLabels) {\n    if (styles.includes(\"font-weight: bolder\")) {\n      select6(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n    }\n    numberOfLines = text2.children.length;\n    const textChild = text2.children[0];\n    if (text2.textContent === \"\" || text2.textContent.includes(\"&gt\")) {\n      textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\"&gt;\", \">\").replaceAll(\"&lt;\", \"<\").trim();\n      const preserveSpace = textContent[1] === \" \";\n      if (preserveSpace) {\n        textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n      }\n    }\n    if (textChild.textContent === \"undefined\") {\n      textChild.textContent = \"\";\n    }\n    bbox = text2.getBBox();\n  } else {\n    const div = text2.children[0];\n    const dv = select6(text2);\n    numberOfLines = div.innerHTML.split(\"<br>\").length;\n    if (div.innerHTML.includes(\"</math>\")) {\n      numberOfLines += div.innerHTML.split(\"<mrow>\").length - 1;\n    }\n    const images = div.getElementsByTagName(\"img\");\n    if (images) {\n      const noImgText = textContent.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n      await Promise.all(\n        [...images].map(\n          (img) => new Promise((res) => {\n            function setupImage() {\n              img.style.display = \"flex\";\n              img.style.flexDirection = \"column\";\n              if (noImgText) {\n                const bodyFontSize = config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n                const enlargingFactor = 5;\n                const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n                img.style.minWidth = width;\n                img.style.maxWidth = width;\n              } else {\n                img.style.width = \"100%\";\n              }\n              res(img);\n            }\n            __name(setupImage, \"setupImage\");\n            setTimeout(() => {\n              if (img.complete) {\n                setupImage();\n              }\n            });\n            img.addEventListener(\"error\", setupImage);\n            img.addEventListener(\"load\", setupImage);\n          })\n        )\n      );\n    }\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n  return bbox.height;\n}\n__name(addText2, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n  const config = getConfig2();\n  const PADDING = config.class.padding ?? 12;\n  const GAP = PADDING;\n  const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n  const classNode = node;\n  classNode.annotations = classNode.annotations ?? [];\n  classNode.members = classNode.members ?? [];\n  classNode.methods = classNode.methods ?? [];\n  const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  node.cssStyles = classNode.styles || \"\";\n  const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n  if (!node.cssStyles) {\n    node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n  }\n  const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n  const rc = rough55.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const w = bbox.width;\n  let h = bbox.height;\n  if (classNode.members.length === 0 && classNode.methods.length === 0) {\n    h += GAP;\n  } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n    h += GAP * 2;\n  }\n  const x = -w / 2;\n  const y = -h / 2;\n  const roughRect = rc.rectangle(\n    x - PADDING,\n    y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n    w + 2 * PADDING,\n    h + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0),\n    options\n  );\n  const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n  rect2.attr(\"class\", \"basic label-container\");\n  const rectBBox = rect2.node().getBBox();\n  shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n    const text2 = select7(nodes[i]);\n    const transform = text2.attr(\"transform\");\n    let translateY = 0;\n    if (transform) {\n      const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n      const translate = regex.exec(transform);\n      if (translate) {\n        translateY = parseFloat(translate[2]);\n      }\n    }\n    let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n    if (!useHtmlLabels) {\n      newTranslateY -= 4;\n    }\n    let newTranslateX = x;\n    if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n      newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n      shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n        if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n          newTranslateX = 0;\n        }\n      });\n    }\n    text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n  });\n  const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n  const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n  const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n  if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n    const roughLine = rc.line(\n      rectBBox.x,\n      annotationGroupHeight + labelGroupHeight + y + PADDING,\n      rectBBox.x + rectBBox.width,\n      annotationGroupHeight + labelGroupHeight + y + PADDING,\n      options\n    );\n    const line = shapeSvg.insert(() => roughLine);\n    line.attr(\"class\", \"divider\").attr(\"style\", styles);\n  }\n  if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n    const roughLine = rc.line(\n      rectBBox.x,\n      annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n      rectBBox.x + rectBBox.width,\n      annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n      options\n    );\n    const line = shapeSvg.insert(() => roughLine);\n    line.attr(\"class\", \"divider\").attr(\"style\", styles);\n  }\n  if (classNode.look !== \"handDrawn\") {\n    shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n  }\n  rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n  shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n  if (node.labelStyle) {\n    shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n  } else {\n    shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n  }\n  if (!useHtmlLabels) {\n    const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n    const match = colorRegex.exec(styles);\n    if (match) {\n      const colorStyle = match[0].replace(\"color\", \"fill\");\n      shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n    } else if (labelStyles) {\n      const match2 = colorRegex.exec(labelStyles);\n      if (match2) {\n        const colorStyle = match2[0].replace(\"color\", \"fill\");\n        shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n      }\n    }\n  }\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/requirementBox.ts\nimport rough56 from \"roughjs\";\nimport { select as select8 } from \"d3\";\nasync function requirementBox(parent, node) {\n  const { labelStyles, nodeStyles } = styles2String(node);\n  node.labelStyle = labelStyles;\n  const requirementNode = node;\n  const elementNode = node;\n  const padding = 20;\n  const gap = 20;\n  const isRequirementNode = \"verifyMethod\" in node;\n  const classes = getNodeClasses(node);\n  const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId ?? node.id);\n  let typeHeight;\n  if (isRequirementNode) {\n    typeHeight = await addText3(\n      shapeSvg,\n      `&lt;&lt;${requirementNode.type}&gt;&gt;`,\n      0,\n      node.labelStyle\n    );\n  } else {\n    typeHeight = await addText3(shapeSvg, \"&lt;&lt;Element&gt;&gt;\", 0, node.labelStyle);\n  }\n  let accumulativeHeight = typeHeight;\n  const nameHeight = await addText3(\n    shapeSvg,\n    requirementNode.name,\n    accumulativeHeight,\n    node.labelStyle + \"; font-weight: bold;\"\n  );\n  accumulativeHeight += nameHeight + gap;\n  if (isRequirementNode) {\n    const idHeight = await addText3(\n      shapeSvg,\n      `${requirementNode.requirementId ? `Id: ${requirementNode.requirementId}` : \"\"}`,\n      accumulativeHeight,\n      node.labelStyle\n    );\n    accumulativeHeight += idHeight;\n    const textHeight = await addText3(\n      shapeSvg,\n      `${requirementNode.text ? `Text: ${requirementNode.text}` : \"\"}`,\n      accumulativeHeight,\n      node.labelStyle\n    );\n    accumulativeHeight += textHeight;\n    const riskHeight = await addText3(\n      shapeSvg,\n      `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : \"\"}`,\n      accumulativeHeight,\n      node.labelStyle\n    );\n    accumulativeHeight += riskHeight;\n    await addText3(\n      shapeSvg,\n      `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : \"\"}`,\n      accumulativeHeight,\n      node.labelStyle\n    );\n  } else {\n    const typeHeight2 = await addText3(\n      shapeSvg,\n      `${elementNode.type ? `Type: ${elementNode.type}` : \"\"}`,\n      accumulativeHeight,\n      node.labelStyle\n    );\n    accumulativeHeight += typeHeight2;\n    await addText3(\n      shapeSvg,\n      `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : \"\"}`,\n      accumulativeHeight,\n      node.labelStyle\n    );\n  }\n  const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n  const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n  const x = -totalWidth / 2;\n  const y = -totalHeight / 2;\n  const rc = rough56.svg(shapeSvg);\n  const options = userNodeOverrides(node, {});\n  if (node.look !== \"handDrawn\") {\n    options.roughness = 0;\n    options.fillStyle = \"solid\";\n  }\n  const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n  const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n  rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n  shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n    const text2 = select8(nodes[i]);\n    const transform = text2.attr(\"transform\");\n    let translateX = 0;\n    let translateY = 0;\n    if (transform) {\n      const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n      const translate = regex.exec(transform);\n      if (translate) {\n        translateX = parseFloat(translate[1]);\n        translateY = parseFloat(translate[2]);\n      }\n    }\n    const newTranslateY = translateY - totalHeight / 2;\n    let newTranslateX = x + padding / 2;\n    if (i === 0 || i === 1) {\n      newTranslateX = translateX;\n    }\n    text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY + padding})`);\n  });\n  if (accumulativeHeight > typeHeight + nameHeight + gap) {\n    const roughLine = rc.line(\n      x,\n      y + typeHeight + nameHeight + gap,\n      x + totalWidth,\n      y + typeHeight + nameHeight + gap,\n      options\n    );\n    const dividerLine = shapeSvg.insert(() => roughLine);\n    dividerLine.attr(\"style\", nodeStyles);\n  }\n  updateNodeBounds(node, rect2);\n  node.intersect = function(point) {\n    return intersect_default.rect(node, point);\n  };\n  return shapeSvg;\n}\n__name(requirementBox, \"requirementBox\");\nasync function addText3(parentGroup, inputText, yOffset, style = \"\") {\n  if (inputText === \"\") {\n    return 0;\n  }\n  const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", style);\n  const config = getConfig2();\n  const useHtmlLabels = config.htmlLabels ?? true;\n  const text2 = await createText(\n    textEl,\n    sanitizeText2(decodeEntities(inputText)),\n    {\n      width: calculateTextWidth(inputText, config) + 50,\n      // Add room for error when splitting text into multiple lines\n      classes: \"markdown-node-label\",\n      useHtmlLabels,\n      style\n    },\n    config\n  );\n  let bbox;\n  if (!useHtmlLabels) {\n    const textChild = text2.children[0];\n    for (const child of textChild.children) {\n      child.textContent = child.textContent.replaceAll(\"&gt;\", \">\").replaceAll(\"&lt;\", \"<\");\n      if (style) {\n        child.setAttribute(\"style\", style);\n      }\n    }\n    bbox = text2.getBBox();\n    bbox.height += 6;\n  } else {\n    const div = text2.children[0];\n    const dv = select8(text2);\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  textEl.attr(\"transform\", `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n  return bbox.height;\n}\n__name(addText3, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough57 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n  switch (priority) {\n    case \"Very High\":\n      return \"red\";\n    case \"High\":\n      return \"orange\";\n    case \"Medium\":\n      return null;\n    // no stroke\n    case \"Low\":\n      return \"blue\";\n    case \"Very Low\":\n      return \"lightblue\";\n  }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n  const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n  kanbanNode.labelStyle = labelStyles || \"\";\n  const labelPaddingX = 10;\n  const orgWidth = kanbanNode.width;\n  kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n  const {\n    shapeSvg,\n    bbox,\n    label: labelElTitle\n  } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n  const padding = kanbanNode.padding || 10;\n  let ticketUrl = \"\";\n  let link;\n  if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n    ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n    link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n  }\n  const options = {\n    useHtmlLabels: kanbanNode.useHtmlLabels,\n    labelStyle: kanbanNode.labelStyle || \"\",\n    width: kanbanNode.width,\n    img: kanbanNode.img,\n    padding: kanbanNode.padding || 8,\n    centerLabel: false\n  };\n  let labelEl, bbox2;\n  if (link) {\n    ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n      link,\n      \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n      options\n    ));\n  } else {\n    ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n      shapeSvg,\n      \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n      options\n    ));\n  }\n  const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n    shapeSvg,\n    \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n    options\n  );\n  kanbanNode.width = orgWidth;\n  const labelPaddingY = 10;\n  const totalWidth = kanbanNode?.width || 0;\n  const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n  const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n  const x = -totalWidth / 2;\n  const y = -totalHeight / 2;\n  labelElTitle.attr(\n    \"transform\",\n    \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n  );\n  labelEl.attr(\n    \"transform\",\n    \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n  );\n  labelElAssigned.attr(\n    \"transform\",\n    \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n  );\n  let rect2;\n  const { rx, ry } = kanbanNode;\n  const { cssStyles } = kanbanNode;\n  if (kanbanNode.look === \"handDrawn\") {\n    const rc = rough57.svg(shapeSvg);\n    const options2 = userNodeOverrides(kanbanNode, {});\n    const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n    rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n    rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n  } else {\n    rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n    rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n    const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n    if (priority) {\n      const line = shapeSvg.append(\"line\");\n      const lineX = x + 2;\n      const y1 = y + Math.floor((rx ?? 0) / 2);\n      const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n      line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n    }\n  }\n  updateNodeBounds(kanbanNode, rect2);\n  kanbanNode.height = totalHeight;\n  kanbanNode.intersect = function(point) {\n    return intersect_default.rect(kanbanNode, point);\n  };\n  return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n  {\n    semanticName: \"Process\",\n    name: \"Rectangle\",\n    shortName: \"rect\",\n    description: \"Standard process shape\",\n    aliases: [\"proc\", \"process\", \"rectangle\"],\n    internalAliases: [\"squareRect\"],\n    handler: squareRect2\n  },\n  {\n    semanticName: \"Event\",\n    name: \"Rounded Rectangle\",\n    shortName: \"rounded\",\n    description: \"Represents an event\",\n    aliases: [\"event\"],\n    internalAliases: [\"roundedRect\"],\n    handler: roundedRect\n  },\n  {\n    semanticName: \"Terminal Point\",\n    name: \"Stadium\",\n    shortName: \"stadium\",\n    description: \"Terminal point\",\n    aliases: [\"terminal\", \"pill\"],\n    handler: stadium\n  },\n  {\n    semanticName: \"Subprocess\",\n    name: \"Framed Rectangle\",\n    shortName: \"fr-rect\",\n    description: \"Subprocess\",\n    aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n    handler: subroutine\n  },\n  {\n    semanticName: \"Database\",\n    name: \"Cylinder\",\n    shortName: \"cyl\",\n    description: \"Database storage\",\n    aliases: [\"db\", \"database\", \"cylinder\"],\n    handler: cylinder\n  },\n  {\n    semanticName: \"Start\",\n    name: \"Circle\",\n    shortName: \"circle\",\n    description: \"Starting point\",\n    aliases: [\"circ\"],\n    handler: circle\n  },\n  {\n    semanticName: \"Decision\",\n    name: \"Diamond\",\n    shortName: \"diam\",\n    description: \"Decision-making step\",\n    aliases: [\"decision\", \"diamond\", \"question\"],\n    handler: question\n  },\n  {\n    semanticName: \"Prepare Conditional\",\n    name: \"Hexagon\",\n    shortName: \"hex\",\n    description: \"Preparation or condition step\",\n    aliases: [\"hexagon\", \"prepare\"],\n    handler: hexagon\n  },\n  {\n    semanticName: \"Data Input/Output\",\n    name: \"Lean Right\",\n    shortName: \"lean-r\",\n    description: \"Represents input or output\",\n    aliases: [\"lean-right\", \"in-out\"],\n    internalAliases: [\"lean_right\"],\n    handler: lean_right\n  },\n  {\n    semanticName: \"Data Input/Output\",\n    name: \"Lean Left\",\n    shortName: \"lean-l\",\n    description: \"Represents output or input\",\n    aliases: [\"lean-left\", \"out-in\"],\n    internalAliases: [\"lean_left\"],\n    handler: lean_left\n  },\n  {\n    semanticName: \"Priority Action\",\n    name: \"Trapezoid Base Bottom\",\n    shortName: \"trap-b\",\n    description: \"Priority action\",\n    aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n    handler: trapezoid\n  },\n  {\n    semanticName: \"Manual Operation\",\n    name: \"Trapezoid Base Top\",\n    shortName: \"trap-t\",\n    description: \"Represents a manual task\",\n    aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n    internalAliases: [\"inv_trapezoid\"],\n    handler: inv_trapezoid\n  },\n  {\n    semanticName: \"Stop\",\n    name: \"Double Circle\",\n    shortName: \"dbl-circ\",\n    description: \"Represents a stop point\",\n    aliases: [\"double-circle\"],\n    internalAliases: [\"doublecircle\"],\n    handler: doublecircle\n  },\n  {\n    semanticName: \"Text Block\",\n    name: \"Text Block\",\n    shortName: \"text\",\n    description: \"Text block\",\n    handler: text\n  },\n  {\n    semanticName: \"Card\",\n    name: \"Notched Rectangle\",\n    shortName: \"notch-rect\",\n    description: \"Represents a card\",\n    aliases: [\"card\", \"notched-rectangle\"],\n    handler: card\n  },\n  {\n    semanticName: \"Lined/Shaded Process\",\n    name: \"Lined Rectangle\",\n    shortName: \"lin-rect\",\n    description: \"Lined process shape\",\n    aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n    handler: shadedProcess\n  },\n  {\n    semanticName: \"Start\",\n    name: \"Small Circle\",\n    shortName: \"sm-circ\",\n    description: \"Small starting point\",\n    aliases: [\"start\", \"small-circle\"],\n    internalAliases: [\"stateStart\"],\n    handler: stateStart\n  },\n  {\n    semanticName: \"Stop\",\n    name: \"Framed Circle\",\n    shortName: \"fr-circ\",\n    description: \"Stop point\",\n    aliases: [\"stop\", \"framed-circle\"],\n    internalAliases: [\"stateEnd\"],\n    handler: stateEnd\n  },\n  {\n    semanticName: \"Fork/Join\",\n    name: \"Filled Rectangle\",\n    shortName: \"fork\",\n    description: \"Fork or join in process flow\",\n    aliases: [\"join\"],\n    internalAliases: [\"forkJoin\"],\n    handler: forkJoin\n  },\n  {\n    semanticName: \"Collate\",\n    name: \"Hourglass\",\n    shortName: \"hourglass\",\n    description: \"Represents a collate operation\",\n    aliases: [\"hourglass\", \"collate\"],\n    handler: hourglass\n  },\n  {\n    semanticName: \"Comment\",\n    name: \"Curly Brace\",\n    shortName: \"brace\",\n    description: \"Adds a comment\",\n    aliases: [\"comment\", \"brace-l\"],\n    handler: curlyBraceLeft\n  },\n  {\n    semanticName: \"Comment Right\",\n    name: \"Curly Brace\",\n    shortName: \"brace-r\",\n    description: \"Adds a comment\",\n    handler: curlyBraceRight\n  },\n  {\n    semanticName: \"Comment with braces on both sides\",\n    name: \"Curly Braces\",\n    shortName: \"braces\",\n    description: \"Adds a comment\",\n    handler: curlyBraces\n  },\n  {\n    semanticName: \"Com Link\",\n    name: \"Lightning Bolt\",\n    shortName: \"bolt\",\n    description: \"Communication link\",\n    aliases: [\"com-link\", \"lightning-bolt\"],\n    handler: lightningBolt\n  },\n  {\n    semanticName: \"Document\",\n    name: \"Document\",\n    shortName: \"doc\",\n    description: \"Represents a document\",\n    aliases: [\"doc\", \"document\"],\n    handler: waveEdgedRectangle\n  },\n  {\n    semanticName: \"Delay\",\n    name: \"Half-Rounded Rectangle\",\n    shortName: \"delay\",\n    description: \"Represents a delay\",\n    aliases: [\"half-rounded-rectangle\"],\n    handler: halfRoundedRectangle\n  },\n  {\n    semanticName: \"Direct Access Storage\",\n    name: \"Horizontal Cylinder\",\n    shortName: \"h-cyl\",\n    description: \"Direct access storage\",\n    aliases: [\"das\", \"horizontal-cylinder\"],\n    handler: tiltedCylinder\n  },\n  {\n    semanticName: \"Disk Storage\",\n    name: \"Lined Cylinder\",\n    shortName: \"lin-cyl\",\n    description: \"Disk storage\",\n    aliases: [\"disk\", \"lined-cylinder\"],\n    handler: linedCylinder\n  },\n  {\n    semanticName: \"Display\",\n    name: \"Curved Trapezoid\",\n    shortName: \"curv-trap\",\n    description: \"Represents a display\",\n    aliases: [\"curved-trapezoid\", \"display\"],\n    handler: curvedTrapezoid\n  },\n  {\n    semanticName: \"Divided Process\",\n    name: \"Divided Rectangle\",\n    shortName: \"div-rect\",\n    description: \"Divided process shape\",\n    aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n    handler: dividedRectangle\n  },\n  {\n    semanticName: \"Extract\",\n    name: \"Triangle\",\n    shortName: \"tri\",\n    description: \"Extraction process\",\n    aliases: [\"extract\", \"triangle\"],\n    handler: triangle\n  },\n  {\n    semanticName: \"Internal Storage\",\n    name: \"Window Pane\",\n    shortName: \"win-pane\",\n    description: \"Internal storage\",\n    aliases: [\"internal-storage\", \"window-pane\"],\n    handler: windowPane\n  },\n  {\n    semanticName: \"Junction\",\n    name: \"Filled Circle\",\n    shortName: \"f-circ\",\n    description: \"Junction point\",\n    aliases: [\"junction\", \"filled-circle\"],\n    handler: filledCircle\n  },\n  {\n    semanticName: \"Loop Limit\",\n    name: \"Trapezoidal Pentagon\",\n    shortName: \"notch-pent\",\n    description: \"Loop limit step\",\n    aliases: [\"loop-limit\", \"notched-pentagon\"],\n    handler: trapezoidalPentagon\n  },\n  {\n    semanticName: \"Manual File\",\n    name: \"Flipped Triangle\",\n    shortName: \"flip-tri\",\n    description: \"Manual file operation\",\n    aliases: [\"manual-file\", \"flipped-triangle\"],\n    handler: flippedTriangle\n  },\n  {\n    semanticName: \"Manual Input\",\n    name: \"Sloped Rectangle\",\n    shortName: \"sl-rect\",\n    description: \"Manual input step\",\n    aliases: [\"manual-input\", \"sloped-rectangle\"],\n    handler: slopedRect\n  },\n  {\n    semanticName: \"Multi-Document\",\n    name: \"Stacked Document\",\n    shortName: \"docs\",\n    description: \"Multiple documents\",\n    aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n    handler: multiWaveEdgedRectangle\n  },\n  {\n    semanticName: \"Multi-Process\",\n    name: \"Stacked Rectangle\",\n    shortName: \"st-rect\",\n    description: \"Multiple processes\",\n    aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n    handler: multiRect\n  },\n  {\n    semanticName: \"Stored Data\",\n    name: \"Bow Tie Rectangle\",\n    shortName: \"bow-rect\",\n    description: \"Stored data\",\n    aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n    handler: bowTieRect\n  },\n  {\n    semanticName: \"Summary\",\n    name: \"Crossed Circle\",\n    shortName: \"cross-circ\",\n    description: \"Summary\",\n    aliases: [\"summary\", \"crossed-circle\"],\n    handler: crossedCircle\n  },\n  {\n    semanticName: \"Tagged Document\",\n    name: \"Tagged Document\",\n    shortName: \"tag-doc\",\n    description: \"Tagged document\",\n    aliases: [\"tag-doc\", \"tagged-document\"],\n    handler: taggedWaveEdgedRectangle\n  },\n  {\n    semanticName: \"Tagged Process\",\n    name: \"Tagged Rectangle\",\n    shortName: \"tag-rect\",\n    description: \"Tagged process\",\n    aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n    handler: taggedRect\n  },\n  {\n    semanticName: \"Paper Tape\",\n    name: \"Flag\",\n    shortName: \"flag\",\n    description: \"Paper tape\",\n    aliases: [\"paper-tape\"],\n    handler: waveRectangle\n  },\n  {\n    semanticName: \"Odd\",\n    name: \"Odd\",\n    shortName: \"odd\",\n    description: \"Odd shape\",\n    internalAliases: [\"rect_left_inv_arrow\"],\n    handler: rect_left_inv_arrow\n  },\n  {\n    semanticName: \"Lined Document\",\n    name: \"Lined Document\",\n    shortName: \"lin-doc\",\n    description: \"Lined document\",\n    aliases: [\"lined-document\"],\n    handler: linedWaveEdgedRect\n  }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n  const undocumentedShapes = {\n    // States\n    state,\n    choice,\n    note,\n    // Rectangles\n    rectWithTitle,\n    labelRect,\n    // Icons\n    iconSquare,\n    iconCircle,\n    icon,\n    iconRounded,\n    imageSquare,\n    anchor,\n    // Kanban diagram\n    kanbanItem,\n    // class diagram\n    classBox,\n    // er diagram\n    erBox,\n    // Requirement diagram\n    requirementBox\n  };\n  const entries = [\n    ...Object.entries(undocumentedShapes),\n    ...shapesDefs.flatMap((shape) => {\n      const aliases = [\n        shape.shortName,\n        ...\"aliases\" in shape ? shape.aliases : [],\n        ...\"internalAliases\" in shape ? shape.internalAliases : []\n      ];\n      return aliases.map((alias) => [alias, shape.handler]);\n    })\n  ];\n  return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n  return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n  let newEl;\n  let el;\n  if (node.shape === \"rect\") {\n    if (node.rx && node.ry) {\n      node.shape = \"roundedRect\";\n    } else {\n      node.shape = \"squareRect\";\n    }\n  }\n  const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n  if (!shapeHandler) {\n    throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n  }\n  if (node.link) {\n    let target;\n    if (renderOptions.config.securityLevel === \"sandbox\") {\n      target = \"_top\";\n    } else if (node.linkTarget) {\n      target = node.linkTarget || \"_blank\";\n    }\n    newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target ?? null);\n    el = await shapeHandler(newEl, node, renderOptions);\n  } else {\n    el = await shapeHandler(elem, node, renderOptions);\n    newEl = el;\n  }\n  if (node.tooltip) {\n    el.attr(\"title\", node.tooltip);\n  }\n  nodeElems.set(node.id, newEl);\n  if (node.haveCallback) {\n    newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n  }\n  return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n  nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n  nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n  const el = nodeElems.get(node.id);\n  log.trace(\n    \"Transforming node\",\n    node.diff,\n    node,\n    \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n  );\n  const padding = 8;\n  const diff = node.diff || 0;\n  if (node.clusterNode) {\n    el.attr(\n      \"transform\",\n      \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n    );\n  } else {\n    el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n  }\n  return diff;\n}, \"positionNode\");\n\nexport {\n  labelHelper,\n  updateNodeBounds,\n  isLabelStyle,\n  createLabel_default,\n  isValidShape,\n  insertCluster,\n  clear,\n  insertNode,\n  setNodeElem,\n  clear2,\n  positionNode\n};\n","import {\n  getLineFunctionsWithOffset\n} from \"./chunk-VV3M67IP.mjs\";\nimport {\n  createLabel_default,\n  isLabelStyle\n} from \"./chunk-HRU6DDCH.mjs\";\nimport {\n  getSubGraphTitleMargins\n} from \"./chunk-K557N5IZ.mjs\";\nimport {\n  createText\n} from \"./chunk-C3MQ5ANM.mjs\";\nimport {\n  utils_default\n} from \"./chunk-O4NI6UNU.mjs\";\nimport {\n  __name,\n  evaluate,\n  getConfig2 as getConfig,\n  log\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/rendering-util/rendering-elements/edges.js\nimport {\n  curveBasis,\n  curveLinear,\n  curveCardinal,\n  curveBumpX,\n  curveBumpY,\n  curveCatmullRom,\n  curveMonotoneX,\n  curveMonotoneY,\n  curveNatural,\n  curveStep,\n  curveStepAfter,\n  curveStepBefore,\n  line,\n  select\n} from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id, diagramType, strokeColor) => {\n  if (edge.arrowTypeStart) {\n    addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType, strokeColor);\n  }\n  if (edge.arrowTypeEnd) {\n    addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType, strokeColor);\n  }\n}, \"addEdgeMarkers\");\nvar arrowTypesMap = {\n  arrow_cross: { type: \"cross\", fill: false },\n  arrow_point: { type: \"point\", fill: true },\n  arrow_barb: { type: \"barb\", fill: true },\n  arrow_circle: { type: \"circle\", fill: false },\n  aggregation: { type: \"aggregation\", fill: false },\n  extension: { type: \"extension\", fill: false },\n  composition: { type: \"composition\", fill: true },\n  dependency: { type: \"dependency\", fill: true },\n  lollipop: { type: \"lollipop\", fill: false },\n  only_one: { type: \"onlyOne\", fill: false },\n  zero_or_one: { type: \"zeroOrOne\", fill: false },\n  one_or_more: { type: \"oneOrMore\", fill: false },\n  zero_or_more: { type: \"zeroOrMore\", fill: false },\n  requirement_arrow: { type: \"requirement_arrow\", fill: false },\n  requirement_contains: { type: \"requirement_contains\", fill: false }\n};\nvar addEdgeMarker = /* @__PURE__ */ __name((svgPath, position, arrowType, url, id, diagramType, strokeColor) => {\n  const arrowTypeInfo = arrowTypesMap[arrowType];\n  if (!arrowTypeInfo) {\n    log.warn(`Unknown arrow type: ${arrowType}`);\n    return;\n  }\n  const endMarkerType = arrowTypeInfo.type;\n  const suffix = position === \"start\" ? \"Start\" : \"End\";\n  const originalMarkerId = `${id}_${diagramType}-${endMarkerType}${suffix}`;\n  if (strokeColor && strokeColor.trim() !== \"\") {\n    const colorId = strokeColor.replace(/[^\\dA-Za-z]/g, \"_\");\n    const coloredMarkerId = `${originalMarkerId}_${colorId}`;\n    if (!document.getElementById(coloredMarkerId)) {\n      const originalMarker = document.getElementById(originalMarkerId);\n      if (originalMarker) {\n        const coloredMarker = originalMarker.cloneNode(true);\n        coloredMarker.id = coloredMarkerId;\n        const paths = coloredMarker.querySelectorAll(\"path, circle, line\");\n        paths.forEach((path) => {\n          path.setAttribute(\"stroke\", strokeColor);\n          if (arrowTypeInfo.fill) {\n            path.setAttribute(\"fill\", strokeColor);\n          }\n        });\n        originalMarker.parentNode?.appendChild(coloredMarker);\n      }\n    }\n    svgPath.attr(`marker-${position}`, `url(${url}#${coloredMarkerId})`);\n  } else {\n    svgPath.attr(`marker-${position}`, `url(${url}#${originalMarkerId})`);\n  }\n}, \"addEdgeMarker\");\n\n// src/rendering-util/rendering-elements/edges.js\nvar edgeLabels = /* @__PURE__ */ new Map();\nvar terminalLabels = /* @__PURE__ */ new Map();\nvar clear = /* @__PURE__ */ __name(() => {\n  edgeLabels.clear();\n  terminalLabels.clear();\n}, \"clear\");\nvar getLabelStyles = /* @__PURE__ */ __name((styleArray) => {\n  let styles = styleArray ? styleArray.reduce((acc, style) => acc + \";\" + style, \"\") : \"\";\n  return styles;\n}, \"getLabelStyles\");\nvar insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {\n  let useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n  const labelElement = await createText(elem, edge.label, {\n    style: getLabelStyles(edge.labelStyle),\n    useHtmlLabels,\n    addSvgBackground: true,\n    isNode: false\n  });\n  log.info(\"abc82\", edge, edge.labelType);\n  const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n  const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n  label.node().appendChild(labelElement);\n  let bbox = labelElement.getBBox();\n  if (useHtmlLabels) {\n    const div = labelElement.children[0];\n    const dv = select(labelElement);\n    bbox = div.getBoundingClientRect();\n    dv.attr(\"width\", bbox.width);\n    dv.attr(\"height\", bbox.height);\n  }\n  label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n  edgeLabels.set(edge.id, edgeLabel);\n  edge.width = bbox.width;\n  edge.height = bbox.height;\n  let fo;\n  if (edge.startLabelLeft) {\n    const startLabelElement = await createLabel_default(\n      edge.startLabelLeft,\n      getLabelStyles(edge.labelStyle)\n    );\n    const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n    const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n    fo = inner.node().appendChild(startLabelElement);\n    const slBox = startLabelElement.getBBox();\n    inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n    if (!terminalLabels.get(edge.id)) {\n      terminalLabels.set(edge.id, {});\n    }\n    terminalLabels.get(edge.id).startLeft = startEdgeLabelLeft;\n    setTerminalWidth(fo, edge.startLabelLeft);\n  }\n  if (edge.startLabelRight) {\n    const startLabelElement = await createLabel_default(\n      edge.startLabelRight,\n      getLabelStyles(edge.labelStyle)\n    );\n    const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n    const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n    fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n    inner.node().appendChild(startLabelElement);\n    const slBox = startLabelElement.getBBox();\n    inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n    if (!terminalLabels.get(edge.id)) {\n      terminalLabels.set(edge.id, {});\n    }\n    terminalLabels.get(edge.id).startRight = startEdgeLabelRight;\n    setTerminalWidth(fo, edge.startLabelRight);\n  }\n  if (edge.endLabelLeft) {\n    const endLabelElement = await createLabel_default(edge.endLabelLeft, getLabelStyles(edge.labelStyle));\n    const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n    const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n    fo = inner.node().appendChild(endLabelElement);\n    const slBox = endLabelElement.getBBox();\n    inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n    endEdgeLabelLeft.node().appendChild(endLabelElement);\n    if (!terminalLabels.get(edge.id)) {\n      terminalLabels.set(edge.id, {});\n    }\n    terminalLabels.get(edge.id).endLeft = endEdgeLabelLeft;\n    setTerminalWidth(fo, edge.endLabelLeft);\n  }\n  if (edge.endLabelRight) {\n    const endLabelElement = await createLabel_default(edge.endLabelRight, getLabelStyles(edge.labelStyle));\n    const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n    const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n    fo = inner.node().appendChild(endLabelElement);\n    const slBox = endLabelElement.getBBox();\n    inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n    endEdgeLabelRight.node().appendChild(endLabelElement);\n    if (!terminalLabels.get(edge.id)) {\n      terminalLabels.set(edge.id, {});\n    }\n    terminalLabels.get(edge.id).endRight = endEdgeLabelRight;\n    setTerminalWidth(fo, edge.endLabelRight);\n  }\n  return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n  if (getConfig().flowchart.htmlLabels && fo) {\n    fo.style.width = value.length * 9 + \"px\";\n    fo.style.height = \"12px\";\n  }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((edge, paths) => {\n  log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels.get(edge.id), paths);\n  let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n  const siteConfig = getConfig();\n  const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n  if (edge.label) {\n    const el = edgeLabels.get(edge.id);\n    let x = edge.x;\n    let y = edge.y;\n    if (path) {\n      const pos = utils_default.calcLabelPosition(path);\n      log.debug(\n        \"Moving label \" + edge.label + \" from (\",\n        x,\n        \",\",\n        y,\n        \") to (\",\n        pos.x,\n        \",\",\n        pos.y,\n        \") abc88\"\n      );\n      if (paths.updatedPath) {\n        x = pos.x;\n        y = pos.y;\n      }\n    }\n    el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n  }\n  if (edge.startLabelLeft) {\n    const el = terminalLabels.get(edge.id).startLeft;\n    let x = edge.x;\n    let y = edge.y;\n    if (path) {\n      const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n      x = pos.x;\n      y = pos.y;\n    }\n    el.attr(\"transform\", `translate(${x}, ${y})`);\n  }\n  if (edge.startLabelRight) {\n    const el = terminalLabels.get(edge.id).startRight;\n    let x = edge.x;\n    let y = edge.y;\n    if (path) {\n      const pos = utils_default.calcTerminalLabelPosition(\n        edge.arrowTypeStart ? 10 : 0,\n        \"start_right\",\n        path\n      );\n      x = pos.x;\n      y = pos.y;\n    }\n    el.attr(\"transform\", `translate(${x}, ${y})`);\n  }\n  if (edge.endLabelLeft) {\n    const el = terminalLabels.get(edge.id).endLeft;\n    let x = edge.x;\n    let y = edge.y;\n    if (path) {\n      const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n      x = pos.x;\n      y = pos.y;\n    }\n    el.attr(\"transform\", `translate(${x}, ${y})`);\n  }\n  if (edge.endLabelRight) {\n    const el = terminalLabels.get(edge.id).endRight;\n    let x = edge.x;\n    let y = edge.y;\n    if (path) {\n      const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n      x = pos.x;\n      y = pos.y;\n    }\n    el.attr(\"transform\", `translate(${x}, ${y})`);\n  }\n}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((node, point2) => {\n  const x = node.x;\n  const y = node.y;\n  const dx = Math.abs(point2.x - x);\n  const dy = Math.abs(point2.y - y);\n  const w = node.width / 2;\n  const h = node.height / 2;\n  return dx >= w || dy >= h;\n}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((node, outsidePoint, insidePoint) => {\n  log.debug(`intersection calc abc89:\n  outsidePoint: ${JSON.stringify(outsidePoint)}\n  insidePoint : ${JSON.stringify(insidePoint)}\n  node        : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n  const x = node.x;\n  const y = node.y;\n  const dx = Math.abs(x - insidePoint.x);\n  const w = node.width / 2;\n  let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n  const h = node.height / 2;\n  const Q = Math.abs(outsidePoint.y - insidePoint.y);\n  const R = Math.abs(outsidePoint.x - insidePoint.x);\n  if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n    let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n    r = R * q / Q;\n    const res = {\n      x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n      y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n    };\n    if (r === 0) {\n      res.x = outsidePoint.x;\n      res.y = outsidePoint.y;\n    }\n    if (R === 0) {\n      res.x = outsidePoint.x;\n    }\n    if (Q === 0) {\n      res.y = outsidePoint.y;\n    }\n    log.debug(`abc89 top/bottom calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n    return res;\n  } else {\n    if (insidePoint.x < outsidePoint.x) {\n      r = outsidePoint.x - w - x;\n    } else {\n      r = x - w - outsidePoint.x;\n    }\n    let q = Q * r / R;\n    let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n    let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n    log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n    if (r === 0) {\n      _x = outsidePoint.x;\n      _y = outsidePoint.y;\n    }\n    if (R === 0) {\n      _x = outsidePoint.x;\n    }\n    if (Q === 0) {\n      _y = outsidePoint.y;\n    }\n    return { x: _x, y: _y };\n  }\n}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n  log.warn(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n  let points = [];\n  let lastPointOutside = _points[0];\n  let isInside = false;\n  _points.forEach((point2) => {\n    log.info(\"abc88 checking point\", point2, boundaryNode);\n    if (!outsideNode(boundaryNode, point2) && !isInside) {\n      const inter = intersection(boundaryNode, lastPointOutside, point2);\n      log.debug(\"abc88 inside\", point2, lastPointOutside, inter);\n      log.debug(\"abc88 intersection\", inter, boundaryNode);\n      let pointPresent = false;\n      points.forEach((p) => {\n        pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n      });\n      if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n        points.push(inter);\n      } else {\n        log.warn(\"abc88 no intersect\", inter, points);\n      }\n      isInside = true;\n    } else {\n      log.warn(\"abc88 outside\", point2, lastPointOutside);\n      lastPointOutside = point2;\n      if (!isInside) {\n        points.push(point2);\n      }\n    }\n  });\n  log.debug(\"returning points\", points);\n  return points;\n}, \"cutPathAtIntersect\");\nfunction extractCornerPoints(points) {\n  const cornerPoints = [];\n  const cornerPointPositions = [];\n  for (let i = 1; i < points.length - 1; i++) {\n    const prev = points[i - 1];\n    const curr = points[i];\n    const next = points[i + 1];\n    if (prev.x === curr.x && curr.y === next.y && Math.abs(curr.x - next.x) > 5 && Math.abs(curr.y - prev.y) > 5) {\n      cornerPoints.push(curr);\n      cornerPointPositions.push(i);\n    } else if (prev.y === curr.y && curr.x === next.x && Math.abs(curr.x - prev.x) > 5 && Math.abs(curr.y - next.y) > 5) {\n      cornerPoints.push(curr);\n      cornerPointPositions.push(i);\n    }\n  }\n  return { cornerPoints, cornerPointPositions };\n}\n__name(extractCornerPoints, \"extractCornerPoints\");\nvar findAdjacentPoint = /* @__PURE__ */ __name(function(pointA, pointB, distance) {\n  const xDiff = pointB.x - pointA.x;\n  const yDiff = pointB.y - pointA.y;\n  const length = Math.sqrt(xDiff * xDiff + yDiff * yDiff);\n  const ratio = distance / length;\n  return { x: pointB.x - ratio * xDiff, y: pointB.y - ratio * yDiff };\n}, \"findAdjacentPoint\");\nvar fixCorners = /* @__PURE__ */ __name(function(lineData) {\n  const { cornerPointPositions } = extractCornerPoints(lineData);\n  const newLineData = [];\n  for (let i = 0; i < lineData.length; i++) {\n    if (cornerPointPositions.includes(i)) {\n      const prevPoint = lineData[i - 1];\n      const nextPoint = lineData[i + 1];\n      const cornerPoint = lineData[i];\n      const newPrevPoint = findAdjacentPoint(prevPoint, cornerPoint, 5);\n      const newNextPoint = findAdjacentPoint(nextPoint, cornerPoint, 5);\n      const xDiff = newNextPoint.x - newPrevPoint.x;\n      const yDiff = newNextPoint.y - newPrevPoint.y;\n      newLineData.push(newPrevPoint);\n      const a = Math.sqrt(2) * 2;\n      let newCornerPoint = { x: cornerPoint.x, y: cornerPoint.y };\n      if (Math.abs(nextPoint.x - prevPoint.x) > 10 && Math.abs(nextPoint.y - prevPoint.y) >= 10) {\n        log.debug(\n          \"Corner point fixing\",\n          Math.abs(nextPoint.x - prevPoint.x),\n          Math.abs(nextPoint.y - prevPoint.y)\n        );\n        const r = 5;\n        if (cornerPoint.x === newPrevPoint.x) {\n          newCornerPoint = {\n            x: xDiff < 0 ? newPrevPoint.x - r + a : newPrevPoint.x + r - a,\n            y: yDiff < 0 ? newPrevPoint.y - a : newPrevPoint.y + a\n          };\n        } else {\n          newCornerPoint = {\n            x: xDiff < 0 ? newPrevPoint.x - a : newPrevPoint.x + a,\n            y: yDiff < 0 ? newPrevPoint.y - r + a : newPrevPoint.y + r - a\n          };\n        }\n      } else {\n        log.debug(\n          \"Corner point skipping fixing\",\n          Math.abs(nextPoint.x - prevPoint.x),\n          Math.abs(nextPoint.y - prevPoint.y)\n        );\n      }\n      newLineData.push(newCornerPoint, newNextPoint);\n    } else {\n      newLineData.push(lineData[i]);\n    }\n  }\n  return newLineData;\n}, \"fixCorners\");\nvar insertEdge = /* @__PURE__ */ __name(function(elem, edge, clusterDb, diagramType, startNode, endNode, id) {\n  const { handDrawnSeed } = getConfig();\n  let points = edge.points;\n  let pointsHasChanged = false;\n  const tail = startNode;\n  var head = endNode;\n  const edgeClassStyles = [];\n  for (const key in edge.cssCompiledStyles) {\n    if (isLabelStyle(key)) {\n      continue;\n    }\n    edgeClassStyles.push(edge.cssCompiledStyles[key]);\n  }\n  if (head.intersect && tail.intersect) {\n    points = points.slice(1, edge.points.length - 1);\n    points.unshift(tail.intersect(points[0]));\n    log.debug(\n      \"Last point APA12\",\n      edge.start,\n      \"-->\",\n      edge.end,\n      points[points.length - 1],\n      head,\n      head.intersect(points[points.length - 1])\n    );\n    points.push(head.intersect(points[points.length - 1]));\n  }\n  if (edge.toCluster) {\n    log.info(\"to cluster abc88\", clusterDb.get(edge.toCluster));\n    points = cutPathAtIntersect(edge.points, clusterDb.get(edge.toCluster).node);\n    pointsHasChanged = true;\n  }\n  if (edge.fromCluster) {\n    log.debug(\n      \"from cluster abc88\",\n      clusterDb.get(edge.fromCluster),\n      JSON.stringify(points, null, 2)\n    );\n    points = cutPathAtIntersect(points.reverse(), clusterDb.get(edge.fromCluster).node).reverse();\n    pointsHasChanged = true;\n  }\n  let lineData = points.filter((p) => !Number.isNaN(p.y));\n  lineData = fixCorners(lineData);\n  let curve = curveBasis;\n  curve = curveLinear;\n  switch (edge.curve) {\n    case \"linear\":\n      curve = curveLinear;\n      break;\n    case \"basis\":\n      curve = curveBasis;\n      break;\n    case \"cardinal\":\n      curve = curveCardinal;\n      break;\n    case \"bumpX\":\n      curve = curveBumpX;\n      break;\n    case \"bumpY\":\n      curve = curveBumpY;\n      break;\n    case \"catmullRom\":\n      curve = curveCatmullRom;\n      break;\n    case \"monotoneX\":\n      curve = curveMonotoneX;\n      break;\n    case \"monotoneY\":\n      curve = curveMonotoneY;\n      break;\n    case \"natural\":\n      curve = curveNatural;\n      break;\n    case \"step\":\n      curve = curveStep;\n      break;\n    case \"stepAfter\":\n      curve = curveStepAfter;\n      break;\n    case \"stepBefore\":\n      curve = curveStepBefore;\n      break;\n    default:\n      curve = curveBasis;\n  }\n  const { x, y } = getLineFunctionsWithOffset(edge);\n  const lineFunction = line().x(x).y(y).curve(curve);\n  let strokeClasses;\n  switch (edge.thickness) {\n    case \"normal\":\n      strokeClasses = \"edge-thickness-normal\";\n      break;\n    case \"thick\":\n      strokeClasses = \"edge-thickness-thick\";\n      break;\n    case \"invisible\":\n      strokeClasses = \"edge-thickness-invisible\";\n      break;\n    default:\n      strokeClasses = \"edge-thickness-normal\";\n  }\n  switch (edge.pattern) {\n    case \"solid\":\n      strokeClasses += \" edge-pattern-solid\";\n      break;\n    case \"dotted\":\n      strokeClasses += \" edge-pattern-dotted\";\n      break;\n    case \"dashed\":\n      strokeClasses += \" edge-pattern-dashed\";\n      break;\n    default:\n      strokeClasses += \" edge-pattern-solid\";\n  }\n  let svgPath;\n  let linePath = lineFunction(lineData);\n  const edgeStyles = Array.isArray(edge.style) ? edge.style : [edge.style];\n  let strokeColor = edgeStyles.find((style) => style?.startsWith(\"stroke:\"));\n  if (edge.look === \"handDrawn\") {\n    const rc = rough.svg(elem);\n    Object.assign([], lineData);\n    const svgPathNode = rc.path(linePath, {\n      roughness: 0.3,\n      seed: handDrawnSeed\n    });\n    strokeClasses += \" transition\";\n    svgPath = select(svgPathNode).select(\"path\").attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edgeStyles ? edgeStyles.reduce((acc, style) => acc + \";\" + style, \"\") : \"\");\n    let d = svgPath.attr(\"d\");\n    svgPath.attr(\"d\", d);\n    elem.node().appendChild(svgPath.node());\n  } else {\n    const stylesFromClasses = edgeClassStyles.join(\";\");\n    const styles = edgeStyles ? edgeStyles.reduce((acc, style) => acc + style + \";\", \"\") : \"\";\n    let animationClass = \"\";\n    if (edge.animate) {\n      animationClass = \" edge-animation-fast\";\n    }\n    if (edge.animation) {\n      animationClass = \" edge-animation-\" + edge.animation;\n    }\n    const pathStyle = stylesFromClasses ? stylesFromClasses + \";\" + styles + \";\" : styles;\n    svgPath = elem.append(\"path\").attr(\"d\", linePath).attr(\"id\", edge.id).attr(\n      \"class\",\n      \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\") + (animationClass ?? \"\")\n    ).attr(\"style\", pathStyle);\n    strokeColor = pathStyle.match(/stroke:([^;]+)/)?.[1];\n  }\n  let url = \"\";\n  if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n    url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n    url = url.replace(/\\(/g, \"\\\\(\").replace(/\\)/g, \"\\\\)\");\n  }\n  log.info(\"arrowTypeStart\", edge.arrowTypeStart);\n  log.info(\"arrowTypeEnd\", edge.arrowTypeEnd);\n  addEdgeMarkers(svgPath, edge, url, id, diagramType, strokeColor);\n  let paths = {};\n  if (pointsHasChanged) {\n    paths.updatedPath = points;\n  }\n  paths.originalPath = edge.points;\n  return paths;\n}, \"insertEdge\");\n\n// src/rendering-util/rendering-elements/markers.js\nvar insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type, id) => {\n  markerArray.forEach((markerName) => {\n    markers[markerName](elem, type, id);\n  });\n}, \"insertMarkers\");\nvar extension = /* @__PURE__ */ __name((elem, type, id) => {\n  log.trace(\"Making markers for \", id);\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n}, \"extension\");\nvar composition = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"composition\");\nvar aggregation = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"aggregation\");\nvar dependency = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n}, \"dependency\");\nvar lollipop = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n}, \"lollipop\");\nvar point = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n  elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"point\");\nvar circle = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n  elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"circle\");\nvar cross = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n  elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n}, \"cross\");\nvar barb = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n}, \"barb\");\nvar only_one = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-onlyOneStart\").attr(\"class\", \"marker onlyOne \" + type).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M9,0 L9,18 M15,0 L15,18\");\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-onlyOneEnd\").attr(\"class\", \"marker onlyOne \" + type).attr(\"refX\", 18).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M3,0 L3,18 M9,0 L9,18\");\n}, \"only_one\");\nvar zero_or_one = /* @__PURE__ */ __name((elem, type, id) => {\n  const startMarker = elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-zeroOrOneStart\").attr(\"class\", \"marker zeroOrOne \" + type).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n  startMarker.append(\"circle\").attr(\"fill\", \"white\").attr(\"cx\", 21).attr(\"cy\", 9).attr(\"r\", 6);\n  startMarker.append(\"path\").attr(\"d\", \"M9,0 L9,18\");\n  const endMarker = elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-zeroOrOneEnd\").attr(\"class\", \"marker zeroOrOne \" + type).attr(\"refX\", 30).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n  endMarker.append(\"circle\").attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 9).attr(\"r\", 6);\n  endMarker.append(\"path\").attr(\"d\", \"M21,0 L21,18\");\n}, \"zero_or_one\");\nvar one_or_more = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-oneOrMoreStart\").attr(\"class\", \"marker oneOrMore \" + type).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\");\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-oneOrMoreEnd\").attr(\"class\", \"marker oneOrMore \" + type).attr(\"refX\", 27).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\");\n}, \"one_or_more\");\nvar zero_or_more = /* @__PURE__ */ __name((elem, type, id) => {\n  const startMarker = elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-zeroOrMoreStart\").attr(\"class\", \"marker zeroOrMore \" + type).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n  startMarker.append(\"circle\").attr(\"fill\", \"white\").attr(\"cx\", 48).attr(\"cy\", 18).attr(\"r\", 6);\n  startMarker.append(\"path\").attr(\"d\", \"M0,18 Q18,0 36,18 Q18,36 0,18\");\n  const endMarker = elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-zeroOrMoreEnd\").attr(\"class\", \"marker zeroOrMore \" + type).attr(\"refX\", 39).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n  endMarker.append(\"circle\").attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 18).attr(\"r\", 6);\n  endMarker.append(\"path\").attr(\"d\", \"M21,18 Q39,0 57,18 Q39,36 21,18\");\n}, \"zero_or_more\");\nvar requirement_arrow = /* @__PURE__ */ __name((elem, type, id) => {\n  elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-requirement_arrowEnd\").attr(\"refX\", 20).attr(\"refY\", 10).attr(\"markerWidth\", 20).attr(\"markerHeight\", 20).attr(\"orient\", \"auto\").append(\"path\").attr(\n    \"d\",\n    `M0,0\n      L20,10\n      M20,10\n      L0,20`\n  );\n}, \"requirement_arrow\");\nvar requirement_contains = /* @__PURE__ */ __name((elem, type, id) => {\n  const containsNode = elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-requirement_containsStart\").attr(\"refX\", 0).attr(\"refY\", 10).attr(\"markerWidth\", 20).attr(\"markerHeight\", 20).attr(\"orient\", \"auto\").append(\"g\");\n  containsNode.append(\"circle\").attr(\"cx\", 10).attr(\"cy\", 10).attr(\"r\", 9).attr(\"fill\", \"none\");\n  containsNode.append(\"line\").attr(\"x1\", 1).attr(\"x2\", 19).attr(\"y1\", 10).attr(\"y2\", 10);\n  containsNode.append(\"line\").attr(\"y1\", 1).attr(\"y2\", 19).attr(\"x1\", 10).attr(\"x2\", 10);\n}, \"requirement_contains\");\nvar markers = {\n  extension,\n  composition,\n  aggregation,\n  dependency,\n  lollipop,\n  point,\n  circle,\n  cross,\n  barb,\n  only_one,\n  zero_or_one,\n  one_or_more,\n  zero_or_more,\n  requirement_arrow,\n  requirement_contains\n};\nvar markers_default = insertMarkers;\n\nexport {\n  clear,\n  insertEdgeLabel,\n  positionEdgeLabel,\n  insertEdge,\n  markers_default\n};\n","import {\n  __name\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/utils/subGraphTitleMargins.ts\nvar getSubGraphTitleMargins = /* @__PURE__ */ __name(({\n  flowchart\n}) => {\n  const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;\n  const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;\n  const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n  return {\n    subGraphTitleTopMargin,\n    subGraphTitleBottomMargin,\n    subGraphTitleTotalMargin\n  };\n}, \"getSubGraphTitleMargins\");\n\nexport {\n  getSubGraphTitleMargins\n};\n","import {\n  __name,\n  assignWithDepth_default,\n  common_default,\n  detectType,\n  directiveRegex,\n  log,\n  sanitizeDirective\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/utils.ts\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport {\n  curveBasis,\n  curveBasisClosed,\n  curveBasisOpen,\n  curveBumpX,\n  curveBumpY,\n  curveBundle,\n  curveCardinalClosed,\n  curveCardinalOpen,\n  curveCardinal,\n  curveCatmullRomClosed,\n  curveCatmullRomOpen,\n  curveCatmullRom,\n  curveLinear,\n  curveLinearClosed,\n  curveMonotoneX,\n  curveMonotoneY,\n  curveNatural,\n  curveStep,\n  curveStepAfter,\n  curveStepBefore,\n  select\n} from \"d3\";\nimport memoize from \"lodash-es/memoize.js\";\nimport merge from \"lodash-es/merge.js\";\nvar ZERO_WIDTH_SPACE = \"\\u200B\";\nvar d3CurveTypes = {\n  curveBasis,\n  curveBasisClosed,\n  curveBasisOpen,\n  curveBumpX,\n  curveBumpY,\n  curveBundle,\n  curveCardinalClosed,\n  curveCardinalOpen,\n  curveCardinal,\n  curveCatmullRomClosed,\n  curveCatmullRomOpen,\n  curveCatmullRom,\n  curveLinear,\n  curveLinearClosed,\n  curveMonotoneX,\n  curveMonotoneY,\n  curveNatural,\n  curveStep,\n  curveStepAfter,\n  curveStepBefore\n};\nvar directiveWithoutOpen = /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nvar detectInit = /* @__PURE__ */ __name(function(text, config) {\n  const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n  let results = {};\n  if (Array.isArray(inits)) {\n    const args = inits.map((init) => init.args);\n    sanitizeDirective(args);\n    results = assignWithDepth_default(results, [...args]);\n  } else {\n    results = inits.args;\n  }\n  if (!results) {\n    return;\n  }\n  let type = detectType(text, config);\n  const prop = \"config\";\n  if (results[prop] !== void 0) {\n    if (type === \"flowchart-v2\") {\n      type = \"flowchart\";\n    }\n    results[type] = results[prop];\n    delete results[prop];\n  }\n  return results;\n}, \"detectInit\");\nvar detectDirective = /* @__PURE__ */ __name(function(text, type = null) {\n  try {\n    const commentWithoutDirectives = new RegExp(\n      `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\n`,\n      \"ig\"\n    );\n    text = text.trim().replace(commentWithoutDirectives, \"\").replace(/'/gm, '\"');\n    log.debug(\n      `Detecting diagram directive${type !== null ? \" type:\" + type : \"\"} based on the text:${text}`\n    );\n    let match;\n    const result = [];\n    while ((match = directiveRegex.exec(text)) !== null) {\n      if (match.index === directiveRegex.lastIndex) {\n        directiveRegex.lastIndex++;\n      }\n      if (match && !type || type && match[1]?.match(type) || type && match[2]?.match(type)) {\n        const type2 = match[1] ? match[1] : match[2];\n        const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n        result.push({ type: type2, args });\n      }\n    }\n    if (result.length === 0) {\n      return { type: text, args: null };\n    }\n    return result.length === 1 ? result[0] : result;\n  } catch (error) {\n    log.error(\n      `ERROR: ${error.message} - Unable to parse directive type: '${type}' based on the text: '${text}'`\n    );\n    return { type: void 0, args: null };\n  }\n}, \"detectDirective\");\nvar removeDirectives = /* @__PURE__ */ __name(function(text) {\n  return text.replace(directiveRegex, \"\");\n}, \"removeDirectives\");\nvar isSubstringInArray = /* @__PURE__ */ __name(function(str, arr) {\n  for (const [i, element] of arr.entries()) {\n    if (element.match(str)) {\n      return i;\n    }\n  }\n  return -1;\n}, \"isSubstringInArray\");\nfunction interpolateToCurve(interpolate, defaultCurve) {\n  if (!interpolate) {\n    return defaultCurve;\n  }\n  const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n  return d3CurveTypes[curveName] ?? defaultCurve;\n}\n__name(interpolateToCurve, \"interpolateToCurve\");\nfunction formatUrl(linkStr, config) {\n  const url = linkStr.trim();\n  if (!url) {\n    return void 0;\n  }\n  if (config.securityLevel !== \"loose\") {\n    return sanitizeUrl(url);\n  }\n  return url;\n}\n__name(formatUrl, \"formatUrl\");\nvar runFunc = /* @__PURE__ */ __name((functionName, ...params) => {\n  const arrPaths = functionName.split(\".\");\n  const len = arrPaths.length - 1;\n  const fnName = arrPaths[len];\n  let obj = window;\n  for (let i = 0; i < len; i++) {\n    obj = obj[arrPaths[i]];\n    if (!obj) {\n      log.error(`Function name: ${functionName} not found in window`);\n      return;\n    }\n  }\n  obj[fnName](...params);\n}, \"runFunc\");\nfunction distance(p1, p2) {\n  if (!p1 || !p2) {\n    return 0;\n  }\n  return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n__name(distance, \"distance\");\nfunction traverseEdge(points) {\n  let prevPoint;\n  let totalDistance = 0;\n  points.forEach((point) => {\n    totalDistance += distance(point, prevPoint);\n    prevPoint = point;\n  });\n  const remainingDistance = totalDistance / 2;\n  return calculatePoint(points, remainingDistance);\n}\n__name(traverseEdge, \"traverseEdge\");\nfunction calcLabelPosition(points) {\n  if (points.length === 1) {\n    return points[0];\n  }\n  return traverseEdge(points);\n}\n__name(calcLabelPosition, \"calcLabelPosition\");\nvar roundNumber = /* @__PURE__ */ __name((num, precision = 2) => {\n  const factor = Math.pow(10, precision);\n  return Math.round(num * factor) / factor;\n}, \"roundNumber\");\nvar calculatePoint = /* @__PURE__ */ __name((points, distanceToTraverse) => {\n  let prevPoint = void 0;\n  let remainingDistance = distanceToTraverse;\n  for (const point of points) {\n    if (prevPoint) {\n      const vectorDistance = distance(point, prevPoint);\n      if (vectorDistance === 0) {\n        return prevPoint;\n      }\n      if (vectorDistance < remainingDistance) {\n        remainingDistance -= vectorDistance;\n      } else {\n        const distanceRatio = remainingDistance / vectorDistance;\n        if (distanceRatio <= 0) {\n          return prevPoint;\n        }\n        if (distanceRatio >= 1) {\n          return { x: point.x, y: point.y };\n        }\n        if (distanceRatio > 0 && distanceRatio < 1) {\n          return {\n            x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n            y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5)\n          };\n        }\n      }\n    }\n    prevPoint = point;\n  }\n  throw new Error(\"Could not find a suitable point for the given distance\");\n}, \"calculatePoint\");\nvar calcCardinalityPosition = /* @__PURE__ */ __name((isRelationTypePresent, points, initialPosition) => {\n  log.info(`our points ${JSON.stringify(points)}`);\n  if (points[0] !== initialPosition) {\n    points = points.reverse();\n  }\n  const distanceToCardinalityPoint = 25;\n  const center = calculatePoint(points, distanceToCardinalityPoint);\n  const d = isRelationTypePresent ? 10 : 5;\n  const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n  const cardinalityPosition = { x: 0, y: 0 };\n  cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n  cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n  return cardinalityPosition;\n}, \"calcCardinalityPosition\");\nfunction calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n  const points = structuredClone(_points);\n  log.info(\"our points\", points);\n  if (position !== \"start_left\" && position !== \"start_right\") {\n    points.reverse();\n  }\n  const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n  const center = calculatePoint(points, distanceToCardinalityPoint);\n  const d = 10 + terminalMarkerSize * 0.5;\n  const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n  const cardinalityPosition = { x: 0, y: 0 };\n  if (position === \"start_left\") {\n    cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n    cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n  } else if (position === \"end_right\") {\n    cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n    cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n  } else if (position === \"end_left\") {\n    cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n    cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n  } else {\n    cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n    cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n  }\n  return cardinalityPosition;\n}\n__name(calcTerminalLabelPosition, \"calcTerminalLabelPosition\");\nfunction getStylesFromArray(arr) {\n  let style = \"\";\n  let labelStyle = \"\";\n  for (const element of arr) {\n    if (element !== void 0) {\n      if (element.startsWith(\"color:\") || element.startsWith(\"text-align:\")) {\n        labelStyle = labelStyle + element + \";\";\n      } else {\n        style = style + element + \";\";\n      }\n    }\n  }\n  return { style, labelStyle };\n}\n__name(getStylesFromArray, \"getStylesFromArray\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n  cnt++;\n  return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nfunction makeRandomHex(length) {\n  let result = \"\";\n  const characters = \"0123456789abcdef\";\n  const charactersLength = characters.length;\n  for (let i = 0; i < length; i++) {\n    result += characters.charAt(Math.floor(Math.random() * charactersLength));\n  }\n  return result;\n}\n__name(makeRandomHex, \"makeRandomHex\");\nvar random = /* @__PURE__ */ __name((options) => {\n  return makeRandomHex(options.length);\n}, \"random\");\nvar getTextObj = /* @__PURE__ */ __name(function() {\n  return {\n    x: 0,\n    y: 0,\n    fill: void 0,\n    anchor: \"start\",\n    style: \"#666\",\n    width: 100,\n    height: 100,\n    textMargin: 0,\n    rx: 0,\n    ry: 0,\n    valign: void 0,\n    text: \"\"\n  };\n}, \"getTextObj\");\nvar drawSimpleText = /* @__PURE__ */ __name(function(elem, textData) {\n  const nText = textData.text.replace(common_default.lineBreakRegex, \" \");\n  const [, _fontSizePx] = parseFontSize(textData.fontSize);\n  const textElem = elem.append(\"text\");\n  textElem.attr(\"x\", textData.x);\n  textElem.attr(\"y\", textData.y);\n  textElem.style(\"text-anchor\", textData.anchor);\n  textElem.style(\"font-family\", textData.fontFamily);\n  textElem.style(\"font-size\", _fontSizePx);\n  textElem.style(\"font-weight\", textData.fontWeight);\n  textElem.attr(\"fill\", textData.fill);\n  if (textData.class !== void 0) {\n    textElem.attr(\"class\", textData.class);\n  }\n  const span = textElem.append(\"tspan\");\n  span.attr(\"x\", textData.x + textData.textMargin * 2);\n  span.attr(\"fill\", textData.fill);\n  span.text(nText);\n  return textElem;\n}, \"drawSimpleText\");\nvar wrapLabel = memoize(\n  (label, maxWidth, config) => {\n    if (!label) {\n      return label;\n    }\n    config = Object.assign(\n      { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", joinWith: \"<br/>\" },\n      config\n    );\n    if (common_default.lineBreakRegex.test(label)) {\n      return label;\n    }\n    const words = label.split(\" \").filter(Boolean);\n    const completedLines = [];\n    let nextLine = \"\";\n    words.forEach((word, index) => {\n      const wordLength = calculateTextWidth(`${word} `, config);\n      const nextLineLength = calculateTextWidth(nextLine, config);\n      if (wordLength > maxWidth) {\n        const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, \"-\", config);\n        completedLines.push(nextLine, ...hyphenatedStrings);\n        nextLine = remainingWord;\n      } else if (nextLineLength + wordLength >= maxWidth) {\n        completedLines.push(nextLine);\n        nextLine = word;\n      } else {\n        nextLine = [nextLine, word].filter(Boolean).join(\" \");\n      }\n      const currentWord = index + 1;\n      const isLastWord = currentWord === words.length;\n      if (isLastWord) {\n        completedLines.push(nextLine);\n      }\n    });\n    return completedLines.filter((line) => line !== \"\").join(config.joinWith);\n  },\n  (label, maxWidth, config) => `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}`\n);\nvar breakString = memoize(\n  (word, maxWidth, hyphenCharacter = \"-\", config) => {\n    config = Object.assign(\n      { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 0 },\n      config\n    );\n    const characters = [...word];\n    const lines = [];\n    let currentLine = \"\";\n    characters.forEach((character, index) => {\n      const nextLine = `${currentLine}${character}`;\n      const lineWidth = calculateTextWidth(nextLine, config);\n      if (lineWidth >= maxWidth) {\n        const currentCharacter = index + 1;\n        const isLastLine = characters.length === currentCharacter;\n        const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n        lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n        currentLine = \"\";\n      } else {\n        currentLine = nextLine;\n      }\n    });\n    return { hyphenatedStrings: lines, remainingWord: currentLine };\n  },\n  (word, maxWidth, hyphenCharacter = \"-\", config) => `${word}${maxWidth}${hyphenCharacter}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\nfunction calculateTextHeight(text, config) {\n  return calculateTextDimensions(text, config).height;\n}\n__name(calculateTextHeight, \"calculateTextHeight\");\nfunction calculateTextWidth(text, config) {\n  return calculateTextDimensions(text, config).width;\n}\n__name(calculateTextWidth, \"calculateTextWidth\");\nvar calculateTextDimensions = memoize(\n  (text, config) => {\n    const { fontSize = 12, fontFamily = \"Arial\", fontWeight = 400 } = config;\n    if (!text) {\n      return { width: 0, height: 0 };\n    }\n    const [, _fontSizePx] = parseFontSize(fontSize);\n    const fontFamilies = [\"sans-serif\", fontFamily];\n    const lines = text.split(common_default.lineBreakRegex);\n    const dims = [];\n    const body = select(\"body\");\n    if (!body.remove) {\n      return { width: 0, height: 0, lineHeight: 0 };\n    }\n    const g = body.append(\"svg\");\n    for (const fontFamily2 of fontFamilies) {\n      let cHeight = 0;\n      const dim = { width: 0, height: 0, lineHeight: 0 };\n      for (const line of lines) {\n        const textObj = getTextObj();\n        textObj.text = line || ZERO_WIDTH_SPACE;\n        const textElem = drawSimpleText(g, textObj).style(\"font-size\", _fontSizePx).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily2);\n        const bBox = (textElem._groups || textElem)[0][0].getBBox();\n        if (bBox.width === 0 && bBox.height === 0) {\n          throw new Error(\"svg element not in render tree\");\n        }\n        dim.width = Math.round(Math.max(dim.width, bBox.width));\n        cHeight = Math.round(bBox.height);\n        dim.height += cHeight;\n        dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));\n      }\n      dims.push(dim);\n    }\n    g.remove();\n    const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n    return dims[index];\n  },\n  (text, config) => `${text}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\nvar InitIDGenerator = class {\n  constructor(deterministic = false, seed) {\n    this.count = 0;\n    this.count = seed ? seed.length : 0;\n    this.next = deterministic ? () => this.count++ : () => Date.now();\n  }\n  static {\n    __name(this, \"InitIDGenerator\");\n  }\n};\nvar decoder;\nvar entityDecode = /* @__PURE__ */ __name(function(html) {\n  decoder = decoder || document.createElement(\"div\");\n  html = escape(html).replace(/%26/g, \"&\").replace(/%23/g, \"#\").replace(/%3B/g, \";\");\n  decoder.innerHTML = html;\n  return unescape(decoder.textContent);\n}, \"entityDecode\");\nfunction isDetailedError(error) {\n  return \"str\" in error;\n}\n__name(isDetailedError, \"isDetailedError\");\nvar insertTitle = /* @__PURE__ */ __name((parent, cssClass, titleTopMargin, title) => {\n  if (!title) {\n    return;\n  }\n  const bounds = parent.node()?.getBBox();\n  if (!bounds) {\n    return;\n  }\n  parent.append(\"text\").text(title).attr(\"text-anchor\", \"middle\").attr(\"x\", bounds.x + bounds.width / 2).attr(\"y\", -titleTopMargin).attr(\"class\", cssClass);\n}, \"insertTitle\");\nvar parseFontSize = /* @__PURE__ */ __name((fontSize) => {\n  if (typeof fontSize === \"number\") {\n    return [fontSize, fontSize + \"px\"];\n  }\n  const fontSizeNumber = parseInt(fontSize ?? \"\", 10);\n  if (Number.isNaN(fontSizeNumber)) {\n    return [void 0, void 0];\n  } else if (fontSize === String(fontSizeNumber)) {\n    return [fontSizeNumber, fontSize + \"px\"];\n  } else {\n    return [fontSizeNumber, fontSize];\n  }\n}, \"parseFontSize\");\nfunction cleanAndMerge(defaultData, data) {\n  return merge({}, defaultData, data);\n}\n__name(cleanAndMerge, \"cleanAndMerge\");\nvar utils_default = {\n  assignWithDepth: assignWithDepth_default,\n  wrapLabel,\n  calculateTextHeight,\n  calculateTextWidth,\n  calculateTextDimensions,\n  cleanAndMerge,\n  detectInit,\n  detectDirective,\n  isSubstringInArray,\n  interpolateToCurve,\n  calcLabelPosition,\n  calcCardinalityPosition,\n  calcTerminalLabelPosition,\n  formatUrl,\n  getStylesFromArray,\n  generateId,\n  random,\n  runFunc,\n  entityDecode,\n  insertTitle,\n  parseFontSize,\n  InitIDGenerator\n};\nvar encodeEntities = /* @__PURE__ */ __name(function(text) {\n  let txt = text;\n  txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n    return s.substring(0, s.length - 1);\n  });\n  txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n    return s.substring(0, s.length - 1);\n  });\n  txt = txt.replace(/#\\w+;/g, function(s) {\n    const innerTxt = s.substring(1, s.length - 1);\n    const isInt = /^\\+?\\d+$/.test(innerTxt);\n    if (isInt) {\n      return \"\\uFB02\\xB0\\xB0\" + innerTxt + \"\\xB6\\xDF\";\n    } else {\n      return \"\\uFB02\\xB0\" + innerTxt + \"\\xB6\\xDF\";\n    }\n  });\n  return txt;\n}, \"encodeEntities\");\nvar decodeEntities = /* @__PURE__ */ __name(function(text) {\n  return text.replace(/fl°°/g, \"&#\").replace(/fl°/g, \"&\").replace(/¶ß/g, \";\");\n}, \"decodeEntities\");\nvar getEdgeId = /* @__PURE__ */ __name((from, to, {\n  counter = 0,\n  prefix,\n  suffix\n}, id) => {\n  if (id) {\n    return id;\n  }\n  return `${prefix ? `${prefix}_` : \"\"}${from}_${to}_${counter}${suffix ? `_${suffix}` : \"\"}`;\n}, \"getEdgeId\");\nfunction handleUndefinedAttr(attrValue) {\n  return attrValue ?? null;\n}\n__name(handleUndefinedAttr, \"handleUndefinedAttr\");\n\nexport {\n  ZERO_WIDTH_SPACE,\n  removeDirectives,\n  interpolateToCurve,\n  getStylesFromArray,\n  generateId,\n  random,\n  wrapLabel,\n  calculateTextHeight,\n  calculateTextWidth,\n  isDetailedError,\n  parseFontSize,\n  cleanAndMerge,\n  utils_default,\n  encodeEntities,\n  decodeEntities,\n  getEdgeId,\n  handleUndefinedAttr\n};\n","import {\n  insertEdge,\n  insertEdgeLabel,\n  markers_default,\n  positionEdgeLabel\n} from \"./chunk-IIMUDSI4.mjs\";\nimport {\n  insertCluster,\n  insertNode,\n  labelHelper\n} from \"./chunk-HRU6DDCH.mjs\";\nimport {\n  interpolateToCurve\n} from \"./chunk-O4NI6UNU.mjs\";\nimport {\n  __name,\n  common_default,\n  getConfig,\n  log\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/internals.ts\nvar internalHelpers = {\n  common: common_default,\n  getConfig,\n  insertCluster,\n  insertEdge,\n  insertEdgeLabel,\n  insertMarkers: markers_default,\n  insertNode,\n  interpolateToCurve,\n  labelHelper,\n  log,\n  positionEdgeLabel\n};\n\n// src/rendering-util/render.ts\nvar layoutAlgorithms = {};\nvar registerLayoutLoaders = /* @__PURE__ */ __name((loaders) => {\n  for (const loader of loaders) {\n    layoutAlgorithms[loader.name] = loader;\n  }\n}, \"registerLayoutLoaders\");\nvar registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {\n  registerLayoutLoaders([\n    {\n      name: \"dagre\",\n      loader: /* @__PURE__ */ __name(async () => await import(\"./dagre-OKDRZEBW.mjs\"), \"loader\")\n    }\n  ]);\n}, \"registerDefaultLayoutLoaders\");\nregisterDefaultLayoutLoaders();\nvar render = /* @__PURE__ */ __name(async (data4Layout, svg) => {\n  if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {\n    throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);\n  }\n  const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];\n  const layoutRenderer = await layoutDefinition.loader();\n  return layoutRenderer.render(data4Layout, svg, internalHelpers, {\n    algorithm: layoutDefinition.algorithm\n  });\n}, \"render\");\nvar getRegisteredLayoutAlgorithm = /* @__PURE__ */ __name((algorithm = \"\", { fallback = \"dagre\" } = {}) => {\n  if (algorithm in layoutAlgorithms) {\n    return algorithm;\n  }\n  if (fallback in layoutAlgorithms) {\n    log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);\n    return fallback;\n  }\n  throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);\n}, \"getRegisteredLayoutAlgorithm\");\n\nexport {\n  registerLayoutLoaders,\n  render,\n  getRegisteredLayoutAlgorithm\n};\n","import {\n  __name\n} from \"./chunk-YTJNT7DU.mjs\";\n\n// src/utils/lineWithOffset.ts\nvar markerOffsets = {\n  aggregation: 18,\n  extension: 18,\n  composition: 18,\n  dependency: 6,\n  lollipop: 13.5,\n  arrow_point: 4\n};\nfunction calculateDeltaAndAngle(point1, point2) {\n  if (point1 === void 0 || point2 === void 0) {\n    return { angle: 0, deltaX: 0, deltaY: 0 };\n  }\n  point1 = pointTransformer(point1);\n  point2 = pointTransformer(point2);\n  const [x1, y1] = [point1.x, point1.y];\n  const [x2, y2] = [point2.x, point2.y];\n  const deltaX = x2 - x1;\n  const deltaY = y2 - y1;\n  return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\n__name(calculateDeltaAndAngle, \"calculateDeltaAndAngle\");\nvar pointTransformer = /* @__PURE__ */ __name((data) => {\n  if (Array.isArray(data)) {\n    return { x: data[0], y: data[1] };\n  }\n  return data;\n}, \"pointTransformer\");\nvar getLineFunctionsWithOffset = /* @__PURE__ */ __name((edge) => {\n  return {\n    x: /* @__PURE__ */ __name(function(d, i, data) {\n      let offset = 0;\n      const DIRECTION = pointTransformer(data[0]).x < pointTransformer(data[data.length - 1]).x ? \"left\" : \"right\";\n      if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n        const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n        offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n      } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n        const { angle, deltaX } = calculateDeltaAndAngle(\n          data[data.length - 1],\n          data[data.length - 2]\n        );\n        offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n      }\n      const differenceToEnd = Math.abs(\n        pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n      );\n      const differenceInYEnd = Math.abs(\n        pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n      );\n      const differenceToStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n      const differenceInYStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n      const startMarkerHeight = markerOffsets[edge.arrowTypeStart];\n      const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];\n      const extraRoom = 1;\n      if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInYEnd < endMarkerHeight) {\n        let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n        adjustment *= DIRECTION === \"right\" ? -1 : 1;\n        offset -= adjustment;\n      }\n      if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInYStart < startMarkerHeight) {\n        let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n        adjustment *= DIRECTION === \"right\" ? -1 : 1;\n        offset += adjustment;\n      }\n      return pointTransformer(d).x + offset;\n    }, \"x\"),\n    y: /* @__PURE__ */ __name(function(d, i, data) {\n      let offset = 0;\n      const DIRECTION = pointTransformer(data[0]).y < pointTransformer(data[data.length - 1]).y ? \"down\" : \"up\";\n      if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n        const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n        offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n      } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n        const { angle, deltaY } = calculateDeltaAndAngle(\n          data[data.length - 1],\n          data[data.length - 2]\n        );\n        offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n      }\n      const differenceToEnd = Math.abs(\n        pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n      );\n      const differenceInXEnd = Math.abs(\n        pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n      );\n      const differenceToStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n      const differenceInXStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n      const startMarkerHeight = markerOffsets[edge.arrowTypeStart];\n      const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];\n      const extraRoom = 1;\n      if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInXEnd < endMarkerHeight) {\n        let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n        adjustment *= DIRECTION === \"up\" ? -1 : 1;\n        offset -= adjustment;\n      }\n      if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInXStart < startMarkerHeight) {\n        let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n        adjustment *= DIRECTION === \"up\" ? -1 : 1;\n        offset += adjustment;\n      }\n      return pointTransformer(d).y + offset;\n    }, \"y\")\n  };\n}, \"getLineFunctionsWithOffset\");\nif (void 0) {\n  const { it, expect, describe } = void 0;\n  describe(\"calculateDeltaAndAngle\", () => {\n    it(\"should calculate the angle and deltas between two points\", () => {\n      expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({\n        angle: 1.5707963267948966,\n        deltaX: 0,\n        deltaY: 1\n      });\n      expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({\n        angle: 0.7853981633974483,\n        deltaX: -1,\n        deltaY: -1\n      });\n      expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({\n        angle: 0.7853981633974483,\n        deltaX: -1,\n        deltaY: -1\n      });\n      expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({\n        angle: NaN,\n        deltaX: 0,\n        deltaY: 0\n      });\n    });\n    it(\"should calculate the angle and deltas if one point in undefined\", () => {\n      expect(calculateDeltaAndAngle(void 0, [0, 1])).toStrictEqual({\n        angle: 0,\n        deltaX: 0,\n        deltaY: 0\n      });\n      expect(calculateDeltaAndAngle([0, 1], void 0)).toStrictEqual({\n        angle: 0,\n        deltaX: 0,\n        deltaY: 0\n      });\n    });\n  });\n}\n\nexport {\n  getLineFunctionsWithOffset\n};\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n    const ch = Color.parse(color);\n    const changes = {};\n    for (const c in channels) {\n        if (!channels[c])\n            continue;\n        changes[c] = ch[c] + channels[c];\n    }\n    return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n    const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n    const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n    const weightScale = weight / 100;\n    const weightNormalized = (weightScale * 2) - 1;\n    const alphaDelta = a1 - a2;\n    const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n    const weight1 = (weight1combined + 1) / 2;\n    const weight2 = 1 - weight1;\n    const r = (r1 * weight1) + (r2 * weight2);\n    const g = (g1 * weight1) + (g2 * weight2);\n    const b = (b1 * weight1) + (b2 * weight2);\n    const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n    return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n","/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n    const inverse = Color.parse(color);\n    inverse.r = 255 - inverse.r;\n    inverse.g = 255 - inverse.g;\n    inverse.b = 255 - inverse.b;\n    return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/logger.ts\nimport dayjs from \"dayjs\";\nvar LEVELS = {\n  trace: 0,\n  debug: 1,\n  info: 2,\n  warn: 3,\n  error: 4,\n  fatal: 5\n};\nvar log = {\n  trace: /* @__PURE__ */ __name((..._args) => {\n  }, \"trace\"),\n  debug: /* @__PURE__ */ __name((..._args) => {\n  }, \"debug\"),\n  info: /* @__PURE__ */ __name((..._args) => {\n  }, \"info\"),\n  warn: /* @__PURE__ */ __name((..._args) => {\n  }, \"warn\"),\n  error: /* @__PURE__ */ __name((..._args) => {\n  }, \"error\"),\n  fatal: /* @__PURE__ */ __name((..._args) => {\n  }, \"fatal\")\n};\nvar setLogLevel = /* @__PURE__ */ __name(function(level = \"fatal\") {\n  let numericLevel = LEVELS.fatal;\n  if (typeof level === \"string\") {\n    if (level.toLowerCase() in LEVELS) {\n      numericLevel = LEVELS[level];\n    }\n  } else if (typeof level === \"number\") {\n    numericLevel = level;\n  }\n  log.trace = () => {\n  };\n  log.debug = () => {\n  };\n  log.info = () => {\n  };\n  log.warn = () => {\n  };\n  log.error = () => {\n  };\n  log.fatal = () => {\n  };\n  if (numericLevel <= LEVELS.fatal) {\n    log.fatal = console.error ? console.error.bind(console, format(\"FATAL\"), \"color: orange\") : console.log.bind(console, \"\\x1B[35m\", format(\"FATAL\"));\n  }\n  if (numericLevel <= LEVELS.error) {\n    log.error = console.error ? console.error.bind(console, format(\"ERROR\"), \"color: orange\") : console.log.bind(console, \"\\x1B[31m\", format(\"ERROR\"));\n  }\n  if (numericLevel <= LEVELS.warn) {\n    log.warn = console.warn ? console.warn.bind(console, format(\"WARN\"), \"color: orange\") : console.log.bind(console, `\\x1B[33m`, format(\"WARN\"));\n  }\n  if (numericLevel <= LEVELS.info) {\n    log.info = console.info ? console.info.bind(console, format(\"INFO\"), \"color: lightblue\") : console.log.bind(console, \"\\x1B[34m\", format(\"INFO\"));\n  }\n  if (numericLevel <= LEVELS.debug) {\n    log.debug = console.debug ? console.debug.bind(console, format(\"DEBUG\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"DEBUG\"));\n  }\n  if (numericLevel <= LEVELS.trace) {\n    log.trace = console.debug ? console.debug.bind(console, format(\"TRACE\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"TRACE\"));\n  }\n}, \"setLogLevel\");\nvar format = /* @__PURE__ */ __name((level) => {\n  const time = dayjs().format(\"ss.SSS\");\n  return `%c${time} : ${level} : `;\n}, \"format\");\n\n// src/diagram-api/regexes.ts\nvar frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\nvar directiveRegex = /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nvar anyCommentRegex = /\\s*%%.*\\n/gm;\n\n// src/errors.ts\nvar UnknownDiagramError = class extends Error {\n  static {\n    __name(this, \"UnknownDiagramError\");\n  }\n  constructor(message) {\n    super(message);\n    this.name = \"UnknownDiagramError\";\n  }\n};\n\n// src/diagram-api/detectType.ts\nvar detectors = {};\nvar detectType = /* @__PURE__ */ __name(function(text, config2) {\n  text = text.replace(frontMatterRegex, \"\").replace(directiveRegex, \"\").replace(anyCommentRegex, \"\\n\");\n  for (const [key, { detector }] of Object.entries(detectors)) {\n    const diagram = detector(text, config2);\n    if (diagram) {\n      return key;\n    }\n  }\n  throw new UnknownDiagramError(\n    `No diagram type detected matching given configuration for text: ${text}`\n  );\n}, \"detectType\");\nvar registerLazyLoadedDiagrams = /* @__PURE__ */ __name((...diagrams2) => {\n  for (const { id, detector, loader } of diagrams2) {\n    addDetector(id, detector, loader);\n  }\n}, \"registerLazyLoadedDiagrams\");\nvar addDetector = /* @__PURE__ */ __name((key, detector, loader) => {\n  if (detectors[key]) {\n    log.warn(`Detector with key ${key} already exists. Overwriting.`);\n  }\n  detectors[key] = { detector, loader };\n  log.debug(`Detector with key ${key} added${loader ? \" with loader\" : \"\"}`);\n}, \"addDetector\");\nvar getDiagramLoader = /* @__PURE__ */ __name((key) => {\n  return detectors[key].loader;\n}, \"getDiagramLoader\");\n\n// src/assignWithDepth.ts\nvar assignWithDepth = /* @__PURE__ */ __name((dst, src, { depth = 2, clobber = false } = {}) => {\n  const config2 = { depth, clobber };\n  if (Array.isArray(src) && !Array.isArray(dst)) {\n    src.forEach((s) => assignWithDepth(dst, s, config2));\n    return dst;\n  } else if (Array.isArray(src) && Array.isArray(dst)) {\n    src.forEach((s) => {\n      if (!dst.includes(s)) {\n        dst.push(s);\n      }\n    });\n    return dst;\n  }\n  if (dst === void 0 || depth <= 0) {\n    if (dst !== void 0 && dst !== null && typeof dst === \"object\" && typeof src === \"object\") {\n      return Object.assign(dst, src);\n    } else {\n      return src;\n    }\n  }\n  if (src !== void 0 && typeof dst === \"object\" && typeof src === \"object\") {\n    Object.keys(src).forEach((key) => {\n      if (typeof src[key] === \"object\" && (dst[key] === void 0 || typeof dst[key] === \"object\")) {\n        if (dst[key] === void 0) {\n          dst[key] = Array.isArray(src[key]) ? [] : {};\n        }\n        dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n      } else if (clobber || typeof dst[key] !== \"object\" && typeof src[key] !== \"object\") {\n        dst[key] = src[key];\n      }\n    });\n  }\n  return dst;\n}, \"assignWithDepth\");\nvar assignWithDepth_default = assignWithDepth;\n\n// src/themes/theme-base.js\nimport { adjust as adjust2, darken, invert, isDark, lighten } from \"khroma\";\n\n// src/themes/erDiagram-oldHardcodedValues.ts\nvar oldAttributeBackgroundColorOdd = \"#ffffff\";\nvar oldAttributeBackgroundColorEven = \"#f2f2f2\";\n\n// src/themes/theme-helpers.js\nimport { adjust } from \"khroma\";\nvar mkBorder = /* @__PURE__ */ __name((col, darkMode) => darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 }), \"mkBorder\");\n\n// src/themes/theme-base.js\nvar Theme = class {\n  static {\n    __name(this, \"Theme\");\n  }\n  constructor() {\n    this.background = \"#f4f4f4\";\n    this.primaryColor = \"#fff4dd\";\n    this.noteBkgColor = \"#fff5ad\";\n    this.noteTextColor = \"#333\";\n    this.THEME_COLOR_LIMIT = 12;\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = \"16px\";\n  }\n  updateColors() {\n    this.primaryTextColor = this.primaryTextColor || (this.darkMode ? \"#eee\" : \"#333\");\n    this.secondaryColor = this.secondaryColor || adjust2(this.primaryColor, { h: -120 });\n    this.tertiaryColor = this.tertiaryColor || adjust2(this.primaryColor, { h: 180, l: 5 });\n    this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n    this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n    this.noteBkgColor = this.noteBkgColor || \"#fff5ad\";\n    this.noteTextColor = this.noteTextColor || \"#333\";\n    this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n    this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n    this.lineColor = this.lineColor || invert(this.background);\n    this.arrowheadColor = this.arrowheadColor || invert(this.background);\n    this.textColor = this.textColor || this.primaryTextColor;\n    this.border2 = this.border2 || this.tertiaryBorderColor;\n    this.nodeBkg = this.nodeBkg || this.primaryColor;\n    this.mainBkg = this.mainBkg || this.primaryColor;\n    this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n    this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n    this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n    this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n    this.titleColor = this.titleColor || this.tertiaryTextColor;\n    this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n    this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n    this.actorBorder = this.actorBorder || this.primaryBorderColor;\n    this.actorBkg = this.actorBkg || this.mainBkg;\n    this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n    this.actorLineColor = this.actorLineColor || this.actorBorder;\n    this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n    this.signalColor = this.signalColor || this.textColor;\n    this.signalTextColor = this.signalTextColor || this.textColor;\n    this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n    this.labelTextColor = this.labelTextColor || this.actorTextColor;\n    this.loopTextColor = this.loopTextColor || this.actorTextColor;\n    this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n    this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n    this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n    this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n    this.altSectionBkgColor = this.altSectionBkgColor || \"white\";\n    this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n    this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n    this.excludeBkgColor = this.excludeBkgColor || \"#eeeeee\";\n    this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n    this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n    this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n    this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n    this.gridColor = this.gridColor || \"lightgrey\";\n    this.doneTaskBkgColor = this.doneTaskBkgColor || \"lightgrey\";\n    this.doneTaskBorderColor = this.doneTaskBorderColor || \"grey\";\n    this.critBorderColor = this.critBorderColor || \"#ff8888\";\n    this.critBkgColor = this.critBkgColor || \"red\";\n    this.todayLineColor = this.todayLineColor || \"red\";\n    this.taskTextColor = this.taskTextColor || this.textColor;\n    this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n    this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n    this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n    this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n    this.taskTextClickableColor = this.taskTextClickableColor || \"#003163\";\n    this.personBorder = this.personBorder || this.primaryBorderColor;\n    this.personBkg = this.personBkg || this.mainBkg;\n    if (this.darkMode) {\n      this.rowOdd = this.rowOdd || darken(this.mainBkg, 5) || \"#ffffff\";\n      this.rowEven = this.rowEven || darken(this.mainBkg, 10);\n    } else {\n      this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || \"#ffffff\";\n      this.rowEven = this.rowEven || lighten(this.mainBkg, 5);\n    }\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || this.tertiaryColor;\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.nodeBorder;\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.specialStateColor = this.lineColor;\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust2(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust2(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust2(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust2(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust2(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust2(this.primaryColor, { h: 210, l: 150 });\n    this.cScale9 = this.cScale9 || adjust2(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust2(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust2(this.primaryColor, { h: 330 });\n    if (this.darkMode) {\n      for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n        this[\"cScale\" + i] = darken(this[\"cScale\" + i], 75);\n      }\n    } else {\n      for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n        this[\"cScale\" + i] = darken(this[\"cScale\" + i], 25);\n      }\n    }\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n    }\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      if (this.darkMode) {\n        this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n      } else {\n        this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n      }\n    }\n    this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n    }\n    const multiplier = this.darkMode ? -4 : -1;\n    for (let i = 0; i < 5; i++) {\n      this[\"surface\" + i] = this[\"surface\" + i] || adjust2(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n      this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust2(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n    }\n    this.classText = this.classText || this.textColor;\n    this.fillType0 = this.fillType0 || this.primaryColor;\n    this.fillType1 = this.fillType1 || this.secondaryColor;\n    this.fillType2 = this.fillType2 || adjust2(this.primaryColor, { h: 64 });\n    this.fillType3 = this.fillType3 || adjust2(this.secondaryColor, { h: 64 });\n    this.fillType4 = this.fillType4 || adjust2(this.primaryColor, { h: -64 });\n    this.fillType5 = this.fillType5 || adjust2(this.secondaryColor, { h: -64 });\n    this.fillType6 = this.fillType6 || adjust2(this.primaryColor, { h: 128 });\n    this.fillType7 = this.fillType7 || adjust2(this.secondaryColor, { h: 128 });\n    this.pie1 = this.pie1 || this.primaryColor;\n    this.pie2 = this.pie2 || this.secondaryColor;\n    this.pie3 = this.pie3 || this.tertiaryColor;\n    this.pie4 = this.pie4 || adjust2(this.primaryColor, { l: -10 });\n    this.pie5 = this.pie5 || adjust2(this.secondaryColor, { l: -10 });\n    this.pie6 = this.pie6 || adjust2(this.tertiaryColor, { l: -10 });\n    this.pie7 = this.pie7 || adjust2(this.primaryColor, { h: 60, l: -10 });\n    this.pie8 = this.pie8 || adjust2(this.primaryColor, { h: -60, l: -10 });\n    this.pie9 = this.pie9 || adjust2(this.primaryColor, { h: 120, l: 0 });\n    this.pie10 = this.pie10 || adjust2(this.primaryColor, { h: 60, l: -20 });\n    this.pie11 = this.pie11 || adjust2(this.primaryColor, { h: -60, l: -20 });\n    this.pie12 = this.pie12 || adjust2(this.primaryColor, { h: 120, l: -10 });\n    this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || \"black\";\n    this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n    this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n    this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n    this.pieOpacity = this.pieOpacity || \"0.7\";\n    this.radar = {\n      axisColor: this.radar?.axisColor || this.lineColor,\n      axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n      axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n      curveOpacity: this.radar?.curveOpacity || 0.5,\n      curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n      graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n      graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n      graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n      legendBoxSize: this.radar?.legendBoxSize || 12,\n      legendFontSize: this.radar?.legendFontSize || 12\n    };\n    this.archEdgeColor = this.archEdgeColor || \"#777\";\n    this.archEdgeArrowColor = this.archEdgeArrowColor || \"#777\";\n    this.archEdgeWidth = this.archEdgeWidth || \"3\";\n    this.archGroupBorderColor = this.archGroupBorderColor || \"#000\";\n    this.archGroupBorderWidth = this.archGroupBorderWidth || \"2px\";\n    this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n    this.quadrant2Fill = this.quadrant2Fill || adjust2(this.primaryColor, { r: 5, g: 5, b: 5 });\n    this.quadrant3Fill = this.quadrant3Fill || adjust2(this.primaryColor, { r: 10, g: 10, b: 10 });\n    this.quadrant4Fill = this.quadrant4Fill || adjust2(this.primaryColor, { r: 15, g: 15, b: 15 });\n    this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n    this.quadrant2TextFill = this.quadrant2TextFill || adjust2(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n    this.quadrant3TextFill = this.quadrant3TextFill || adjust2(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n    this.quadrant4TextFill = this.quadrant4TextFill || adjust2(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n    this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n    this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n    this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n    this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n    this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n    this.xyChart = {\n      backgroundColor: this.xyChart?.backgroundColor || this.background,\n      titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n      xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n      xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n      xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n      xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n      yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n      yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n      yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n      yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n      plotColorPalette: this.xyChart?.plotColorPalette || \"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0\"\n    };\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || \"1\";\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n    this.git0 = this.git0 || this.primaryColor;\n    this.git1 = this.git1 || this.secondaryColor;\n    this.git2 = this.git2 || this.tertiaryColor;\n    this.git3 = this.git3 || adjust2(this.primaryColor, { h: -30 });\n    this.git4 = this.git4 || adjust2(this.primaryColor, { h: -60 });\n    this.git5 = this.git5 || adjust2(this.primaryColor, { h: -90 });\n    this.git6 = this.git6 || adjust2(this.primaryColor, { h: 60 });\n    this.git7 = this.git7 || adjust2(this.primaryColor, { h: 120 });\n    if (this.darkMode) {\n      this.git0 = lighten(this.git0, 25);\n      this.git1 = lighten(this.git1, 25);\n      this.git2 = lighten(this.git2, 25);\n      this.git3 = lighten(this.git3, 25);\n      this.git4 = lighten(this.git4, 25);\n      this.git5 = lighten(this.git5, 25);\n      this.git6 = lighten(this.git6, 25);\n      this.git7 = lighten(this.git7, 25);\n    } else {\n      this.git0 = darken(this.git0, 25);\n      this.git1 = darken(this.git1, 25);\n      this.git2 = darken(this.git2, 25);\n      this.git3 = darken(this.git3, 25);\n      this.git4 = darken(this.git4, 25);\n      this.git5 = darken(this.git5, 25);\n      this.git6 = darken(this.git6, 25);\n      this.git7 = darken(this.git7, 25);\n    }\n    this.gitInv0 = this.gitInv0 || invert(this.git0);\n    this.gitInv1 = this.gitInv1 || invert(this.git1);\n    this.gitInv2 = this.gitInv2 || invert(this.git2);\n    this.gitInv3 = this.gitInv3 || invert(this.git3);\n    this.gitInv4 = this.gitInv4 || invert(this.git4);\n    this.gitInv5 = this.gitInv5 || invert(this.git5);\n    this.gitInv6 = this.gitInv6 || invert(this.git6);\n    this.gitInv7 = this.gitInv7 || invert(this.git7);\n    this.branchLabelColor = this.branchLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n    this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n    this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n    this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n    this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n    this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n    this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n    this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n    this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n    this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n  }\n  calculate(overrides) {\n    if (typeof overrides !== \"object\") {\n      this.updateColors();\n      return;\n    }\n    const keys = Object.keys(overrides);\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n    this.updateColors();\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n};\nvar getThemeVariables = /* @__PURE__ */ __name((userOverrides) => {\n  const theme = new Theme();\n  theme.calculate(userOverrides);\n  return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-dark.js\nimport { adjust as adjust3, darken as darken2, invert as invert2, isDark as isDark2, lighten as lighten2, rgba } from \"khroma\";\nvar Theme2 = class {\n  static {\n    __name(this, \"Theme\");\n  }\n  constructor() {\n    this.background = \"#333\";\n    this.primaryColor = \"#1f2020\";\n    this.secondaryColor = lighten2(this.primaryColor, 16);\n    this.tertiaryColor = adjust3(this.primaryColor, { h: -160 });\n    this.primaryBorderColor = invert2(this.background);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    this.primaryTextColor = invert2(this.primaryColor);\n    this.secondaryTextColor = invert2(this.secondaryColor);\n    this.tertiaryTextColor = invert2(this.tertiaryColor);\n    this.lineColor = invert2(this.background);\n    this.textColor = invert2(this.background);\n    this.mainBkg = \"#1f2020\";\n    this.secondBkg = \"calculated\";\n    this.mainContrastColor = \"lightgrey\";\n    this.darkTextColor = lighten2(invert2(\"#323D47\"), 10);\n    this.lineColor = \"calculated\";\n    this.border1 = \"#ccc\";\n    this.border2 = rgba(255, 255, 255, 0.25);\n    this.arrowheadColor = \"calculated\";\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = \"16px\";\n    this.labelBackground = \"#181818\";\n    this.textColor = \"#ccc\";\n    this.THEME_COLOR_LIMIT = 12;\n    this.nodeBkg = \"calculated\";\n    this.nodeBorder = \"calculated\";\n    this.clusterBkg = \"calculated\";\n    this.clusterBorder = \"calculated\";\n    this.defaultLinkColor = \"calculated\";\n    this.titleColor = \"#F9FFFE\";\n    this.edgeLabelBackground = \"calculated\";\n    this.actorBorder = \"calculated\";\n    this.actorBkg = \"calculated\";\n    this.actorTextColor = \"calculated\";\n    this.actorLineColor = \"calculated\";\n    this.signalColor = \"calculated\";\n    this.signalTextColor = \"calculated\";\n    this.labelBoxBkgColor = \"calculated\";\n    this.labelBoxBorderColor = \"calculated\";\n    this.labelTextColor = \"calculated\";\n    this.loopTextColor = \"calculated\";\n    this.noteBorderColor = \"calculated\";\n    this.noteBkgColor = \"#fff5ad\";\n    this.noteTextColor = \"calculated\";\n    this.activationBorderColor = \"calculated\";\n    this.activationBkgColor = \"calculated\";\n    this.sequenceNumberColor = \"black\";\n    this.sectionBkgColor = darken2(\"#EAE8D9\", 30);\n    this.altSectionBkgColor = \"calculated\";\n    this.sectionBkgColor2 = \"#EAE8D9\";\n    this.excludeBkgColor = darken2(this.sectionBkgColor, 10);\n    this.taskBorderColor = rgba(255, 255, 255, 70);\n    this.taskBkgColor = \"calculated\";\n    this.taskTextColor = \"calculated\";\n    this.taskTextLightColor = \"calculated\";\n    this.taskTextOutsideColor = \"calculated\";\n    this.taskTextClickableColor = \"#003163\";\n    this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n    this.activeTaskBkgColor = \"#81B1DB\";\n    this.gridColor = \"calculated\";\n    this.doneTaskBkgColor = \"calculated\";\n    this.doneTaskBorderColor = \"grey\";\n    this.critBorderColor = \"#E83737\";\n    this.critBkgColor = \"#E83737\";\n    this.taskTextDarkColor = \"calculated\";\n    this.todayLineColor = \"#DB5757\";\n    this.personBorder = this.primaryBorderColor;\n    this.personBkg = this.mainBkg;\n    this.archEdgeColor = \"calculated\";\n    this.archEdgeArrowColor = \"calculated\";\n    this.archEdgeWidth = \"3\";\n    this.archGroupBorderColor = this.primaryBorderColor;\n    this.archGroupBorderWidth = \"2px\";\n    this.rowOdd = this.rowOdd || lighten2(this.mainBkg, 5) || \"#ffffff\";\n    this.rowEven = this.rowEven || darken2(this.mainBkg, 10);\n    this.labelColor = \"calculated\";\n    this.errorBkgColor = \"#a44141\";\n    this.errorTextColor = \"#ddd\";\n  }\n  updateColors() {\n    this.secondBkg = lighten2(this.mainBkg, 16);\n    this.lineColor = this.mainContrastColor;\n    this.arrowheadColor = this.mainContrastColor;\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1;\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n    this.edgeLabelBackground = lighten2(this.labelBackground, 25);\n    this.actorBorder = this.border1;\n    this.actorBkg = this.mainBkg;\n    this.actorTextColor = this.mainContrastColor;\n    this.actorLineColor = this.actorBorder;\n    this.signalColor = this.mainContrastColor;\n    this.signalTextColor = this.mainContrastColor;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.labelBoxBorderColor = this.actorBorder;\n    this.labelTextColor = this.mainContrastColor;\n    this.loopTextColor = this.mainContrastColor;\n    this.noteBorderColor = this.secondaryBorderColor;\n    this.noteBkgColor = this.secondBkg;\n    this.noteTextColor = this.secondaryTextColor;\n    this.activationBorderColor = this.border1;\n    this.activationBkgColor = this.secondBkg;\n    this.altSectionBkgColor = this.background;\n    this.taskBkgColor = lighten2(this.mainBkg, 23);\n    this.taskTextColor = this.darkTextColor;\n    this.taskTextLightColor = this.mainContrastColor;\n    this.taskTextOutsideColor = this.taskTextLightColor;\n    this.gridColor = this.mainContrastColor;\n    this.doneTaskBkgColor = this.mainContrastColor;\n    this.taskTextDarkColor = this.darkTextColor;\n    this.archEdgeColor = this.lineColor;\n    this.archEdgeArrowColor = this.lineColor;\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || \"#555\";\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.primaryBorderColor;\n    this.specialStateColor = \"#f4f4f4\";\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust3(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust3(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust3(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust3(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust3(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust3(this.secondaryColor, { h: 128 });\n    this.cScale1 = this.cScale1 || \"#0b0000\";\n    this.cScale2 = this.cScale2 || \"#4d1037\";\n    this.cScale3 = this.cScale3 || \"#3f5258\";\n    this.cScale4 = this.cScale4 || \"#4f2f1b\";\n    this.cScale5 = this.cScale5 || \"#6e0a0a\";\n    this.cScale6 = this.cScale6 || \"#3b0048\";\n    this.cScale7 = this.cScale7 || \"#995a01\";\n    this.cScale8 = this.cScale8 || \"#154706\";\n    this.cScale9 = this.cScale9 || \"#161722\";\n    this.cScale10 = this.cScale10 || \"#00296f\";\n    this.cScale11 = this.cScale11 || \"#01629c\";\n    this.cScale12 = this.cScale12 || \"#010029\";\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust3(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust3(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust3(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust3(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust3(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust3(this.primaryColor, { h: 210 });\n    this.cScale9 = this.cScale9 || adjust3(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust3(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust3(this.primaryColor, { h: 330 });\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert2(this[\"cScale\" + i]);\n    }\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten2(this[\"cScale\" + i], 10);\n    }\n    for (let i = 0; i < 5; i++) {\n      this[\"surface\" + i] = this[\"surface\" + i] || adjust3(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n      this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust3(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n    }\n    this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n    }\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"pie\" + i] = this[\"cScale\" + i];\n    }\n    this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || \"black\";\n    this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n    this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n    this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n    this.pieOpacity = this.pieOpacity || \"0.7\";\n    this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n    this.quadrant2Fill = this.quadrant2Fill || adjust3(this.primaryColor, { r: 5, g: 5, b: 5 });\n    this.quadrant3Fill = this.quadrant3Fill || adjust3(this.primaryColor, { r: 10, g: 10, b: 10 });\n    this.quadrant4Fill = this.quadrant4Fill || adjust3(this.primaryColor, { r: 15, g: 15, b: 15 });\n    this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n    this.quadrant2TextFill = this.quadrant2TextFill || adjust3(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n    this.quadrant3TextFill = this.quadrant3TextFill || adjust3(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n    this.quadrant4TextFill = this.quadrant4TextFill || adjust3(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n    this.quadrantPointFill = this.quadrantPointFill || isDark2(this.quadrant1Fill) ? lighten2(this.quadrant1Fill) : darken2(this.quadrant1Fill);\n    this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n    this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n    this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n    this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n    this.xyChart = {\n      backgroundColor: this.xyChart?.backgroundColor || this.background,\n      titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n      xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n      xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n      xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n      xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n      yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n      yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n      yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n      yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n      plotColorPalette: this.xyChart?.plotColorPalette || \"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22\"\n    };\n    this.packet = {\n      startByteColor: this.primaryTextColor,\n      endByteColor: this.primaryTextColor,\n      labelColor: this.primaryTextColor,\n      titleColor: this.primaryTextColor,\n      blockStrokeColor: this.primaryTextColor,\n      blockFillColor: this.background\n    };\n    this.radar = {\n      axisColor: this.radar?.axisColor || this.lineColor,\n      axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n      axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n      curveOpacity: this.radar?.curveOpacity || 0.5,\n      curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n      graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n      graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n      graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n      legendBoxSize: this.radar?.legendBoxSize || 12,\n      legendFontSize: this.radar?.legendFontSize || 12\n    };\n    this.classText = this.primaryTextColor;\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || \"1\";\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken2(this.secondaryColor, 30) : this.secondaryColor);\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n    this.git0 = lighten2(this.secondaryColor, 20);\n    this.git1 = lighten2(this.pie2 || this.secondaryColor, 20);\n    this.git2 = lighten2(this.pie3 || this.tertiaryColor, 20);\n    this.git3 = lighten2(this.pie4 || adjust3(this.primaryColor, { h: -30 }), 20);\n    this.git4 = lighten2(this.pie5 || adjust3(this.primaryColor, { h: -60 }), 20);\n    this.git5 = lighten2(this.pie6 || adjust3(this.primaryColor, { h: -90 }), 10);\n    this.git6 = lighten2(this.pie7 || adjust3(this.primaryColor, { h: 60 }), 10);\n    this.git7 = lighten2(this.pie8 || adjust3(this.primaryColor, { h: 120 }), 20);\n    this.gitInv0 = this.gitInv0 || invert2(this.git0);\n    this.gitInv1 = this.gitInv1 || invert2(this.git1);\n    this.gitInv2 = this.gitInv2 || invert2(this.git2);\n    this.gitInv3 = this.gitInv3 || invert2(this.git3);\n    this.gitInv4 = this.gitInv4 || invert2(this.git4);\n    this.gitInv5 = this.gitInv5 || invert2(this.git5);\n    this.gitInv6 = this.gitInv6 || invert2(this.git6);\n    this.gitInv7 = this.gitInv7 || invert2(this.git7);\n    this.gitBranchLabel0 = this.gitBranchLabel0 || invert2(this.labelTextColor);\n    this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n    this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n    this.gitBranchLabel3 = this.gitBranchLabel3 || invert2(this.labelTextColor);\n    this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n    this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n    this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n    this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n    this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || lighten2(this.background, 12);\n    this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || lighten2(this.background, 2);\n    this.nodeBorder = this.nodeBorder || \"#999\";\n  }\n  calculate(overrides) {\n    if (typeof overrides !== \"object\") {\n      this.updateColors();\n      return;\n    }\n    const keys = Object.keys(overrides);\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n    this.updateColors();\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n};\nvar getThemeVariables2 = /* @__PURE__ */ __name((userOverrides) => {\n  const theme = new Theme2();\n  theme.calculate(userOverrides);\n  return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-default.js\nimport { invert as invert3, lighten as lighten3, rgba as rgba2, adjust as adjust4, darken as darken3, isDark as isDark3 } from \"khroma\";\nvar Theme3 = class {\n  static {\n    __name(this, \"Theme\");\n  }\n  constructor() {\n    this.background = \"#f4f4f4\";\n    this.primaryColor = \"#ECECFF\";\n    this.secondaryColor = adjust4(this.primaryColor, { h: 120 });\n    this.secondaryColor = \"#ffffde\";\n    this.tertiaryColor = adjust4(this.primaryColor, { h: -160 });\n    this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    this.primaryTextColor = invert3(this.primaryColor);\n    this.secondaryTextColor = invert3(this.secondaryColor);\n    this.tertiaryTextColor = invert3(this.tertiaryColor);\n    this.lineColor = invert3(this.background);\n    this.textColor = invert3(this.background);\n    this.background = \"white\";\n    this.mainBkg = \"#ECECFF\";\n    this.secondBkg = \"#ffffde\";\n    this.lineColor = \"#333333\";\n    this.border1 = \"#9370DB\";\n    this.border2 = \"#aaaa33\";\n    this.arrowheadColor = \"#333333\";\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = \"16px\";\n    this.labelBackground = \"rgba(232,232,232, 0.8)\";\n    this.textColor = \"#333\";\n    this.THEME_COLOR_LIMIT = 12;\n    this.nodeBkg = \"calculated\";\n    this.nodeBorder = \"calculated\";\n    this.clusterBkg = \"calculated\";\n    this.clusterBorder = \"calculated\";\n    this.defaultLinkColor = \"calculated\";\n    this.titleColor = \"calculated\";\n    this.edgeLabelBackground = \"calculated\";\n    this.actorBorder = \"calculated\";\n    this.actorBkg = \"calculated\";\n    this.actorTextColor = \"black\";\n    this.actorLineColor = \"calculated\";\n    this.signalColor = \"calculated\";\n    this.signalTextColor = \"calculated\";\n    this.labelBoxBkgColor = \"calculated\";\n    this.labelBoxBorderColor = \"calculated\";\n    this.labelTextColor = \"calculated\";\n    this.loopTextColor = \"calculated\";\n    this.noteBorderColor = \"calculated\";\n    this.noteBkgColor = \"#fff5ad\";\n    this.noteTextColor = \"calculated\";\n    this.activationBorderColor = \"#666\";\n    this.activationBkgColor = \"#f4f4f4\";\n    this.sequenceNumberColor = \"white\";\n    this.sectionBkgColor = \"calculated\";\n    this.altSectionBkgColor = \"calculated\";\n    this.sectionBkgColor2 = \"calculated\";\n    this.excludeBkgColor = \"#eeeeee\";\n    this.taskBorderColor = \"calculated\";\n    this.taskBkgColor = \"calculated\";\n    this.taskTextLightColor = \"calculated\";\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextDarkColor = \"calculated\";\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n    this.taskTextClickableColor = \"calculated\";\n    this.activeTaskBorderColor = \"calculated\";\n    this.activeTaskBkgColor = \"calculated\";\n    this.gridColor = \"calculated\";\n    this.doneTaskBkgColor = \"calculated\";\n    this.doneTaskBorderColor = \"calculated\";\n    this.critBorderColor = \"calculated\";\n    this.critBkgColor = \"calculated\";\n    this.todayLineColor = \"calculated\";\n    this.sectionBkgColor = rgba2(102, 102, 255, 0.49);\n    this.altSectionBkgColor = \"white\";\n    this.sectionBkgColor2 = \"#fff400\";\n    this.taskBorderColor = \"#534fbc\";\n    this.taskBkgColor = \"#8a90dd\";\n    this.taskTextLightColor = \"white\";\n    this.taskTextColor = \"calculated\";\n    this.taskTextDarkColor = \"black\";\n    this.taskTextOutsideColor = \"calculated\";\n    this.taskTextClickableColor = \"#003163\";\n    this.activeTaskBorderColor = \"#534fbc\";\n    this.activeTaskBkgColor = \"#bfc7ff\";\n    this.gridColor = \"lightgrey\";\n    this.doneTaskBkgColor = \"lightgrey\";\n    this.doneTaskBorderColor = \"grey\";\n    this.critBorderColor = \"#ff8888\";\n    this.critBkgColor = \"red\";\n    this.todayLineColor = \"red\";\n    this.personBorder = this.primaryBorderColor;\n    this.personBkg = this.mainBkg;\n    this.archEdgeColor = \"calculated\";\n    this.archEdgeArrowColor = \"calculated\";\n    this.archEdgeWidth = \"3\";\n    this.archGroupBorderColor = this.primaryBorderColor;\n    this.archGroupBorderWidth = \"2px\";\n    this.rowOdd = \"calculated\";\n    this.rowEven = \"calculated\";\n    this.labelColor = \"black\";\n    this.errorBkgColor = \"#552222\";\n    this.errorTextColor = \"#552222\";\n    this.updateColors();\n  }\n  updateColors() {\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust4(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust4(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust4(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust4(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust4(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust4(this.primaryColor, { h: 210 });\n    this.cScale9 = this.cScale9 || adjust4(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust4(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust4(this.primaryColor, { h: 330 });\n    this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken3(this.secondaryColor, 45);\n    this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken3(this.tertiaryColor, 40);\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScale\" + i] = darken3(this[\"cScale\" + i], 10);\n      this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken3(this[\"cScale\" + i], 25);\n    }\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust4(this[\"cScale\" + i], { h: 180 });\n    }\n    for (let i = 0; i < 5; i++) {\n      this[\"surface\" + i] = this[\"surface\" + i] || adjust4(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n      this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust4(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n    }\n    this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n    if (this.labelTextColor !== \"calculated\") {\n      this.cScaleLabel0 = this.cScaleLabel0 || invert3(this.labelTextColor);\n      this.cScaleLabel3 = this.cScaleLabel3 || invert3(this.labelTextColor);\n      for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n        this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.labelTextColor;\n      }\n    }\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1;\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n    this.titleColor = this.textColor;\n    this.edgeLabelBackground = this.labelBackground;\n    this.actorBorder = lighten3(this.border1, 23);\n    this.actorBkg = this.mainBkg;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.signalColor = this.textColor;\n    this.signalTextColor = this.textColor;\n    this.labelBoxBorderColor = this.actorBorder;\n    this.labelTextColor = this.actorTextColor;\n    this.loopTextColor = this.actorTextColor;\n    this.noteBorderColor = this.border2;\n    this.noteTextColor = this.actorTextColor;\n    this.actorLineColor = this.actorBorder;\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n    this.archEdgeColor = this.lineColor;\n    this.archEdgeArrowColor = this.lineColor;\n    this.rowOdd = this.rowOdd || lighten3(this.primaryColor, 75) || \"#ffffff\";\n    this.rowEven = this.rowEven || lighten3(this.primaryColor, 1);\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || \"#f0f0f0\";\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.nodeBorder;\n    this.specialStateColor = this.lineColor;\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.classText = this.primaryTextColor;\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust4(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust4(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust4(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust4(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust4(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust4(this.secondaryColor, { h: 128 });\n    this.pie1 = this.pie1 || this.primaryColor;\n    this.pie2 = this.pie2 || this.secondaryColor;\n    this.pie3 = this.pie3 || adjust4(this.tertiaryColor, { l: -40 });\n    this.pie4 = this.pie4 || adjust4(this.primaryColor, { l: -10 });\n    this.pie5 = this.pie5 || adjust4(this.secondaryColor, { l: -30 });\n    this.pie6 = this.pie6 || adjust4(this.tertiaryColor, { l: -20 });\n    this.pie7 = this.pie7 || adjust4(this.primaryColor, { h: 60, l: -20 });\n    this.pie8 = this.pie8 || adjust4(this.primaryColor, { h: -60, l: -40 });\n    this.pie9 = this.pie9 || adjust4(this.primaryColor, { h: 120, l: -40 });\n    this.pie10 = this.pie10 || adjust4(this.primaryColor, { h: 60, l: -40 });\n    this.pie11 = this.pie11 || adjust4(this.primaryColor, { h: -90, l: -40 });\n    this.pie12 = this.pie12 || adjust4(this.primaryColor, { h: 120, l: -30 });\n    this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || \"black\";\n    this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n    this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n    this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n    this.pieOpacity = this.pieOpacity || \"0.7\";\n    this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n    this.quadrant2Fill = this.quadrant2Fill || adjust4(this.primaryColor, { r: 5, g: 5, b: 5 });\n    this.quadrant3Fill = this.quadrant3Fill || adjust4(this.primaryColor, { r: 10, g: 10, b: 10 });\n    this.quadrant4Fill = this.quadrant4Fill || adjust4(this.primaryColor, { r: 15, g: 15, b: 15 });\n    this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n    this.quadrant2TextFill = this.quadrant2TextFill || adjust4(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n    this.quadrant3TextFill = this.quadrant3TextFill || adjust4(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n    this.quadrant4TextFill = this.quadrant4TextFill || adjust4(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n    this.quadrantPointFill = this.quadrantPointFill || isDark3(this.quadrant1Fill) ? lighten3(this.quadrant1Fill) : darken3(this.quadrant1Fill);\n    this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n    this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n    this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n    this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n    this.radar = {\n      axisColor: this.radar?.axisColor || this.lineColor,\n      axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n      axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n      curveOpacity: this.radar?.curveOpacity || 0.5,\n      curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n      graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n      graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n      graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n      legendBoxSize: this.radar?.legendBoxSize || 12,\n      legendFontSize: this.radar?.legendFontSize || 12\n    };\n    this.xyChart = {\n      backgroundColor: this.xyChart?.backgroundColor || this.background,\n      titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n      xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n      xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n      xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n      xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n      yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n      yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n      yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n      yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n      plotColorPalette: this.xyChart?.plotColorPalette || \"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3\"\n    };\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || \"1\";\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n    this.git0 = this.git0 || this.primaryColor;\n    this.git1 = this.git1 || this.secondaryColor;\n    this.git2 = this.git2 || this.tertiaryColor;\n    this.git3 = this.git3 || adjust4(this.primaryColor, { h: -30 });\n    this.git4 = this.git4 || adjust4(this.primaryColor, { h: -60 });\n    this.git5 = this.git5 || adjust4(this.primaryColor, { h: -90 });\n    this.git6 = this.git6 || adjust4(this.primaryColor, { h: 60 });\n    this.git7 = this.git7 || adjust4(this.primaryColor, { h: 120 });\n    if (this.darkMode) {\n      this.git0 = lighten3(this.git0, 25);\n      this.git1 = lighten3(this.git1, 25);\n      this.git2 = lighten3(this.git2, 25);\n      this.git3 = lighten3(this.git3, 25);\n      this.git4 = lighten3(this.git4, 25);\n      this.git5 = lighten3(this.git5, 25);\n      this.git6 = lighten3(this.git6, 25);\n      this.git7 = lighten3(this.git7, 25);\n    } else {\n      this.git0 = darken3(this.git0, 25);\n      this.git1 = darken3(this.git1, 25);\n      this.git2 = darken3(this.git2, 25);\n      this.git3 = darken3(this.git3, 25);\n      this.git4 = darken3(this.git4, 25);\n      this.git5 = darken3(this.git5, 25);\n      this.git6 = darken3(this.git6, 25);\n      this.git7 = darken3(this.git7, 25);\n    }\n    this.gitInv0 = this.gitInv0 || darken3(invert3(this.git0), 25);\n    this.gitInv1 = this.gitInv1 || invert3(this.git1);\n    this.gitInv2 = this.gitInv2 || invert3(this.git2);\n    this.gitInv3 = this.gitInv3 || invert3(this.git3);\n    this.gitInv4 = this.gitInv4 || invert3(this.git4);\n    this.gitInv5 = this.gitInv5 || invert3(this.git5);\n    this.gitInv6 = this.gitInv6 || invert3(this.git6);\n    this.gitInv7 = this.gitInv7 || invert3(this.git7);\n    this.gitBranchLabel0 = this.gitBranchLabel0 || invert3(this.labelTextColor);\n    this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n    this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n    this.gitBranchLabel3 = this.gitBranchLabel3 || invert3(this.labelTextColor);\n    this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n    this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n    this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n    this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n    this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n  }\n  calculate(overrides) {\n    Object.keys(this).forEach((k) => {\n      if (this[k] === \"calculated\") {\n        this[k] = void 0;\n      }\n    });\n    if (typeof overrides !== \"object\") {\n      this.updateColors();\n      return;\n    }\n    const keys = Object.keys(overrides);\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n    this.updateColors();\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n};\nvar getThemeVariables3 = /* @__PURE__ */ __name((userOverrides) => {\n  const theme = new Theme3();\n  theme.calculate(userOverrides);\n  return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-forest.js\nimport { adjust as adjust5, darken as darken4, invert as invert4, isDark as isDark4, lighten as lighten4 } from \"khroma\";\nvar Theme4 = class {\n  static {\n    __name(this, \"Theme\");\n  }\n  constructor() {\n    this.background = \"#f4f4f4\";\n    this.primaryColor = \"#cde498\";\n    this.secondaryColor = \"#cdffb2\";\n    this.background = \"white\";\n    this.mainBkg = \"#cde498\";\n    this.secondBkg = \"#cdffb2\";\n    this.lineColor = \"green\";\n    this.border1 = \"#13540c\";\n    this.border2 = \"#6eaa49\";\n    this.arrowheadColor = \"green\";\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = \"16px\";\n    this.tertiaryColor = lighten4(\"#cde498\", 10);\n    this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    this.primaryTextColor = invert4(this.primaryColor);\n    this.secondaryTextColor = invert4(this.secondaryColor);\n    this.tertiaryTextColor = invert4(this.primaryColor);\n    this.lineColor = invert4(this.background);\n    this.textColor = invert4(this.background);\n    this.THEME_COLOR_LIMIT = 12;\n    this.nodeBkg = \"calculated\";\n    this.nodeBorder = \"calculated\";\n    this.clusterBkg = \"calculated\";\n    this.clusterBorder = \"calculated\";\n    this.defaultLinkColor = \"calculated\";\n    this.titleColor = \"#333\";\n    this.edgeLabelBackground = \"#e8e8e8\";\n    this.actorBorder = \"calculated\";\n    this.actorBkg = \"calculated\";\n    this.actorTextColor = \"black\";\n    this.actorLineColor = \"calculated\";\n    this.signalColor = \"#333\";\n    this.signalTextColor = \"#333\";\n    this.labelBoxBkgColor = \"calculated\";\n    this.labelBoxBorderColor = \"#326932\";\n    this.labelTextColor = \"calculated\";\n    this.loopTextColor = \"calculated\";\n    this.noteBorderColor = \"calculated\";\n    this.noteBkgColor = \"#fff5ad\";\n    this.noteTextColor = \"calculated\";\n    this.activationBorderColor = \"#666\";\n    this.activationBkgColor = \"#f4f4f4\";\n    this.sequenceNumberColor = \"white\";\n    this.sectionBkgColor = \"#6eaa49\";\n    this.altSectionBkgColor = \"white\";\n    this.sectionBkgColor2 = \"#6eaa49\";\n    this.excludeBkgColor = \"#eeeeee\";\n    this.taskBorderColor = \"calculated\";\n    this.taskBkgColor = \"#487e3a\";\n    this.taskTextLightColor = \"white\";\n    this.taskTextColor = \"calculated\";\n    this.taskTextDarkColor = \"black\";\n    this.taskTextOutsideColor = \"calculated\";\n    this.taskTextClickableColor = \"#003163\";\n    this.activeTaskBorderColor = \"calculated\";\n    this.activeTaskBkgColor = \"calculated\";\n    this.gridColor = \"lightgrey\";\n    this.doneTaskBkgColor = \"lightgrey\";\n    this.doneTaskBorderColor = \"grey\";\n    this.critBorderColor = \"#ff8888\";\n    this.critBkgColor = \"red\";\n    this.todayLineColor = \"red\";\n    this.personBorder = this.primaryBorderColor;\n    this.personBkg = this.mainBkg;\n    this.archEdgeColor = \"calculated\";\n    this.archEdgeArrowColor = \"calculated\";\n    this.archEdgeWidth = \"3\";\n    this.archGroupBorderColor = this.primaryBorderColor;\n    this.archGroupBorderWidth = \"2px\";\n    this.labelColor = \"black\";\n    this.errorBkgColor = \"#552222\";\n    this.errorTextColor = \"#552222\";\n  }\n  updateColors() {\n    this.actorBorder = darken4(this.mainBkg, 20);\n    this.actorBkg = this.mainBkg;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.labelTextColor = this.actorTextColor;\n    this.loopTextColor = this.actorTextColor;\n    this.noteBorderColor = this.border2;\n    this.noteTextColor = this.actorTextColor;\n    this.actorLineColor = this.actorBorder;\n    this.cScale0 = this.cScale0 || this.primaryColor;\n    this.cScale1 = this.cScale1 || this.secondaryColor;\n    this.cScale2 = this.cScale2 || this.tertiaryColor;\n    this.cScale3 = this.cScale3 || adjust5(this.primaryColor, { h: 30 });\n    this.cScale4 = this.cScale4 || adjust5(this.primaryColor, { h: 60 });\n    this.cScale5 = this.cScale5 || adjust5(this.primaryColor, { h: 90 });\n    this.cScale6 = this.cScale6 || adjust5(this.primaryColor, { h: 120 });\n    this.cScale7 = this.cScale7 || adjust5(this.primaryColor, { h: 150 });\n    this.cScale8 = this.cScale8 || adjust5(this.primaryColor, { h: 210 });\n    this.cScale9 = this.cScale9 || adjust5(this.primaryColor, { h: 270 });\n    this.cScale10 = this.cScale10 || adjust5(this.primaryColor, { h: 300 });\n    this.cScale11 = this.cScale11 || adjust5(this.primaryColor, { h: 330 });\n    this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken4(this.secondaryColor, 45);\n    this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken4(this.tertiaryColor, 40);\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScale\" + i] = darken4(this[\"cScale\" + i], 10);\n      this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken4(this[\"cScale\" + i], 25);\n    }\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust5(this[\"cScale\" + i], { h: 180 });\n    }\n    this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n    }\n    for (let i = 0; i < 5; i++) {\n      this[\"surface\" + i] = this[\"surface\" + i] || adjust5(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n      this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust5(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n    }\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1;\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n    this.taskBorderColor = this.border1;\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n    this.activeTaskBorderColor = this.taskBorderColor;\n    this.activeTaskBkgColor = this.mainBkg;\n    this.archEdgeColor = this.lineColor;\n    this.archEdgeArrowColor = this.lineColor;\n    this.rowOdd = this.rowOdd || lighten4(this.mainBkg, 75) || \"#ffffff\";\n    this.rowEven = this.rowEven || lighten4(this.mainBkg, 20);\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || \"#f0f0f0\";\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.compositeBorder = this.compositeBorder || this.nodeBorder;\n    this.innerEndBackground = this.primaryBorderColor;\n    this.specialStateColor = this.lineColor;\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.transitionColor = this.transitionColor || this.lineColor;\n    this.classText = this.primaryTextColor;\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust5(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust5(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust5(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust5(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust5(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust5(this.secondaryColor, { h: 128 });\n    this.pie1 = this.pie1 || this.primaryColor;\n    this.pie2 = this.pie2 || this.secondaryColor;\n    this.pie3 = this.pie3 || this.tertiaryColor;\n    this.pie4 = this.pie4 || adjust5(this.primaryColor, { l: -30 });\n    this.pie5 = this.pie5 || adjust5(this.secondaryColor, { l: -30 });\n    this.pie6 = this.pie6 || adjust5(this.tertiaryColor, { h: 40, l: -40 });\n    this.pie7 = this.pie7 || adjust5(this.primaryColor, { h: 60, l: -10 });\n    this.pie8 = this.pie8 || adjust5(this.primaryColor, { h: -60, l: -10 });\n    this.pie9 = this.pie9 || adjust5(this.primaryColor, { h: 120, l: 0 });\n    this.pie10 = this.pie10 || adjust5(this.primaryColor, { h: 60, l: -50 });\n    this.pie11 = this.pie11 || adjust5(this.primaryColor, { h: -60, l: -50 });\n    this.pie12 = this.pie12 || adjust5(this.primaryColor, { h: 120, l: -50 });\n    this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || \"black\";\n    this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n    this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n    this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n    this.pieOpacity = this.pieOpacity || \"0.7\";\n    this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n    this.quadrant2Fill = this.quadrant2Fill || adjust5(this.primaryColor, { r: 5, g: 5, b: 5 });\n    this.quadrant3Fill = this.quadrant3Fill || adjust5(this.primaryColor, { r: 10, g: 10, b: 10 });\n    this.quadrant4Fill = this.quadrant4Fill || adjust5(this.primaryColor, { r: 15, g: 15, b: 15 });\n    this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n    this.quadrant2TextFill = this.quadrant2TextFill || adjust5(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n    this.quadrant3TextFill = this.quadrant3TextFill || adjust5(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n    this.quadrant4TextFill = this.quadrant4TextFill || adjust5(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n    this.quadrantPointFill = this.quadrantPointFill || isDark4(this.quadrant1Fill) ? lighten4(this.quadrant1Fill) : darken4(this.quadrant1Fill);\n    this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n    this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n    this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n    this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n    this.packet = {\n      startByteColor: this.primaryTextColor,\n      endByteColor: this.primaryTextColor,\n      labelColor: this.primaryTextColor,\n      titleColor: this.primaryTextColor,\n      blockStrokeColor: this.primaryTextColor,\n      blockFillColor: this.mainBkg\n    };\n    this.radar = {\n      axisColor: this.radar?.axisColor || this.lineColor,\n      axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n      axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n      curveOpacity: this.radar?.curveOpacity || 0.5,\n      curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n      graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n      graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n      graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n      legendBoxSize: this.radar?.legendBoxSize || 12,\n      legendFontSize: this.radar?.legendFontSize || 12\n    };\n    this.xyChart = {\n      backgroundColor: this.xyChart?.backgroundColor || this.background,\n      titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n      xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n      xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n      xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n      xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n      yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n      yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n      yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n      yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n      plotColorPalette: this.xyChart?.plotColorPalette || \"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176\"\n    };\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || \"1\";\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n    this.git0 = this.git0 || this.primaryColor;\n    this.git1 = this.git1 || this.secondaryColor;\n    this.git2 = this.git2 || this.tertiaryColor;\n    this.git3 = this.git3 || adjust5(this.primaryColor, { h: -30 });\n    this.git4 = this.git4 || adjust5(this.primaryColor, { h: -60 });\n    this.git5 = this.git5 || adjust5(this.primaryColor, { h: -90 });\n    this.git6 = this.git6 || adjust5(this.primaryColor, { h: 60 });\n    this.git7 = this.git7 || adjust5(this.primaryColor, { h: 120 });\n    if (this.darkMode) {\n      this.git0 = lighten4(this.git0, 25);\n      this.git1 = lighten4(this.git1, 25);\n      this.git2 = lighten4(this.git2, 25);\n      this.git3 = lighten4(this.git3, 25);\n      this.git4 = lighten4(this.git4, 25);\n      this.git5 = lighten4(this.git5, 25);\n      this.git6 = lighten4(this.git6, 25);\n      this.git7 = lighten4(this.git7, 25);\n    } else {\n      this.git0 = darken4(this.git0, 25);\n      this.git1 = darken4(this.git1, 25);\n      this.git2 = darken4(this.git2, 25);\n      this.git3 = darken4(this.git3, 25);\n      this.git4 = darken4(this.git4, 25);\n      this.git5 = darken4(this.git5, 25);\n      this.git6 = darken4(this.git6, 25);\n      this.git7 = darken4(this.git7, 25);\n    }\n    this.gitInv0 = this.gitInv0 || invert4(this.git0);\n    this.gitInv1 = this.gitInv1 || invert4(this.git1);\n    this.gitInv2 = this.gitInv2 || invert4(this.git2);\n    this.gitInv3 = this.gitInv3 || invert4(this.git3);\n    this.gitInv4 = this.gitInv4 || invert4(this.git4);\n    this.gitInv5 = this.gitInv5 || invert4(this.git5);\n    this.gitInv6 = this.gitInv6 || invert4(this.git6);\n    this.gitInv7 = this.gitInv7 || invert4(this.git7);\n    this.gitBranchLabel0 = this.gitBranchLabel0 || invert4(this.labelTextColor);\n    this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n    this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n    this.gitBranchLabel3 = this.gitBranchLabel3 || invert4(this.labelTextColor);\n    this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n    this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n    this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n    this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n    this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n  }\n  calculate(overrides) {\n    if (typeof overrides !== \"object\") {\n      this.updateColors();\n      return;\n    }\n    const keys = Object.keys(overrides);\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n    this.updateColors();\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n};\nvar getThemeVariables4 = /* @__PURE__ */ __name((userOverrides) => {\n  const theme = new Theme4();\n  theme.calculate(userOverrides);\n  return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-neutral.js\nimport { invert as invert5, darken as darken5, lighten as lighten5, adjust as adjust6, isDark as isDark5 } from \"khroma\";\nvar Theme5 = class {\n  static {\n    __name(this, \"Theme\");\n  }\n  constructor() {\n    this.primaryColor = \"#eee\";\n    this.contrast = \"#707070\";\n    this.secondaryColor = lighten5(this.contrast, 55);\n    this.background = \"#ffffff\";\n    this.tertiaryColor = adjust6(this.primaryColor, { h: -160 });\n    this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n    this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n    this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n    this.primaryTextColor = invert5(this.primaryColor);\n    this.secondaryTextColor = invert5(this.secondaryColor);\n    this.tertiaryTextColor = invert5(this.tertiaryColor);\n    this.lineColor = invert5(this.background);\n    this.textColor = invert5(this.background);\n    this.mainBkg = \"#eee\";\n    this.secondBkg = \"calculated\";\n    this.lineColor = \"#666\";\n    this.border1 = \"#999\";\n    this.border2 = \"calculated\";\n    this.note = \"#ffa\";\n    this.text = \"#333\";\n    this.critical = \"#d42\";\n    this.done = \"#bbb\";\n    this.arrowheadColor = \"#333333\";\n    this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n    this.fontSize = \"16px\";\n    this.THEME_COLOR_LIMIT = 12;\n    this.nodeBkg = \"calculated\";\n    this.nodeBorder = \"calculated\";\n    this.clusterBkg = \"calculated\";\n    this.clusterBorder = \"calculated\";\n    this.defaultLinkColor = \"calculated\";\n    this.titleColor = \"calculated\";\n    this.edgeLabelBackground = \"white\";\n    this.actorBorder = \"calculated\";\n    this.actorBkg = \"calculated\";\n    this.actorTextColor = \"calculated\";\n    this.actorLineColor = this.actorBorder;\n    this.signalColor = \"calculated\";\n    this.signalTextColor = \"calculated\";\n    this.labelBoxBkgColor = \"calculated\";\n    this.labelBoxBorderColor = \"calculated\";\n    this.labelTextColor = \"calculated\";\n    this.loopTextColor = \"calculated\";\n    this.noteBorderColor = \"calculated\";\n    this.noteBkgColor = \"calculated\";\n    this.noteTextColor = \"calculated\";\n    this.activationBorderColor = \"#666\";\n    this.activationBkgColor = \"#f4f4f4\";\n    this.sequenceNumberColor = \"white\";\n    this.sectionBkgColor = \"calculated\";\n    this.altSectionBkgColor = \"white\";\n    this.sectionBkgColor2 = \"calculated\";\n    this.excludeBkgColor = \"#eeeeee\";\n    this.taskBorderColor = \"calculated\";\n    this.taskBkgColor = \"calculated\";\n    this.taskTextLightColor = \"white\";\n    this.taskTextColor = \"calculated\";\n    this.taskTextDarkColor = \"calculated\";\n    this.taskTextOutsideColor = \"calculated\";\n    this.taskTextClickableColor = \"#003163\";\n    this.activeTaskBorderColor = \"calculated\";\n    this.activeTaskBkgColor = \"calculated\";\n    this.gridColor = \"calculated\";\n    this.doneTaskBkgColor = \"calculated\";\n    this.doneTaskBorderColor = \"calculated\";\n    this.critBkgColor = \"calculated\";\n    this.critBorderColor = \"calculated\";\n    this.todayLineColor = \"calculated\";\n    this.personBorder = this.primaryBorderColor;\n    this.personBkg = this.mainBkg;\n    this.archEdgeColor = \"calculated\";\n    this.archEdgeArrowColor = \"calculated\";\n    this.archEdgeWidth = \"3\";\n    this.archGroupBorderColor = this.primaryBorderColor;\n    this.archGroupBorderWidth = \"2px\";\n    this.rowOdd = this.rowOdd || lighten5(this.mainBkg, 75) || \"#ffffff\";\n    this.rowEven = this.rowEven || \"#f4f4f4\";\n    this.labelColor = \"black\";\n    this.errorBkgColor = \"#552222\";\n    this.errorTextColor = \"#552222\";\n  }\n  updateColors() {\n    this.secondBkg = lighten5(this.contrast, 55);\n    this.border2 = this.contrast;\n    this.actorBorder = lighten5(this.border1, 23);\n    this.actorBkg = this.mainBkg;\n    this.actorTextColor = this.text;\n    this.actorLineColor = this.actorBorder;\n    this.signalColor = this.text;\n    this.signalTextColor = this.text;\n    this.labelBoxBkgColor = this.actorBkg;\n    this.labelBoxBorderColor = this.actorBorder;\n    this.labelTextColor = this.text;\n    this.loopTextColor = this.text;\n    this.noteBorderColor = \"#999\";\n    this.noteBkgColor = \"#666\";\n    this.noteTextColor = \"#fff\";\n    this.cScale0 = this.cScale0 || \"#555\";\n    this.cScale1 = this.cScale1 || \"#F4F4F4\";\n    this.cScale2 = this.cScale2 || \"#555\";\n    this.cScale3 = this.cScale3 || \"#BBB\";\n    this.cScale4 = this.cScale4 || \"#777\";\n    this.cScale5 = this.cScale5 || \"#999\";\n    this.cScale6 = this.cScale6 || \"#DDD\";\n    this.cScale7 = this.cScale7 || \"#FFF\";\n    this.cScale8 = this.cScale8 || \"#DDD\";\n    this.cScale9 = this.cScale9 || \"#BBB\";\n    this.cScale10 = this.cScale10 || \"#999\";\n    this.cScale11 = this.cScale11 || \"#777\";\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert5(this[\"cScale\" + i]);\n    }\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      if (this.darkMode) {\n        this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten5(this[\"cScale\" + i], 10);\n      } else {\n        this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken5(this[\"cScale\" + i], 10);\n      }\n    }\n    this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n    this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1;\n    this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1;\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n    }\n    for (let i = 0; i < 5; i++) {\n      this[\"surface\" + i] = this[\"surface\" + i] || adjust6(this.mainBkg, { l: -(5 + i * 5) });\n      this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust6(this.mainBkg, { l: -(8 + i * 5) });\n    }\n    this.nodeBkg = this.mainBkg;\n    this.nodeBorder = this.border1;\n    this.clusterBkg = this.secondBkg;\n    this.clusterBorder = this.border2;\n    this.defaultLinkColor = this.lineColor;\n    this.titleColor = this.text;\n    this.sectionBkgColor = lighten5(this.contrast, 30);\n    this.sectionBkgColor2 = lighten5(this.contrast, 30);\n    this.taskBorderColor = darken5(this.contrast, 10);\n    this.taskBkgColor = this.contrast;\n    this.taskTextColor = this.taskTextLightColor;\n    this.taskTextDarkColor = this.text;\n    this.taskTextOutsideColor = this.taskTextDarkColor;\n    this.activeTaskBorderColor = this.taskBorderColor;\n    this.activeTaskBkgColor = this.mainBkg;\n    this.gridColor = lighten5(this.border1, 30);\n    this.doneTaskBkgColor = this.done;\n    this.doneTaskBorderColor = this.lineColor;\n    this.critBkgColor = this.critical;\n    this.critBorderColor = darken5(this.critBkgColor, 10);\n    this.todayLineColor = this.critBkgColor;\n    this.archEdgeColor = this.lineColor;\n    this.archEdgeArrowColor = this.lineColor;\n    this.transitionColor = this.transitionColor || \"#000\";\n    this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n    this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n    this.stateBkg = this.stateBkg || this.mainBkg;\n    this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n    this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n    this.altBackground = this.altBackground || \"#f4f4f4\";\n    this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n    this.stateBorder = this.stateBorder || \"#000\";\n    this.innerEndBackground = this.primaryBorderColor;\n    this.specialStateColor = \"#222\";\n    this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n    this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n    this.classText = this.primaryTextColor;\n    this.fillType0 = this.primaryColor;\n    this.fillType1 = this.secondaryColor;\n    this.fillType2 = adjust6(this.primaryColor, { h: 64 });\n    this.fillType3 = adjust6(this.secondaryColor, { h: 64 });\n    this.fillType4 = adjust6(this.primaryColor, { h: -64 });\n    this.fillType5 = adjust6(this.secondaryColor, { h: -64 });\n    this.fillType6 = adjust6(this.primaryColor, { h: 128 });\n    this.fillType7 = adjust6(this.secondaryColor, { h: 128 });\n    for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n      this[\"pie\" + i] = this[\"cScale\" + i];\n    }\n    this.pie12 = this.pie0;\n    this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n    this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n    this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n    this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n    this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n    this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n    this.pieStrokeColor = this.pieStrokeColor || \"black\";\n    this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n    this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n    this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n    this.pieOpacity = this.pieOpacity || \"0.7\";\n    this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n    this.quadrant2Fill = this.quadrant2Fill || adjust6(this.primaryColor, { r: 5, g: 5, b: 5 });\n    this.quadrant3Fill = this.quadrant3Fill || adjust6(this.primaryColor, { r: 10, g: 10, b: 10 });\n    this.quadrant4Fill = this.quadrant4Fill || adjust6(this.primaryColor, { r: 15, g: 15, b: 15 });\n    this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n    this.quadrant2TextFill = this.quadrant2TextFill || adjust6(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n    this.quadrant3TextFill = this.quadrant3TextFill || adjust6(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n    this.quadrant4TextFill = this.quadrant4TextFill || adjust6(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n    this.quadrantPointFill = this.quadrantPointFill || isDark5(this.quadrant1Fill) ? lighten5(this.quadrant1Fill) : darken5(this.quadrant1Fill);\n    this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n    this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n    this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n    this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n    this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n    this.xyChart = {\n      backgroundColor: this.xyChart?.backgroundColor || this.background,\n      titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n      xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n      xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n      xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n      xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n      yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n      yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n      yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n      yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n      plotColorPalette: this.xyChart?.plotColorPalette || \"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0\"\n    };\n    this.radar = {\n      axisColor: this.radar?.axisColor || this.lineColor,\n      axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n      axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n      curveOpacity: this.radar?.curveOpacity || 0.5,\n      curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n      graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n      graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n      graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n      legendBoxSize: this.radar?.legendBoxSize || 12,\n      legendFontSize: this.radar?.legendFontSize || 12\n    };\n    this.requirementBackground = this.requirementBackground || this.primaryColor;\n    this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n    this.requirementBorderSize = this.requirementBorderSize || \"1\";\n    this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n    this.relationColor = this.relationColor || this.lineColor;\n    this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n    this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n    this.git0 = darken5(this.pie1, 25) || this.primaryColor;\n    this.git1 = this.pie2 || this.secondaryColor;\n    this.git2 = this.pie3 || this.tertiaryColor;\n    this.git3 = this.pie4 || adjust6(this.primaryColor, { h: -30 });\n    this.git4 = this.pie5 || adjust6(this.primaryColor, { h: -60 });\n    this.git5 = this.pie6 || adjust6(this.primaryColor, { h: -90 });\n    this.git6 = this.pie7 || adjust6(this.primaryColor, { h: 60 });\n    this.git7 = this.pie8 || adjust6(this.primaryColor, { h: 120 });\n    this.gitInv0 = this.gitInv0 || invert5(this.git0);\n    this.gitInv1 = this.gitInv1 || invert5(this.git1);\n    this.gitInv2 = this.gitInv2 || invert5(this.git2);\n    this.gitInv3 = this.gitInv3 || invert5(this.git3);\n    this.gitInv4 = this.gitInv4 || invert5(this.git4);\n    this.gitInv5 = this.gitInv5 || invert5(this.git5);\n    this.gitInv6 = this.gitInv6 || invert5(this.git6);\n    this.gitInv7 = this.gitInv7 || invert5(this.git7);\n    this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n    this.gitBranchLabel0 = this.branchLabelColor;\n    this.gitBranchLabel1 = \"white\";\n    this.gitBranchLabel2 = this.branchLabelColor;\n    this.gitBranchLabel3 = \"white\";\n    this.gitBranchLabel4 = this.branchLabelColor;\n    this.gitBranchLabel5 = this.branchLabelColor;\n    this.gitBranchLabel6 = this.branchLabelColor;\n    this.gitBranchLabel7 = this.branchLabelColor;\n    this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n    this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n    this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n    this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n    this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n    this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n    this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n    this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n    this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n  }\n  calculate(overrides) {\n    if (typeof overrides !== \"object\") {\n      this.updateColors();\n      return;\n    }\n    const keys = Object.keys(overrides);\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n    this.updateColors();\n    keys.forEach((k) => {\n      this[k] = overrides[k];\n    });\n  }\n};\nvar getThemeVariables5 = /* @__PURE__ */ __name((userOverrides) => {\n  const theme = new Theme5();\n  theme.calculate(userOverrides);\n  return theme;\n}, \"getThemeVariables\");\n\n// src/themes/index.js\nvar themes_default = {\n  base: {\n    getThemeVariables\n  },\n  dark: {\n    getThemeVariables: getThemeVariables2\n  },\n  default: {\n    getThemeVariables: getThemeVariables3\n  },\n  forest: {\n    getThemeVariables: getThemeVariables4\n  },\n  neutral: {\n    getThemeVariables: getThemeVariables5\n  }\n};\n\n// src/schemas/config.schema.yaml?only-defaults=true\nvar config_schema_default = {\n  \"flowchart\": {\n    \"useMaxWidth\": true,\n    \"titleTopMargin\": 25,\n    \"subGraphTitleMargin\": {\n      \"top\": 0,\n      \"bottom\": 0\n    },\n    \"diagramPadding\": 8,\n    \"htmlLabels\": true,\n    \"nodeSpacing\": 50,\n    \"rankSpacing\": 50,\n    \"curve\": \"basis\",\n    \"padding\": 15,\n    \"defaultRenderer\": \"dagre-wrapper\",\n    \"wrappingWidth\": 200\n  },\n  \"sequence\": {\n    \"useMaxWidth\": true,\n    \"hideUnusedParticipants\": false,\n    \"activationWidth\": 10,\n    \"diagramMarginX\": 50,\n    \"diagramMarginY\": 10,\n    \"actorMargin\": 50,\n    \"width\": 150,\n    \"height\": 65,\n    \"boxMargin\": 10,\n    \"boxTextMargin\": 5,\n    \"noteMargin\": 10,\n    \"messageMargin\": 35,\n    \"messageAlign\": \"center\",\n    \"mirrorActors\": true,\n    \"forceMenus\": false,\n    \"bottomMarginAdj\": 1,\n    \"rightAngles\": false,\n    \"showSequenceNumbers\": false,\n    \"actorFontSize\": 14,\n    \"actorFontFamily\": '\"Open Sans\", sans-serif',\n    \"actorFontWeight\": 400,\n    \"noteFontSize\": 14,\n    \"noteFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n    \"noteFontWeight\": 400,\n    \"noteAlign\": \"center\",\n    \"messageFontSize\": 16,\n    \"messageFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n    \"messageFontWeight\": 400,\n    \"wrap\": false,\n    \"wrapPadding\": 10,\n    \"labelBoxWidth\": 50,\n    \"labelBoxHeight\": 20\n  },\n  \"gantt\": {\n    \"useMaxWidth\": true,\n    \"titleTopMargin\": 25,\n    \"barHeight\": 20,\n    \"barGap\": 4,\n    \"topPadding\": 50,\n    \"rightPadding\": 75,\n    \"leftPadding\": 75,\n    \"gridLineStartPadding\": 35,\n    \"fontSize\": 11,\n    \"sectionFontSize\": 11,\n    \"numberSectionStyles\": 4,\n    \"axisFormat\": \"%Y-%m-%d\",\n    \"topAxis\": false,\n    \"displayMode\": \"\",\n    \"weekday\": \"sunday\"\n  },\n  \"journey\": {\n    \"useMaxWidth\": true,\n    \"diagramMarginX\": 50,\n    \"diagramMarginY\": 10,\n    \"leftMargin\": 150,\n    \"width\": 150,\n    \"height\": 50,\n    \"boxMargin\": 10,\n    \"boxTextMargin\": 5,\n    \"noteMargin\": 10,\n    \"messageMargin\": 35,\n    \"messageAlign\": \"center\",\n    \"bottomMarginAdj\": 1,\n    \"rightAngles\": false,\n    \"taskFontSize\": 14,\n    \"taskFontFamily\": '\"Open Sans\", sans-serif',\n    \"taskMargin\": 50,\n    \"activationWidth\": 10,\n    \"textPlacement\": \"fo\",\n    \"actorColours\": [\n      \"#8FBC8F\",\n      \"#7CFC00\",\n      \"#00FFFF\",\n      \"#20B2AA\",\n      \"#B0E0E6\",\n      \"#FFFFE0\"\n    ],\n    \"sectionFills\": [\n      \"#191970\",\n      \"#8B008B\",\n      \"#4B0082\",\n      \"#2F4F4F\",\n      \"#800000\",\n      \"#8B4513\",\n      \"#00008B\"\n    ],\n    \"sectionColours\": [\n      \"#fff\"\n    ]\n  },\n  \"class\": {\n    \"useMaxWidth\": true,\n    \"titleTopMargin\": 25,\n    \"arrowMarkerAbsolute\": false,\n    \"dividerMargin\": 10,\n    \"padding\": 5,\n    \"textHeight\": 10,\n    \"defaultRenderer\": \"dagre-wrapper\",\n    \"htmlLabels\": false,\n    \"hideEmptyMembersBox\": false\n  },\n  \"state\": {\n    \"useMaxWidth\": true,\n    \"titleTopMargin\": 25,\n    \"dividerMargin\": 10,\n    \"sizeUnit\": 5,\n    \"padding\": 8,\n    \"textHeight\": 10,\n    \"titleShift\": -15,\n    \"noteMargin\": 10,\n    \"forkWidth\": 70,\n    \"forkHeight\": 7,\n    \"miniPadding\": 2,\n    \"fontSizeFactor\": 5.02,\n    \"fontSize\": 24,\n    \"labelHeight\": 16,\n    \"edgeLengthFactor\": \"20\",\n    \"compositTitleSize\": 35,\n    \"radius\": 5,\n    \"defaultRenderer\": \"dagre-wrapper\"\n  },\n  \"er\": {\n    \"useMaxWidth\": true,\n    \"titleTopMargin\": 25,\n    \"diagramPadding\": 20,\n    \"layoutDirection\": \"TB\",\n    \"minEntityWidth\": 100,\n    \"minEntityHeight\": 75,\n    \"entityPadding\": 15,\n    \"nodeSpacing\": 140,\n    \"rankSpacing\": 80,\n    \"stroke\": \"gray\",\n    \"fill\": \"honeydew\",\n    \"fontSize\": 12\n  },\n  \"pie\": {\n    \"useMaxWidth\": true,\n    \"textPosition\": 0.75\n  },\n  \"quadrantChart\": {\n    \"useMaxWidth\": true,\n    \"chartWidth\": 500,\n    \"chartHeight\": 500,\n    \"titleFontSize\": 20,\n    \"titlePadding\": 10,\n    \"quadrantPadding\": 5,\n    \"xAxisLabelPadding\": 5,\n    \"yAxisLabelPadding\": 5,\n    \"xAxisLabelFontSize\": 16,\n    \"yAxisLabelFontSize\": 16,\n    \"quadrantLabelFontSize\": 16,\n    \"quadrantTextTopPadding\": 5,\n    \"pointTextPadding\": 5,\n    \"pointLabelFontSize\": 12,\n    \"pointRadius\": 5,\n    \"xAxisPosition\": \"top\",\n    \"yAxisPosition\": \"left\",\n    \"quadrantInternalBorderStrokeWidth\": 1,\n    \"quadrantExternalBorderStrokeWidth\": 2\n  },\n  \"xyChart\": {\n    \"useMaxWidth\": true,\n    \"width\": 700,\n    \"height\": 500,\n    \"titleFontSize\": 20,\n    \"titlePadding\": 10,\n    \"showTitle\": true,\n    \"xAxis\": {\n      \"$ref\": \"#/$defs/XYChartAxisConfig\",\n      \"showLabel\": true,\n      \"labelFontSize\": 14,\n      \"labelPadding\": 5,\n      \"showTitle\": true,\n      \"titleFontSize\": 16,\n      \"titlePadding\": 5,\n      \"showTick\": true,\n      \"tickLength\": 5,\n      \"tickWidth\": 2,\n      \"showAxisLine\": true,\n      \"axisLineWidth\": 2\n    },\n    \"yAxis\": {\n      \"$ref\": \"#/$defs/XYChartAxisConfig\",\n      \"showLabel\": true,\n      \"labelFontSize\": 14,\n      \"labelPadding\": 5,\n      \"showTitle\": true,\n      \"titleFontSize\": 16,\n      \"titlePadding\": 5,\n      \"showTick\": true,\n      \"tickLength\": 5,\n      \"tickWidth\": 2,\n      \"showAxisLine\": true,\n      \"axisLineWidth\": 2\n    },\n    \"chartOrientation\": \"vertical\",\n    \"plotReservedSpacePercent\": 50\n  },\n  \"requirement\": {\n    \"useMaxWidth\": true,\n    \"rect_fill\": \"#f9f9f9\",\n    \"text_color\": \"#333\",\n    \"rect_border_size\": \"0.5px\",\n    \"rect_border_color\": \"#bbb\",\n    \"rect_min_width\": 200,\n    \"rect_min_height\": 200,\n    \"fontSize\": 14,\n    \"rect_padding\": 10,\n    \"line_height\": 20\n  },\n  \"mindmap\": {\n    \"useMaxWidth\": true,\n    \"padding\": 10,\n    \"maxNodeWidth\": 200\n  },\n  \"kanban\": {\n    \"useMaxWidth\": true,\n    \"padding\": 8,\n    \"sectionWidth\": 200,\n    \"ticketBaseUrl\": \"\"\n  },\n  \"timeline\": {\n    \"useMaxWidth\": true,\n    \"diagramMarginX\": 50,\n    \"diagramMarginY\": 10,\n    \"leftMargin\": 150,\n    \"width\": 150,\n    \"height\": 50,\n    \"boxMargin\": 10,\n    \"boxTextMargin\": 5,\n    \"noteMargin\": 10,\n    \"messageMargin\": 35,\n    \"messageAlign\": \"center\",\n    \"bottomMarginAdj\": 1,\n    \"rightAngles\": false,\n    \"taskFontSize\": 14,\n    \"taskFontFamily\": '\"Open Sans\", sans-serif',\n    \"taskMargin\": 50,\n    \"activationWidth\": 10,\n    \"textPlacement\": \"fo\",\n    \"actorColours\": [\n      \"#8FBC8F\",\n      \"#7CFC00\",\n      \"#00FFFF\",\n      \"#20B2AA\",\n      \"#B0E0E6\",\n      \"#FFFFE0\"\n    ],\n    \"sectionFills\": [\n      \"#191970\",\n      \"#8B008B\",\n      \"#4B0082\",\n      \"#2F4F4F\",\n      \"#800000\",\n      \"#8B4513\",\n      \"#00008B\"\n    ],\n    \"sectionColours\": [\n      \"#fff\"\n    ],\n    \"disableMulticolor\": false\n  },\n  \"gitGraph\": {\n    \"useMaxWidth\": true,\n    \"titleTopMargin\": 25,\n    \"diagramPadding\": 8,\n    \"nodeLabel\": {\n      \"width\": 75,\n      \"height\": 100,\n      \"x\": -25,\n      \"y\": 0\n    },\n    \"mainBranchName\": \"main\",\n    \"mainBranchOrder\": 0,\n    \"showCommitLabel\": true,\n    \"showBranches\": true,\n    \"rotateCommitLabel\": true,\n    \"parallelCommits\": false,\n    \"arrowMarkerAbsolute\": false\n  },\n  \"c4\": {\n    \"useMaxWidth\": true,\n    \"diagramMarginX\": 50,\n    \"diagramMarginY\": 10,\n    \"c4ShapeMargin\": 50,\n    \"c4ShapePadding\": 20,\n    \"width\": 216,\n    \"height\": 60,\n    \"boxMargin\": 10,\n    \"c4ShapeInRow\": 4,\n    \"nextLinePaddingX\": 0,\n    \"c4BoundaryInRow\": 2,\n    \"personFontSize\": 14,\n    \"personFontFamily\": '\"Open Sans\", sans-serif',\n    \"personFontWeight\": \"normal\",\n    \"external_personFontSize\": 14,\n    \"external_personFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_personFontWeight\": \"normal\",\n    \"systemFontSize\": 14,\n    \"systemFontFamily\": '\"Open Sans\", sans-serif',\n    \"systemFontWeight\": \"normal\",\n    \"external_systemFontSize\": 14,\n    \"external_systemFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_systemFontWeight\": \"normal\",\n    \"system_dbFontSize\": 14,\n    \"system_dbFontFamily\": '\"Open Sans\", sans-serif',\n    \"system_dbFontWeight\": \"normal\",\n    \"external_system_dbFontSize\": 14,\n    \"external_system_dbFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_system_dbFontWeight\": \"normal\",\n    \"system_queueFontSize\": 14,\n    \"system_queueFontFamily\": '\"Open Sans\", sans-serif',\n    \"system_queueFontWeight\": \"normal\",\n    \"external_system_queueFontSize\": 14,\n    \"external_system_queueFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_system_queueFontWeight\": \"normal\",\n    \"boundaryFontSize\": 14,\n    \"boundaryFontFamily\": '\"Open Sans\", sans-serif',\n    \"boundaryFontWeight\": \"normal\",\n    \"messageFontSize\": 12,\n    \"messageFontFamily\": '\"Open Sans\", sans-serif',\n    \"messageFontWeight\": \"normal\",\n    \"containerFontSize\": 14,\n    \"containerFontFamily\": '\"Open Sans\", sans-serif',\n    \"containerFontWeight\": \"normal\",\n    \"external_containerFontSize\": 14,\n    \"external_containerFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_containerFontWeight\": \"normal\",\n    \"container_dbFontSize\": 14,\n    \"container_dbFontFamily\": '\"Open Sans\", sans-serif',\n    \"container_dbFontWeight\": \"normal\",\n    \"external_container_dbFontSize\": 14,\n    \"external_container_dbFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_container_dbFontWeight\": \"normal\",\n    \"container_queueFontSize\": 14,\n    \"container_queueFontFamily\": '\"Open Sans\", sans-serif',\n    \"container_queueFontWeight\": \"normal\",\n    \"external_container_queueFontSize\": 14,\n    \"external_container_queueFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_container_queueFontWeight\": \"normal\",\n    \"componentFontSize\": 14,\n    \"componentFontFamily\": '\"Open Sans\", sans-serif',\n    \"componentFontWeight\": \"normal\",\n    \"external_componentFontSize\": 14,\n    \"external_componentFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_componentFontWeight\": \"normal\",\n    \"component_dbFontSize\": 14,\n    \"component_dbFontFamily\": '\"Open Sans\", sans-serif',\n    \"component_dbFontWeight\": \"normal\",\n    \"external_component_dbFontSize\": 14,\n    \"external_component_dbFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_component_dbFontWeight\": \"normal\",\n    \"component_queueFontSize\": 14,\n    \"component_queueFontFamily\": '\"Open Sans\", sans-serif',\n    \"component_queueFontWeight\": \"normal\",\n    \"external_component_queueFontSize\": 14,\n    \"external_component_queueFontFamily\": '\"Open Sans\", sans-serif',\n    \"external_component_queueFontWeight\": \"normal\",\n    \"wrap\": true,\n    \"wrapPadding\": 10,\n    \"person_bg_color\": \"#08427B\",\n    \"person_border_color\": \"#073B6F\",\n    \"external_person_bg_color\": \"#686868\",\n    \"external_person_border_color\": \"#8A8A8A\",\n    \"system_bg_color\": \"#1168BD\",\n    \"system_border_color\": \"#3C7FC0\",\n    \"system_db_bg_color\": \"#1168BD\",\n    \"system_db_border_color\": \"#3C7FC0\",\n    \"system_queue_bg_color\": \"#1168BD\",\n    \"system_queue_border_color\": \"#3C7FC0\",\n    \"external_system_bg_color\": \"#999999\",\n    \"external_system_border_color\": \"#8A8A8A\",\n    \"external_system_db_bg_color\": \"#999999\",\n    \"external_system_db_border_color\": \"#8A8A8A\",\n    \"external_system_queue_bg_color\": \"#999999\",\n    \"external_system_queue_border_color\": \"#8A8A8A\",\n    \"container_bg_color\": \"#438DD5\",\n    \"container_border_color\": \"#3C7FC0\",\n    \"container_db_bg_color\": \"#438DD5\",\n    \"container_db_border_color\": \"#3C7FC0\",\n    \"container_queue_bg_color\": \"#438DD5\",\n    \"container_queue_border_color\": \"#3C7FC0\",\n    \"external_container_bg_color\": \"#B3B3B3\",\n    \"external_container_border_color\": \"#A6A6A6\",\n    \"external_container_db_bg_color\": \"#B3B3B3\",\n    \"external_container_db_border_color\": \"#A6A6A6\",\n    \"external_container_queue_bg_color\": \"#B3B3B3\",\n    \"external_container_queue_border_color\": \"#A6A6A6\",\n    \"component_bg_color\": \"#85BBF0\",\n    \"component_border_color\": \"#78A8D8\",\n    \"component_db_bg_color\": \"#85BBF0\",\n    \"component_db_border_color\": \"#78A8D8\",\n    \"component_queue_bg_color\": \"#85BBF0\",\n    \"component_queue_border_color\": \"#78A8D8\",\n    \"external_component_bg_color\": \"#CCCCCC\",\n    \"external_component_border_color\": \"#BFBFBF\",\n    \"external_component_db_bg_color\": \"#CCCCCC\",\n    \"external_component_db_border_color\": \"#BFBFBF\",\n    \"external_component_queue_bg_color\": \"#CCCCCC\",\n    \"external_component_queue_border_color\": \"#BFBFBF\"\n  },\n  \"sankey\": {\n    \"useMaxWidth\": true,\n    \"width\": 600,\n    \"height\": 400,\n    \"linkColor\": \"gradient\",\n    \"nodeAlignment\": \"justify\",\n    \"showValues\": true,\n    \"prefix\": \"\",\n    \"suffix\": \"\"\n  },\n  \"block\": {\n    \"useMaxWidth\": true,\n    \"padding\": 8\n  },\n  \"packet\": {\n    \"useMaxWidth\": true,\n    \"rowHeight\": 32,\n    \"bitWidth\": 32,\n    \"bitsPerRow\": 32,\n    \"showBits\": true,\n    \"paddingX\": 5,\n    \"paddingY\": 5\n  },\n  \"architecture\": {\n    \"useMaxWidth\": true,\n    \"padding\": 40,\n    \"iconSize\": 80,\n    \"fontSize\": 16\n  },\n  \"radar\": {\n    \"useMaxWidth\": true,\n    \"width\": 600,\n    \"height\": 600,\n    \"marginTop\": 50,\n    \"marginRight\": 50,\n    \"marginBottom\": 50,\n    \"marginLeft\": 50,\n    \"axisScaleFactor\": 1,\n    \"axisLabelFactor\": 1.05,\n    \"curveTension\": 0.17\n  },\n  \"theme\": \"default\",\n  \"look\": \"classic\",\n  \"handDrawnSeed\": 0,\n  \"layout\": \"dagre\",\n  \"maxTextSize\": 5e4,\n  \"maxEdges\": 500,\n  \"darkMode\": false,\n  \"fontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif;',\n  \"logLevel\": 5,\n  \"securityLevel\": \"strict\",\n  \"startOnLoad\": true,\n  \"arrowMarkerAbsolute\": false,\n  \"secure\": [\n    \"secure\",\n    \"securityLevel\",\n    \"startOnLoad\",\n    \"maxTextSize\",\n    \"suppressErrorRendering\",\n    \"maxEdges\"\n  ],\n  \"legacyMathML\": false,\n  \"forceLegacyMathML\": false,\n  \"deterministicIds\": false,\n  \"fontSize\": 16,\n  \"markdownAutoWrap\": true,\n  \"suppressErrorRendering\": false\n};\n\n// src/defaultConfig.ts\nvar config = {\n  ...config_schema_default,\n  // Set, even though they're `undefined` so that `configKeys` finds these keys\n  // TODO: Should we replace these with `null` so that they can go in the JSON Schema?\n  deterministicIDSeed: void 0,\n  elk: {\n    // mergeEdges is needed here to be considered\n    mergeEdges: false,\n    nodePlacementStrategy: \"BRANDES_KOEPF\"\n  },\n  themeCSS: void 0,\n  // add non-JSON default config values\n  themeVariables: themes_default.default.getThemeVariables(),\n  sequence: {\n    ...config_schema_default.sequence,\n    messageFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.messageFontFamily,\n        fontSize: this.messageFontSize,\n        fontWeight: this.messageFontWeight\n      };\n    }, \"messageFont\"),\n    noteFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.noteFontFamily,\n        fontSize: this.noteFontSize,\n        fontWeight: this.noteFontWeight\n      };\n    }, \"noteFont\"),\n    actorFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.actorFontFamily,\n        fontSize: this.actorFontSize,\n        fontWeight: this.actorFontWeight\n      };\n    }, \"actorFont\")\n  },\n  class: {\n    hideEmptyMembersBox: false\n  },\n  gantt: {\n    ...config_schema_default.gantt,\n    tickInterval: void 0,\n    useWidth: void 0\n    // can probably be removed since `configKeys` already includes this\n  },\n  c4: {\n    ...config_schema_default.c4,\n    useWidth: void 0,\n    personFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.personFontFamily,\n        fontSize: this.personFontSize,\n        fontWeight: this.personFontWeight\n      };\n    }, \"personFont\"),\n    external_personFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_personFontFamily,\n        fontSize: this.external_personFontSize,\n        fontWeight: this.external_personFontWeight\n      };\n    }, \"external_personFont\"),\n    systemFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.systemFontFamily,\n        fontSize: this.systemFontSize,\n        fontWeight: this.systemFontWeight\n      };\n    }, \"systemFont\"),\n    external_systemFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_systemFontFamily,\n        fontSize: this.external_systemFontSize,\n        fontWeight: this.external_systemFontWeight\n      };\n    }, \"external_systemFont\"),\n    system_dbFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.system_dbFontFamily,\n        fontSize: this.system_dbFontSize,\n        fontWeight: this.system_dbFontWeight\n      };\n    }, \"system_dbFont\"),\n    external_system_dbFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_system_dbFontFamily,\n        fontSize: this.external_system_dbFontSize,\n        fontWeight: this.external_system_dbFontWeight\n      };\n    }, \"external_system_dbFont\"),\n    system_queueFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.system_queueFontFamily,\n        fontSize: this.system_queueFontSize,\n        fontWeight: this.system_queueFontWeight\n      };\n    }, \"system_queueFont\"),\n    external_system_queueFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_system_queueFontFamily,\n        fontSize: this.external_system_queueFontSize,\n        fontWeight: this.external_system_queueFontWeight\n      };\n    }, \"external_system_queueFont\"),\n    containerFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.containerFontFamily,\n        fontSize: this.containerFontSize,\n        fontWeight: this.containerFontWeight\n      };\n    }, \"containerFont\"),\n    external_containerFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_containerFontFamily,\n        fontSize: this.external_containerFontSize,\n        fontWeight: this.external_containerFontWeight\n      };\n    }, \"external_containerFont\"),\n    container_dbFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.container_dbFontFamily,\n        fontSize: this.container_dbFontSize,\n        fontWeight: this.container_dbFontWeight\n      };\n    }, \"container_dbFont\"),\n    external_container_dbFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_container_dbFontFamily,\n        fontSize: this.external_container_dbFontSize,\n        fontWeight: this.external_container_dbFontWeight\n      };\n    }, \"external_container_dbFont\"),\n    container_queueFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.container_queueFontFamily,\n        fontSize: this.container_queueFontSize,\n        fontWeight: this.container_queueFontWeight\n      };\n    }, \"container_queueFont\"),\n    external_container_queueFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_container_queueFontFamily,\n        fontSize: this.external_container_queueFontSize,\n        fontWeight: this.external_container_queueFontWeight\n      };\n    }, \"external_container_queueFont\"),\n    componentFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.componentFontFamily,\n        fontSize: this.componentFontSize,\n        fontWeight: this.componentFontWeight\n      };\n    }, \"componentFont\"),\n    external_componentFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_componentFontFamily,\n        fontSize: this.external_componentFontSize,\n        fontWeight: this.external_componentFontWeight\n      };\n    }, \"external_componentFont\"),\n    component_dbFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.component_dbFontFamily,\n        fontSize: this.component_dbFontSize,\n        fontWeight: this.component_dbFontWeight\n      };\n    }, \"component_dbFont\"),\n    external_component_dbFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_component_dbFontFamily,\n        fontSize: this.external_component_dbFontSize,\n        fontWeight: this.external_component_dbFontWeight\n      };\n    }, \"external_component_dbFont\"),\n    component_queueFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.component_queueFontFamily,\n        fontSize: this.component_queueFontSize,\n        fontWeight: this.component_queueFontWeight\n      };\n    }, \"component_queueFont\"),\n    external_component_queueFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.external_component_queueFontFamily,\n        fontSize: this.external_component_queueFontSize,\n        fontWeight: this.external_component_queueFontWeight\n      };\n    }, \"external_component_queueFont\"),\n    boundaryFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.boundaryFontFamily,\n        fontSize: this.boundaryFontSize,\n        fontWeight: this.boundaryFontWeight\n      };\n    }, \"boundaryFont\"),\n    messageFont: /* @__PURE__ */ __name(function() {\n      return {\n        fontFamily: this.messageFontFamily,\n        fontSize: this.messageFontSize,\n        fontWeight: this.messageFontWeight\n      };\n    }, \"messageFont\")\n  },\n  pie: {\n    ...config_schema_default.pie,\n    useWidth: 984\n  },\n  xyChart: {\n    ...config_schema_default.xyChart,\n    useWidth: void 0\n  },\n  requirement: {\n    ...config_schema_default.requirement,\n    useWidth: void 0\n  },\n  packet: {\n    ...config_schema_default.packet\n  },\n  radar: {\n    ...config_schema_default.radar\n  }\n};\nvar keyify = /* @__PURE__ */ __name((obj, prefix = \"\") => Object.keys(obj).reduce((res, el) => {\n  if (Array.isArray(obj[el])) {\n    return res;\n  } else if (typeof obj[el] === \"object\" && obj[el] !== null) {\n    return [...res, prefix + el, ...keyify(obj[el], \"\")];\n  }\n  return [...res, prefix + el];\n}, []), \"keyify\");\nvar configKeys = new Set(keyify(config, \"\"));\nvar defaultConfig_default = config;\n\n// src/utils/sanitizeDirective.ts\nvar sanitizeDirective = /* @__PURE__ */ __name((args) => {\n  log.debug(\"sanitizeDirective called with\", args);\n  if (typeof args !== \"object\" || args == null) {\n    return;\n  }\n  if (Array.isArray(args)) {\n    args.forEach((arg) => sanitizeDirective(arg));\n    return;\n  }\n  for (const key of Object.keys(args)) {\n    log.debug(\"Checking key\", key);\n    if (key.startsWith(\"__\") || key.includes(\"proto\") || key.includes(\"constr\") || !configKeys.has(key) || args[key] == null) {\n      log.debug(\"sanitize deleting key: \", key);\n      delete args[key];\n      continue;\n    }\n    if (typeof args[key] === \"object\") {\n      log.debug(\"sanitizing object\", key);\n      sanitizeDirective(args[key]);\n      continue;\n    }\n    const cssMatchers = [\"themeCSS\", \"fontFamily\", \"altFontFamily\"];\n    for (const cssKey of cssMatchers) {\n      if (key.includes(cssKey)) {\n        log.debug(\"sanitizing css option\", key);\n        args[key] = sanitizeCss(args[key]);\n      }\n    }\n  }\n  if (args.themeVariables) {\n    for (const k of Object.keys(args.themeVariables)) {\n      const val = args.themeVariables[k];\n      if (val?.match && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n        args.themeVariables[k] = \"\";\n      }\n    }\n  }\n  log.debug(\"After sanitization\", args);\n}, \"sanitizeDirective\");\nvar sanitizeCss = /* @__PURE__ */ __name((str) => {\n  let startCnt = 0;\n  let endCnt = 0;\n  for (const element of str) {\n    if (startCnt < endCnt) {\n      return \"{ /* ERROR: Unbalanced CSS */ }\";\n    }\n    if (element === \"{\") {\n      startCnt++;\n    } else if (element === \"}\") {\n      endCnt++;\n    }\n  }\n  if (startCnt !== endCnt) {\n    return \"{ /* ERROR: Unbalanced CSS */ }\";\n  }\n  return str;\n}, \"sanitizeCss\");\n\n// src/config.ts\nvar defaultConfig = Object.freeze(defaultConfig_default);\nvar siteConfig = assignWithDepth_default({}, defaultConfig);\nvar configFromInitialize;\nvar directives = [];\nvar currentConfig = assignWithDepth_default({}, defaultConfig);\nvar updateCurrentConfig = /* @__PURE__ */ __name((siteCfg, _directives) => {\n  let cfg = assignWithDepth_default({}, siteCfg);\n  let sumOfDirectives = {};\n  for (const d of _directives) {\n    sanitize(d);\n    sumOfDirectives = assignWithDepth_default(sumOfDirectives, d);\n  }\n  cfg = assignWithDepth_default(cfg, sumOfDirectives);\n  if (sumOfDirectives.theme && sumOfDirectives.theme in themes_default) {\n    const tmpConfigFromInitialize = assignWithDepth_default({}, configFromInitialize);\n    const themeVariables = assignWithDepth_default(\n      tmpConfigFromInitialize.themeVariables || {},\n      sumOfDirectives.themeVariables\n    );\n    if (cfg.theme && cfg.theme in themes_default) {\n      cfg.themeVariables = themes_default[cfg.theme].getThemeVariables(themeVariables);\n    }\n  }\n  currentConfig = cfg;\n  checkConfig(currentConfig);\n  return currentConfig;\n}, \"updateCurrentConfig\");\nvar setSiteConfig = /* @__PURE__ */ __name((conf) => {\n  siteConfig = assignWithDepth_default({}, defaultConfig);\n  siteConfig = assignWithDepth_default(siteConfig, conf);\n  if (conf.theme && themes_default[conf.theme]) {\n    siteConfig.themeVariables = themes_default[conf.theme].getThemeVariables(conf.themeVariables);\n  }\n  updateCurrentConfig(siteConfig, directives);\n  return siteConfig;\n}, \"setSiteConfig\");\nvar saveConfigFromInitialize = /* @__PURE__ */ __name((conf) => {\n  configFromInitialize = assignWithDepth_default({}, conf);\n}, \"saveConfigFromInitialize\");\nvar updateSiteConfig = /* @__PURE__ */ __name((conf) => {\n  siteConfig = assignWithDepth_default(siteConfig, conf);\n  updateCurrentConfig(siteConfig, directives);\n  return siteConfig;\n}, \"updateSiteConfig\");\nvar getSiteConfig = /* @__PURE__ */ __name(() => {\n  return assignWithDepth_default({}, siteConfig);\n}, \"getSiteConfig\");\nvar setConfig = /* @__PURE__ */ __name((conf) => {\n  checkConfig(conf);\n  assignWithDepth_default(currentConfig, conf);\n  return getConfig();\n}, \"setConfig\");\nvar getConfig = /* @__PURE__ */ __name(() => {\n  return assignWithDepth_default({}, currentConfig);\n}, \"getConfig\");\nvar sanitize = /* @__PURE__ */ __name((options) => {\n  if (!options) {\n    return;\n  }\n  [\"secure\", ...siteConfig.secure ?? []].forEach((key) => {\n    if (Object.hasOwn(options, key)) {\n      log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n      delete options[key];\n    }\n  });\n  Object.keys(options).forEach((key) => {\n    if (key.startsWith(\"__\")) {\n      delete options[key];\n    }\n  });\n  Object.keys(options).forEach((key) => {\n    if (typeof options[key] === \"string\" && (options[key].includes(\"<\") || options[key].includes(\">\") || options[key].includes(\"url(data:\"))) {\n      delete options[key];\n    }\n    if (typeof options[key] === \"object\") {\n      sanitize(options[key]);\n    }\n  });\n}, \"sanitize\");\nvar addDirective = /* @__PURE__ */ __name((directive) => {\n  sanitizeDirective(directive);\n  if (directive.fontFamily && !directive.themeVariables?.fontFamily) {\n    directive.themeVariables = {\n      ...directive.themeVariables,\n      fontFamily: directive.fontFamily\n    };\n  }\n  directives.push(directive);\n  updateCurrentConfig(siteConfig, directives);\n}, \"addDirective\");\nvar reset = /* @__PURE__ */ __name((config2 = siteConfig) => {\n  directives = [];\n  updateCurrentConfig(config2, directives);\n}, \"reset\");\nvar ConfigWarning = {\n  LAZY_LOAD_DEPRECATED: \"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.\"\n};\nvar issuedWarnings = {};\nvar issueWarning = /* @__PURE__ */ __name((warning) => {\n  if (issuedWarnings[warning]) {\n    return;\n  }\n  log.warn(ConfigWarning[warning]);\n  issuedWarnings[warning] = true;\n}, \"issueWarning\");\nvar checkConfig = /* @__PURE__ */ __name((config2) => {\n  if (!config2) {\n    return;\n  }\n  if (config2.lazyLoadedDiagrams || config2.loadExternalDiagramsAtStartup) {\n    issueWarning(\"LAZY_LOAD_DEPRECATED\");\n  }\n}, \"checkConfig\");\n\n// src/diagrams/common/common.ts\nimport DOMPurify from \"dompurify\";\nvar lineBreakRegex = /<br\\s*\\/?>/gi;\nvar getRows = /* @__PURE__ */ __name((s) => {\n  if (!s) {\n    return [\"\"];\n  }\n  const str = breakToPlaceholder(s).replace(/\\\\n/g, \"#br#\");\n  return str.split(\"#br#\");\n}, \"getRows\");\nvar setupDompurifyHooksIfNotSetup = /* @__PURE__ */ (() => {\n  let setup = false;\n  return () => {\n    if (!setup) {\n      setupDompurifyHooks();\n      setup = true;\n    }\n  };\n})();\nfunction setupDompurifyHooks() {\n  const TEMPORARY_ATTRIBUTE = \"data-temp-href-target\";\n  DOMPurify.addHook(\"beforeSanitizeAttributes\", (node) => {\n    if (node instanceof Element && node.tagName === \"A\" && node.hasAttribute(\"target\")) {\n      node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute(\"target\") ?? \"\");\n    }\n  });\n  DOMPurify.addHook(\"afterSanitizeAttributes\", (node) => {\n    if (node instanceof Element && node.tagName === \"A\" && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {\n      node.setAttribute(\"target\", node.getAttribute(TEMPORARY_ATTRIBUTE) ?? \"\");\n      node.removeAttribute(TEMPORARY_ATTRIBUTE);\n      if (node.getAttribute(\"target\") === \"_blank\") {\n        node.setAttribute(\"rel\", \"noopener\");\n      }\n    }\n  });\n}\n__name(setupDompurifyHooks, \"setupDompurifyHooks\");\nvar removeScript = /* @__PURE__ */ __name((txt) => {\n  setupDompurifyHooksIfNotSetup();\n  const sanitizedText = DOMPurify.sanitize(txt);\n  return sanitizedText;\n}, \"removeScript\");\nvar sanitizeMore = /* @__PURE__ */ __name((text, config2) => {\n  if (config2.flowchart?.htmlLabels !== false) {\n    const level = config2.securityLevel;\n    if (level === \"antiscript\" || level === \"strict\") {\n      text = removeScript(text);\n    } else if (level !== \"loose\") {\n      text = breakToPlaceholder(text);\n      text = text.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n      text = text.replace(/=/g, \"&equals;\");\n      text = placeholderToBreak(text);\n    }\n  }\n  return text;\n}, \"sanitizeMore\");\nvar sanitizeText = /* @__PURE__ */ __name((text, config2) => {\n  if (!text) {\n    return text;\n  }\n  if (config2.dompurifyConfig) {\n    text = DOMPurify.sanitize(sanitizeMore(text, config2), config2.dompurifyConfig).toString();\n  } else {\n    text = DOMPurify.sanitize(sanitizeMore(text, config2), {\n      FORBID_TAGS: [\"style\"]\n    }).toString();\n  }\n  return text;\n}, \"sanitizeText\");\nvar sanitizeTextOrArray = /* @__PURE__ */ __name((a, config2) => {\n  if (typeof a === \"string\") {\n    return sanitizeText(a, config2);\n  }\n  return a.flat().map((x) => sanitizeText(x, config2));\n}, \"sanitizeTextOrArray\");\nvar hasBreaks = /* @__PURE__ */ __name((text) => {\n  return lineBreakRegex.test(text);\n}, \"hasBreaks\");\nvar splitBreaks = /* @__PURE__ */ __name((text) => {\n  return text.split(lineBreakRegex);\n}, \"splitBreaks\");\nvar placeholderToBreak = /* @__PURE__ */ __name((s) => {\n  return s.replace(/#br#/g, \"<br/>\");\n}, \"placeholderToBreak\");\nvar breakToPlaceholder = /* @__PURE__ */ __name((s) => {\n  return s.replace(lineBreakRegex, \"#br#\");\n}, \"breakToPlaceholder\");\nvar getUrl = /* @__PURE__ */ __name((useAbsolute) => {\n  let url = \"\";\n  if (useAbsolute) {\n    url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n    url = url.replaceAll(/\\(/g, \"\\\\(\");\n    url = url.replaceAll(/\\)/g, \"\\\\)\");\n  }\n  return url;\n}, \"getUrl\");\nvar evaluate = /* @__PURE__ */ __name((val) => val === false || [\"false\", \"null\", \"0\"].includes(String(val).trim().toLowerCase()) ? false : true, \"evaluate\");\nvar getMax = /* @__PURE__ */ __name(function(...values) {\n  const newValues = values.filter((value) => {\n    return !isNaN(value);\n  });\n  return Math.max(...newValues);\n}, \"getMax\");\nvar getMin = /* @__PURE__ */ __name(function(...values) {\n  const newValues = values.filter((value) => {\n    return !isNaN(value);\n  });\n  return Math.min(...newValues);\n}, \"getMin\");\nvar parseGenericTypes = /* @__PURE__ */ __name(function(input) {\n  const inputSets = input.split(/(,)/);\n  const output = [];\n  for (let i = 0; i < inputSets.length; i++) {\n    let thisSet = inputSets[i];\n    if (thisSet === \",\" && i > 0 && i + 1 < inputSets.length) {\n      const previousSet = inputSets[i - 1];\n      const nextSet = inputSets[i + 1];\n      if (shouldCombineSets(previousSet, nextSet)) {\n        thisSet = previousSet + \",\" + nextSet;\n        i++;\n        output.pop();\n      }\n    }\n    output.push(processSet(thisSet));\n  }\n  return output.join(\"\");\n}, \"parseGenericTypes\");\nvar countOccurrence = /* @__PURE__ */ __name((string, substring) => {\n  return Math.max(0, string.split(substring).length - 1);\n}, \"countOccurrence\");\nvar shouldCombineSets = /* @__PURE__ */ __name((previousSet, nextSet) => {\n  const prevCount = countOccurrence(previousSet, \"~\");\n  const nextCount = countOccurrence(nextSet, \"~\");\n  return prevCount === 1 && nextCount === 1;\n}, \"shouldCombineSets\");\nvar processSet = /* @__PURE__ */ __name((input) => {\n  const tildeCount = countOccurrence(input, \"~\");\n  let hasStartingTilde = false;\n  if (tildeCount <= 1) {\n    return input;\n  }\n  if (tildeCount % 2 !== 0 && input.startsWith(\"~\")) {\n    input = input.substring(1);\n    hasStartingTilde = true;\n  }\n  const chars = [...input];\n  let first = chars.indexOf(\"~\");\n  let last = chars.lastIndexOf(\"~\");\n  while (first !== -1 && last !== -1 && first !== last) {\n    chars[first] = \"<\";\n    chars[last] = \">\";\n    first = chars.indexOf(\"~\");\n    last = chars.lastIndexOf(\"~\");\n  }\n  if (hasStartingTilde) {\n    chars.unshift(\"~\");\n  }\n  return chars.join(\"\");\n}, \"processSet\");\nvar isMathMLSupported = /* @__PURE__ */ __name(() => window.MathMLElement !== void 0, \"isMathMLSupported\");\nvar katexRegex = /\\$\\$(.*)\\$\\$/g;\nvar hasKatex = /* @__PURE__ */ __name((text) => (text.match(katexRegex)?.length ?? 0) > 0, \"hasKatex\");\nvar calculateMathMLDimensions = /* @__PURE__ */ __name(async (text, config2) => {\n  text = await renderKatex(text, config2);\n  const divElem = document.createElement(\"div\");\n  divElem.innerHTML = text;\n  divElem.id = \"katex-temp\";\n  divElem.style.visibility = \"hidden\";\n  divElem.style.position = \"absolute\";\n  divElem.style.top = \"0\";\n  const body = document.querySelector(\"body\");\n  body?.insertAdjacentElement(\"beforeend\", divElem);\n  const dim = { width: divElem.clientWidth, height: divElem.clientHeight };\n  divElem.remove();\n  return dim;\n}, \"calculateMathMLDimensions\");\nvar renderKatex = /* @__PURE__ */ __name(async (text, config2) => {\n  if (!hasKatex(text)) {\n    return text;\n  }\n  if (!(isMathMLSupported() || config2.legacyMathML || config2.forceLegacyMathML)) {\n    return text.replace(katexRegex, \"MathML is unsupported in this environment.\");\n  }\n  const { default: katex } = await import(\"katex\");\n  const outputMode = config2.forceLegacyMathML || !isMathMLSupported() && config2.legacyMathML ? \"htmlAndMathml\" : \"mathml\";\n  return text.split(lineBreakRegex).map(\n    (line) => hasKatex(line) ? `<div style=\"display: flex; align-items: center; justify-content: center; white-space: nowrap;\">${line}</div>` : `<div>${line}</div>`\n  ).join(\"\").replace(\n    katexRegex,\n    (_, c) => katex.renderToString(c, {\n      throwOnError: true,\n      displayMode: true,\n      output: outputMode\n    }).replace(/\\n/g, \" \").replace(/<annotation.*<\\/annotation>/g, \"\")\n  );\n}, \"renderKatex\");\nvar common_default = {\n  getRows,\n  sanitizeText,\n  sanitizeTextOrArray,\n  hasBreaks,\n  splitBreaks,\n  lineBreakRegex,\n  removeScript,\n  getUrl,\n  evaluate,\n  getMax,\n  getMin\n};\n\n// src/setupGraphViewbox.js\nvar d3Attrs = /* @__PURE__ */ __name(function(d3Elem, attrs) {\n  for (let attr of attrs) {\n    d3Elem.attr(attr[0], attr[1]);\n  }\n}, \"d3Attrs\");\nvar calculateSvgSizeAttrs = /* @__PURE__ */ __name(function(height, width, useMaxWidth) {\n  let attrs = /* @__PURE__ */ new Map();\n  if (useMaxWidth) {\n    attrs.set(\"width\", \"100%\");\n    attrs.set(\"style\", `max-width: ${width}px;`);\n  } else {\n    attrs.set(\"height\", height);\n    attrs.set(\"width\", width);\n  }\n  return attrs;\n}, \"calculateSvgSizeAttrs\");\nvar configureSvgSize = /* @__PURE__ */ __name(function(svgElem, height, width, useMaxWidth) {\n  const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n  d3Attrs(svgElem, attrs);\n}, \"configureSvgSize\");\nvar setupGraphViewbox = /* @__PURE__ */ __name(function(graph, svgElem, padding, useMaxWidth) {\n  const svgBounds = svgElem.node().getBBox();\n  const sWidth = svgBounds.width;\n  const sHeight = svgBounds.height;\n  log.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n  let width = 0;\n  let height = 0;\n  log.info(`Graph bounds: ${width}x${height}`, graph);\n  width = sWidth + padding * 2;\n  height = sHeight + padding * 2;\n  log.info(`Calculated bounds: ${width}x${height}`);\n  configureSvgSize(svgElem, height, width, useMaxWidth);\n  const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${svgBounds.width + 2 * padding} ${svgBounds.height + 2 * padding}`;\n  svgElem.attr(\"viewBox\", vBox);\n}, \"setupGraphViewbox\");\n\n// src/styles.ts\nvar themes = {};\nvar getStyles = /* @__PURE__ */ __name((type, userStyles, options) => {\n  let diagramStyles = \"\";\n  if (type in themes && themes[type]) {\n    diagramStyles = themes[type](options);\n  } else {\n    log.warn(`No theme found for ${type}`);\n  }\n  return ` & {\n    font-family: ${options.fontFamily};\n    font-size: ${options.fontSize};\n    fill: ${options.textColor}\n  }\n  @keyframes edge-animation-frame {\n    from {\n      stroke-dashoffset: 0;\n    }\n  }\n  @keyframes dash {\n    to {\n      stroke-dashoffset: 0;\n    }\n  }\n  & .edge-animation-slow {\n    stroke-dasharray: 9,5 !important;\n    stroke-dashoffset: 900;\n    animation: dash 50s linear infinite;\n    stroke-linecap: round;\n  }\n  & .edge-animation-fast {\n    stroke-dasharray: 9,5 !important;\n    stroke-dashoffset: 900;\n    animation: dash 20s linear infinite;\n    stroke-linecap: round;\n  }\n  /* Classes common for multiple diagrams */\n\n  & .error-icon {\n    fill: ${options.errorBkgColor};\n  }\n  & .error-text {\n    fill: ${options.errorTextColor};\n    stroke: ${options.errorTextColor};\n  }\n\n  & .edge-thickness-normal {\n    stroke-width: 1px;\n  }\n  & .edge-thickness-thick {\n    stroke-width: 3.5px\n  }\n  & .edge-pattern-solid {\n    stroke-dasharray: 0;\n  }\n  & .edge-thickness-invisible {\n    stroke-width: 0;\n    fill: none;\n  }\n  & .edge-pattern-dashed{\n    stroke-dasharray: 3;\n  }\n  .edge-pattern-dotted {\n    stroke-dasharray: 2;\n  }\n\n  & .marker {\n    fill: ${options.lineColor};\n    stroke: ${options.lineColor};\n  }\n  & .marker.cross {\n    stroke: ${options.lineColor};\n  }\n\n  & svg {\n    font-family: ${options.fontFamily};\n    font-size: ${options.fontSize};\n  }\n   & p {\n    margin: 0\n   }\n\n  ${diagramStyles}\n\n  ${userStyles}\n`;\n}, \"getStyles\");\nvar addStylesForDiagram = /* @__PURE__ */ __name((type, diagramTheme) => {\n  if (diagramTheme !== void 0) {\n    themes[type] = diagramTheme;\n  }\n}, \"addStylesForDiagram\");\nvar styles_default = getStyles;\n\n// src/diagrams/common/commonDb.ts\nvar commonDb_exports = {};\n__export(commonDb_exports, {\n  clear: () => clear,\n  getAccDescription: () => getAccDescription,\n  getAccTitle: () => getAccTitle,\n  getDiagramTitle: () => getDiagramTitle,\n  setAccDescription: () => setAccDescription,\n  setAccTitle: () => setAccTitle,\n  setDiagramTitle: () => setDiagramTitle\n});\nvar accTitle = \"\";\nvar diagramTitle = \"\";\nvar accDescription = \"\";\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => sanitizeText(txt, getConfig()), \"sanitizeText\");\nvar clear = /* @__PURE__ */ __name(() => {\n  accTitle = \"\";\n  accDescription = \"\";\n  diagramTitle = \"\";\n}, \"clear\");\nvar setAccTitle = /* @__PURE__ */ __name((txt) => {\n  accTitle = sanitizeText2(txt).replace(/^\\s+/g, \"\");\n}, \"setAccTitle\");\nvar getAccTitle = /* @__PURE__ */ __name(() => accTitle, \"getAccTitle\");\nvar setAccDescription = /* @__PURE__ */ __name((txt) => {\n  accDescription = sanitizeText2(txt).replace(/\\n\\s+/g, \"\\n\");\n}, \"setAccDescription\");\nvar getAccDescription = /* @__PURE__ */ __name(() => accDescription, \"getAccDescription\");\nvar setDiagramTitle = /* @__PURE__ */ __name((txt) => {\n  diagramTitle = sanitizeText2(txt);\n}, \"setDiagramTitle\");\nvar getDiagramTitle = /* @__PURE__ */ __name(() => diagramTitle, \"getDiagramTitle\");\n\n// src/diagram-api/diagramAPI.ts\nvar log2 = log;\nvar setLogLevel2 = setLogLevel;\nvar getConfig2 = getConfig;\nvar setConfig2 = setConfig;\nvar defaultConfig2 = defaultConfig;\nvar sanitizeText3 = /* @__PURE__ */ __name((text) => sanitizeText(text, getConfig2()), \"sanitizeText\");\nvar setupGraphViewbox2 = setupGraphViewbox;\nvar getCommonDb = /* @__PURE__ */ __name(() => {\n  return commonDb_exports;\n}, \"getCommonDb\");\nvar diagrams = {};\nvar registerDiagram = /* @__PURE__ */ __name((id, diagram, detector) => {\n  if (diagrams[id]) {\n    log2.warn(`Diagram with id ${id} already registered. Overwriting.`);\n  }\n  diagrams[id] = diagram;\n  if (detector) {\n    addDetector(id, detector);\n  }\n  addStylesForDiagram(id, diagram.styles);\n  diagram.injectUtils?.(\n    log2,\n    setLogLevel2,\n    getConfig2,\n    sanitizeText3,\n    setupGraphViewbox2,\n    getCommonDb(),\n    () => {\n    }\n  );\n}, \"registerDiagram\");\nvar getDiagram = /* @__PURE__ */ __name((name) => {\n  if (name in diagrams) {\n    return diagrams[name];\n  }\n  throw new DiagramNotFoundError(name);\n}, \"getDiagram\");\nvar DiagramNotFoundError = class extends Error {\n  static {\n    __name(this, \"DiagramNotFoundError\");\n  }\n  constructor(name) {\n    super(`Diagram ${name} not found.`);\n  }\n};\n\nexport {\n  __name,\n  __export,\n  log,\n  setLogLevel,\n  frontMatterRegex,\n  directiveRegex,\n  UnknownDiagramError,\n  detectors,\n  detectType,\n  registerLazyLoadedDiagrams,\n  getDiagramLoader,\n  assignWithDepth_default,\n  getThemeVariables3 as getThemeVariables,\n  themes_default,\n  defaultConfig_default,\n  sanitizeDirective,\n  defaultConfig,\n  setSiteConfig,\n  saveConfigFromInitialize,\n  updateSiteConfig,\n  getSiteConfig,\n  setConfig,\n  getConfig,\n  addDirective,\n  reset,\n  lineBreakRegex,\n  sanitizeText,\n  evaluate,\n  parseGenericTypes,\n  hasKatex,\n  calculateMathMLDimensions,\n  renderKatex,\n  common_default,\n  configureSvgSize,\n  setupGraphViewbox,\n  styles_default,\n  clear,\n  setAccTitle,\n  getAccTitle,\n  setAccDescription,\n  getAccDescription,\n  setDiagramTitle,\n  getDiagramTitle,\n  commonDb_exports,\n  getConfig2,\n  setConfig2,\n  defaultConfig2,\n  sanitizeText3 as sanitizeText2,\n  setupGraphViewbox2,\n  registerDiagram,\n  getDiagram\n};\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || (variable === 0 && previous === 47)))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","import {\n  JSON_SCHEMA,\n  load\n} from \"./chunks/mermaid.core/chunk-6JRP7KZX.mjs\";\nimport {\n  registerLayoutLoaders\n} from \"./chunks/mermaid.core/chunk-TYCBKAJE.mjs\";\nimport \"./chunks/mermaid.core/chunk-IIMUDSI4.mjs\";\nimport \"./chunks/mermaid.core/chunk-VV3M67IP.mjs\";\nimport \"./chunks/mermaid.core/chunk-HRU6DDCH.mjs\";\nimport \"./chunks/mermaid.core/chunk-K557N5IZ.mjs\";\nimport {\n  registerIconPacks\n} from \"./chunks/mermaid.core/chunk-H2D2JQ3I.mjs\";\nimport \"./chunks/mermaid.core/chunk-C3MQ5ANM.mjs\";\nimport {\n  cleanAndMerge,\n  decodeEntities,\n  encodeEntities,\n  isDetailedError,\n  removeDirectives,\n  utils_default\n} from \"./chunks/mermaid.core/chunk-O4NI6UNU.mjs\";\nimport {\n  package_default\n} from \"./chunks/mermaid.core/chunk-5NNNAHNI.mjs\";\nimport {\n  selectSvgElement\n} from \"./chunks/mermaid.core/chunk-7B677QYD.mjs\";\nimport {\n  UnknownDiagramError,\n  __name,\n  addDirective,\n  assignWithDepth_default,\n  configureSvgSize,\n  defaultConfig,\n  detectType,\n  detectors,\n  evaluate,\n  frontMatterRegex,\n  getConfig,\n  getDiagram,\n  getDiagramLoader,\n  getSiteConfig,\n  log,\n  registerDiagram,\n  registerLazyLoadedDiagrams,\n  reset,\n  saveConfigFromInitialize,\n  setConfig,\n  setLogLevel,\n  setSiteConfig,\n  styles_default,\n  themes_default,\n  updateSiteConfig\n} from \"./chunks/mermaid.core/chunk-YTJNT7DU.mjs\";\n\n// src/mermaid.ts\nimport { dedent } from \"ts-dedent\";\n\n// src/diagrams/c4/c4Detector.ts\nvar id = \"c4\";\nvar detector = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);\n}, \"detector\");\nvar loader = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/c4Diagram-VJAJSXHY.mjs\");\n  return { id, diagram: diagram2 };\n}, \"loader\");\nvar plugin = {\n  id,\n  detector,\n  loader\n};\nvar c4Detector_default = plugin;\n\n// src/diagrams/flowchart/flowDetector.ts\nvar id2 = \"flowchart\";\nvar detector2 = /* @__PURE__ */ __name((txt, config) => {\n  if (config?.flowchart?.defaultRenderer === \"dagre-wrapper\" || config?.flowchart?.defaultRenderer === \"elk\") {\n    return false;\n  }\n  return /^\\s*graph/.test(txt);\n}, \"detector\");\nvar loader2 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/flowDiagram-4HSFHLVR.mjs\");\n  return { id: id2, diagram: diagram2 };\n}, \"loader\");\nvar plugin2 = {\n  id: id2,\n  detector: detector2,\n  loader: loader2\n};\nvar flowDetector_default = plugin2;\n\n// src/diagrams/flowchart/flowDetector-v2.ts\nvar id3 = \"flowchart-v2\";\nvar detector3 = /* @__PURE__ */ __name((txt, config) => {\n  if (config?.flowchart?.defaultRenderer === \"dagre-d3\") {\n    return false;\n  }\n  if (config?.flowchart?.defaultRenderer === \"elk\") {\n    config.layout = \"elk\";\n  }\n  if (/^\\s*graph/.test(txt) && config?.flowchart?.defaultRenderer === \"dagre-wrapper\") {\n    return true;\n  }\n  return /^\\s*flowchart/.test(txt);\n}, \"detector\");\nvar loader3 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/flowDiagram-4HSFHLVR.mjs\");\n  return { id: id3, diagram: diagram2 };\n}, \"loader\");\nvar plugin3 = {\n  id: id3,\n  detector: detector3,\n  loader: loader3\n};\nvar flowDetector_v2_default = plugin3;\n\n// src/diagrams/er/erDetector.ts\nvar id4 = \"er\";\nvar detector4 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*erDiagram/.test(txt);\n}, \"detector\");\nvar loader4 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/erDiagram-Q7BY3M3F.mjs\");\n  return { id: id4, diagram: diagram2 };\n}, \"loader\");\nvar plugin4 = {\n  id: id4,\n  detector: detector4,\n  loader: loader4\n};\nvar erDetector_default = plugin4;\n\n// src/diagrams/git/gitGraphDetector.ts\nvar id5 = \"gitGraph\";\nvar detector5 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*gitGraph/.test(txt);\n}, \"detector\");\nvar loader5 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/gitGraphDiagram-7IBYFJ6S.mjs\");\n  return { id: id5, diagram: diagram2 };\n}, \"loader\");\nvar plugin5 = {\n  id: id5,\n  detector: detector5,\n  loader: loader5\n};\nvar gitGraphDetector_default = plugin5;\n\n// src/diagrams/gantt/ganttDetector.ts\nvar id6 = \"gantt\";\nvar detector6 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*gantt/.test(txt);\n}, \"detector\");\nvar loader6 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/ganttDiagram-APWFNJXF.mjs\");\n  return { id: id6, diagram: diagram2 };\n}, \"loader\");\nvar plugin6 = {\n  id: id6,\n  detector: detector6,\n  loader: loader6\n};\nvar ganttDetector_default = plugin6;\n\n// src/diagrams/info/infoDetector.ts\nvar id7 = \"info\";\nvar detector7 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*info/.test(txt);\n}, \"detector\");\nvar loader7 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/infoDiagram-PH2N3AL5.mjs\");\n  return { id: id7, diagram: diagram2 };\n}, \"loader\");\nvar info = {\n  id: id7,\n  detector: detector7,\n  loader: loader7\n};\n\n// src/diagrams/pie/pieDetector.ts\nvar id8 = \"pie\";\nvar detector8 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*pie/.test(txt);\n}, \"detector\");\nvar loader8 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/pieDiagram-IB7DONF6.mjs\");\n  return { id: id8, diagram: diagram2 };\n}, \"loader\");\nvar pie = {\n  id: id8,\n  detector: detector8,\n  loader: loader8\n};\n\n// src/diagrams/quadrant-chart/quadrantDetector.ts\nvar id9 = \"quadrantChart\";\nvar detector9 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*quadrantChart/.test(txt);\n}, \"detector\");\nvar loader9 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/quadrantDiagram-7GDLP6J5.mjs\");\n  return { id: id9, diagram: diagram2 };\n}, \"loader\");\nvar plugin7 = {\n  id: id9,\n  detector: detector9,\n  loader: loader9\n};\nvar quadrantDetector_default = plugin7;\n\n// src/diagrams/xychart/xychartDetector.ts\nvar id10 = \"xychart\";\nvar detector10 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*xychart-beta/.test(txt);\n}, \"detector\");\nvar loader10 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/xychartDiagram-VJFVF3MP.mjs\");\n  return { id: id10, diagram: diagram2 };\n}, \"loader\");\nvar plugin8 = {\n  id: id10,\n  detector: detector10,\n  loader: loader10\n};\nvar xychartDetector_default = plugin8;\n\n// src/diagrams/requirement/requirementDetector.ts\nvar id11 = \"requirement\";\nvar detector11 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*requirement(Diagram)?/.test(txt);\n}, \"detector\");\nvar loader11 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/requirementDiagram-KVF5MWMF.mjs\");\n  return { id: id11, diagram: diagram2 };\n}, \"loader\");\nvar plugin9 = {\n  id: id11,\n  detector: detector11,\n  loader: loader11\n};\nvar requirementDetector_default = plugin9;\n\n// src/diagrams/sequence/sequenceDetector.ts\nvar id12 = \"sequence\";\nvar detector12 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*sequenceDiagram/.test(txt);\n}, \"detector\");\nvar loader12 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/sequenceDiagram-X6HHIX6F.mjs\");\n  return { id: id12, diagram: diagram2 };\n}, \"loader\");\nvar plugin10 = {\n  id: id12,\n  detector: detector12,\n  loader: loader12\n};\nvar sequenceDetector_default = plugin10;\n\n// src/diagrams/class/classDetector.ts\nvar id13 = \"class\";\nvar detector13 = /* @__PURE__ */ __name((txt, config) => {\n  if (config?.class?.defaultRenderer === \"dagre-wrapper\") {\n    return false;\n  }\n  return /^\\s*classDiagram/.test(txt);\n}, \"detector\");\nvar loader13 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/classDiagram-GIVACNV2.mjs\");\n  return { id: id13, diagram: diagram2 };\n}, \"loader\");\nvar plugin11 = {\n  id: id13,\n  detector: detector13,\n  loader: loader13\n};\nvar classDetector_default = plugin11;\n\n// src/diagrams/class/classDetector-V2.ts\nvar id14 = \"classDiagram\";\nvar detector14 = /* @__PURE__ */ __name((txt, config) => {\n  if (/^\\s*classDiagram/.test(txt) && config?.class?.defaultRenderer === \"dagre-wrapper\") {\n    return true;\n  }\n  return /^\\s*classDiagram-v2/.test(txt);\n}, \"detector\");\nvar loader14 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/classDiagram-v2-COTLJTTW.mjs\");\n  return { id: id14, diagram: diagram2 };\n}, \"loader\");\nvar plugin12 = {\n  id: id14,\n  detector: detector14,\n  loader: loader14\n};\nvar classDetector_V2_default = plugin12;\n\n// src/diagrams/state/stateDetector.ts\nvar id15 = \"state\";\nvar detector15 = /* @__PURE__ */ __name((txt, config) => {\n  if (config?.state?.defaultRenderer === \"dagre-wrapper\") {\n    return false;\n  }\n  return /^\\s*stateDiagram/.test(txt);\n}, \"detector\");\nvar loader15 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/stateDiagram-DGXRK772.mjs\");\n  return { id: id15, diagram: diagram2 };\n}, \"loader\");\nvar plugin13 = {\n  id: id15,\n  detector: detector15,\n  loader: loader15\n};\nvar stateDetector_default = plugin13;\n\n// src/diagrams/state/stateDetector-V2.ts\nvar id16 = \"stateDiagram\";\nvar detector16 = /* @__PURE__ */ __name((txt, config) => {\n  if (/^\\s*stateDiagram-v2/.test(txt)) {\n    return true;\n  }\n  if (/^\\s*stateDiagram/.test(txt) && config?.state?.defaultRenderer === \"dagre-wrapper\") {\n    return true;\n  }\n  return false;\n}, \"detector\");\nvar loader16 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/stateDiagram-v2-YXO3MK2T.mjs\");\n  return { id: id16, diagram: diagram2 };\n}, \"loader\");\nvar plugin14 = {\n  id: id16,\n  detector: detector16,\n  loader: loader16\n};\nvar stateDetector_V2_default = plugin14;\n\n// src/diagrams/user-journey/journeyDetector.ts\nvar id17 = \"journey\";\nvar detector17 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*journey/.test(txt);\n}, \"detector\");\nvar loader17 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/journeyDiagram-U35MCT3I.mjs\");\n  return { id: id17, diagram: diagram2 };\n}, \"loader\");\nvar plugin15 = {\n  id: id17,\n  detector: detector17,\n  loader: loader17\n};\nvar journeyDetector_default = plugin15;\n\n// src/diagrams/error/errorRenderer.ts\nvar draw = /* @__PURE__ */ __name((_text, id27, version) => {\n  log.debug(\"rendering svg for syntax error\\n\");\n  const svg = selectSvgElement(id27);\n  const g = svg.append(\"g\");\n  svg.attr(\"viewBox\", \"0 0 2412 512\");\n  configureSvgSize(svg, 100, 512, true);\n  g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n    \"d\",\n    \"m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z\"\n  );\n  g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n    \"d\",\n    \"m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z\"\n  );\n  g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n    \"d\",\n    \"m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z\"\n  );\n  g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n    \"d\",\n    \"m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z\"\n  );\n  g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n    \"d\",\n    \"m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z\"\n  );\n  g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n    \"d\",\n    \"m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z\"\n  );\n  g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1440).attr(\"y\", 250).attr(\"font-size\", \"150px\").style(\"text-anchor\", \"middle\").text(\"Syntax error in text\");\n  g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1250).attr(\"y\", 400).attr(\"font-size\", \"100px\").style(\"text-anchor\", \"middle\").text(`mermaid version ${version}`);\n}, \"draw\");\nvar renderer = { draw };\nvar errorRenderer_default = renderer;\n\n// src/diagrams/error/errorDiagram.ts\nvar diagram = {\n  db: {},\n  renderer,\n  parser: {\n    parse: /* @__PURE__ */ __name(() => {\n      return;\n    }, \"parse\")\n  }\n};\nvar errorDiagram_default = diagram;\n\n// src/diagrams/flowchart/elk/detector.ts\nvar id18 = \"flowchart-elk\";\nvar detector18 = /* @__PURE__ */ __name((txt, config = {}) => {\n  if (\n    // If diagram explicitly states flowchart-elk\n    /^\\s*flowchart-elk/.test(txt) || // If a flowchart/graph diagram has their default renderer set to elk\n    /^\\s*flowchart|graph/.test(txt) && config?.flowchart?.defaultRenderer === \"elk\"\n  ) {\n    config.layout = \"elk\";\n    return true;\n  }\n  return false;\n}, \"detector\");\nvar loader18 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/flowDiagram-4HSFHLVR.mjs\");\n  return { id: id18, diagram: diagram2 };\n}, \"loader\");\nvar plugin16 = {\n  id: id18,\n  detector: detector18,\n  loader: loader18\n};\nvar detector_default = plugin16;\n\n// src/diagrams/timeline/detector.ts\nvar id19 = \"timeline\";\nvar detector19 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*timeline/.test(txt);\n}, \"detector\");\nvar loader19 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/timeline-definition-BDJGKUSR.mjs\");\n  return { id: id19, diagram: diagram2 };\n}, \"loader\");\nvar plugin17 = {\n  id: id19,\n  detector: detector19,\n  loader: loader19\n};\nvar detector_default2 = plugin17;\n\n// src/diagrams/mindmap/detector.ts\nvar id20 = \"mindmap\";\nvar detector20 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*mindmap/.test(txt);\n}, \"detector\");\nvar loader20 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/mindmap-definition-ALO5MXBD.mjs\");\n  return { id: id20, diagram: diagram2 };\n}, \"loader\");\nvar plugin18 = {\n  id: id20,\n  detector: detector20,\n  loader: loader20\n};\nvar detector_default3 = plugin18;\n\n// src/diagrams/kanban/detector.ts\nvar id21 = \"kanban\";\nvar detector21 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*kanban/.test(txt);\n}, \"detector\");\nvar loader21 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/kanban-definition-NDS4AKOZ.mjs\");\n  return { id: id21, diagram: diagram2 };\n}, \"loader\");\nvar plugin19 = {\n  id: id21,\n  detector: detector21,\n  loader: loader21\n};\nvar detector_default4 = plugin19;\n\n// src/diagrams/sankey/sankeyDetector.ts\nvar id22 = \"sankey\";\nvar detector22 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*sankey-beta/.test(txt);\n}, \"detector\");\nvar loader22 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/sankeyDiagram-QLVOVGJD.mjs\");\n  return { id: id22, diagram: diagram2 };\n}, \"loader\");\nvar plugin20 = {\n  id: id22,\n  detector: detector22,\n  loader: loader22\n};\nvar sankeyDetector_default = plugin20;\n\n// src/diagrams/packet/detector.ts\nvar id23 = \"packet\";\nvar detector23 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*packet-beta/.test(txt);\n}, \"detector\");\nvar loader23 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/diagram-VNBRO52H.mjs\");\n  return { id: id23, diagram: diagram2 };\n}, \"loader\");\nvar packet = {\n  id: id23,\n  detector: detector23,\n  loader: loader23\n};\n\n// src/diagrams/radar/detector.ts\nvar id24 = \"radar\";\nvar detector24 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*radar-beta/.test(txt);\n}, \"detector\");\nvar loader24 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/diagram-SSKATNLV.mjs\");\n  return { id: id24, diagram: diagram2 };\n}, \"loader\");\nvar radar = {\n  id: id24,\n  detector: detector24,\n  loader: loader24\n};\n\n// src/diagrams/block/blockDetector.ts\nvar id25 = \"block\";\nvar detector25 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*block-beta/.test(txt);\n}, \"detector\");\nvar loader25 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/blockDiagram-JOT3LUYC.mjs\");\n  return { id: id25, diagram: diagram2 };\n}, \"loader\");\nvar plugin21 = {\n  id: id25,\n  detector: detector25,\n  loader: loader25\n};\nvar blockDetector_default = plugin21;\n\n// src/diagrams/architecture/architectureDetector.ts\nvar id26 = \"architecture\";\nvar detector26 = /* @__PURE__ */ __name((txt) => {\n  return /^\\s*architecture/.test(txt);\n}, \"detector\");\nvar loader26 = /* @__PURE__ */ __name(async () => {\n  const { diagram: diagram2 } = await import(\"./chunks/mermaid.core/architectureDiagram-IEHRJDOE.mjs\");\n  return { id: id26, diagram: diagram2 };\n}, \"loader\");\nvar architecture = {\n  id: id26,\n  detector: detector26,\n  loader: loader26\n};\nvar architectureDetector_default = architecture;\n\n// src/diagram-api/diagram-orchestration.ts\nvar hasLoadedDiagrams = false;\nvar addDiagrams = /* @__PURE__ */ __name(() => {\n  if (hasLoadedDiagrams) {\n    return;\n  }\n  hasLoadedDiagrams = true;\n  registerDiagram(\"error\", errorDiagram_default, (text) => {\n    return text.toLowerCase().trim() === \"error\";\n  });\n  registerDiagram(\n    \"---\",\n    // --- diagram type may appear if YAML front-matter is not parsed correctly\n    {\n      db: {\n        clear: /* @__PURE__ */ __name(() => {\n        }, \"clear\")\n      },\n      styles: {},\n      // should never be used\n      renderer: {\n        draw: /* @__PURE__ */ __name(() => {\n        }, \"draw\")\n      },\n      parser: {\n        parse: /* @__PURE__ */ __name(() => {\n          throw new Error(\n            \"Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks\"\n          );\n        }, \"parse\")\n      },\n      init: /* @__PURE__ */ __name(() => null, \"init\")\n      // no op\n    },\n    (text) => {\n      return text.toLowerCase().trimStart().startsWith(\"---\");\n    }\n  );\n  registerLazyLoadedDiagrams(\n    c4Detector_default,\n    detector_default4,\n    classDetector_V2_default,\n    classDetector_default,\n    erDetector_default,\n    ganttDetector_default,\n    info,\n    pie,\n    requirementDetector_default,\n    sequenceDetector_default,\n    detector_default,\n    flowDetector_v2_default,\n    flowDetector_default,\n    detector_default3,\n    detector_default2,\n    gitGraphDetector_default,\n    stateDetector_V2_default,\n    stateDetector_default,\n    journeyDetector_default,\n    quadrantDetector_default,\n    sankeyDetector_default,\n    packet,\n    xychartDetector_default,\n    blockDetector_default,\n    architectureDetector_default,\n    radar\n  );\n}, \"addDiagrams\");\n\n// src/diagram-api/loadDiagram.ts\nvar loadRegisteredDiagrams = /* @__PURE__ */ __name(async () => {\n  log.debug(`Loading registered diagrams`);\n  const results = await Promise.allSettled(\n    Object.entries(detectors).map(async ([key, { detector: detector27, loader: loader27 }]) => {\n      if (loader27) {\n        try {\n          getDiagram(key);\n        } catch {\n          try {\n            const { diagram: diagram2, id: id27 } = await loader27();\n            registerDiagram(id27, diagram2, detector27);\n          } catch (err) {\n            log.error(`Failed to load external diagram with key ${key}. Removing from detectors.`);\n            delete detectors[key];\n            throw err;\n          }\n        }\n      }\n    })\n  );\n  const failed = results.filter((result) => result.status === \"rejected\");\n  if (failed.length > 0) {\n    log.error(`Failed to load ${failed.length} external diagrams`);\n    for (const res of failed) {\n      log.error(res);\n    }\n    throw new Error(`Failed to load ${failed.length} external diagrams`);\n  }\n}, \"loadRegisteredDiagrams\");\n\n// src/mermaidAPI.ts\nimport { select } from \"d3\";\nimport { compile, serialize, stringify } from \"stylis\";\nimport DOMPurify from \"dompurify\";\nimport isEmpty from \"lodash-es/isEmpty.js\";\n\n// src/accessibility.ts\nvar SVG_ROLE = \"graphics-document document\";\nfunction setA11yDiagramInfo(svg, diagramType) {\n  svg.attr(\"role\", SVG_ROLE);\n  if (diagramType !== \"\") {\n    svg.attr(\"aria-roledescription\", diagramType);\n  }\n}\n__name(setA11yDiagramInfo, \"setA11yDiagramInfo\");\nfunction addSVGa11yTitleDescription(svg, a11yTitle, a11yDesc, baseId) {\n  if (svg.insert === void 0) {\n    return;\n  }\n  if (a11yDesc) {\n    const descId = `chart-desc-${baseId}`;\n    svg.attr(\"aria-describedby\", descId);\n    svg.insert(\"desc\", \":first-child\").attr(\"id\", descId).text(a11yDesc);\n  }\n  if (a11yTitle) {\n    const titleId = `chart-title-${baseId}`;\n    svg.attr(\"aria-labelledby\", titleId);\n    svg.insert(\"title\", \":first-child\").attr(\"id\", titleId).text(a11yTitle);\n  }\n}\n__name(addSVGa11yTitleDescription, \"addSVGa11yTitleDescription\");\n\n// src/Diagram.ts\nvar Diagram = class _Diagram {\n  constructor(type, text, db, parser, renderer2) {\n    this.type = type;\n    this.text = text;\n    this.db = db;\n    this.parser = parser;\n    this.renderer = renderer2;\n  }\n  static {\n    __name(this, \"Diagram\");\n  }\n  static async fromText(text, metadata = {}) {\n    const config = getConfig();\n    const type = detectType(text, config);\n    text = encodeEntities(text) + \"\\n\";\n    try {\n      getDiagram(type);\n    } catch {\n      const loader27 = getDiagramLoader(type);\n      if (!loader27) {\n        throw new UnknownDiagramError(`Diagram ${type} not found.`);\n      }\n      const { id: id27, diagram: diagram2 } = await loader27();\n      registerDiagram(id27, diagram2);\n    }\n    const { db, parser, renderer: renderer2, init: init2 } = getDiagram(type);\n    if (parser.parser) {\n      parser.parser.yy = db;\n    }\n    db.clear?.();\n    init2?.(config);\n    if (metadata.title) {\n      db.setDiagramTitle?.(metadata.title);\n    }\n    await parser.parse(text);\n    return new _Diagram(type, text, db, parser, renderer2);\n  }\n  async render(id27, version) {\n    await this.renderer.draw(this.text, id27, version, this);\n  }\n  getParser() {\n    return this.parser;\n  }\n  getType() {\n    return this.type;\n  }\n};\n\n// src/interactionDb.ts\nvar interactionFunctions = [];\nvar attachFunctions = /* @__PURE__ */ __name(() => {\n  interactionFunctions.forEach((f) => {\n    f();\n  });\n  interactionFunctions = [];\n}, \"attachFunctions\");\n\n// src/diagram-api/comments.ts\nvar cleanupComments = /* @__PURE__ */ __name((text) => {\n  return text.replace(/^\\s*%%(?!{)[^\\n]+\\n?/gm, \"\").trimStart();\n}, \"cleanupComments\");\n\n// src/diagram-api/frontmatter.ts\nfunction extractFrontMatter(text) {\n  const matches = text.match(frontMatterRegex);\n  if (!matches) {\n    return {\n      text,\n      metadata: {}\n    };\n  }\n  let parsed = load(matches[1], {\n    // To support config, we need JSON schema.\n    // https://www.yaml.org/spec/1.2/spec.html#id2803231\n    schema: JSON_SCHEMA\n  }) ?? {};\n  parsed = typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n  const metadata = {};\n  if (parsed.displayMode) {\n    metadata.displayMode = parsed.displayMode.toString();\n  }\n  if (parsed.title) {\n    metadata.title = parsed.title.toString();\n  }\n  if (parsed.config) {\n    metadata.config = parsed.config;\n  }\n  return {\n    text: text.slice(matches[0].length),\n    metadata\n  };\n}\n__name(extractFrontMatter, \"extractFrontMatter\");\n\n// src/preprocess.ts\nvar cleanupText = /* @__PURE__ */ __name((code) => {\n  return code.replace(/\\r\\n?/g, \"\\n\").replace(\n    /<(\\w+)([^>]*)>/g,\n    (match, tag, attributes) => \"<\" + tag + attributes.replace(/=\"([^\"]*)\"/g, \"='$1'\") + \">\"\n  );\n}, \"cleanupText\");\nvar processFrontmatter = /* @__PURE__ */ __name((code) => {\n  const { text, metadata } = extractFrontMatter(code);\n  const { displayMode, title, config = {} } = metadata;\n  if (displayMode) {\n    if (!config.gantt) {\n      config.gantt = {};\n    }\n    config.gantt.displayMode = displayMode;\n  }\n  return { title, config, text };\n}, \"processFrontmatter\");\nvar processDirectives = /* @__PURE__ */ __name((code) => {\n  const initDirective = utils_default.detectInit(code) ?? {};\n  const wrapDirectives = utils_default.detectDirective(code, \"wrap\");\n  if (Array.isArray(wrapDirectives)) {\n    initDirective.wrap = wrapDirectives.some(({ type }) => type === \"wrap\");\n  } else if (wrapDirectives?.type === \"wrap\") {\n    initDirective.wrap = true;\n  }\n  return {\n    text: removeDirectives(code),\n    directive: initDirective\n  };\n}, \"processDirectives\");\nfunction preprocessDiagram(code) {\n  const cleanedCode = cleanupText(code);\n  const frontMatterResult = processFrontmatter(cleanedCode);\n  const directiveResult = processDirectives(frontMatterResult.text);\n  const config = cleanAndMerge(frontMatterResult.config, directiveResult.directive);\n  code = cleanupComments(directiveResult.text);\n  return {\n    code,\n    title: frontMatterResult.title,\n    config\n  };\n}\n__name(preprocessDiagram, \"preprocessDiagram\");\n\n// src/utils/base64.ts\nfunction toBase64(str) {\n  const utf8Bytes = new TextEncoder().encode(str);\n  const utf8Str = Array.from(utf8Bytes, (byte) => String.fromCodePoint(byte)).join(\"\");\n  return btoa(utf8Str);\n}\n__name(toBase64, \"toBase64\");\n\n// src/mermaidAPI.ts\nvar MAX_TEXTLENGTH = 5e4;\nvar MAX_TEXTLENGTH_EXCEEDED_MSG = \"graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa\";\nvar SECURITY_LVL_SANDBOX = \"sandbox\";\nvar SECURITY_LVL_LOOSE = \"loose\";\nvar XMLNS_SVG_STD = \"http://www.w3.org/2000/svg\";\nvar XMLNS_XLINK_STD = \"http://www.w3.org/1999/xlink\";\nvar XMLNS_XHTML_STD = \"http://www.w3.org/1999/xhtml\";\nvar IFRAME_WIDTH = \"100%\";\nvar IFRAME_HEIGHT = \"100%\";\nvar IFRAME_STYLES = \"border:0;margin:0;\";\nvar IFRAME_BODY_STYLE = \"margin:0\";\nvar IFRAME_SANDBOX_OPTS = \"allow-top-navigation-by-user-activation allow-popups\";\nvar IFRAME_NOT_SUPPORTED_MSG = 'The \"iframe\" tag is not supported by your browser.';\nvar DOMPURIFY_TAGS = [\"foreignobject\"];\nvar DOMPURIFY_ATTR = [\"dominant-baseline\"];\nfunction processAndSetConfigs(text) {\n  const processed = preprocessDiagram(text);\n  reset();\n  addDirective(processed.config ?? {});\n  return processed;\n}\n__name(processAndSetConfigs, \"processAndSetConfigs\");\nasync function parse(text, parseOptions) {\n  addDiagrams();\n  try {\n    const { code, config } = processAndSetConfigs(text);\n    const diagram2 = await getDiagramFromText(code);\n    return { diagramType: diagram2.type, config };\n  } catch (error) {\n    if (parseOptions?.suppressErrors) {\n      return false;\n    }\n    throw error;\n  }\n}\n__name(parse, \"parse\");\nvar cssImportantStyles = /* @__PURE__ */ __name((cssClass, element, cssClasses = []) => {\n  return `\n.${cssClass} ${element} { ${cssClasses.join(\" !important; \")} !important; }`;\n}, \"cssImportantStyles\");\nvar createCssStyles = /* @__PURE__ */ __name((config, classDefs = /* @__PURE__ */ new Map()) => {\n  let cssStyles = \"\";\n  if (config.themeCSS !== void 0) {\n    cssStyles += `\n${config.themeCSS}`;\n  }\n  if (config.fontFamily !== void 0) {\n    cssStyles += `\n:root { --mermaid-font-family: ${config.fontFamily}}`;\n  }\n  if (config.altFontFamily !== void 0) {\n    cssStyles += `\n:root { --mermaid-alt-font-family: ${config.altFontFamily}}`;\n  }\n  if (classDefs instanceof Map) {\n    const htmlLabels = config.htmlLabels ?? config.flowchart?.htmlLabels;\n    const cssHtmlElements = [\"> *\", \"span\"];\n    const cssShapeElements = [\"rect\", \"polygon\", \"ellipse\", \"circle\", \"path\"];\n    const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements;\n    classDefs.forEach((styleClassDef) => {\n      if (!isEmpty(styleClassDef.styles)) {\n        cssElements.forEach((cssElement) => {\n          cssStyles += cssImportantStyles(styleClassDef.id, cssElement, styleClassDef.styles);\n        });\n      }\n      if (!isEmpty(styleClassDef.textStyles)) {\n        cssStyles += cssImportantStyles(\n          styleClassDef.id,\n          \"tspan\",\n          (styleClassDef?.textStyles || []).map((s) => s.replace(\"color\", \"fill\"))\n        );\n      }\n    });\n  }\n  return cssStyles;\n}, \"createCssStyles\");\nvar createUserStyles = /* @__PURE__ */ __name((config, graphType, classDefs, svgId) => {\n  const userCSSstyles = createCssStyles(config, classDefs);\n  const allStyles = styles_default(graphType, userCSSstyles, config.themeVariables);\n  return serialize(compile(`${svgId}{${allStyles}}`), stringify);\n}, \"createUserStyles\");\nvar cleanUpSvgCode = /* @__PURE__ */ __name((svgCode = \"\", inSandboxMode, useArrowMarkerUrls) => {\n  let cleanedUpSvg = svgCode;\n  if (!useArrowMarkerUrls && !inSandboxMode) {\n    cleanedUpSvg = cleanedUpSvg.replace(\n      /marker-end=\"url\\([\\d+./:=?A-Za-z-]*?#/g,\n      'marker-end=\"url(#'\n    );\n  }\n  cleanedUpSvg = decodeEntities(cleanedUpSvg);\n  cleanedUpSvg = cleanedUpSvg.replace(/<br>/g, \"<br/>\");\n  return cleanedUpSvg;\n}, \"cleanUpSvgCode\");\nvar putIntoIFrame = /* @__PURE__ */ __name((svgCode = \"\", svgElement) => {\n  const height = svgElement?.viewBox?.baseVal?.height ? svgElement.viewBox.baseVal.height + \"px\" : IFRAME_HEIGHT;\n  const base64encodedSrc = toBase64(`<body style=\"${IFRAME_BODY_STYLE}\">${svgCode}</body>`);\n  return `<iframe style=\"width:${IFRAME_WIDTH};height:${height};${IFRAME_STYLES}\" src=\"data:text/html;charset=UTF-8;base64,${base64encodedSrc}\" sandbox=\"${IFRAME_SANDBOX_OPTS}\">\n  ${IFRAME_NOT_SUPPORTED_MSG}\n</iframe>`;\n}, \"putIntoIFrame\");\nvar appendDivSvgG = /* @__PURE__ */ __name((parentRoot, id27, enclosingDivId, divStyle, svgXlink) => {\n  const enclosingDiv = parentRoot.append(\"div\");\n  enclosingDiv.attr(\"id\", enclosingDivId);\n  if (divStyle) {\n    enclosingDiv.attr(\"style\", divStyle);\n  }\n  const svgNode = enclosingDiv.append(\"svg\").attr(\"id\", id27).attr(\"width\", \"100%\").attr(\"xmlns\", XMLNS_SVG_STD);\n  if (svgXlink) {\n    svgNode.attr(\"xmlns:xlink\", svgXlink);\n  }\n  svgNode.append(\"g\");\n  return parentRoot;\n}, \"appendDivSvgG\");\nfunction sandboxedIframe(parentNode, iFrameId) {\n  return parentNode.append(\"iframe\").attr(\"id\", iFrameId).attr(\"style\", \"width: 100%; height: 100%;\").attr(\"sandbox\", \"\");\n}\n__name(sandboxedIframe, \"sandboxedIframe\");\nvar removeExistingElements = /* @__PURE__ */ __name((doc, id27, divId, iFrameId) => {\n  doc.getElementById(id27)?.remove();\n  doc.getElementById(divId)?.remove();\n  doc.getElementById(iFrameId)?.remove();\n}, \"removeExistingElements\");\nvar render = /* @__PURE__ */ __name(async function(id27, text, svgContainingElement) {\n  addDiagrams();\n  const processed = processAndSetConfigs(text);\n  text = processed.code;\n  const config = getConfig();\n  log.debug(config);\n  if (text.length > (config?.maxTextSize ?? MAX_TEXTLENGTH)) {\n    text = MAX_TEXTLENGTH_EXCEEDED_MSG;\n  }\n  const idSelector = \"#\" + id27;\n  const iFrameID = \"i\" + id27;\n  const iFrameID_selector = \"#\" + iFrameID;\n  const enclosingDivID = \"d\" + id27;\n  const enclosingDivID_selector = \"#\" + enclosingDivID;\n  const removeTempElements = /* @__PURE__ */ __name(() => {\n    const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;\n    const node = select(tmpElementSelector).node();\n    if (node && \"remove\" in node) {\n      node.remove();\n    }\n  }, \"removeTempElements\");\n  let root = select(\"body\");\n  const isSandboxed = config.securityLevel === SECURITY_LVL_SANDBOX;\n  const isLooseSecurityLevel = config.securityLevel === SECURITY_LVL_LOOSE;\n  const fontFamily = config.fontFamily;\n  if (svgContainingElement !== void 0) {\n    if (svgContainingElement) {\n      svgContainingElement.innerHTML = \"\";\n    }\n    if (isSandboxed) {\n      const iframe = sandboxedIframe(select(svgContainingElement), iFrameID);\n      root = select(iframe.nodes()[0].contentDocument.body);\n      root.node().style.margin = 0;\n    } else {\n      root = select(svgContainingElement);\n    }\n    appendDivSvgG(root, id27, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);\n  } else {\n    removeExistingElements(document, id27, enclosingDivID, iFrameID);\n    if (isSandboxed) {\n      const iframe = sandboxedIframe(select(\"body\"), iFrameID);\n      root = select(iframe.nodes()[0].contentDocument.body);\n      root.node().style.margin = 0;\n    } else {\n      root = select(\"body\");\n    }\n    appendDivSvgG(root, id27, enclosingDivID);\n  }\n  let diag;\n  let parseEncounteredException;\n  try {\n    diag = await Diagram.fromText(text, { title: processed.title });\n  } catch (error) {\n    if (config.suppressErrorRendering) {\n      removeTempElements();\n      throw error;\n    }\n    diag = await Diagram.fromText(\"error\");\n    parseEncounteredException = error;\n  }\n  const element = root.select(enclosingDivID_selector).node();\n  const diagramType = diag.type;\n  const svg = element.firstChild;\n  const firstChild = svg.firstChild;\n  const diagramClassDefs = diag.renderer.getClasses?.(text, diag);\n  const rules = createUserStyles(config, diagramType, diagramClassDefs, idSelector);\n  const style1 = document.createElement(\"style\");\n  style1.innerHTML = rules;\n  svg.insertBefore(style1, firstChild);\n  try {\n    await diag.renderer.draw(text, id27, package_default.version, diag);\n  } catch (e) {\n    if (config.suppressErrorRendering) {\n      removeTempElements();\n    } else {\n      errorRenderer_default.draw(text, id27, package_default.version);\n    }\n    throw e;\n  }\n  const svgNode = root.select(`${enclosingDivID_selector} svg`);\n  const a11yTitle = diag.db.getAccTitle?.();\n  const a11yDescr = diag.db.getAccDescription?.();\n  addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr);\n  root.select(`[id=\"${id27}\"]`).selectAll(\"foreignobject > *\").attr(\"xmlns\", XMLNS_XHTML_STD);\n  let svgCode = root.select(enclosingDivID_selector).node().innerHTML;\n  log.debug(\"config.arrowMarkerAbsolute\", config.arrowMarkerAbsolute);\n  svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config.arrowMarkerAbsolute));\n  if (isSandboxed) {\n    const svgEl = root.select(enclosingDivID_selector + \" svg\").node();\n    svgCode = putIntoIFrame(svgCode, svgEl);\n  } else if (!isLooseSecurityLevel) {\n    svgCode = DOMPurify.sanitize(svgCode, {\n      ADD_TAGS: DOMPURIFY_TAGS,\n      ADD_ATTR: DOMPURIFY_ATTR,\n      HTML_INTEGRATION_POINTS: { foreignobject: true }\n    });\n  }\n  attachFunctions();\n  if (parseEncounteredException) {\n    throw parseEncounteredException;\n  }\n  removeTempElements();\n  return {\n    diagramType,\n    svg: svgCode,\n    bindFunctions: diag.db.bindFunctions\n  };\n}, \"render\");\nfunction initialize(userOptions = {}) {\n  const options = assignWithDepth_default({}, userOptions);\n  if (options?.fontFamily && !options.themeVariables?.fontFamily) {\n    if (!options.themeVariables) {\n      options.themeVariables = {};\n    }\n    options.themeVariables.fontFamily = options.fontFamily;\n  }\n  saveConfigFromInitialize(options);\n  if (options?.theme && options.theme in themes_default) {\n    options.themeVariables = themes_default[options.theme].getThemeVariables(\n      options.themeVariables\n    );\n  } else if (options) {\n    options.themeVariables = themes_default.default.getThemeVariables(options.themeVariables);\n  }\n  const config = typeof options === \"object\" ? setSiteConfig(options) : getSiteConfig();\n  setLogLevel(config.logLevel);\n  addDiagrams();\n}\n__name(initialize, \"initialize\");\nvar getDiagramFromText = /* @__PURE__ */ __name((text, metadata = {}) => {\n  const { code } = preprocessDiagram(text);\n  return Diagram.fromText(code, metadata);\n}, \"getDiagramFromText\");\nfunction addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr) {\n  setA11yDiagramInfo(svgNode, diagramType);\n  addSVGa11yTitleDescription(svgNode, a11yTitle, a11yDescr, svgNode.attr(\"id\"));\n}\n__name(addA11yInfo, \"addA11yInfo\");\nvar mermaidAPI = Object.freeze({\n  render,\n  parse,\n  getDiagramFromText,\n  initialize,\n  getConfig,\n  setConfig,\n  getSiteConfig,\n  updateSiteConfig,\n  reset: /* @__PURE__ */ __name(() => {\n    reset();\n  }, \"reset\"),\n  globalReset: /* @__PURE__ */ __name(() => {\n    reset(defaultConfig);\n  }, \"globalReset\"),\n  defaultConfig\n});\nsetLogLevel(getConfig().logLevel);\nreset(getConfig());\n\n// src/mermaid.ts\nvar handleError = /* @__PURE__ */ __name((error, errors, parseError) => {\n  log.warn(error);\n  if (isDetailedError(error)) {\n    if (parseError) {\n      parseError(error.str, error.hash);\n    }\n    errors.push({ ...error, message: error.str, error });\n  } else {\n    if (parseError) {\n      parseError(error);\n    }\n    if (error instanceof Error) {\n      errors.push({\n        str: error.message,\n        message: error.message,\n        hash: error.name,\n        error\n      });\n    }\n  }\n}, \"handleError\");\nvar run = /* @__PURE__ */ __name(async function(options = {\n  querySelector: \".mermaid\"\n}) {\n  try {\n    await runThrowsErrors(options);\n  } catch (e) {\n    if (isDetailedError(e)) {\n      log.error(e.str);\n    }\n    if (mermaid.parseError) {\n      mermaid.parseError(e);\n    }\n    if (!options.suppressErrors) {\n      log.error(\"Use the suppressErrors option to suppress these errors\");\n      throw e;\n    }\n  }\n}, \"run\");\nvar runThrowsErrors = /* @__PURE__ */ __name(async function({ postRenderCallback, querySelector, nodes } = {\n  querySelector: \".mermaid\"\n}) {\n  const conf = mermaidAPI.getConfig();\n  log.debug(`${!postRenderCallback ? \"No \" : \"\"}Callback function found`);\n  let nodesToProcess;\n  if (nodes) {\n    nodesToProcess = nodes;\n  } else if (querySelector) {\n    nodesToProcess = document.querySelectorAll(querySelector);\n  } else {\n    throw new Error(\"Nodes and querySelector are both undefined\");\n  }\n  log.debug(`Found ${nodesToProcess.length} diagrams`);\n  if (conf?.startOnLoad !== void 0) {\n    log.debug(\"Start On Load: \" + conf?.startOnLoad);\n    mermaidAPI.updateSiteConfig({ startOnLoad: conf?.startOnLoad });\n  }\n  const idGenerator = new utils_default.InitIDGenerator(conf.deterministicIds, conf.deterministicIDSeed);\n  let txt;\n  const errors = [];\n  for (const element of Array.from(nodesToProcess)) {\n    log.info(\"Rendering diagram: \" + element.id);\n    if (element.getAttribute(\"data-processed\")) {\n      continue;\n    }\n    element.setAttribute(\"data-processed\", \"true\");\n    const id27 = `mermaid-${idGenerator.next()}`;\n    txt = element.innerHTML;\n    txt = dedent(utils_default.entityDecode(txt)).trim().replace(/<br\\s*\\/?>/gi, \"<br/>\");\n    const init2 = utils_default.detectInit(txt);\n    if (init2) {\n      log.debug(\"Detected early reinit: \", init2);\n    }\n    try {\n      const { svg, bindFunctions } = await render2(id27, txt, element);\n      element.innerHTML = svg;\n      if (postRenderCallback) {\n        await postRenderCallback(id27);\n      }\n      if (bindFunctions) {\n        bindFunctions(element);\n      }\n    } catch (error) {\n      handleError(error, errors, mermaid.parseError);\n    }\n  }\n  if (errors.length > 0) {\n    throw errors[0];\n  }\n}, \"runThrowsErrors\");\nvar initialize2 = /* @__PURE__ */ __name(function(config) {\n  mermaidAPI.initialize(config);\n}, \"initialize\");\nvar init = /* @__PURE__ */ __name(async function(config, nodes, callback) {\n  log.warn(\"mermaid.init is deprecated. Please use run instead.\");\n  if (config) {\n    initialize2(config);\n  }\n  const runOptions = { postRenderCallback: callback, querySelector: \".mermaid\" };\n  if (typeof nodes === \"string\") {\n    runOptions.querySelector = nodes;\n  } else if (nodes) {\n    if (nodes instanceof HTMLElement) {\n      runOptions.nodes = [nodes];\n    } else {\n      runOptions.nodes = nodes;\n    }\n  }\n  await run(runOptions);\n}, \"init\");\nvar registerExternalDiagrams = /* @__PURE__ */ __name(async (diagrams, {\n  lazyLoad = true\n} = {}) => {\n  addDiagrams();\n  registerLazyLoadedDiagrams(...diagrams);\n  if (lazyLoad === false) {\n    await loadRegisteredDiagrams();\n  }\n}, \"registerExternalDiagrams\");\nvar contentLoaded = /* @__PURE__ */ __name(function() {\n  if (mermaid.startOnLoad) {\n    const { startOnLoad } = mermaidAPI.getConfig();\n    if (startOnLoad) {\n      mermaid.run().catch((err) => log.error(\"Mermaid failed to initialize\", err));\n    }\n  }\n}, \"contentLoaded\");\nif (typeof document !== \"undefined\") {\n  window.addEventListener(\"load\", contentLoaded, false);\n}\nvar setParseErrorHandler = /* @__PURE__ */ __name(function(parseErrorHandler) {\n  mermaid.parseError = parseErrorHandler;\n}, \"setParseErrorHandler\");\nvar executionQueue = [];\nvar executionQueueRunning = false;\nvar executeQueue = /* @__PURE__ */ __name(async () => {\n  if (executionQueueRunning) {\n    return;\n  }\n  executionQueueRunning = true;\n  while (executionQueue.length > 0) {\n    const f = executionQueue.shift();\n    if (f) {\n      try {\n        await f();\n      } catch (e) {\n        log.error(\"Error executing queue\", e);\n      }\n    }\n  }\n  executionQueueRunning = false;\n}, \"executeQueue\");\nvar parse2 = /* @__PURE__ */ __name(async (text, parseOptions) => {\n  return new Promise((resolve, reject) => {\n    const performCall = /* @__PURE__ */ __name(() => new Promise((res, rej) => {\n      mermaidAPI.parse(text, parseOptions).then(\n        (r) => {\n          res(r);\n          resolve(r);\n        },\n        (e) => {\n          log.error(\"Error parsing\", e);\n          mermaid.parseError?.(e);\n          rej(e);\n          reject(e);\n        }\n      );\n    }), \"performCall\");\n    executionQueue.push(performCall);\n    executeQueue().catch(reject);\n  });\n}, \"parse\");\nvar render2 = /* @__PURE__ */ __name((id27, text, container) => {\n  return new Promise((resolve, reject) => {\n    const performCall = /* @__PURE__ */ __name(() => new Promise((res, rej) => {\n      mermaidAPI.render(id27, text, container).then(\n        (r) => {\n          res(r);\n          resolve(r);\n        },\n        (e) => {\n          log.error(\"Error parsing\", e);\n          mermaid.parseError?.(e);\n          rej(e);\n          reject(e);\n        }\n      );\n    }), \"performCall\");\n    executionQueue.push(performCall);\n    executeQueue().catch(reject);\n  });\n}, \"render\");\nvar mermaid = {\n  startOnLoad: true,\n  mermaidAPI,\n  parse: parse2,\n  render: render2,\n  init,\n  run,\n  registerExternalDiagrams,\n  registerLayoutLoaders,\n  initialize: initialize2,\n  parseError: void 0,\n  contentLoaded,\n  setParseErrorHandler,\n  detectType,\n  registerIconPacks\n};\nvar mermaid_default = mermaid;\nexport {\n  mermaid_default as default\n};\n/*! Check if previously processed */\n/*!\n * Wait for document loaded before starting the execution\n */\n","function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;e<h.length&&!(h[e].ymin>i);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t<r.length;t+=2){const e=t+1;if(e>=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((t=>{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((t=>{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;n<s-1;++n){const e=B(t[n],h,r);e>i&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s<o;s++){K(t,3*s,e,n)}return s&&s>0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n","export function dedent(templ) {\n    var values = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        values[_i - 1] = arguments[_i];\n    }\n    var strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n    strings[strings.length - 1] = strings[strings.length - 1].replace(/\\r?\\n([\\t ]*)$/, '');\n    var indentLengths = strings.reduce(function (arr, str) {\n        var matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n        if (matches) {\n            return arr.concat(matches.map(function (match) { var _a, _b; return (_b = (_a = match.match(/[\\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; }));\n        }\n        return arr;\n    }, []);\n    if (indentLengths.length) {\n        var pattern_1 = new RegExp(\"\\n[\\t ]{\" + Math.min.apply(Math, indentLengths) + \"}\", 'g');\n        strings = strings.map(function (str) { return str.replace(pattern_1, '\\n'); });\n    }\n    strings[0] = strings[0].replace(/^\\r?\\n/, '');\n    var string = strings[0];\n    values.forEach(function (value, i) {\n        var endentations = string.match(/(?:^|\\n)( *)$/);\n        var endentation = endentations ? endentations[1] : '';\n        var indentedValue = value;\n        if (typeof value === 'string' && value.includes('\\n')) {\n            indentedValue = String(value)\n                .split('\\n')\n                .map(function (str, i) {\n                return i === 0 ? str : \"\" + endentation + str;\n            })\n                .join('\\n');\n        }\n        string += indentedValue + strings[i + 1];\n    });\n    return string;\n}\nexport default dedent;\n//# sourceMappingURL=index.js.map"],"names":[],"sourceRoot":""}