northdata-viz 1.294.10 → 1.296.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/viz.esm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"viz.esm.js","mappings":"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AAc,aAAa,GAAG,E;;;;;;;ACA3gsB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;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,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+CAA+C,iBAAiB;AAChE;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;SCxXA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA;UACA,iCAAiC,WAAW;UAC5C;UACA,E;;;;;UCPA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA,E;;;;;UCPA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA;UACA,CAAC,I;;;;;UCPD,wF;;;;;;ACIO,IAAM,OAAO,GAAG,UAAW;AAC3B,IAAM,cAAc,GAAG,+DAAkB;;;ACHzC,SAAS,KAAK,CAAI,MAAiB;IACxC,OAAO,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC;AAC1B,CAAC;AAEM,SAAS,MAAM,CAAI,OAAkB,EAAE,OAAkB;IAC9D,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;AACvC,CAAC;AAEM,SAAS,KAAK,CAAI,MAAiB,EAAE,MAAiB;IAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;IAChC,OAAO,MAAM;AACf,CAAC;;;ACbqC;AAU/B,IAAM,YAAY,GAAc;IACrC,IAAI,gBAAI,CAAC;CACV;AAED,IAAM,mBAAmB,GAAc,EAAE;AAElC,SAAS,iBAAiB,CAAC,SAAoB;IACpD,KAAK,CAAC,mBAAmB,EAAE,SAAS,CAAC;AACvC,CAAC;AAEM,SAAS,qBAAqB,CAAC,GAAW;IAC/C,OAAO,mBAAmB,CAAC,GAAG,CAAC;AACjC,CAAC;;;ACtBD,6BAAe,oBAAS;AACxB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;ACT2C;;AAEpC;;AAEA;AACA;;AAEP;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnE,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnE,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,UAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AACnB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,UAAM,MAAM,SAAG,EAAE,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,aAAa,YAAY,EAAE,YAAY,EAAE,YAAY;AACrD;;AAEA;AACA,aAAa,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,oDAAoD;AAC3G;;AAEA;AACA;AACA,YAAY,2BAA2B,EAAE,eAAe,IAAI,eAAe,IAAI,eAAe,EAAE,qBAAqB,EAAE,GAAG;AAC1H;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAM,WAAW,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,2BAA2B,EAAE,eAAe,IAAI,qBAAqB,KAAK,qBAAqB,GAAG,qBAAqB,EAAE,GAAG;AAC1I;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3YA;;AAEA,6BAAe,kBAAS;AACxB;AACA;AACA;AACA;;;ACNqC;AACC;;AAEtC,6BAAe,0BAAS;AACxB,6CAA6C,QAAQ;;AAErD,sFAAsF,OAAO;AAC7F,gHAAgH,OAAO;AACvH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;AChBA;AACA;AACA;AACA,cAAc;AACd;AACA;AACe;AACf;AACA;;;ACRA;AACA;AACA;;AAEA,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;;;ACRqC;AACL;AACY;;AAE5C;AACA;AACA,WAAW,KAAK;AAChB;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA,gBAAgB,WAAW;;AAE3B,0FAA0F,OAAO;AACjG,+DAA+D,OAAO;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;ACxBA,6BAAe,iBAAS;AACxB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;;ACV2C;;AAE3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,qBAAS;AACxB;AACA,wDAAwD,YAAY;AACpE;;;ACjB2C;;AAE3C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,wBAAS;AACxB;AACA,6DAA6D,YAAY;AACzE;;;ACjBqC;AACD;;AAEpC,6BAAe,0BAAS;AACxB,2CAA2C,OAAO;;AAElD,sFAAsF,OAAO;AAC7F,6FAA6F,OAAO;AACpG;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;ACfA,6BAAe,gBAAS;AACxB;AACA;;;ACFiC;AACI;;AAErC,6BAAe,iBAAW;AAC1B,aAAa,SAAS,iCAAiC,MAAM;AAC7D;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,sDAAsD;AACvF,wCAAwC,gDAAgD;AACxF,sCAAsC,8CAA8C;AACpF,yCAAyC;AACzC;;;ACrBA,6BAAe,sBAAS;AACxB;AACA;AACA;AACA;;;ACJqC;AACA;AACC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA,MAAM;AACN,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA;;AAEA,2CAA2C,YAAQ;;AAEnD,uGAAuG,OAAO;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,wBAAwB;AACxB;;;AC/HiC;AACI;;AAErC,6BAAe,gBAAW;AAC1B,aAAa,SAAS,gCAAgC,MAAM;AAC5D;;;ACLA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;;ACdqC;;AAErC,6BAAe,eAAS;AACxB;;AAEA,+JAA+J,OAAO;AACtK,yHAAyH,OAAO;AAChI;AACA;AACA;AACA;AACA;;AAEA,SAAS,QAAQ;AACjB;AACA;;AAEA,aAAa,SAAS;AACtB;;;AClBA,6BAAe,iBAAW;;AAE1B,6DAA6D,QAAQ;AACrE,6EAA6E,SAAS;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACZqC;;AAErC,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA;;AAEA,uFAAuF,OAAO;AAC9F,yGAAyG,OAAO;AAChH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;AAEA;AACA;AACA;;;ACvBA,6BAAe,gBAAW;AAC1B;AACA;AACA;AACA;AACA;;;ACLA,6BAAe,iBAAW;AAC1B;AACA;;;ACFA,6BAAe,gBAAW;;AAE1B,4DAA4D,OAAO;AACnE,yDAAyD,OAAO;AAChE;AACA;AACA;AACA;;AAEA;AACA;;;ACVA,6BAAe,gBAAW;AAC1B;AACA,mCAAmC;AACnC;AACA;;;ACJA,6BAAe,2BAAW;AAC1B;AACA;;;ACFA,6BAAe,cAAS;;AAExB,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA;AACA;;AAEA;AACA;;;ACTO;;AAEP,iDAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACRuC;;AAEzC,6BAAe,mBAAS;AACxB;AACA;AACA,SAAS,UAAU,2BAA2B,OAAO,UAAU,uBAAuB,QAAQ;AAC9F;;;ACNwC;;AAExC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB,iBAAiB,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACxDA,6BAAe,oBAAS;AACxB;AACA;AACA,2BAA2B;AAC3B;;;ACJuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,eAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,SAAS,UAAW;AACpB;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,kBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,iBAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AC1EA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACNA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACNuC;AACD;;AAEtC;AACA;AACA;AACA;AACA,mBAAmB,KAAK,8CAA8C,KAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,iBAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;;ACxBoC;;AAEpC,6BAAe,gBAAS;AACxB,mDAAmD,OAAO;AAC1D;AACA;AACA,GAAG;AACH;;;ACPoC;AACE;;AAEtC;AACA;AACA;;AAEA,6BAAe,gBAAS;AACxB,mDAAmD,OAAO;AAC1D,uFAAuF,QAAQ;AAC/F;AACA;AACA,GAAG;AACH;;;ACbA;AACA;AACA;AACA;;AAEA,6BAAe,4BAAW;AAC1B;AACA;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAAe,yBAAS;AACxB;AACA;;;ACZA,6BAAe,yBAAS;AACxB;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,6BAAe,YAAS;AACxB;;AAEA;AACA;AACA,8CAA8C,OAAO;AACrD,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;;;AClEuC;;AAEvC;AACA,eAAe,UAAW;AAC1B;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;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J,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,sBAAsB;QAC7B,eAAe,CAAC,eAAe,CAAC;QAChC,eAAe,GAAG,EAAE;IACtB,CAAC;IAED,OAAO,EAAE,WAAW,eAAE;AACxB,CAAC,CAAC,EAAE;;;ACrGJ;;AAEO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oDAAoD;AACpD,UAAU;AACV,oDAAoD;AACpD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACpEO;AACA;AACA;AACA;AACA;AACA;AACA;;;ACNoC;AACgB;;AAE3D;AACA,SAAS,YAAY;AACrB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,kFAAkF,cAAc,IAAI,YAAY;AAChH,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEP;AACA,SAAS,YAAY;AACrB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,2BAA2B,YAAY;AACvC,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvDoC;AACe;;AAEnD,gBAAgB,YAAY;AACnC;AACA;AACA,yFAAyF,cAAc,IAAI,WAAW;AACtH;AACA;;AAEO;;AAEA,eAAe,YAAY;AAClC;AACA,CAAC;AACD;AACA,CAAC;AACD,yBAAyB,WAAW;AACpC,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,gBAAgB,YAAY;AACnC;AACA,CAAC;AACD;AACA,CAAC;AACD,yBAAyB,WAAW;AACpC,CAAC;AACD,2BAA2B,WAAW;AACtC,CAAC;;AAEM;;;AClCoC;;AAEpC,iBAAiB,YAAY;AACpC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,YAAY;AACvE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEO;;AAEA,gBAAgB,YAAY;AACnC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,YAAY;AACvE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEO;;;ACrCU;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS,cAAc,SAAS;AACxE,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,UAAU;AACV;AACA,wCAAwC,UAAU,cAAc,UAAU;AAC1E,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACA,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACA,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,OAAO,OAAO,QAAQ;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,UAAU,OAAO,QAAQ;AACtC;;AAEA;AACA;AACA,mCAAmC,YAAY,MAAM,YAAY;AACjE;;AAEA;AACA;AACA,aAAa,YAAY,OAAO,QAAQ,WAAW,QAAQ;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,UAAU,OAAO,QAAQ;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,YAAY,MAAM,YAAY;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,MAAM,OAAO,OAAO;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS,OAAO,OAAO;AACpC;;AAEA;AACA;AACA,mCAAmC,WAAW,MAAM,WAAW;AAC/D;;AAEA;AACA;AACA,aAAa,WAAW,OAAO,OAAO,WAAW,OAAO;AACxD;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,SAAS,OAAO,OAAO;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW,MAAM,WAAW;AAC5D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;ACxrB2C;AACE;;AAEtC,eAAe,YAAY;AAClC;AACA,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEM;;;ACboC;AACkB;;AAEtD,mBAAmB,YAAY;AACtC,mEAAmE,cAAc;AACjF,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,kBAAkB,YAAY;AACrC;AACA,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEM;;;ACzBoC;AACgC;;AAEpE,iBAAiB,YAAY;AACpC,mEAAmE,cAAc,uBAAuB,cAAc;AACtH,CAAC;AACD,8BAA8B,YAAY;AAC1C,CAAC;AACD,yBAAyB,YAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,gBAAgB,YAAY;AACnC;AACA,CAAC;AACD,8BAA8B,YAAY;AAC1C,CAAC;AACD,yBAAyB,YAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAEM;;;ACzBoC;;AAEpC,kBAAkB,YAAY;AACrC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,iBAAiB,YAAY;AACpC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEM;;;AC1BP,6BAAe,uBAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP,gGAAgG;AAChG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBsD;;AAEtD,6BAAe,kBAAS;AACxB,aAAa,kBAAkB;AAC/B;;;ACJA,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACjBA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;;;ACNA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,uDAAuD;;AAEhD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA,6BAAe,oBAAS;AACxB,kDAAkD,OAAO;AACzD;AACA,6BAA6B;AAC7B,sCAAsC,QAAQ;AAC9C,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;;;ACVsD;;AAE/C;;AAEP,6BAAe,0BAAS;AACxB,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,kBAAkB,gCAAgC;AAC9F;;;ACfsD;;AAEtD,6BAAe,uBAAS;AACxB,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;;ACV+C;AACM;AACN;;AAE/C,kDAAe;AACf;AACA;AACA;AACA,OAAO,aAAa;AACpB;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B,OAAO,aAAa;AACpB,OAAO,gBAAgB;AACvB;AACA;AACA,CAAC,EAAC;;;AClBF,6BAAe,kBAAS;AACxB;AACA;;;ACFqC;AACM;AACM;AACE;AACV;AACE;AACU;AAChB;;AAErC;AACA;;AAEA,6BAAe,gBAAS;AACxB,gFAAgF,QAAQ,GAAG,WAAW;AACtG;AACA;AACA;AACA,iDAAiD,QAAQ,GAAG,cAAc;AAC1E;AACA;AACA;;AAEA;AACA,gBAAgB,eAAe;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,WAAW;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA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hC,+CAA+C;AAC/C;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBO;AACP;AACA;AACA,mCAAmC,UAAU,iBAAiB,SAAS,YAAY;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,mCAAmC,UAAU,iBAAiB,SAAS,YAAY;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AC5DmC;AACC;;AAE7B;;AAEQ;AACf,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AC7C2C;AACP;AACD;;AAEpB;AACf,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAQ,sBAAsB,0BAA0B;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;;ACpGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC,yBAAyB,OAAO;AAChC,IAAI;AACJ,iCAAiC,OAAO;AACxC,yBAAyB,OAAO;AAChC;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;ACtDe,SAAS,mBAAS;AACjC;AACA;;;ACFe;AACf;AACA;AACA;AACA;AACA;AACA;;;ACNuC;AACE;;AAE1B;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAS;AACxB,yBAAyB,mBAAS;AAClC;AACA,IAAI;AACJ,qBAAqB,mBAAS,UAAU,UAAU;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;;ACvDe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBuC;AACF;AACJ;;AAEjC,wBAAwB,QAAQ,CAAC,mBAAS;AACnC;AACA;AACA,qBAAqB,QAAQ,CAAC,MAAM;AAC3C,6CAAe,WAAW,EAAC;;;ACRpB;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClBiC;;AAEjC,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA;;;ACZA,kEAAe,YAAY,EAAC;;;ACAS;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA,0CAA0C,2BAAQ;AAClD;AACA;;AAEe;AACf;AACA,4BAA4B,2BAAQ;AACpC;;;AC5ByC;AACV;AACY;AACD;;AAE1C,0CAAe;AACf,cAAc,KAAK;;AAEnB;AACA,2BAA2B,SAAQ,mBAAmB,SAAQ;AAC9D;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,IAAI,EAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,SAAK;AAC9B,+BAA+B,WAAW;;;ACtDlB;AAC6B;;AAE5D,6BAAe,mBAAS;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,cAAc,QAAQ,YAAY,KAAK;AACvC,SAAS,QAAQ;;AAEjB;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;;;ACrBA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;;;ACLA,6BAAe,oBAAS;AACxB;AACA;AACA;AACA;;;ACJ+B;;AAE/B,6BAAe,gBAAS;AACxB,YAAY;AACZ,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,KAAK;AAClB,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACtBiC;;AAEjC;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,gBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,4BAA4B;AAC5B;AACA;AACA,yCAAyC;AACzC,4BAA4B;AAC5B;AACA,MAAM,OAAO;AACb;AACA,cAAc,SAAS,UAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AAC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YACJ,KAAuB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE,CAAC;gBAA9B,IAAM,QAAQ;gBACjB,QAAQ,EAAE;YACZ,CAAC;QACH,CAAC;KACF;AACH,CAAC;;;AC7Q8D;AAGxD,IAAM,OAAO,GAAa,UAC/B,MAAc,EACd,IAAU;IAEV,IAAI,IAAI,EAAE,CAAC;QACT,IAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,YAAY;AACrB,CAAC;;;AChBc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACXA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;ACNA,6BAAe,oBAAS;AACxB;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;;;ACXA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACdA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACPA,6BAAe,aAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;ACRA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;;;ACNA,6BAAe,cAAS;AACxB;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;AACA;;;AC7BA,6BAAe,qBAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;;ACNA,6BAAe,uBAAW;AAC1B;AACA;;;ACFA,6BAAe,kBAAW;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;ACRA,6BAAe,iBAAW;AAC1B;AACA;AACA,yBAAyB;AACzB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA;;;ACRA,6BAAe,+BAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA,IAAI;AACJ;;;ACboC;AACF;AACY;AACF;AACV;AACF;AACE;AACA;AACU;AACI;AACV;AACF;AACM;;AAE3B;AACf;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,eAAU;AACnB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,cAAc,UAAe;AAC7B,QAAQ,cAAS;AACjB,OAAO,GAAQ;AACf,QAAQ,cAAS;AACjB,QAAQ,IAAS;AACjB,aAAa,SAAc;AAC3B,eAAe,WAAgB;AAC/B,UAAU,MAAW;AACrB,SAAS,KAAU;AACnB;AACA,qBAAqB,kBAAa;AAClC;;;AC1FO;;AAEP,6BAAe,4BAAS;AACxB;AACA;AACA,qBAAqB;AACrB;;;ACNA,6BAAe,+BAAS;AACxB;AACA;AACA;AACA;;;ACJ4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO,SAAS,UAAK;AACrB;AACA;;AAEO,SAAS,eAAU;AAC1B;AACA;;;AC1EA;AACA;AACA,IAAI,YAAO;AACX,uBAAuB,YAAO;;AAE9B,SAAS,WAAM;AACf;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;;AAEA;AACA;AACA,oDAAoD,OAAO;AAC3D,qBAAqB,WAAM;AAC3B;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,gCAAgC;AAChC;AACA,oCAAoC,WAAM;AAC1C;AACA;AACA,oBAAoB,yBAAyB,GAAG,yBAAyB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc,GAAG,cAAc;AACnD;AACA;AACA,oBAAoB,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,cAAc;AACjE;AACA;AACA,oBAAoB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,cAAc;AAC/E;AACA;AACA;;AAEA;AACA,mDAAmD,EAAE;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,cAAc,GAAG,cAAc;AACrD;;AAEA;AACA,uBAAuB,YAAO;;AAE9B;AACA;AACA;AACA,iDAAiD,YAAO;AACxD,sBAAsB,cAAc,GAAG,cAAc;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,YAAO;AACrC,wBAAwB,eAAe,GAAG,eAAe;AACzD;;AAEA,sBAAsB,EAAE,GAAG,EAAE,OAAO,yBAAyB,GAAG,0BAA0B,GAAG,0BAA0B;AACvH;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,EAAE;;AAErD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,GAAG,GAAG,GAAG;AAC/B;;AAEA;AACA,uCAAuC,YAAO,8BAA8B,YAAO;AACnF,sBAAsB,GAAG,GAAG,GAAG;AAC/B;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,OAAO,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,cAAc,GAAG,cAAc;AACjH;;AAEA;AACA,kBAAkB,YAAO;AACzB,sBAAsB,EAAE,GAAG,EAAE,KAAK,YAAY,GAAG,GAAG,GAAG,gCAAgC,GAAG,gCAAgC;AAC1H;AACA;AACA;AACA,oBAAoB,yBAAyB,GAAG,yBAAyB,GAAG,OAAO,GAAG,GAAG,GAAG,GAAG;AAC/F;AACA;AACA;AACA;AACA;;AAEO,SAAS,SAAI;AACpB;AACA;;AAEA;AACA,SAAI;;AAEG;AACP;AACA;;;AC3J6B;;AAEtB;AACP;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,6DAA6D,EAAE;AAC/D;AACA;AACA;AACA;;AAEA,mBAAmB,IAAI;AACvB;;;AClBO,SAAS,OAAC;AACjB;AACA;;AAEO,SAAS,OAAC;AACjB;AACA;;;ACNiC;AACI;AACoB;AACtB;AACiB;;AAEpD;AACA;AACA;;AAEA;AACA;AACA;;AAEO,SAAS,SAAI;AACpB;AACA;AACA,UAAU,OAAM;AAChB,UAAU,OAAM;AAChB;AACA;AACA,aAAa,QAAQ;;AAErB;AACA;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP,SAAS,SAAI,CAAC,KAAK;AACnB;;AAEO;AACP,SAAS,SAAI;AACb;;AAEO;AACP,YAAY,SAAI;AAChB;AACA;AACA;AACA;;;ACxEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,+BAA+B,sEAAsE;AACrG,+BAA+B;AAC/B,2CAA2C;AAC3C;AACA;AACA;;AAEA,6BAAe,sBAAS;AACxB;AACA;;;AC9B+B;AACM;AACO;AACT;AACiB;;AAEpD,6BAAe,cAAS;AACxB,gBAAgB,qBAAQ;AACxB;AACA,cAAc,YAAW;AACzB;AACA,aAAa,QAAQ;;AAErB,wDAAwD,OAAM,GAAG,qBAAQ;AACzE,wDAAwD,OAAM,GAAG,qBAAQ;;AAEzE;AACA;AACA,oBAAoB,kBAAK;AACzB;AACA;AACA;;AAEA;;AAEA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,uEAAuE,qBAAQ;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;ACzD0D;AACd;AAEV;AACK;AAyBhC,IAAM,aAAa,GAAG,EAAE;AACxB,IAAM,eAAe,GAAG,CAAC;AAEzB,SAAS,eAAe,CAAC,SAAiB;IAC/C,IAAM,UAAU,GAAG,GAAG;IACtB,IAAM,CAAC,GAAG;QACR,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACd,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE;QACvB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE;QACxB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KACf;IACD,IAAM,YAAY,GAAG,IAAI,EAA4B;SAClD,CAAC,CAAC,UAAU,CAAC;QACZ,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC;SACD,CAAC,CAAC,UAAU,CAAC;QACZ,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC;SACD,KAAK,CAAC,YAAW,CAAC;IACrB,OAAO,YAAY,CAAC,CAAC,CAAW;AAClC,CAAC;AAED,gGAAgG;AAChG,4EAA4E;AACrE,SAAS,kBAAkB,CAKhC,QAAuD,EACvD,YAAoB,EACpB,UAAkB,EAClB,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,YAAwB;IAAxB,+CAAwB;IAExB,QAAQ,CAAC,IAAI,CAAC;QACZ,IAAM,MAAM,GAAG,UAAM,CAAC,IAAI,CAAC;QAC3B,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAiB,YAAY,CAAC,CAAC,IAAI,EAAE;QAC/D,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAiB,UAAU,CAAC,CAAC,IAAI,EAAE;QAC3D,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAC3B,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACZ,IAAM,IAAI,GAAG,IAAI,CAAC,CAAC;gBACnB,IAAM,IAAI,GAAG,CAAC,EAAE,GAAG,OAAO;gBAC1B,IAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;gBACjD,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;oBAChB,IAAI,CAAC,CAAC,GAAG,IAAI;oBACb,UAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;gBACrC,CAAC;qBAAM,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC,CAAC,GAAG,IAAI;oBACb,UAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,UAAM,CAAC,EAAE,CAAC;iBACP,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC;iBACvC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;iBACzC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;iBAC3B,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;iBAC3B,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;iBACxB,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,QAAmB;IACtC,gDAAgD;IAChD,gFAAgF;IAChF,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE;IAClB,IAAM,cAAc,GAAc,EAAE;IACpC,KAAoB,UAAQ,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ,EAAE,CAAC;QAA1B,IAAI,OAAO;QACd,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,cAAc,CAAC,OAAO,EAAE;IACxB,IAAM,IAAI,GAAG,cAAc,CAAC,MAAM;IAClC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAQ,EAAE,EAAE,CAAC;QAC5B,IAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC;QAC/B,IAAM,QAAM,GAAG,KAAK,CAAC,UAAU;QAC/B,IAAM,QAAQ,GAAG,QAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAM,CAAC,UAAU;QACxD,qDAAqD;QACrD,IAAI,YAAY,GAAG,IAAI;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YAC9B,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,YAAY,GAAG,KAAK;gBACpB,MAAK;YACP,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,KAAoB,UAAc,EAAd,iCAAc,EAAd,4BAAc,EAAd,IAAc,EAAE,CAAC;gBAAhC,IAAI,OAAO;gBACd,IAAM,QAAM,GAAG,OAAO,CAAC,UAAU;gBACjC,QAAM,aAAN,QAAM,uBAAN,QAAM,CAAE,WAAW,CAAC,OAAO,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAEM,SAAS,SAAS,CAKvB,MAAc,EACd,GAAkD,EAClD,KAAa,EACb,MAA0B,EAC1B,WAAoB;IAEpB,IAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,KAAK;IAE/D,SAAS,UAAU,CAAC,EAAU;QAC5B,OAAO,GAAG,CAAC,MAAM,CAAU,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3D,CAAC;IAED,SAAS,cAAc;QACrB,OAAO,GAAG,CAAC,MAAM,CAAU,aAAa,CAAC;IAC3C,CAAC;IAED,IAAI,mBAA2B,EAAC,qBAAqB;IAErD,SAAS,SAAS,CAAC,IAAU;QAC3B,IAAM,MAAM,GAAG,IAAI,CAAC,EAAE;QACtB,IAAM,aAAa,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAExD,iBAAiB;QACjB,IAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACvE,MAAM,CAAC,MAAM,CAAU,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/C,kBAAkB,CAChB,MAAM,EACN,OAAO,EACP,UAAU,EACV,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnB,CAAC,EACD,QAAQ,CACT;QAED,kBAAkB;QAClB,IAAM,OAAO,GAAG,GAAG;aAChB,SAAS,CAGR,mBAAmB,GAAG,MAAM,GAAG,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAAC;aACvE,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACxC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;QAEhE,mCAAmC;QACnC,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC;QACxC,IAAM,SAAS,GAAc,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI;YACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,SAAS,mBAAmB,CAAC,EAAU;gBACrC,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;oBACjB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAa,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,CAAC,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAa,CAAC;QACxC,WAAW,CAAC,SAAS,CAAC;IACxB,CAAC,CAAC,gBAAgB;IAElB,SAAS,qBAAqB;QAC5B,IAAM,SAAS,GAAc,EAAE;QAC/B,GAAG,CAAC,MAAM,CAAU,OAAO,CAAC,CAAC,IAAI,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,CAAC,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,EAAa,CAAC;QAClD,WAAW,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,SAAS,WAAW,CAAC,IAAU;QAC7B,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;QACjE,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC;IACtE,CAAC;IAED,IAAI,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAc,SAAS,CAAC;IAEzD,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7B,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3D,CAAC;IAED,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAC/C,IAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAE/D,IAAM,SAAS,GAAG,UAAC,IAAU,IAAK,WAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAA5B,CAA4B;IAC9D,gEAAgE;IAChE,kDAAkD;IAClD,IAAM,UAAU,GAAG,OAAO;SACvB,KAAK,EAAE;SACP,MAAM,CAAc,OAAO,CAAC;SAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,IAAK,QAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAA3C,CAA2C,CAAC;SACxE,IAAI,CAAC,SAAS,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,EAAE,EAAP,CAAO,CAAC;SAClC,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,IAAI,EAAT,CAAS,CAAC;SACtC,IAAI,CAAC,UAAU,EAAE,UAAC,IAAI,YAAK,iBAAI,CAAC,GAAG,mCAAI,IAAI,IAAC;SAC5C,IAAI,CAAC,cAAc,EAAE,UAAC,IAAI,YAAK,iBAAI,CAAC,OAAO,mCAAI,IAAI,IAAC;SACpD,IAAI,CAAC,QAAQ,EAAE,UAAC,IAAI,YAAK,iBAAI,CAAC,QAAQ,mCAAI,IAAI,IAAC;SAC/C,IAAI,CAAC,YAAY,EAAE,UAAU,IAAI;QAChC,OAAO,IAAI,CAAC,GAAG,IAAI,EAAE,EAAC,uDAAuD;IAC/E,CAAC,CAAC;SACD,IAAI,CAAC,gBAAgB,EAAE,UAAC,IAAI;QAC3B,gBAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;IAAlE,CAAkE,CACnE;SACA,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY,EAAE,IAAI;QACvC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,KAAK,CAAC,cAAc,EAAE;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEJ,OAAW,CACT,WAAW,EACX,gBAAgB,CAAC,IAAI,EAAa,EAClC,UAAU,EACV,SAAS,CACV;IACD,OAAW,CACT,UAAU,EACV,gBAAgB,CAAC,IAAI,EAAa,EAClC,UAAU,EACV,WAAW,CACZ;IAED,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;IAEpD,UAAU;SACP,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,UAAC,IAAI,IAAK,WAAI,CAAC,IAAI,EAAT,CAAS,CAAC;IAE5B,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IAElD,UAAU;SACP,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,UAAC,IAAI,IAAK,WAAI,CAAC,IAAI,EAAT,CAAS,CAAC;IAE5B,UAAU;SACP,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC,QAAQ,CAAC;SAChB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACZ,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;SACvB,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC1C,UAAU;SACP,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACZ,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,QAAQ,CAAC;SACd,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;SACvB,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,UAAC,IAAI,YAAK,iBAAI,CAAC,OAAO,mCAAI,EAAE,IAAC;IAErC,qBAAqB,EAAE;IAEvB,OAAO,UAAU;AACnB,CAAC;AAEM,SAAS,WAAW,CAKzB,MAAc,EACd,GAAkD;AAClD,eAAe;AACf,6BAA6B;AAC7B,WAAoB;IAEpB,IAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,KAAK;IAE/D,SAAS,UAAU,CAAC,EAAU;QAC5B,OAAO,GAAG,CAAC,MAAM,CAAU,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3D,CAAC;IAED,SAAS,cAAc;QACrB,OAAO,GAAG,CAAC,MAAM,CAAU,aAAa,CAAC;IAC3C,CAAC;IAED,IAAI,mBAA2B,EAAC,qBAAqB;IAErD,SAAS,SAAS,CAAC,IAAa;QAC9B,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC3C,IAAM,aAAa,GACjB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAE5D,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,aAAa,CAAC;QAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;QAC9D,CAAC;QAED,kBAAkB,CAChB,UAAM,CAAC,IAAI,CAAC,EACZ,OAAO,EACP,UAAU,EACV,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnB,CAAC,EACD,QAAQ,CACT;QAED,kBAAkB;QAClB,IAAM,OAAO,GAAG,GAAG;aAChB,SAAS,CAGR,wBAAwB,GAAG,MAAM,GAAG,2BAA2B,GAAG,MAAM,GAAG,IAAI,CAAC;aACjF,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;QACxC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;QAEhE,mCAAmC;QACnC,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC;QACxC,IAAM,SAAS,GAAc,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI;YACzB,IAAI,MAAM,GAAG,IAAI;YACjB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACtB,SAAS,mBAAmB,CAAC,EAAU;gBACrC,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;oBACjB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAa,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAChE,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,WAAW,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,SAAS,qBAAqB;QAC5B,IAAM,SAAS,GAAc,EAAE;QAC/B,GAAG,CAAC,MAAM,CAAU,OAAO,CAAC,CAAC,IAAI,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,CAAC,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,EAAa,CAAC;QAClD,WAAW,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,SAAS,WAAW,CAAC,IAAa;QAChC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC;QACjE,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC3C,GAAG;aACA,MAAM,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC;aACzC,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aAC1C,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEf,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC;IACtE,CAAC;IAED,IAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAc,SAAS,CAAC;IAC3D,IAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QAC1D,IAAM,EAAE,GAAG,IAAe;QAC1B,IAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,MAAM;QACnD,IAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAM,MAAI,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE;YAC/C,IAAM,OAAK,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE;YACjD,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YACnE,UAAM,CAAC,EAAE,CAAC;iBACP,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;iBAC/B,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,MAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;iBACvE,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY;gBACjC,IAAI,MAAM,CAAC,kBAAkB,CAAC,OAAK,EAAE,MAAI,CAAC,EAAE,CAAC;oBAC3C,KAAK,CAAC,cAAc,EAAE;gBACxB,CAAC;YACH,CAAC,CAAC;QACN,CAAC;IACH,CAAC,CAAC;IAEF,gBAAgB;SACb,SAAS,CAAC,OAAO,CAAC;SAClB,EAAE,CAAC,WAAW,EAAE;QACf,SAAS,CAAC,IAAe,CAAC;IAC5B,CAAC,CAAC;SACD,EAAE,CAAC,UAAU,EAAE;QACd,WAAW,CAAC,IAAe,CAAC;IAC9B,CAAC,CAAC;IAEJ,qBAAqB,EAAE;IAEvB,YAAY;IACZ,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC;AAC/C,CAAC;;;;;;;;;;;;;;ACraoC;AACM;AACL;AAC+B;AAC5B;AAEC;AAQzB;AAiCV,IAAM,UAAU,GAAa,UAClC,MAAc,EACd,IAAmB;IAEnB,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS;IAElC,4BAA4B;IAC5B,UAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC;IAE9D,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;IAC7B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK;IACxB,IAAM,GAAG,GAAG,UAAM,CAAC,SAAS,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC;SACb,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;SACzB,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC;IAEhC,SAAS,IAAI;QACX,IAAM,KAAK,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,KAAK;QAErD,IAAM,MAAM,GAAG;YACb,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;YAChB,KAAK,EAAE,KAAK,GAAG,CAAC;YAChB,GAAG,EAAE,CAAC,aAAa;YACnB,MAAM,EAAE,aAAa,GAAG,EAAE,CAAC,QAAQ;SACpC;QACD,IAAM,QAAQ,GAAG;YACf,IAAI,EAAE,CAAC,eAAe;YACtB,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,eAAe;YAClC,GAAG,EAAE,CAAC,eAAe;YACrB,MAAM,EAAE,eAAe;SACxB;QACD,IAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACzC,IAAM,UAAU,GAAG,MAAM;QAEzB,IAAM,WAAW,GAAqB;YACpC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG;YAC1B,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI;SAC3B;QACD,IAAM,aAAa,GAAqB;YACtC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG;YAC9B,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI;SAC/B;QAED,IAAM,YAAY,GAAqB,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW;QAC1E,IAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAEhC,IAAM,oBAAoB,GAAG,CAAC;QAC9B,IAAM,mBAAmB,GAAG,GAAG;QAC/B,IAAM,iBAAiB,GAAG,CAAC;QAE3B,IAAM,aAAa,GAAG,OAAO,EAAa;aACvC,QAAQ,CAAC,YAAY,CAAC;aACtB,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACxB,IAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;YACrC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,oBAAoB;gBAC7B,CAAC;qBAAM,CAAC;oBACN,IAAM,mBAAmB,GACvB,CAAC,CAAC,CAAC,CAAC,MAAO,CAAC,QAAS,CAAC,MAAM,GAAG,CAAC,CAAC,MAAO,CAAC,QAAS,CAAC,MAAM,CAAC;wBACxD,oBAAoB,CAAC;wBACrB,CAAC;wBACH,mBAAmB;oBACrB,IAAM,eAAe,GAAG,iBAAiB,GAAG,mBAAmB;oBAC/D,IAAM,gBAAgB,GACpB,mBAAmB,GAAG,iBAAiB;wBACrC,CAAC,CAAC,mBAAmB,GAAG,eAAe;wBACvC,CAAC,CAAC,mBAAmB;oBACzB,OAAO,gBAAgB;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC,SAAS,CAAY,IAAI,CAAC,CAAC;QAEhC,IAAM,MAAM,GAAG,UAAC,aAA4B,IAAK,QAAC,wCAC7C,aAAa,CAAC,IAAI,KACrB,CAAC,EAAE,aAAa,CAAC,CAAC,EAClB,CAAC,EAAE,aAAa,CAAC,CAAC,EAClB,KAAK,EAAE,aAAa,CAAC,KAAK,IAC1B,EAL+C,CAK/C;QACF,IAAM,KAAK,GAAgB,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;QAClE,IAAM,KAAK,GAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,UAAC,aAAa,IAAK,QAAC;YACvE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;SACrC,CAAC,EAHsE,CAGtE,CAAC;QAEH,IAAI,QAAQ;QACZ,IAAI,QAAQ,GAAG,CAAC;QAChB,KAAiB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE,CAAC;YAApB,IAAI,IAAI;YACX,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI;gBACf,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;oBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI;gBACvB,CAAC;YACH,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;QAC3C,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QACxB,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QAC9B,IAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEpE,IAAM,IAAI,GAAG,UAAC,IAAe,IAAK,WAAI,CAAC,MAAM,CAAC,IAAI,EAAhB,CAAgB;QAElD,IAAM,aAAa,GAAG,UAAU;aAC7B,KAAK,EAAE;aACP,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,IAAI,CAAC,gBAAgB,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,MAAM,CAAC,EAAE,EAAd,CAAc,CAAC;aAChD,IAAI,CAAC,gBAAgB,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,MAAM,CAAC,EAAE,EAAd,CAAc,CAAC;aAChD,IAAI,CAAC,UAAU,EAAE,UAAC,IAAI,gBAAK,uBAAI,CAAC,IAAI,CAAC,0CAAE,GAAG,mCAAI,IAAI,IAAC;aACnD,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,gBAAK,uBAAI,CAAC,IAAI,CAAC,0CAAE,IAAI,mCAAI,IAAI,IAAC;aACrD,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,gBAAK,uBAAI,CAAC,IAAI,CAAC,0CAAE,IAAI,mCAAI,IAAI,IAAC;aACrD,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,gBAAK,uBAAI,CAAC,IAAI,CAAC,0CAAE,IAAI,mCAAI,IAAI,IAAC;QAExD,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QAElD,aAAa;aACV,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QAExC,aAAa;aACV,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QAExC,IAAM,UAAU,GAAG,SAAS,CAC1B,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAClC,KAAK,CACN;QAWD,IAAM,SAAS,GAAG,UAAC,CAAS,EAAE,CAAS,IAAK,mBAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAhC,CAAgC;QAE5E,IAAM,yBAAyB,GAAG,UAAU,KAAa;YACvD,IAAM,MAAM,GAAG,UAAC,IAAU;gBACxB,QAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAA5C,CAA4C;YAE9C,IAAM,GAAG,GAAG,UAAC,IAAU,IAAK,QAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAArC,CAAqC;YAEjE,IAAM,IAAI,GAAG,UAAC,IAAU,IAAK,WAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAvB,CAAuB;YACpD,IAAM,KAAK,GAAG,UAAC,IAAU,IAAK,WAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAxB,CAAwB;YACtD,IAAM,GAAG,GAAG,UAAC,IAAU,IAAK,WAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAtB,CAAsB;YAClD,IAAM,MAAM,GAAG,UAAC,IAAU,IAAK,WAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAzB,CAAyB;YAExD,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAW;YACvC,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAW;YACxC,IAAM,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;YAE5B,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAW;YACtC,IAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,MAAM,CAAW;YACzC,IAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,UAAC,IAAe,IAAK,WAAI,CAAC,CAAC,EAAN,CAAM,CAGxD;YACD,IAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAEvC,IAAM,MAAM,GAAG,aAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAM,MAAM,GAAG,aAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAEhE,IAAM,SAAS,GAAG,UAAC,IAAU;gBAC3B,aAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAW;YAA7D,CAA6D;YAC/D,IAAM,SAAS,GAAG,UAAC,IAAU,IAAK,aAAM,CAAC,IAAI,CAAC,CAAC,CAAW,EAAxB,CAAwB;YAE1D,IAAM,aAAa,GAAG,UAAC,IAAU;gBAC/B,gBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAA3C,CAA2C;YAE7C,IAAM,QAAQ,GAAG,cAAc,EAAc;iBAC1C,CAAC,CAAC,UAAC,IAAI,IAAK,gBAAS,CAAC,IAAI,CAAC,EAAf,CAAe,CAAC;iBAC5B,CAAC,CAAC,UAAC,IAAI,IAAK,gBAAS,CAAC,IAAI,CAAC,EAAf,CAAe,CAAC;YAE/B,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACxD,IAAM,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ;YAClD,IAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,QAAQ;YAE/C,IAAM,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU;YAEnD,IAAM,WAAW,GAAG,CAAC;YACrB,IAAM,WAAW,GAAG,UAAU;YAE9B,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,QAAQ;gBACR,aAAa;gBACb,aAAa,EAAE,UAAC,IAAI;oBAClB,oBAAa,CAAC,IAAI,CAAC,MAAM,CAAC;wBAC1B,GAAG;wBACH,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;wBAC/D,cAAc;gBAHd,CAGc;gBAChB,aAAa,EAAE,UAAC,IAAI;oBAClB,oBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;gBAA9D,CAA8D;gBAChE,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;aACrD;QACH,CAAC;QAED,IAAM,UAAU,GAAe,yBAAyB,CAAC,KAAK,CAAC;QAE/D,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC;QAEvC,GAAG;aACA,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;aACtB,IAAI,CAAC,SAAS,EAAE,cAAO,KAAK,cAAI,UAAU,CAAC,MAAM,CAAE,CAAC;QAEvD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC;QAEpD,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;QACtD,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC;QAC5D,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;QACzE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;IAC3E,CAAC;IAED,OAAO,EAAE,IAAI,QAAE;AACjB,CAAC;;;ACjRD,6BAAe,uBAAS;AACxB;AACA;AACA;AACA;AACA;;;ACLA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACXA,6BAAe,uBAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACXoC;AACE;;AAE/B;;AAEA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;;AAEA;AACA,qBAAqB,8DAA8D;AACnF,kBAAkB,IAAW;AAC7B,SAAS,aAAY;AACrB;AACA;;AAEA;AACA;;AAEA,+CAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACjED;AACP;AACA;;AAEO;AACP;AACA;AACA;;;ACPO;AACP;AACA;;AAEA,6BAAe,mCAAS;AACxB;AACA;AACA;AACA;;;ACRmC;AACE;AACI;AACa;;AAEtD,6BAAe,mBAAW;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC,mBAAmB,YAAY;AAC/B,qBAAqB,YAAY;AACjC,sBAAsB,YAAY;AAClC,oBAAoB,YAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,yBAAQ;AAClF;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA,6EAA6E,yBAAQ;AACrF;;AAEA;AACA,2EAA2E,yBAAQ;AACnF;;AAEA;AACA;;;AC7F2D;AAEgB;AACvC;AACC;AAGD;AAiC7B,IAAM,SAAS,GAAa,UACjC,MAAc,EACd,OAAa;;IAEb,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;IAC5B,CAAC;IACD,IAAM,SAAS,GAAmB,EAAE;4BACzB,MAAM;QACf,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI;QACxB,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAC9C,IAAM,IAAI,GAAG,UAAM,CAAC,QAAQ,CAAC;aAC1B,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC;aAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QACxB,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAEhE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;QAEvC,IAAI,OAAO,GAAiB,UAAM,CAAC,YAAM,CAAC,SAAS,CAAC,SAAS,CAAC,mCAAI,IAAI,CAAC;QACvE,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,GAAiB,UAAM,CAAC,YAAM,CAAC,SAAS,CAAC,SAAS,CAAC,mCAAI,IAAI,CAAC;QACvE,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,GAAiB,UAAM,CAAC,YAAM,CAAC,SAAS,CAAC,SAAS,CAAC,mCAAI,IAAI,CAAC;QACvE,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1D,IAAI,YAAY,GAAiB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAC3D,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBACzB,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YAC5D,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpB,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YAChE,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpB,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YAChE,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpB,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;YAChE,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QAExE,IAAM,eAAe,GAAG,MAAM;aAC3B,IAAI,EAAE;aACN,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;QACnD,IAAI,mBAAmB,GAAe,IAAI;QAC1C,IAAM,SAAS,GAAG,UAAU,OAAoB,EAAE,IAAS;YACzD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAM;YACR,CAAC;YACD,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC;gBACxD,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;gBACvC,aAAS,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC;gBACvD,UAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;gBAC5C,UAAU,CAAC,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAM,WAAW,GAAG;;YAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;gBACxC,aAAS,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC;gBACvD,UAAU,CAAC,UAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IAAM,YAAY,GAAG,UAAU,OAAoB,EAAE,IAAS;YAC5D,IAAI,mBAAmB,IAAI,IAAI,EAAE,CAAC;gBAChC,mBAAmB,GAAG,IAAI;gBAC1B,WAAW,EAAE;YACf,CAAC;iBAAM,CAAC;gBACN,mBAAmB,GAAG,IAAI;gBAC1B,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,IAAM,WAAW,GAAG,UAAU,IAAY;YACxC,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;QAClD,CAAC;QACD,IAAM,UAAU,GAAG,UAAU,GAAQ;;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAG,CAAC,cAAc,mCAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB,CAAC;QAED,IAAM,YAAY,GAAG,UAAU,IAAS;YACtC,SAAS,aAAa,CACpB,IAAS,EACT,KAAe,EACf,MAAc,EACd,MAAc;gBAEd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;gBAC7B,IAAI,GAAG,GAAG,MAAM;gBAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC1C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;wBAClB,IAAM,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS;wBAC1C,KAAkB,UAAa,EAAb,SAAI,CAAC,QAAQ,EAAb,cAAa,EAAb,IAAa,EAAE,CAAC;4BAA7B,IAAI,KAAK;4BACZ,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG;4BACnB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;4BAC5C,GAAG,IAAI,IAAI;wBACb,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;YACvC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC;QAChE,CAAC;QACD,WAAW,EAAE;QACb,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,IAAM,IAAI,GAAG;YACX,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAG,CAAC,qBAAqB,EAAE;YACpD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxC,OAAM;YACR,CAAC;YAED,IAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;iBACtC,GAAG,CAAC,UAAC,GAAG,IAAK,QAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAtC,CAAsC,CAAC;iBACpD,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,0BAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAA3B,CAA2B,CAAC;YAE9C,IAAM,aAAa,GAAG,OAAO,EAAO,CAAC,IAAI,CAAC,QAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC/D,YAAY,CACb;YAED,IAAM,EAAE,GAAG,UAAC,IAAmC,IAAK,WAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAjB,CAAiB;YACrE,IAAM,EAAE,GAAG,UAAC,IAAmC,IAAK,WAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAjB,CAAiB;YAErE,IAAM,KAAK,GAAG,SAAS;iBACpB,SAAS,CAA0B,MAAM,CAAC;iBAC1C,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACpC,IAAM,QAAQ,GAAG,KAAK;iBACnB,KAAK,EAAE;iBACP,MAAM,CAAC,KAAK,CAAC;iBACb,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;iBACpB,EAAE,CAAC,YAAY,EAAE,UAAU,MAAM,EAAE,IAAI;gBACtC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;YAC5B,CAAC,CAAC;iBACD,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;iBAC7B,EAAE,CAAC,OAAO,EAAE,UAAU,MAAM,EAAE,IAAI;gBACjC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC;iBACD,IAAI,CAAC,UAAU,EAAE,UAAC,IAAI;gBACrB,WAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;YAA/D,CAA+D,CAChE;YACH,QAAQ;iBACL,MAAM,CAAC,KAAK,CAAC;iBACb,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;iBACtB,IAAI,CAAC,UAAC,IAAI;;gBACT,WAAI,CAAC,QAAQ;oBACX,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,CAAC,gBAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,cAAc,mCAC3B,eAAe,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;aAAA,CAC3C;YACH,QAAQ;iBACL,MAAM,CAAC,KAAK,CAAC;iBACb,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;iBACrB,IAAI,CAAC,UAAC,IAAI,IAAK,QAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAvC,CAAuC,CAAC;YAC1D,QAAQ;iBACL,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB;iBAC9B,IAAI,CAAC,YAAY,EAAE,UAAC,IAAI;gBACvB,SAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YAA5C,CAA4C,CAC7C;iBACA,KAAK,CAAC,MAAM,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,EAAE,GAAG,IAAI,EAAd,CAAc,CAAC;iBACvC,KAAK,CAAC,KAAK,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,EAAE,GAAG,IAAI,EAAd,CAAc,CAAC;iBACtC,KAAK,CAAC,OAAO,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAhC,CAAgC,CAAC;iBAC1D,KAAK,CAAC,QAAQ,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAhC,CAAgC,CAAC;iBAC3D,KAAK,CAAC,YAAY,EAAE,UAAC,IAAI;gBACxB,WAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAzC,CAAyC,CAC1C;QACL,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAtKtB,KAAqB,UAAY,EAAZ,YAAO,CAAC,IAAI,EAAZ,cAAY,EAAZ,IAAY;QAA5B,IAAM,MAAM;gBAAN,MAAM;KAuKhB;IACD,OAAO;QACL,IAAI,EAAE;YACJ,KAAuB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE,CAAC;gBAA9B,IAAM,QAAQ;gBACjB,QAAQ,EAAE;YACZ,CAAC;QACH,CAAC;KACF;AACH,CAAC;;;AC/NoC;AAE0B;AAGxD,IAAM,UAAU,GAAa,UAClC,MAAc,EACd,IAAU;IAEV,IAAM,OAAO,GACX,IAAI;QACJ,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,UAAU,CAAC,MAAM,CACpB,UAAC,SAA+B,IAAK,gBAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAA1B,CAA0B,CAChE;IACH,IAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,EAAE;IAE5C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,IAAM,KAAK,GAAG,UAAM,CAAC,MAAM,CAAC,SAAS,CAAC;aACnC,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CACH,OAAO,EACP,oFAAoF,CACrF;QACH,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACnD,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACnD,IAAI,eAAe,GAA2B,EAAE;QAChD,KAAyB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE,CAAC;YAA9B,IAAM,YAAU;YACnB,YAAU,CAAC,SAAS,GAAG,EAAE;YACzB,KAAmB,UAAgB,EAAhB,iBAAU,CAAC,KAAK,EAAhB,cAAgB,EAAhB,IAAgB,EAAE,CAAC;gBAAjC,IAAM,IAAI;gBACb,YAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;gBACpC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;YACjC,CAAC;QACH,CAAC;QACD,IAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,EAAE;QACnB,CAAC;QAED,IAAM,SAAS,GAAG,QAAQ;aACvB,MAAM,CAAC,IAAI,CAAC;aACZ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;aACtB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAW,CAAC;QAC9C,SAAS;aACN,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;aACzB,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;aAC5B,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC;aACnC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;aAC5B,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QAEjC,KAAyB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE,CAAC;YAA9B,IAAM,YAAU;YACnB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAU,CAAC,aAAa,CAAC;QACtD,CAAC;QACD,KAAK,IAAM,EAAE,IAAI,eAAe,EAAE,CAAC;YACjC,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;YACpE,IAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,KAAyB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE,CAAC;gBAA9B,IAAM,YAAU;gBACnB,IAAM,QAAQ,GAAG,YAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;oBACrD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc;oBAClC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;yBACd,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;yBACnC,IAAI,CAAC,IAAI,CAAC;oBACb,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBACtB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;6BACX,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC;6BACjC,IAAI,CACH,OAAO,EACP,MAAM,CAAC,UAAU,CACf,qDAAqD,EACrD,6CAA6C,EAC7C,yDAAyD,CAC1D,CACF;6BACA,IAAI,CAAC,UAAU,CAAC;oBACrB,CAAC;oBACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAClB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC7D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBACpE,QAAQ;qBACL,MAAM,CAAC,IAAI,CAAC;qBACZ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC3D,KAAyB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE,CAAC;oBAA9B,IAAM,YAAU;oBACnB,IAAM,WAAW,GAAG,YAAU,CAAC,MAAM,IAAI,YAAU,CAAC,MAAM,CAAC,WAAW;oBACtE,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;oBAChC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;yBACd,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;yBAC9B,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;gBAC/B,CAAC;YACH,CAAC;YACD,IAAI,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;gBACvE,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBACpE,QAAQ;qBACL,MAAM,CAAC,IAAI,CAAC;qBACZ,IAAI,CACH,MAAM,CAAC,UAAU,CACf,kBAAkB,EAClB,8BAA8B,EAC9B,qBAAqB,CACtB,CACF;gBACH,KAAyB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE,CAAC;oBAA9B,IAAM,YAAU;oBACnB,IAAM,IAAI,GAAG,YAAU,CAAC,MAAM,IAAI,YAAU,CAAC,MAAM,CAAC,eAAe;oBACnE,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;oBAChC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;yBACd,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;yBAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACrE,CAAC;YACH,CAAC;YACD,QAAQ;iBACL,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAM,cAAY,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;oCAC5C,YAAU;gBACnB,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChC,EAAE,CAAC,IAAI,CAAC,YAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAE7B,IAAI,cAAY,EAAE,CAAC;oBACjB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;yBACd,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC;yBACnC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY;wBACjC,KAAK,CAAC,cAAc,EAAE;wBACtB,cAAY,CAAC,YAAU,CAAC,MAAM,CAAC;oBACjC,CAAC,CAAC;gBACN,CAAC;;YAXH,KAAyB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO;gBAA3B,IAAM,YAAU;wBAAV,YAAU;aAYpB;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;IACtC,CAAC;IACD,OAAO,YAAY;AACrB,CAAC;;;ACnJoC;AACJ;AACe;AAS/B;AAGwB;AACL;AACM;AAuBnC,IAAM,KAAK,GAAa,UAC7B,MAAc,EACd,IAAU;IAEV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IACjC,CAAC;IAED,IAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI;IACxC,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS;IAElC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI;QAE/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,UAAM,CAAC,SAAS,CAAC;iBACd,SAAS,CAAC,8CAA8C,CAAC;iBACzD,MAAM,EAAE;QACb,CAAC;QAED,kBAAkB,CAChB,UAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EACpC,OAAO,EACP,UAAU,EACV,CAAC,EACD,CAAC,EACD,IAAI,CACL;QACD,WAAW,CAAC,MAAM,EAAE,UAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAC3D,OAAO,EAAE,IAAI,EAAE,cAAa,CAAC,EAAE;IACjC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC/C,CAAC;IAED,IAAI,QAAc;IAClB,IAAM,QAAQ,GAAyB,EAAE;IACzC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;IAC/B,IAAI,iBAAiB,GAAY,KAAK;IACtC,KAAiB,UAAU,EAAV,SAAI,CAAC,KAAK,EAAV,cAAU,EAAV,IAAU,EAAE,CAAC;QAAzB,IAAI,IAAI;QACX,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,iBAAiB,GAAG,IAAI;QAC1B,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAC1B,CAAC;IAED,KAAiB,UAAU,EAAV,SAAI,CAAC,KAAK,EAAV,cAAU,EAAV,IAAU,EAAE,CAAC;QAAzB,IAAI,IAAI;QACX,sEAAsE;QACtE,+DAA+D;QAC/D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAA2B,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAA2B,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,IAAM,GAAG,GAAG,UAAM,CAAC,SAAS,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC;SACb,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;SACtB,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAElE,IAAM,UAAU,GAAG,GAAG;SACnB,MAAM,CAAC,GAAG,CAAC;SACX,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;SACtB,SAAS,CAAC,OAAO,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAEnB,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;IAC9C,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IAC/C,CAAC;IAED,MAAM;SACH,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;SACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE5D,MAAM;SACH,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;SACtB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAEjE,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM;aACH,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;aACvB,IAAI,CACH,MAAM,CAAC,UAAU,CACf,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,CACvB,CACF;IACL,CAAC;IAED,SAAS,SAAS,CAAC,IAAe;QAChC,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;YAC/B,OAAO,MAAM;QACf,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;YAChC,OAAO,MAAM;QACf,CAAC;IACH,CAAC;IAED,IAAM,aAAa,GAAG,UAAU;SAC7B,KAAK,EAAE;SACP,MAAM,CAAC,GAAG,CAAC;SACX,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,gBAAgB,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,MAAM,CAAC,EAAE,EAAd,CAAc,CAAC;SAChD,IAAI,CAAC,gBAAgB,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,MAAM,CAAC,EAAE,EAAd,CAAc,CAAC;SAChD,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,IAAqB,EAA1B,CAA0B,CAAC;SACvD,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,IAAqB,EAA1B,CAA0B,CAAC;SACvD,IAAI,CAAC,UAAU,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,GAAG,EAAR,CAAQ,CAAC;SACpC,IAAI,CAAC,WAAW,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,IAAI,EAAT,CAAS,CAAC;SACtC,IAAI,CAAC,aAAa,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,MAAa,EAAlB,CAAkB,CAAC;SACjD,IAAI,CAAC,aAAa,EAAE,UAAC,IAAI,IAAK,WAAI,CAAC,MAAa,EAAlB,CAAkB,CAAC;IAEpD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3B,aAAa;iBACV,MAAM,CAAC,MAAM,CAAC;iBACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;iBACrB,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,CAAC;iBAC5B,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;iBACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC5B,sEAAsE;QACxE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa;aACV,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;aACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;aACzB,IAAI,CAAC,kBAAkB,EAAE,UAAC,IAAI,IAAK,gBAAS,CAAC,IAAI,CAAW,EAAzB,CAAyB,CAAC;IAClE,CAAC;IAED,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IAErD,aAAa;SACV,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;SAC7B,IAAI,CAAC,UAAC,IAAI,IAAK,WAAI,CAAC,IAAI,EAAT,CAAS,CAAC;IAE5B,aAAa;SACV,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;IAEjC,aAAa;SACV,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;IAEjC,IAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,QAAS,CAAC,EAAE,EAAE,KAAK,CAAC;IAE1E,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,SAAS,GAAG,IAAI;IAEpB,IAAM,MAAM,GAAG;QACb,IAAI,SAAS,IAAI,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;QAED,SAAS,KAAK,CAAC,MAAwB,EAAE,KAAuB;YAC9D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,SAAS,QAAQ,CAAC,MAAwB;YACxC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACpC,CAAC;QAED,IAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;QAC9C,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK;QACxB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM;QAC1B,IAAM,MAAM,GAAG,GAAG,EAChB,MAAM,GAAG,EAAE;QACb,IAAM,UAAU,GAAG,GAAG;QACtB,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAC,IAAU,IAAK,WAAI,CAAC,CAAC,EAAN,CAAM,CAGxD;QACD,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAC,IAAU,IAAK,WAAI,CAAC,CAAC,EAAN,CAAM,CAGxD;QAED,IAAM,MAAM,GAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;QACzD,IAAM,MAAM,GAAqB,QAAQ;YACvC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;QAE/D,IAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;QACzC,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;QACzC,IAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;QACnC,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;QACnC,IAAI,cAAc,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG;QACzD,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;QAElD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,MAAM,GAAG,CAAC;YACV,MAAM,GAAG,MAAM,GAAG,CAAC;YACnB,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;QAClC,CAAC;QAED,IAAM,MAAM,GAAG,UAAC,CAAS;YACvB,QAAC,CAAC,GAAG,eAAe,CAAC,GAAG,MAAM,GAAG,cAAc;QAA/C,CAA+C;QACjD,IAAM,MAAM,GAAG,UAAC,CAAS;YACvB,QAAC,CAAC,GAAG,eAAe,CAAC,GAAG,MAAM,GAAG,cAAc;QAA/C,CAA+C;QAEjD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAArB,CAAqB;QACrD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAArB,CAAqB;QACrD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAArB,CAAqB;QACrD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAArB,CAAqB;QAErD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,SAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAnB,CAAmB;QACnD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,SAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAnB,CAAmB;QACnD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,QAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAzB,CAAyB;QACzD,IAAM,EAAE,GAAG,UAAC,IAAe,IAAK,QAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAzB,CAAyB;QAEzD,IAAM,QAAQ,GAAG,UAAC,IAAe;YAC/B,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,MAAM;QACf,CAAC;QAED,IAAM,KAAK,GAAG,UAAC,IAAe;YAC5B,IAAI,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;gBAChC,MAAM,GAAG,MAAM,GAAG,GAAG;YACvB,CAAC;iBAAM,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;gBACzC,MAAM,GAAG,MAAM,GAAG,GAAG;YACvB,CAAC;YACD,OAAO,MAAM;QACf,CAAC;QAED,aAAa,CAAC,IAAI,CAChB,WAAW,EACX,UAAC,IAAI,IAAK,mBAAY,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,EAA9C,CAA8C,CACzD;QAED,aAAa;aACV,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aACd,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAEjB,6CAA6C;QAC7C,aAAa;aACV,MAAM,CAAC,WAAW,CAAC;aACnB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAC,KAAK;QAEvB,aAAa;aACV,MAAM,CAAC,WAAW,CAAC;aACnB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aACd,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aACd,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAEjB,aAAa;aACV,MAAM,CAAC,WAAW,CAAC;aACnB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aACd,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aACd,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;aACd,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAEjB,IAAM,iBAAiB,GAAG,UAAC,IAAe;YACxC,gBAAS;gBACT,KAAK,CAAC,IAAI,CAAC;gBACX,GAAG;gBACH,EAAE,CAAC,IAAI,CAAC;gBACR,GAAG;gBACH,EAAE,CAAC,IAAI,CAAC;gBACR,GAAG;gBACH,mBAAmB;QAPnB,CAOmB;QAErB,aAAa;aACV,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;aACb,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;aACb,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC;QAEvC,aAAa;aACV,MAAM,CAAC,UAAU,CAAC;aAClB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;aACb,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;aACb,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC;QAEvC,cAAc;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAM,OAAK,GAAG,UAAC,IAAe,IAAK,SAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAZ,CAAY;YAC/C,IAAM,OAAK,GAAG,UAAC,IAAe,IAAK,SAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAZ,CAAY;YAE/C,aAAa;iBACV,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CACH,WAAW,EACX,UAAC,IAAI;gBACH,gBAAS;oBACT,QAAQ,CAAC,IAAI,CAAC;oBACd,IAAI;oBACJ,YAAY;oBACZ,aAAa;oBACb,GAAG;oBACH,CAAC;oBACD,GAAG;YAPH,CAOG,CACN;YAEH,aAAa;iBACV,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CACH,WAAW,EACX,UAAC,IAAI;gBACH,mBAAY;oBACZ,OAAK,CAAC,IAAI,CAAC;oBACX,GAAG;oBACH,OAAK,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,SAAS;oBACT,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI;oBACJ,YAAY;oBACZ,aAAa;oBACb,GAAG;oBACH,CAAC;oBACD,GAAG;YAZH,CAYG,CACN;QACL,CAAC;QAED,SAAS;QACT,IAAM,UAAU,GAAG,MAAM,GAAG,CAAC;QAC7B,IAAM,WAAW,GAAG,UAAU,GAAG,EAAE;QACnC,IAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;QACzC,IAAM,OAAO,GAAG,UAAU,GAAG,EAAE;QAC/B,IAAM,WAAW,GAAG,UAAU,GAAG,EAAE;QAEnC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAE5E,GAAG;aACA,SAAS,CAAC,+BAA+B,CAAC;aAC1C,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;aACnB,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;QACtB,GAAG;aACA,SAAS,CAAC,8BAA8B,CAAC;aACzC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;aACtB,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QACzB,GAAG;aACA,SAAS,CAAC,+BAA+B,CAAC;aAC1C,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;aACvB,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAE1B,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC;QAExD,IAAM,MAAM,GAAG,CAAC;QAChB,GAAG,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1E,GAAG,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAAC;QAC5E,GAAG;aACA,SAAS,CAAC,+BAA+B,CAAC;aAC1C,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC;QAElC,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QAElE,UAAU;aACP,IAAI,CAAC,SAAS,EAAE,UAAC,IAAI,IAAK,aAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAd,CAAc,CAAC;aACzC,IAAI,CACH,WAAW,EACX,UAAC,IAAI,IAAK,mBAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAA1D,CAA0D,CACrE;IACL,CAAC;IAED,SAAS,IAAI;QACL,SAAkB,QAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,EAAxD,KAAK,UAAE,MAAM,QAA2C;QAC/D,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;QAElD,SAAS,GAAG,KAAK;QACjB,MAAM,EAAE;IACV,CAAC;IACD,OAAO,EAAE,IAAI,QAAE;AACjB,CAAC;;;AChb0C;;AAEpC,oBAAoB,YAAY;AACvC;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY;AACrB;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEO;;;ACxBqC;AACuF;AACtF;AACV;AACe;AACN;AACF;AACM;AACD;AACH;;AAE5C;;AAEA;AACA,KAAK,MAAM,WAAW,cAAc;AACpC,KAAK,MAAM,WAAW,cAAc;AACpC,KAAK,MAAM,WAAW,cAAc;AACpC,KAAK,MAAM,WAAW,cAAc;AACpC,sBAAsB,cAAc;AACpC,sBAAsB,cAAc;AACpC,sBAAsB,cAAc;AACpC,sBAAsB,cAAc;AACpC,sBAAsB,YAAY;AAClC,sBAAsB,YAAY;AAClC,sBAAsB,YAAY;AAClC,sBAAsB,YAAY;AAClC,sBAAsB,WAAW;AACjC,sBAAsB,WAAW;AACjC,sBAAsB,YAAY;AAClC,sBAAsB,aAAa;AACnC,sBAAsB,aAAa;AACnC,sBAAsB,YAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,sDAAsD,QAAQ,SAAS,YAAY,SAAS,YAAY;AACxG,wBAAwB,WAAW,gBAAgB,QAAQ;AAC3D;AACA;AACA;;AAEA;AACA;;AAEA,2CAA2C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;AACpG,6CAA6C,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;;AAE3C;;;ACzDzB;;AAEvC,IAAI,wBAAM;AACH;AACA;AACA;AACA;;AAEP,2BAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc,SAAS,2BAAa;AACrC,EAAE,wBAAM,GAAG,YAAY;AACvB,eAAe,wBAAM;AACrB,cAAc,wBAAM;AACpB,cAAc,wBAAM;AACpB,aAAa,wBAAM;AACnB,SAAS,wBAAM;AACf;;;AC1Be;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;ACjB8H;AACpF;AACO;AACb;AACP;;AAE7B,SAAS,SAAI;AACb;AACA;;AAEA,SAAS,WAAM;AACf;AACA;;AAEO;AACP,cAAc,UAAU;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD,WAAM,kBAAkB,SAAI;AAC/E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;;AAEA;AACA,WAAW,IAAI;AACf;;AAEA;AACA;;AAEe;AACf,SAAS,SAAS,gBAAgB,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAU,EAAE,UAAU;AACnJ;;;ACtEA,YAAY;;AAEZ,SAAS,iBAAQ;AACjB,8CAA8C,KAAK,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,uBAAc;AACvB;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA,qBAAqB,iBAAQ;AAC7B;AACA;AACA;AACA,YAAY,uBAAc;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,mFAAmF,OAAO;AAC1F;AACA,gDAAgD,OAAO;AACvD,GAAG;AACH;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;;AAEA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEA,mDAAe,iBAAQ,EAAC;;;ACnFxB,IAAI,WAAK;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI;;AAE/H;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,SAAS;AACT,IAAI,WAAK,EAAE;AACX;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;;AAEA;AACA;AACA,EAAE,WAAK;AACP;AACA;AACA,IAAI;AACJ,IAAI,WAAK;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,WAAK,UAAU;AACrB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI,WAAK;AACT;AACA;;;AC7GiC;;AAEjC,6BAAe,qBAAS;AACxB,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;ACVqC;AACG;;AAExC,cAAc,YAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEP,6BAAe,kBAAS;AACxB;AACA;AACA;AACA,EAAE,eAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP,iBAAiB,YAAG;AACpB,2DAA2D;AAC3D;AACA;;AAEO,SAAS,YAAG;AACnB,iBAAiB,YAAG;AACpB,2DAA2D;AAC3D;AACA;;AAEO,SAAS,YAAG;AACnB;AACA;AACA;AACA;;AAEA,SAAS,eAAM;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C,sCAAsC,WAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAyD;AACzD;AACA,2DAA2D;AAC3D;AACA,IAAI,WAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;;;ACxJiE;;AAEjE,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,mDAAmD,eAAe;AAClE,8BAA8B,QAAQ,qBAAqB,MAAM;AACjE,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;;ACvBwC;;AAExC,6BAAe,6BAAS;AACxB;AACA,IAAI,SAAS;AACb,GAAG;AACH;;;ACNA;;AAEO,IAAI,kBAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBmD;;AAEnD;;AAEA;AACO;AACP;AACA,wBAAwB,kBAAQ,GAAG,SAAS;AAC5C;;AAEO;AACP,4BAA4B,kBAAQ;AACpC;AACA;AACA,iEAAiE,kBAAQ;AACzE;AACA,SAAS,SAAS;AAClB;;;ACjBkC;AACY;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,UAAM,SAAS,GAAG,aAAa,UAAM,SAAS;AACzE,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,gCAAgC;AACjE,cAAc,sDAAsD,UAAM,OAAO;AACjF,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,cAAc,qDAAqD,UAAM,OAAO;AAChF,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,UAAM,SAAS,GAAG,aAAa,UAAM,SAAS;AACzE,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,mDAAmD,QAAQ;AAC3D,mDAAmD,QAAQ;;;AC9D3B;;AAEvC;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,4BAA4B,OAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,eAAS;AACxB;;AAEA;;AAEA;AACA,gBAAgB,YAAG;AACnB,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA,mBAAmB,YAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,YAAG;AACd;AACA;;;AChF+B;AACqD;;AAEpF,6BAAe,qBAAS;AACxB;AACA,kCAAkC,UAAiB;AACnD,qBAAqB,KAAK,GAAG,GAAc;AAC3C,aAAa,KAAK,eAAe,GAAc;AAC/C,QAAQ,MAAiB;AACzB;;;ACT+E;AACxC;AACD;AACK;;AAE3C,SAAS,eAAU;AACnB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,yBAAS;AACxB,iBAAiB,SAAS,uCAAuC,uBAAoB,GAAG,WAAW;AACnG;AACA,0BAA0B,mBAAc,GAAG,iBAAY,eAAe,UAAU;AAChF,0CAA0C,iBAAY,GAAG,eAAU;AACnE,0BAA0B,mBAAc,GAAG,iBAAY;AACvD;;;AC7EuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,8BAAS;AACxB;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;;AC3CwC;;AAExC;AACA;AACA,IAAI,IAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,IAAI;AACR;AACA;;AAEA,6BAAe,eAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX;;;ACtBuC;;AAEvC;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,kBAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX;;;ACtBuC;;AAEvC;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA,QAAQ,YAAG;AACX;;;ACfkC;;AAElC;AACA;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,gCAAS;AACxB;AACA;AACA;;;ACbqC;AACC;;AAEtC,6BAAe,2BAAS;AACxB,2CAA2C,OAAO;;AAElD,sFAAsF,OAAO;AAC7F,6FAA6F,OAAO;AACpG;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACfsC;;AAEtC,6BAAe,0BAAS;AACxB;;AAEA,gKAAgK,OAAO;AACvK,yHAAyH,OAAO;AAChI;AACA;AACA;AACA;AACA;;AAEA,SAAS,QAAQ;AACjB;AACA;;AAEA,aAAa,UAAU;AACvB;;;AClB6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,oCAAoC,IAAI,GAAG,YAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,uBAAS;AACxB;;AAEA;AACA,QAAQ,YAAG;AACX;AACA;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,6BAAW;AAC1B;AACA;;;ACVsC;AACA;AACM;;AAE5C,6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","sources":["webpack://northdata-frontend/./node_modules/labella/dist/labella.min.js","webpack://northdata-frontend/./node_modules/lodash.debounce/index.js","webpack://northdata-frontend/webpack/bootstrap","webpack://northdata-frontend/webpack/runtime/compat get default export","webpack://northdata-frontend/webpack/runtime/define property getters","webpack://northdata-frontend/webpack/runtime/global","webpack://northdata-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://northdata-frontend/./src/ts/env.ts","webpack://northdata-frontend/./src/ts/util/params.ts","webpack://northdata-frontend/./src/ts/viz/renderer.ts","webpack://northdata-frontend/./node_modules/d3-color/src/define.js","webpack://northdata-frontend/./node_modules/d3-color/src/color.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selector.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/select.js","webpack://northdata-frontend/./node_modules/d3-selection/src/array.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selectorAll.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/selectAll.js","webpack://northdata-frontend/./node_modules/d3-selection/src/matcher.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/selectChild.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/selectChildren.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/filter.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/sparse.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/enter.js","webpack://northdata-frontend/./node_modules/d3-selection/src/constant.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/data.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/exit.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/join.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/merge.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/order.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/sort.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/call.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/nodes.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/node.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/size.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/empty.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/each.js","webpack://northdata-frontend/./node_modules/d3-selection/src/namespaces.js","webpack://northdata-frontend/./node_modules/d3-selection/src/namespace.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/attr.js","webpack://northdata-frontend/./node_modules/d3-selection/src/window.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/style.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/property.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/classed.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/text.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/html.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/raise.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/lower.js","webpack://northdata-frontend/./node_modules/d3-selection/src/creator.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/append.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/insert.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/remove.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/clone.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/datum.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/on.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/dispatch.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/iterator.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/index.js","webpack://northdata-frontend/./node_modules/d3-selection/src/select.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selectAll.js","webpack://northdata-frontend/./src/ts/util/dom.ts","webpack://northdata-frontend/./src/ts/util/string.ts","webpack://northdata-frontend/./src/ts/viz/base.ts","webpack://northdata-frontend/./node_modules/d3-fetch/src/json.js","webpack://northdata-frontend/./src/ts/viz/datasource.ts","webpack://northdata-frontend/./node_modules/d3-time/src/interval.js","webpack://northdata-frontend/./node_modules/d3-time/src/duration.js","webpack://northdata-frontend/./node_modules/d3-time/src/week.js","webpack://northdata-frontend/./node_modules/d3-time/src/day.js","webpack://northdata-frontend/./node_modules/d3-time/src/year.js","webpack://northdata-frontend/./node_modules/d3-time-format/src/locale.js","webpack://northdata-frontend/./node_modules/d3-time/src/second.js","webpack://northdata-frontend/./node_modules/d3-time/src/minute.js","webpack://northdata-frontend/./node_modules/d3-time/src/hour.js","webpack://northdata-frontend/./node_modules/d3-time/src/month.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatDecimal.js","webpack://northdata-frontend/./node_modules/d3-format/src/exponent.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatGroup.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatNumerals.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatSpecifier.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatTrim.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatRounded.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatTypes.js","webpack://northdata-frontend/./node_modules/d3-format/src/identity.js","webpack://northdata-frontend/./node_modules/d3-format/src/locale.js","webpack://northdata-frontend/./src/ts/util/language.ts","webpack://northdata-frontend/./src/ts/viz/i18n.ts","webpack://northdata-frontend/./src/ts/viz/widget.ts","webpack://northdata-frontend/./node_modules/d3-selection/src/create.js","webpack://northdata-frontend/./node_modules/d3-array/src/extent.js","webpack://northdata-frontend/./node_modules/d3-array/src/range.js","webpack://northdata-frontend/./node_modules/d3-scale/src/init.js","webpack://northdata-frontend/./node_modules/internmap/src/index.js","webpack://northdata-frontend/./node_modules/d3-scale/src/ordinal.js","webpack://northdata-frontend/./node_modules/d3-scale/src/band.js","webpack://northdata-frontend/./node_modules/d3-array/src/ticks.js","webpack://northdata-frontend/./node_modules/d3-array/src/ascending.js","webpack://northdata-frontend/./node_modules/d3-array/src/descending.js","webpack://northdata-frontend/./node_modules/d3-array/src/bisector.js","webpack://northdata-frontend/./node_modules/d3-array/src/number.js","webpack://northdata-frontend/./node_modules/d3-array/src/bisect.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/basis.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/basisClosed.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/constant.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/color.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/rgb.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/array.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/date.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/number.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/object.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/string.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/numberArray.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/value.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/round.js","webpack://northdata-frontend/./node_modules/d3-scale/src/constant.js","webpack://northdata-frontend/./node_modules/d3-scale/src/number.js","webpack://northdata-frontend/./node_modules/d3-scale/src/continuous.js","webpack://northdata-frontend/./node_modules/d3-format/src/precisionPrefix.js","webpack://northdata-frontend/./node_modules/d3-format/src/defaultLocale.js","webpack://northdata-frontend/./node_modules/d3-format/src/precisionRound.js","webpack://northdata-frontend/./node_modules/d3-format/src/precisionFixed.js","webpack://northdata-frontend/./node_modules/d3-scale/src/tickFormat.js","webpack://northdata-frontend/./node_modules/d3-scale/src/linear.js","webpack://northdata-frontend/./node_modules/d3-axis/src/identity.js","webpack://northdata-frontend/./node_modules/d3-axis/src/axis.js","webpack://northdata-frontend/./src/ts/viz/tooltip.ts","webpack://northdata-frontend/./src/ts/viz/widgets/barchart.ts","webpack://northdata-frontend/./src/ts/viz/widgets/contacts.ts","webpack://northdata-frontend/./node_modules/d3-array/src/min.js","webpack://northdata-frontend/./node_modules/d3-array/src/max.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/cluster.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://northdata-frontend/./node_modules/d3-shape/src/array.js","webpack://northdata-frontend/./node_modules/d3-shape/src/constant.js","webpack://northdata-frontend/./node_modules/d3-shape/src/curve/bump.js","webpack://northdata-frontend/./node_modules/d3-path/src/path.js","webpack://northdata-frontend/./node_modules/d3-shape/src/path.js","webpack://northdata-frontend/./node_modules/d3-shape/src/point.js","webpack://northdata-frontend/./node_modules/d3-shape/src/link.js","webpack://northdata-frontend/./node_modules/d3-shape/src/curve/linear.js","webpack://northdata-frontend/./node_modules/d3-shape/src/line.js","webpack://northdata-frontend/./src/ts/viz/nodes.ts","webpack://northdata-frontend/./src/ts/viz/widgets/dendrogram.ts","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/accessors.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/constant.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://northdata-frontend/./src/ts/viz/widgets/drilldown.ts","webpack://northdata-frontend/./src/ts/viz/widgets/financials.ts","webpack://northdata-frontend/./src/ts/viz/widgets/graph.ts","webpack://northdata-frontend/./node_modules/d3-time/src/millisecond.js","webpack://northdata-frontend/./node_modules/d3-time/src/ticks.js","webpack://northdata-frontend/./node_modules/d3-time-format/src/defaultLocale.js","webpack://northdata-frontend/./node_modules/d3-scale/src/nice.js","webpack://northdata-frontend/./node_modules/d3-scale/src/time.js","webpack://northdata-frontend/./node_modules/d3-dispatch/src/dispatch.js","webpack://northdata-frontend/./node_modules/d3-timer/src/timer.js","webpack://northdata-frontend/./node_modules/d3-timer/src/timeout.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/schedule.js","webpack://northdata-frontend/./node_modules/d3-transition/src/interrupt.js","webpack://northdata-frontend/./node_modules/d3-transition/src/selection/interrupt.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/transform/parse.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/transform/index.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/tween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/interpolate.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/attr.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/attrTween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/delay.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/duration.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/ease.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/easeVarying.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/filter.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/merge.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/on.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/remove.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/select.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/selectAll.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/selection.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/style.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/styleTween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/text.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/textTween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/transition.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/end.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/index.js","webpack://northdata-frontend/./node_modules/d3-ease/src/cubic.js","webpack://northdata-frontend/./node_modules/d3-transition/src/selection/transition.js","webpack://northdata-frontend/./node_modules/d3-transition/src/selection/index.js","webpack://northdata-frontend/./node_modules/d3-transition/src/index.js","webpack://northdata-frontend/./src/ts/viz/color.ts","webpack://northdata-frontend/./src/ts/viz/widgets/history.ts","webpack://northdata-frontend/./src/ts/viz/widgets/overview.ts","webpack://northdata-frontend/./src/ts/viz/widgets/persontable.ts","webpack://northdata-frontend/./src/ts/util/ui.ts","webpack://northdata-frontend/./src/ts/viz/widgets/pubshop.ts","webpack://northdata-frontend/./src/ts/viz/widgets/pubtable.ts","webpack://northdata-frontend/./src/ts/viz/widgets/searchresults.ts","webpack://northdata-frontend/./src/ts/viz/widgets/sheet.ts","webpack://northdata-frontend/./src/ts/viz/widgets/vita.ts","webpack://northdata-frontend/./src/ts/viz-base.ts","webpack://northdata-frontend/./src/ts/viz.esm.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.labella=e():t.labella=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var r={};return e.m=t,e.c=r,e.p=\"\",e(0)}([function(t,e,r){\"use strict\";t.exports={Node:r(1),Force:r(2),Distributor:r(3),Renderer:r(10)}},function(t,e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=function(){function t(e,n,i){r(this,t),this.idealPos=e,this.currentPos=e,this.width=n,this.data=i,this.layerIndex=0}return n(t,[{key:\"distanceFrom\",value:function(t){var e=this.width/2,r=t.width/2;return Math.max(this.currentPos-e,t.currentPos-r)-Math.min(this.currentPos+e,t.currentPos+r)}},{key:\"moveToIdealPosition\",value:function(){return this.currentPos=this.idealPos,this}},{key:\"displacement\",value:function(){return this.idealPos-this.currentPos}},{key:\"overlapWithNode\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.distanceFrom(t)-e<0}},{key:\"overlapWithPoint\",value:function(t){var e=this.width/2;return t>=this.currentPos-e&&t<=this.currentPos+e}},{key:\"positionBefore\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.currentLeft()-this.width/2-e}},{key:\"positionAfter\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.currentRight()+this.width/2+e}},{key:\"currentRight\",value:function(){return this.currentPos+this.width/2}},{key:\"currentLeft\",value:function(){return this.currentPos-this.width/2}},{key:\"idealRight\",value:function(){return this.idealPos+this.width/2}},{key:\"idealLeft\",value:function(){return this.idealPos-this.width/2}},{key:\"createStub\",value:function(e){var r=new t(this.idealPos,e,this.data);return r.currentPos=this.currentPos,r.child=this,this.parent=r,r}},{key:\"removeStub\",value:function(){return this.parent&&(this.parent.child=null,this.parent=null),this}},{key:\"isStub\",value:function(){return!!this.child}},{key:\"getPathToRoot\",value:function(){for(var t=[],e=this;e;)t.push(e),e=e.parent;return t}},{key:\"getPathFromRoot\",value:function(){return this.getPathToRoot().reverse()}},{key:\"getPathToRootLength\",value:function(){for(var t=0,e=this;e;){var r=e.parent?e.parent.currentPos:e.idealPos;t+=Math.abs(e.currentPos-r),e=e.parent}return t}},{key:\"getRoot\",value:function(){for(var t=this,e=this;e;)t=e,e=e.parent;return t}},{key:\"getLayerIndex\",value:function(){return this.layerIndex}},{key:\"clone\",value:function(){var e=new t(this.idealPos,this.width,this.data);return e.currentPos=this.currentPos,e.layerIndex=this.layerIndex,e}}]),t}();t.exports=i},function(t,e,r){\"use strict\";var n=r(3),i=r(4),o=r(8),s={nodeSpacing:3,minPos:0,maxPos:null,algorithm:\"overlap\",removeOverlap:!0,density:.85,stubWidth:1},u=function(t){var e={},r=i.extend({},s),u=new n,a=[],c=null;return e.nodes=function(t){return arguments.length?(a=t,c=[t.concat()],e):a},e.getLayers=function(){return c},e.options=function(t){if(!arguments.length)return r;r=i.extend(r,t);var o=i.pick(r,Object.keys(n.DEFAULT_OPTIONS));return i.isDefined(r.minPos)&&i.isDefined(r.maxPos)?o.layerWidth=r.maxPos-r.minPos:o.layerWidth=null,u.options(o),e},e.options(t),e.compute=function(){var t=i.pick(r,Object.keys(o.DEFAULT_OPTIONS));return a.forEach(function(t){t.removeStub()}),c=u.distribute(a),c.map(function(e,n){e.forEach(function(t){t.layerIndex=n}),r.removeOverlap&&o(e,t)}),e},e.start=function(){console.log(\"[warning] force.start() is deprecated. Please use force.compute() instead.\")},e};u.DEFAULT_OPTIONS=s,t.exports=u},function(t,e,r){\"use strict\";var n=r(4),i=r(6),o={algorithm:\"overlap\",layerWidth:1e3,density:.75,nodeSpacing:3,stubWidth:1},s=function(t){var e={};t=n.extend({},o,t),e.options=function(r){return arguments.length?(t=n.extend(t,r),e):t},e.computeRequiredWidth=function(e){return n.sum(e,function(e){return e.width+t.nodeSpacing})-t.nodeSpacing},e.maxWidthPerLayer=function(){return t.density*t.layerWidth},e.needToSplit=function(t){return e.estimateRequiredLayers(t)>1},e.estimateRequiredLayers=function(r){return t.layerWidth?Math.ceil(e.computeRequiredWidth(r)/e.maxWidthPerLayer()):1};var r={simple:function(r){for(var n=e.estimateRequiredLayers(r),i=[],o=0;o<n;o++)i.push([]);return r.forEach(function(e,r){var o=r%n;i[o].push(e);for(var s=e,u=o-1;u>=0;u--)s=s.createStub(t.stubWidth),i[u].push(s)}),i},roundRobin:function(t){var e=[];return e},overlap:function(r){for(var n=[],i=e.maxWidthPerLayer(),o=r.concat(),s=e.computeRequiredWidth(o);s>i;){e.countIdealOverlaps(o);var u=o.concat(),a=s;for(o=[];u.length>2&&a>i;){u.sort(function(t,e){return e.overlapCount-t.overlapCount});var c=u.shift();a-=c.width,a+=t.stubWidth,c.overlaps.forEach(function(t){t.overlapCount--}),o.push(c)}n.push(u),s=e.computeRequiredWidth(o)}o.length>0&&n.push(o);for(var h=n.length-1;h>=1;h--)for(var l=n[h],f=0;f<l.length;f++){var p=l[f];if(!p.isStub())for(var d=p,v=h-1;v>=0;v--)d=d.createStub(t.stubWidth),n[v].push(d)}return n}};return e.countIdealOverlaps=function(e){var r=new i(t.layerWidth/2);return e.forEach(function(t){r.add([t.idealLeft(),t.idealRight(),t])}),e.forEach(function(t){var e=r.search(t.idealLeft(),t.idealRight());t.overlaps=e.map(function(t){return t.data[2]}),t.overlapCount=e.length}),e},e.distribute=function(i){if(!i||0===i.length)return[];if(\"none\"==t.algorithm||!n.isDefined(t.algorithm))return[i];if(!e.needToSplit(i))return[i];var o=i.concat().sort(function(t,e){return t.idealPos-e.idealPos});if(\"function\"==typeof t.algorithm)return t.algorithm(o,t);if(r.hasOwnProperty(t.algorithm))return r[t.algorithm](o);throw\"Unknown algorithm: \"+t.algorithm},e};s.DEFAULT_OPTIONS=o,t.exports=s},function(t,e,r){\"use strict\";var n={isDefined:function(t){return null!==t&&void 0!==t},last:function(t){return t.length>0?t[t.length-1]:null},pick:function(t,e){return e.reduce(function(e,r){return e[r]=t[r],e},{})},sum:function(t,e){return t.map(e).reduce(function(t,e){return t+e},0)}};n.extend=r(5),t.exports=n},function(t,e){\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},s=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e=n.call(t,\"constructor\"),r=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!e&&!r)return!1;var o;for(o in t);return void 0===o||n.call(t,o)};t.exports=function u(){var t,e,n,i,a,c,h=arguments[0],l=1,f=arguments.length,p=!1;for(\"boolean\"==typeof h?(p=h,h=arguments[1]||{},l=2):(\"object\"!==(\"undefined\"==typeof h?\"undefined\":r(h))&&\"function\"!=typeof h||null==h)&&(h={});l<f;++l)if(t=arguments[l],null!=t)for(e in t)n=h[e],i=t[e],h!==i&&(p&&i&&(s(i)||(a=o(i)))?(a?(a=!1,c=n&&o(n)?n:[]):c=n&&s(n)?n:{},h[e]=u(p,c,i)):void 0!==i&&(h[e]=i));return h}},function(t,e,r){\"use strict\";function n(t,e){if(e||(e={}),this.startKey=e.startKey||0,this.endKey=e.endKey||1,this.intervalHash={},this.pointTree=new c({compare:function(t,e){if(null==t)return-1;if(null==e)return 1;var r=t[0]-e[0];return r>0?1:0==r?0:-1}}),this._autoIncrement=0,!t||\"number\"!=typeof t)throw new Error(\"you must specify center index as the 2nd argument.\");this.root=new u(t,this)}function i(t,e){return e.end<t.idx?(t.left||(t.left=new u(e.start+e.end>>1,this)),i.call(this,t.left,e)):t.idx<e.start?(t.right||(t.right=new u(e.start+e.end>>1,this)),i.call(this,t.right,e)):t.insert(e)}function o(t,e,r){if(t)return e<t.idx?(t.starts.every(function(t){var n=t.start<=e;return n&&r.push(t.result()),n}),o.call(this,t.left,e,r)):e>t.idx?(t.ends.every(function(t){var n=t.end>=e;return n&&r.push(t.result()),n}),o.call(this,t.right,e,r)):void t.starts.map(function(t){r.push(t.result())})}function s(t,e,r){if(e-t<=0)throw new Error(\"end must be greater than start. start: \"+t+\", end: \"+e);var n={},i=[];o.call(this,this.root,t+e>>1,i,!0),i.forEach(function(t){n[t.id]=!0});for(var s=this.pointTree.bsearch([t,null]),u=this.pointTree;s>=0&&u[s][0]==t;)s--;var a=this.pointTree.bsearch([e,null]);if(a>=0){for(var c=u.length-1;a<=c&&u[a][0]<=e;)a++;u.slice(s+1,a).forEach(function(t){var e=t[1];n[e]=!0},this),Object.keys(n).forEach(function(n){var i=this.intervalHash[n];r.push(i.result(t,e))},this)}}function u(t){this.idx=t,this.starts=new c({compare:function(t,e){if(null==t)return-1;if(null==e)return 1;var r=t.start-e.start;return r>0?1:0==r?0:-1}}),this.ends=new c({compare:function(t,e){if(null==t)return-1;if(null==e)return 1;var r=t.end-e.end;return r<0?1:0==r?0:-1}})}function a(t,e,r,n){if(this.id=e,this.start=t[r],this.end=t[n],this.data=t,\"number\"!=typeof this.start||\"number\"!=typeof this.end)throw new Error(\"start, end must be number. start: \"+this.start+\", end: \"+this.end);if(this.start>=this.end)throw new Error(\"start must be smaller than end. start: \"+this.start+\", end: \"+this.end)}var c=r(7);n.prototype.add=function(t,e){if(this.intervalHash[e])throw new Error(\"id \"+e+\" is already registered.\");if(void 0==e){for(;this.intervalHash[this._autoIncrement];)this._autoIncrement++;e=this._autoIncrement}var r=new a(t,e,this.startKey,this.endKey);this.pointTree.insert([r.start,e]),this.pointTree.insert([r.end,e]),this.intervalHash[e]=r,this._autoIncrement++,i.call(this,this.root,r)},n.prototype.search=function(t,e){var r=[];if(\"number\"!=typeof t)throw new Error(t+\": invalid input\");if(void 0==e)o.call(this,this.root,t,r);else{if(\"number\"!=typeof e)throw new Error(t+\",\"+e+\": invalid input\");s.call(this,t,e,r)}return r},n.prototype.remove=function(t){},u.prototype.insert=function(t){this.starts.insert(t),this.ends.insert(t)},a.prototype.result=function(t,e){var r={id:this.id,data:this.data};if(\"number\"==typeof t&&\"number\"==typeof e){var n=Math.max(this.start,t),i=Math.min(this.end,e),o=i-n;r.rate1=o/(e-t),r.rate2=o/(this.end-this.start)}return r},t.exports=n},function(t,e){\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n=function i(){var t=null,e={},n=arguments;[\"0\",\"1\"].forEach(function(i){var o=n[i];Array.isArray(o)?t=o:o&&\"object\"==(\"undefined\"==typeof o?\"undefined\":r(o))&&(e=o)}),\"function\"==typeof e.filter&&(this._filter=e.filter),\"function\"==typeof e.compare?this._compare=e.compare:\"string\"==typeof e.compare&&i.compares[e.compare]&&(this._compare=i.compares[e.compare]),this._unique=!!e.unique,e.resume&&t?t.forEach(function(t,e){this.push(t)},this):t&&this.insert.apply(this,t)};n.create=function(t,e){return new n(t,e)},n.prototype=new Array,n.prototype.constructor=Array.prototype.constructor,n.prototype.insertOne=function(t){var e=this.bsearch(t);return(!this._unique||null==this.key(t,e))&&(!!this._filter(t,e)&&(this.splice(e+1,0,t),e+1))},n.prototype.insert=function(){return Array.prototype.map.call(arguments,function(t){return this.insertOne(t)},this)},n.prototype.remove=function(t){return this.splice(t,1),this},n.prototype.bsearch=function(t){if(!this.length)return-1;for(var e,r=0,n=this.length;n-r>1;){e=Math.floor((r+n)/2);var i=this[e],o=this._compare(t,i);if(0==o)return e;o>0?r=e:n=e}return 0==r&&this._compare(this[0],t)>0?-1:r},n.prototype.key=function(t,e){null==e&&(e=this.bsearch(t));var r=e;if(r==-1||this._compare(this[r],t)<0)return r+1<this.length&&0==this._compare(this[r+1],t)?r+1:null;for(;r>=1&&0==this._compare(this[r-1],t);)r--;return r},n.prototype.keys=function(t,e){var r=[];null==e&&(e=this.bsearch(t));for(var n=e;n>=0&&0==this._compare(this[n],t);)r.push(n),n--;var i=this.length;for(n=e+1;n<i&&0==this._compare(this[n],t);)r.push(n),n++;return r.length?r:null},n.prototype.unique=function(t){if(t)return this.filter(function(t,e){return 0==e||0!=this._compare(this[e-1],t)},this);var e=0;return this.map(function(t,r){return 0==r||0!=this._compare(this[r-1],t)?null:r-e++},this).forEach(function(t){null!=t&&this.remove(t)},this),this},n.prototype.toArray=function(){return this.slice()},n.prototype._filter=function(t,e){return!0},n.compares={number:function(t,e){var r=t-e;return r>0?1:0==r?0:-1},string:function(t,e){return t>e?1:t==e?0:-1}},n.prototype._compare=n.compares.string,t.exports=n},function(t,e,r){\"use strict\";function n(t){var e=new s.Variable(t.targetPos);return e.node=t,e}function i(t,e){if(t.length>0){e=o.extend(u,e),t.forEach(function(t,e){t.targetPos=t.parent?t.parent.currentPos:t.idealPos,t.index=e});for(var r=t.concat().sort(function(t,e){var r=t.targetPos-e.targetPos;if(0!==r)return r;var n=t.isStub()-e.isStub();return 0!==n?n:t.index-e.index}).map(n),i=[],a=1;a<r.length;a++){var c=r[a-1],h=r[a],l=void 0;l=c.node.isStub()&&h.node.isStub()?(c.node.width+h.node.width)/2+e.lineSpacing:(c.node.width+h.node.width)/2+e.nodeSpacing,i.push(new s.Constraint(c,h,l))}if(o.isDefined(e.minPos)){var f=new s.Variable(e.minPos,1e10),p=r[0];i.push(new s.Constraint(f,p,p.node.width/2)),r.unshift(f)}if(o.isDefined(e.maxPos)){var d=new s.Variable(e.maxPos,1e10),v=o.last(r);i.push(new s.Constraint(v,d,v.node.width/2)),r.push(d)}new s.Solver(r,i).solve(),r.filter(function(t){return t.node}).map(function(t){return t.node.currentPos=Math.round(t.position()),t})}return t}var o=r(4),s=r(9),u={lineSpacing:2,nodeSpacing:3,minPos:0,maxPos:null};i.DEFAULT_OPTIONS=u,t.exports=i},function(t,e){\"use strict\";var r={},n=function(){function t(t){this.scale=t,this.AB=0,this.AD=0,this.A2=0}return t.prototype.addVariable=function(t){var e=this.scale/t.scale,r=t.offset/t.scale,n=t.weight;this.AB+=n*e*r,this.AD+=n*e*t.desiredPosition,this.A2+=n*e*e},t.prototype.getPosn=function(){return(this.AD-this.AB)/this.A2},t}();r.PositionStats=n;var i=function(){function t(t,e,r,n){void 0===n&&(n=!1),this.left=t,this.right=e,this.gap=r,this.equality=n,this.active=!1,this.unsatisfiable=!1,this.left=t,this.right=e,this.gap=r,this.equality=n}return t.prototype.slack=function(){return this.unsatisfiable?Number.MAX_VALUE:this.right.scale*this.right.position()-this.gap-this.left.scale*this.left.position()},t}();r.Constraint=i;var o=function(){function t(t,e,r){void 0===e&&(e=1),void 0===r&&(r=1),this.desiredPosition=t,this.weight=e,this.scale=r,this.offset=0}return t.prototype.dfdv=function(){return 2*this.weight*(this.position()-this.desiredPosition)},t.prototype.position=function(){return(this.block.ps.scale*this.block.posn+this.offset)/this.scale},t.prototype.visitNeighbours=function(t,e){var r=function(r,n){return r.active&&t!==n&&e(r,n)};this.cOut.forEach(function(t){return r(t,t.right)}),this.cIn.forEach(function(t){return r(t,t.left)})},t}();r.Variable=o;var s=function(){function t(t){this.vars=[],t.offset=0,this.ps=new n(t.scale),this.addVariable(t)}return t.prototype.addVariable=function(t){t.block=this,this.vars.push(t),this.ps.addVariable(t),this.posn=this.ps.getPosn()},t.prototype.updateWeightedPosition=function(){this.ps.AB=this.ps.AD=this.ps.A2=0;for(var t=0,e=this.vars.length;t<e;++t)this.ps.addVariable(this.vars[t]);this.posn=this.ps.getPosn()},t.prototype.compute_lm=function(t,e,r){var n=this,i=t.dfdv();return t.visitNeighbours(e,function(e,o){var s=n.compute_lm(o,t,r);o===e.right?(i+=s*e.left.scale,e.lm=s):(i+=s*e.right.scale,e.lm=-s),r(e)}),i/t.scale},t.prototype.populateSplitBlock=function(t,e){var r=this;t.visitNeighbours(e,function(e,n){n.offset=t.offset+(n===e.right?e.gap:-e.gap),r.addVariable(n),r.populateSplitBlock(n,t)})},t.prototype.traverse=function(t,e,r,n){var i=this;void 0===r&&(r=this.vars[0]),void 0===n&&(n=null),r.visitNeighbours(n,function(n,o){e.push(t(n)),i.traverse(t,e,o,r)})},t.prototype.findMinLM=function(){var t=null;return this.compute_lm(this.vars[0],null,function(e){!e.equality&&(null===t||e.lm<t.lm)&&(t=e)}),t},t.prototype.findMinLMBetween=function(t,e){this.compute_lm(t,null,function(){});var r=null;return this.findPath(t,null,e,function(t,e){!t.equality&&t.right===e&&(null===r||t.lm<r.lm)&&(r=t)}),r},t.prototype.findPath=function(t,e,r,n){var i=this,o=!1;return t.visitNeighbours(e,function(e,s){o||s!==r&&!i.findPath(s,t,r,n)||(o=!0,n(e,s))}),o},t.prototype.isActiveDirectedPathBetween=function(t,e){if(t===e)return!0;for(var r=t.cOut.length;r--;){var n=t.cOut[r];if(n.active&&this.isActiveDirectedPathBetween(n.right,e))return!0}return!1},t.split=function(e){return e.active=!1,[t.createSplitBlock(e.left),t.createSplitBlock(e.right)]},t.createSplitBlock=function(e){var r=new t(e);return r.populateSplitBlock(e,null),r},t.prototype.splitBetween=function(e,r){var n=this.findMinLMBetween(e,r);if(null!==n){var i=t.split(n);return{constraint:n,lb:i[0],rb:i[1]}}return null},t.prototype.mergeAcross=function(t,e,r){e.active=!0;for(var n=0,i=t.vars.length;n<i;++n){var o=t.vars[n];o.offset+=r,this.addVariable(o)}this.posn=this.ps.getPosn()},t.prototype.cost=function(){for(var t=0,e=this.vars.length;e--;){var r=this.vars[e],n=r.position()-r.desiredPosition;t+=n*n*r.weight}return t},t}();r.Block=s;var u=function(){function t(t){this.vs=t;var e=t.length;for(this.list=new Array(e);e--;){var r=new s(t[e]);this.list[e]=r,r.blockInd=e}}return t.prototype.cost=function(){for(var t=0,e=this.list.length;e--;)t+=this.list[e].cost();return t},t.prototype.insert=function(t){t.blockInd=this.list.length,this.list.push(t)},t.prototype.remove=function(t){var e=this.list.length-1,r=this.list[e];this.list.length=e,t!==r&&(this.list[t.blockInd]=r,r.blockInd=t.blockInd)},t.prototype.merge=function(t){var e=t.left.block,r=t.right.block,n=t.right.offset-t.left.offset-t.gap;e.vars.length<r.vars.length?(r.mergeAcross(e,t,n),this.remove(e)):(e.mergeAcross(r,t,-n),this.remove(r))},t.prototype.forEach=function(t){this.list.forEach(t)},t.prototype.updateBlockPositions=function(){this.list.forEach(function(t){return t.updateWeightedPosition()})},t.prototype.split=function(t){var e=this;this.updateBlockPositions(),this.list.forEach(function(r){var n=r.findMinLM();null!==n&&n.lm<a.LAGRANGIAN_TOLERANCE&&(r=n.left.block,s.split(n).forEach(function(t){return e.insert(t)}),e.remove(r),t.push(n))})},t}();r.Blocks=u;var a=function(){function t(t,e){this.vs=t,this.cs=e,this.vs=t,t.forEach(function(t){t.cIn=[],t.cOut=[]}),this.cs=e,e.forEach(function(t){t.left.cOut.push(t),t.right.cIn.push(t)}),this.inactive=e.map(function(t){return t.active=!1,t}),this.bs=null}return t.prototype.cost=function(){return this.bs.cost()},t.prototype.setStartingPositions=function(t){this.inactive=this.cs.map(function(t){return t.active=!1,t}),this.bs=new u(this.vs),this.bs.forEach(function(e,r){return e.posn=t[r]})},t.prototype.setDesiredPositions=function(t){this.vs.forEach(function(e,r){return e.desiredPosition=t[r]})},t.prototype.mostViolated=function(){for(var e=Number.MAX_VALUE,r=null,n=this.inactive,i=n.length,o=i,s=0;s<i;++s){var u=n[s];if(!u.unsatisfiable){var a=u.slack();if((u.equality||a<e)&&(e=a,r=u,o=s,u.equality))break}}return o!==i&&(e<t.ZERO_UPPERBOUND&&!r.active||r.equality)&&(n[o]=n[i-1],n.length=i-1),r},t.prototype.satisfy=function(){null==this.bs&&(this.bs=new u(this.vs)),this.bs.split(this.inactive);for(var e=null;(e=this.mostViolated())&&(e.equality||e.slack()<t.ZERO_UPPERBOUND&&!e.active);){var r=e.left.block,n=e.right.block;if(r!==n)this.bs.merge(e);else{if(r.isActiveDirectedPathBetween(e.right,e.left)){e.unsatisfiable=!0;continue}var i=r.splitBetween(e.left,e.right);if(null===i){e.unsatisfiable=!0;continue}this.bs.insert(i.lb),this.bs.insert(i.rb),this.bs.remove(r),this.inactive.push(i.constraint),e.slack()>=0?this.inactive.push(e):this.bs.merge(e)}}},t.prototype.solve=function(){this.satisfy();for(var t=Number.MAX_VALUE,e=this.bs.cost();Math.abs(t-e)>1e-4;)this.satisfy(),t=e,e=this.bs.cost();return e},t.LAGRANGIAN_TOLERANCE=-1e-4,t.ZERO_UPPERBOUND=-1e-10,t}();r.Solver=a,t.exports=r},function(t,e,r){\"use strict\";function n(t){this.options=c.extend({layerGap:60,nodeHeight:10,direction:\"down\"},t)}function i(t){return\"L \"+t.join(\" \")}function o(t){return\"M \"+t.join(\" \")}function s(t,e,r){return\"C \"+t.join(\" \")+\" \"+e.join(\" \")+\" \"+r.join(\" \")}function u(t,e){var r=(t[1]+e[1])/2;return s([t[0],r],[e[0],r],e)}function a(t,e){var r=(t[0]+e[0])/2;return s([r,t[1]],[r,e[1]],e)}var c=r(4);n.lineTo=i,n.moveTo=o,n.curveTo=s,n.vCurveBetween=u,n.hCurveBetween=a,n.prototype.getWaypoints=function(t){var e=this.options,r=e.direction,n=t.getPathFromRoot(),i=e.nodeHeight+e.layerGap;return\"left\"===r?[[[0,n[0].idealPos]]].concat(n.map(function(t,r){var n=i*(r+1)*-1;return[[n+e.nodeHeight,t.currentPos],[n,t.currentPos]]})):\"right\"===r?[[[0,n[0].idealPos]]].concat(n.map(function(t,r){var n=i*(r+1);return[[n-e.nodeHeight,t.currentPos],[n,t.currentPos]]})):\"up\"===r?[[[n[0].idealPos,0]]].concat(n.map(function(t,r){var n=i*(r+1)*-1;return[[t.currentPos,n+e.nodeHeight],[t.currentPos,n]]})):[[[n[0].idealPos,0]]].concat(n.map(function(t,r){var n=i*(r+1);return[[t.currentPos,n-e.nodeHeight],[t.currentPos,n]]}))},n.prototype.layout=function(t){var e=this.options,r=e.layerGap+e.nodeHeight;switch(e.direction){case\"left\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=-n-e.nodeHeight,t.y=t.currentPos,t.dx=e.nodeHeight,t.dy=t.width});break;case\"right\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=n,t.y=t.currentPos,t.dx=e.nodeHeight,t.dy=t.width});break;case\"up\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=t.currentPos,t.y=-n-e.nodeHeight,t.dx=t.width,t.dy=e.nodeHeight});break;default:case\"down\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=t.currentPos,t.y=n,t.dx=t.width,t.dy=e.nodeHeight})}return t},n.prototype.generatePath=function(t){var e=this.options,r=e.direction,n=this.getWaypoints(t,r),s=[o(n[0][0])];return\"left\"===r||\"right\"===r?n.reduce(function(t,e,r){return s.push(a(t[t.length-1],e[0])),r<n.length-1&&s.push(i(e[1])),e}):n.reduce(function(t,e,r){return s.push(u(t[t.length-1],e[0])),r<n.length-1&&s.push(i(e[1])),e}),s.join(\" \")},t.exports=n}])});","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\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 objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\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 && (type == 'object' || type == 'function');\n}\n\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 && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// will be set by webpack\ndeclare const __VERSION__: string\ndeclare const __VERSION_PREFIX__: string\n\nexport const VERSION = __VERSION__\nexport const VERSION_PREFIX = __VERSION_PREFIX__\n","export type Params<T = any> = { [key: string]: T }\n\nexport function clone<T>(object: Params<T>): Params<T> {\n return mixin({}, object)\n}\n\nexport function concat<T>(object1: Params<T>, object2: Params<T>): Params<T> {\n return mixin(clone(object1), object2)\n}\n\nexport function mixin<T>(source: Params<T>, target: Params<T>): Params<T> {\n Object[\"assign\"](source, target)\n return source\n}\n","import { mixin } from \"../util/params\"\nimport { Data } from \"./base\"\nimport { Widget } from \"./widget\"\n\nexport interface Rendition {\n draw(): void\n}\nexport type Renderer = (widget: Widget, data: Data) => Rendition\nexport type Renderers = { [key: string]: Renderer }\n\nexport const alreadyDrawn: Rendition = {\n draw() {},\n}\n\nconst registeredRenderers: Renderers = {}\n\nexport function registerRenderers(renderers: Renderers) {\n mixin(registeredRenderers, renderers)\n}\n\nexport function getRegisteredRenderer(key: string) {\n return registeredRenderers[key]\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","import { select, selectAll, Selection, BaseType } from \"d3-selection\"\n\nexport function size(rect: ClientRect): [number, number] {\n return [rect.width, rect.height]\n}\n\nexport function setHeight(element: HTMLElement, height: number): void {\n select(element).style(\"height\", height + \"px\")\n}\n\nexport function closest(\n elements: Selection<HTMLElement, unknown, null, undefined>,\n selector: string\n): Selection<any, unknown, null, undefined> {\n let closestMatch: any = undefined\n let matchArr: any[] = []\n elements.each(function (this: any) {\n let elm = this\n while (typeof elm.parentNode.matches === \"function\" && !closestMatch) {\n elm = elm.parentNode\n if (elm.matches(selector)) {\n closestMatch = elm\n matchArr.push(closestMatch)\n }\n }\n closestMatch = undefined\n })\n return selectAll(matchArr)\n}\n\nexport function isDescendant(node: Node | null, parent: Node): boolean {\n for (;;) {\n if (!node || !parent) {\n return false\n }\n if (node.isSameNode(parent)) {\n return true\n }\n node = node.parentNode\n }\n}\n\nexport function onEvent<GElement extends Element, Datum>(\n eventName: string,\n parent: Element,\n children: Selection<GElement, Datum, BaseType, unknown> | string,\n handler: (value: Datum) => void\n) {\n select(parent).on(eventName, function (event: Event) {\n try {\n let actualChildren: Selection<GElement, Datum, BaseType, unknown>\n if (typeof children === \"string\") {\n actualChildren = select(parent).selectAll<GElement, Datum>(children)\n } else {\n actualChildren = children\n }\n actualChildren.each(function () {\n const node = this\n if (isDescendant(event.target as Node, node)) {\n handler.bind(node)(select<Element, Datum>(node).data()[0])\n }\n })\n } catch (error) {\n console.error(error)\n throw error\n }\n })\n}\n\nexport function isIE() {\n let ua = window.navigator.userAgent\n return (\n ua.indexOf(\"MSIE \") >= 0 ||\n ua.indexOf(\"Edge \") >= 0 ||\n ua.indexOf(\"Trident\") >= 0\n )\n}\n\nexport function isInViewport(element: Element) {\n const rect = element.getBoundingClientRect()\n return (\n rect.bottom > 0 &&\n rect.right > 0 &&\n rect.top < (window.innerHeight || document.documentElement.clientHeight) &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth)\n )\n}\n\n/**\n * Registers an event handler that executes once\n * when `element` enters the viewport\n */\nexport function addViewportHandler(\n element: Element,\n namespace: string,\n callback: () => void\n) {\n let handleViewportChange = () => {\n if (isInViewport(element)) {\n callback()\n $(window).off(`.${namespace}`)\n }\n }\n\n // Register event handler and do initial check\n $(window).on(\n `scroll.${namespace} resize.${namespace}`,\n debounce(handleViewportChange, 50)\n )\n handleViewportChange()\n}\n\nexport function debounce(callback: Function, wait: number) {\n let timer: number\n return (...args: any[]) => {\n window.clearTimeout(timer)\n timer = window.setTimeout(() => {\n callback(...args)\n }, wait)\n }\n}\n","export function trim(s: string) {\n return s ? s.trim() : s\n}\n\nexport function unescape(s: string): string | null {\n if (s) {\n const el = document.createElement(\"div\")\n el.innerHTML = s\n return el.innerText || el.textContent\n }\n return s\n}\n\nexport function encode(s: string): string {\n if (s) {\n s = encodeURIComponent(s).replace(/%20/g, \"+\")\n }\n return s\n}\n\nexport function decode(s: string): string {\n if (s) {\n s = decodeURIComponent(s.replace(/\\+/g, \"%20\"))\n }\n return s\n}\n\nexport function camelCased(s: string): string {\n return s.replace(/-([a-z])/g, (g) => g[1].toUpperCase())\n}\n\nexport function fromQueryString(query: string): Record<string, any> {\n const result: Record<string, any> = {}\n const a = (query[0] === \"?\" ? query.substr(1) : query).split(\"&\")\n for (let i = 0; i < a.length; i++) {\n const b = a[i].split(\"=\")\n result[decode(b[0])] = decode(b[1] || \"\")\n }\n return result\n}\n\nexport function toQueryString(object: Record<string, any>): string {\n const parts: string[] = []\n for (let i in object) {\n if (object.hasOwnProperty(i)) {\n let value = object[i]\n if (typeof value === \"object\") {\n value = JSON.stringify(value)\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n parts.push(encode(i) + \"=\" + encode(value as any))\n }\n }\n }\n return parts.join(\"&\")\n}\n","export type Data = any\nexport type Linkifier = (node: Element) => string\nexport type Handler = (param1?: any, param2?: any, param3?: any) => any\nexport type Callback = (value: any) => void\n\nexport function getDataDomain(): string {\n const scripts = document.scripts\n for (let i = 0; i < scripts.length; ++i) {\n const script = scripts[i]\n const src = script[\"src\"]\n if (src && src.indexOf(\"/viz.\") >= 0) {\n const pos = src.indexOf(\"/\", 9)\n if (pos >= 0) {\n return src.substring(0, pos)\n }\n }\n }\n return \"\"\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import { NorthData } from \"../viz-base\"\nimport { Callback, getDataDomain } from \"./base\"\nimport { json } from \"d3-fetch\"\n\nexport type RequestOptions = {\n apiKey?: string\n immediate?: boolean\n}\n\ntype Request = {\n options: RequestOptions\n success: Callback\n error: Callback\n}\n\ninterface DataSource {\n requestData(options: RequestOptions, success: Callback, error: Callback): void\n}\n\nexport const dataSource: DataSource = (function () {\n let waitingRequests: Request[] = []\n\n function requestData(\n options: RequestOptions,\n success: Callback,\n error: Callback\n ): void {\n const request = { options, success, error }\n if (options[\"immediate\"]) {\n executeRequests([request])\n } else {\n waitingRequests.push(request)\n window.setTimeout(executeWaitingRequests)\n }\n }\n\n function submit(\n apiKey: string | undefined,\n params: Record<string, any>,\n callback: (err: any, data: any) => void\n ) {\n const detectedDomain = NorthData.options.detectDataDomain\n ? getDataDomain()\n : undefined\n const domain = detectedDomain || NorthData.options.dataDomain\n const baseUrl =\n ((window as any)[\"dataDomain\"] /* undocumented: for CORS testing!*/ ||\n domain) + \"/data.json\"\n const headers = {\n \"Content-Type\": \"application/json; charset=UTF-8\",\n ...(apiKey && { \"X-Api-Key\": apiKey }),\n }\n\n json(baseUrl, {\n headers,\n method: \"POST\",\n body: JSON.stringify(params),\n })\n .then((data) => callback(null, data))\n .catch((error) => callback(error, undefined))\n }\n\n function executeRequests(requests: Request[]) {\n const options: RequestOptions[] = []\n const params: Record<string, any> = {}\n let apiKey: string | undefined = undefined\n for (const request of requests) {\n options.push(request.options)\n apiKey = apiKey ?? request.options[\"apiKey\"]\n }\n if (options.length > 0) {\n params[\"options\"] = options\n params[\"origin\"] = document.location.hostname\n params[\"v\"] = NorthData.version\n submit(apiKey, params, function (error: Error, response) {\n if (error) {\n for (let request of requests) {\n request.error(error.message)\n }\n } else {\n const results = response[\"result\"]\n requests.forEach((request, index) => {\n const result = results[index]\n const error = result.error\n if (error) {\n request.error(error.message)\n } else {\n request.success(results[index])\n }\n })\n }\n })\n }\n }\n\n function executeWaitingRequests() {\n executeRequests(waitingRequests)\n waitingRequests = []\n }\n\n return { requestData }\n})()\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export type SupportedLanguage = \"de\" | \"en\" | \"fr\"\n\nconst language: SupportedLanguage =\n document.documentElement.lang === \"en\"\n ? \"en\"\n : document.documentElement.lang === \"fr\"\n ? \"fr\"\n : \"de\"\n\nexport function getLanguage(): SupportedLanguage {\n return language\n}\n","import {\n timeFormatLocale,\n TimeLocaleDefinition,\n TimeLocaleObject,\n} from \"d3-time-format\"\nimport {\n timeSecond,\n timeMinute,\n timeHour,\n timeDay,\n timeWeek,\n timeMonth,\n timeYear,\n} from \"d3-time\"\nimport { formatLocale, FormatLocaleDefinition } from \"d3-format\"\n\nimport deDeTimeFormat from \"d3-time-format/locale/de-DE\"\nimport enUsTimeFormat from \"d3-time-format/locale/en-US\"\nimport frFrTimeFormat from \"d3-time-format/locale/fr-FR\"\n\nimport deDeFormat from \"d3-format/locale/de-DE\"\nimport enUsFormat from \"d3-format/locale/en-US\"\nimport frFrFormat from \"d3-format/locale/fr-FR\"\n\nimport { getLanguage } from \"../util/language\"\n\ntype NumberFormatter = (n: number) => string\ntype DateFormatter = (date: Date) => string\ntype DateStringFormatter = (date: string) => string\nexport interface NumberFormat {\n accuracy: number\n prefix: string\n postfix: string\n}\n\n//\nexport function trilingual(\n english: string,\n german: string,\n french: string = \"\"\n): string {\n return getLanguage() === \"de\"\n ? german\n : getLanguage() === \"fr\"\n ? french\n : english\n}\n\nexport function getI18n(): I18n {\n return getLanguage() === \"de\"\n ? German\n : getLanguage() === \"fr\"\n ? French\n : English\n}\n\nexport interface I18n {\n timeFormatLocaleDefinition: TimeLocaleDefinition\n numberFormatLocaleDefinition: FormatLocaleDefinition\n createNumberFormatter(\n numberFormat: NumberFormat,\n d3FormatSpecifier: string\n ): NumberFormatter\n decimalFormatter: NumberFormatter\n numberFormatter: NumberFormatter\n dateFormatter: DateFormatter & DateStringFormatter\n timeScaleFormatter: DateFormatter\n}\n\n/**\n * Creates a conditional time formatter for time scales.\n * https://github.com/d3/d3-time-format#d3-time-format\n */\nfunction createTimeScaleFormatter(timeLocale: TimeLocaleObject): DateFormatter {\n const formatMillisecond = timeLocale.format(\".%L\")\n const formatSecond = timeLocale.format(\":%S\")\n const formatMinute = timeLocale.format(\"%I:%M\")\n const formatHour = timeLocale.format(\"%I %p\")\n const formatDay = timeLocale.format(\"%a %d\")\n const formatWeek = timeLocale.format(\"%b %d\")\n const formatMonth = timeLocale.format(\"%B\")\n const formatYear = timeLocale.format(\"%Y\")\n\n return (date) =>\n (timeSecond(date) < date\n ? formatMillisecond\n : timeMinute(date) < date\n ? formatSecond\n : timeHour(date) < date\n ? formatMinute\n : timeDay(date) < date\n ? formatHour\n : timeMonth(date) < date\n ? timeWeek(date) < date\n ? formatDay\n : formatWeek\n : timeYear(date) < date\n ? formatMonth\n : formatYear)(date)\n}\n\nfunction createI18n(\n timeFormatLocaleDefinition: TimeLocaleDefinition,\n numberFormatLocaleDefinition: FormatLocaleDefinition\n): I18n {\n const timeLocale = timeFormatLocale(timeFormatLocaleDefinition)\n const numberLocale = formatLocale(numberFormatLocaleDefinition)\n\n const round2 = (x: number) => Math.round(x * 100) / 100\n const _decimalFormatter = numberLocale.format(\",.2f\")\n const _numberFormatter = numberLocale.format(\",.0f\")\n const _dateFormatter = timeLocale.format(timeFormatLocaleDefinition.date)\n\n return {\n timeFormatLocaleDefinition: timeFormatLocaleDefinition,\n numberFormatLocaleDefinition: numberFormatLocaleDefinition,\n createNumberFormatter: function (\n numberFormat: NumberFormat,\n d3FormatSpecifier: string\n ): NumberFormatter {\n const accuracy = numberFormat.accuracy\n const d3formatter = numberLocale.format(d3FormatSpecifier)\n return (value) =>\n numberFormat.prefix +\n d3formatter(value / accuracy) +\n numberFormat.postfix\n },\n decimalFormatter: (x) => _decimalFormatter(round2(x)),\n numberFormatter: (x) => _numberFormatter(Math.round(x)),\n dateFormatter: (date: Date | string) => {\n if (!date) {\n return \"\"\n }\n if (typeof date === \"string\") {\n date = new Date(date)\n }\n return _dateFormatter(date)\n },\n timeScaleFormatter: createTimeScaleFormatter(timeLocale),\n }\n}\n\nexport const German = createI18n(\n deDeTimeFormat as TimeLocaleDefinition,\n { ...deDeFormat, currency: [\"€\", \"\"] } as FormatLocaleDefinition\n)\n\nexport const English = createI18n(\n {\n ...enUsTimeFormat,\n // use international style instead:\n date: \"%Y-%m-%d\",\n } as TimeLocaleDefinition,\n {\n ...enUsFormat,\n currency: [\"€\", \"\"],\n } as FormatLocaleDefinition\n)\n\nexport const French = createI18n(\n frFrTimeFormat as TimeLocaleDefinition,\n { ...frFrFormat, currency: [\"€\", \"\"] } as FormatLocaleDefinition\n)\n","import { BaseType, Selection } from \"d3-selection\"\nimport { hsl, HSLColor } from \"d3-color\"\nimport { select } from \"d3-selection\"\n\nimport { Rendition, getRegisteredRenderer } from \"./renderer\"\nimport { Handler, Linkifier } from \"./base\"\nimport { setHeight } from \"../util/dom\"\nimport { camelCased } from \"../util/string\"\nimport { dataSource, RequestOptions } from \"./datasource\"\nimport { I18n, German, English, French } from \"./i18n\"\nimport { NorthData } from \"../viz-base\"\n\ninterface WidgetOptions extends RequestOptions {\n type?: string\n colors?: string | string[]\n [key: string]: unknown\n}\n\nexport class Widget {\n data: {}\n chart?: Rendition\n readonly container: HTMLElement\n readonly widgetType: string\n readonly options: WidgetOptions\n readonly items: HTMLElement[] = []\n\n constructor(container: HTMLElement | string, options: WidgetOptions) {\n const containerNode =\n typeof container == \"string\"\n ? document.getElementById(container)\n : container\n if (!containerNode) {\n throw new Error(\"container node undefined or null\")\n }\n this.container = containerNode\n this.options = mixinDataAttributes(options, this.container)\n const widgetType = this.stringValue(\"type\") || this.stringValue(\"layout\")\n if (!widgetType) {\n throw new Error(\"no widget type specified\")\n }\n this.widgetType = widgetType\n this.options[\"type\"] = widgetType\n if (widgetType == \"graph\" || widgetType == \"contact\") {\n // don't bundle heavy calls with others\n this.options[\"immediate\"] = true\n }\n const loadHandler = this.load.bind(this)\n this.data = this.objectValue(\"data\") as object\n // if data is available, continue with load handler\n if (this.data) {\n window.setTimeout(loadHandler)\n }\n // if data is not yet available, request it from the server\n else {\n dataSource.requestData(this.options, loadHandler, this.fail.bind(this))\n }\n }\n\n getType() {\n return this.widgetType\n }\n\n fail(error: unknown) {\n const onError = this.handlerValue(\"error\")\n if (onError) {\n onError(error)\n } else {\n NorthData.log(\"error\", error)\n }\n }\n\n load(data: any) {\n this.data = this.data || data\n try {\n const renderer = getRegisteredRenderer(this.widgetType)\n if (!renderer) {\n throw new Error(\"invalid widget type: \" + this.widgetType)\n }\n this.chart = renderer(this, this.data)\n this.container.setAttribute(\"data-layout\", this.widgetType)\n this.draw()\n } catch (error) {\n this.fail(error)\n return\n }\n const onSuccess = this.handlerValue(\"success\")\n if (onSuccess) {\n onSuccess()\n }\n }\n\n showItem(title: string | undefined, itemNode: HTMLElement) {\n const defaultItemHandler = (title: string, element: HTMLElement) => {\n const legacyBehavior = !!this.stringValue(\"subject\")\n if (legacyBehavior) {\n return element\n }\n const result = document.createElement(\"div\")\n const titleEl = document.createElement(\"h2\")\n titleEl.textContent = title\n result.appendChild(titleEl)\n result.appendChild(element)\n return result\n }\n const itemHandler = this.handlerValue(\"handleItem\") || defaultItemHandler\n const handledItem = itemHandler(title as string, itemNode) as HTMLElement\n if (handledItem) {\n this.container.appendChild(handledItem)\n this.items.push(handledItem)\n }\n }\n\n adjustSize(element: HTMLElement) {\n const rect = element.getBoundingClientRect()\n const width = this.numberValue(\"width\") || rect.width\n const height = this.numberValue(\"height\") || rect.height\n const ratio = this.numberValue(\"ratio\")\n const minHeight = this.numberValue(\"minHeight\")\n const maxHeight = this.numberValue(\"maxHeight\")\n let newHeight = height\n if (ratio) {\n newHeight = width * ratio\n }\n if (minHeight) {\n newHeight = Math.max(newHeight, minHeight)\n }\n if (maxHeight) {\n newHeight = Math.min(newHeight, maxHeight)\n }\n if (height != newHeight) {\n setHeight(element, newHeight)\n }\n }\n\n draw() {\n this.adjustSize(this.container)\n if (this.chart) {\n this.chart.draw()\n select(this.container)\n .selectAll<HTMLElement, unknown>(\"*\")\n .each(function () {\n // IE <= 11 compatibility\n let transform = this.getAttribute(\"transform\")\n if (!transform) {\n transform = getComputedStyle(this).getPropertyValue(\"transform\")\n if (transform && transform != \"none\") {\n this.setAttribute(\"transform\", transform)\n }\n }\n })\n }\n }\n\n markup<GElement extends BaseType, Datum, PElement extends BaseType>(\n html: Selection<GElement, Datum, PElement, unknown>\n ) {\n const companyClick = this.handlerValue(\"companyClick\")\n if (companyClick) {\n html.selectAll(\".company\").attr(\"data-clickable\", true)\n }\n const personClick = this.handlerValue(\"personClick\")\n if (personClick) {\n html.selectAll(\".person\").attr(\"data-clickable\", true)\n }\n const addressClick = this.handlerValue(\"addressClick\")\n if (addressClick) {\n html.selectAll(\"address\").attr(\"data-clickable\", true)\n }\n const registerClick = this.handlerValue(\"registerClick\")\n if (registerClick) {\n html.selectAll(\".register\").attr(\"data-clickable\", true)\n }\n const filingClick = this.handlerValue(\"filingClick\")\n if (filingClick) {\n html.selectAll(\".filing\").attr(\"data-clickable\", true)\n }\n\n html.on(\"click\", function (event: Event) {\n const target = event.target as HTMLElement\n const data = dataAttributesToObject(target)\n let handled\n if (companyClick && target.classList.contains(\"company\")) {\n companyClick(data)\n handled = true\n }\n if (personClick && target.classList.contains(\"person\")) {\n personClick(data)\n handled = true\n }\n if (addressClick && target.tagName == \"ADDRESS\") {\n addressClick({ query: target.textContent })\n handled = true\n }\n if (registerClick && target.classList.contains(\"register\")) {\n registerClick({ query: target.textContent })\n handled = true\n }\n if (filingClick && target.classList.contains(\"filing\")) {\n filingClick({ query: target.textContent })\n handled = true\n }\n if (handled) {\n event.preventDefault()\n }\n })\n }\n\n invokeClickHandler(query: unknown, dataType?: string): boolean {\n const handler = this.getClickHandler(dataType)\n if (handler) {\n handler(query)\n return true\n }\n return false\n }\n\n getClickHandler(dataType?: string): Handler | undefined {\n if (dataType) {\n switch (dataType.toString().toLowerCase()[0]) {\n case \"c\":\n return this.handlerValue(\"companyClick\")\n case \"p\":\n return this.handlerValue(\"personClick\")\n case \"h\":\n return this.handlerValue(\"publicationClick\")\n }\n }\n }\n\n getLinkifier(): Linkifier {\n return (this.handlerValue(\"linkify\") as Linkifier) || defaultLinkify\n }\n\n getRootColor(): HSLColor {\n return hsl(this.stringValue(\"rootColor\") || \"#00dddd\")\n }\n\n isReverseChronology(): boolean {\n return this.stringValue(\"chronology\") === \"reverse\"\n }\n\n getLanguage(): string {\n return this.stringValue(\"language\") || \"de\"\n }\n\n i18n(): I18n {\n return this.getLanguage() == \"de\"\n ? German\n : this.getLanguage() == \"fr\"\n ? French\n : English\n }\n\n trilingual(english: string, german: string, french: string): string {\n return this.getLanguage() == \"de\"\n ? german\n : this.getLanguage() == \"fr\"\n ? french\n : english\n }\n\n isPrint() {\n return (\n document.documentElement.classList &&\n document.documentElement.classList.contains(\"print\")\n )\n }\n\n numberValue(key: string): number | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value() as number\n }\n if (typeof value === \"number\") {\n return value\n }\n if (typeof value === \"string\") {\n return Number(value)\n }\n }\n\n stringValue(key: string): string | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value() as string\n }\n if (typeof value === \"string\") {\n return value\n }\n }\n\n nodeValue(key: string): HTMLElement | undefined {\n let value = this.options[key]\n if (typeof value === \"object\") {\n return value as HTMLElement\n }\n if (typeof value === \"function\") {\n return value() as HTMLElement\n }\n if (typeof value === \"string\") {\n return select(this.container)\n .select<HTMLElement>(value)\n .node() as HTMLElement\n }\n }\n\n objectValue(key: string): string | object | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value() as string\n }\n if (typeof value === \"object\") {\n if (value === null) {\n return undefined\n }\n return value\n }\n if (typeof value === \"string\") {\n // parse json\n return JSON.parse(value)\n }\n }\n\n handlerValue(key: string): Handler | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value.bind(this)\n }\n }\n}\n\nfunction mixinDataAttributes(\n options: WidgetOptions,\n container: HTMLElement\n): WidgetOptions {\n const result: Record<string, any> = {}\n Object[\"assign\"](result, options)\n for (let i = 0; i < container.attributes.length; ++i) {\n const attribute = container.attributes[i]\n const name = attribute.name\n if (name.indexOf(\"data-\") === 0) {\n const key = camelCased(name.substring(5))\n result[key] = result[key] || attribute.value\n }\n }\n return result\n}\n\nfunction dataAttributesToObject(element: HTMLElement): {} {\n return mixinDataAttributes({}, element)\n}\n\nconst defaultLinkify = () => null\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import { select } from \"d3-selection\"\n\nexport function tooltip() {\n const tooltip = select(\"body\")\n .append(\"div\")\n .attr(\"class\", \"tooltip ui basic black label\")\n .style(\"position\", \"fixed\")\n .style(\"top\", 0)\n .style(\"left\", 0)\n .style(\"pointer-events\", \"none\")\n .style(\"visibility\", \"hidden\")\n\n return {\n position(clientX: number, clientY: number) {\n const distance = 16\n const clientWidth = document.documentElement.clientWidth\n const width = tooltip.node()!.offsetWidth\n const height = tooltip.node()!.offsetHeight\n\n const leftPointing = clientX + width + distance < clientWidth\n\n const left = leftPointing\n ? clientX + distance\n : clientX - width - distance\n const top = clientY - height / 2\n\n tooltip\n .style(\"transform\", `translate(${left}px, ${top}px)`)\n .classed(\"left right pointing\", false)\n .classed(leftPointing ? \"left\" : \"right\", true)\n .classed(\"pointing\", true)\n return this\n },\n visible(makeVisible: boolean) {\n tooltip\n .interrupt()\n .transition()\n .delay(makeVisible ? 0 : 100)\n .duration(0)\n .style(\"visibility\", () => (makeVisible ? null : \"hidden\"))\n return this\n },\n content(content: string) {\n tooltip.html(content)\n return this\n },\n }\n}\n","import { create, select } from \"d3-selection\"\nimport { extent } from \"d3-array\"\nimport { scaleBand, scaleLinear } from \"d3-scale\"\nimport { axisBottom, axisLeft } from \"d3-axis\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { tooltip } from \"../tooltip\"\nimport { NumberFormat } from \"../i18n\"\n\ninterface Bar {\n year: string\n value0: number\n note: string\n formattedValue: string\n source?: {\n publicationTitle: string\n }\n}\n\ninterface ChartData {\n colors: string[]\n title: string\n colorIndexes: number[]\n estimate: boolean[]\n numberFormat: NumberFormat\n data: Bar[]\n}\n\ninterface Chart {\n data: ChartData\n title: string\n item: string\n}\n\ninterface Data {\n note: string\n item: Chart[]\n}\n\nexport const barChart: Renderer = function (\n widget: Widget,\n allData: Data\n): Rendition {\n type Drawable = () => void\n const drawables: Drawable[] = []\n const note = allData.note\n\n if ((!allData.item || allData.item.length == 0) && !note) {\n throw new Error(\"no data\")\n }\n\n const margin = { top: 15, right: 10, bottom: 50, left: 15 }\n\n const hoverTooltip = tooltip()\n\n function tooltipContent(item: Bar, title: string) {\n const itemNote = item.note\n ? \"<span class='note'>\" + item.note + \"</span>\"\n : \"\"\n const itemSource =\n item.source && item.source.publicationTitle\n ? \"<span class='source'>\" +\n widget.trilingual(\"Source: \", \"Quelle: \", \"Source: \") +\n item.source.publicationTitle +\n \"</span>\"\n : \"\"\n return (\n \"<span class='name'>\" +\n title +\n \" \" +\n item.year +\n \"</span>\" +\n \"<span class='value'>\" +\n item.formattedValue +\n \"</span>\" +\n itemNote +\n itemSource\n )\n }\n\n for (const detail of allData.item) {\n const data = detail.data\n if (!data) {\n continue\n }\n\n const colorValue = widget.options.colors\n let colors =\n typeof colorValue === \"string\" ? colorValue.split(\"|\") : colorValue\n colors = colors ?? data.colors\n\n const key = data.title.substring(0, 3)\n const barColors: string[] = []\n const colorIndexes = data.colorIndexes\n for (let i = 0; i < colorIndexes.length; ++i) {\n const colorIndex = colorIndexes[i]\n const barColor = data.estimate[i]\n ? \"url(#diag\" + key + colorIndex + \")\"\n : colors[colorIndex]\n barColors.push(barColor)\n }\n\n const patternDefs = create(\"svg:defs\")\n patternDefs\n .selectAll(\"pattern\")\n .data(colors)\n .join(\"svg:pattern\")\n .attr(\"id\", (_, index) => `diag${key}${index}`)\n .attr(\"width\", 10)\n .attr(\"height\", 10)\n .attr(\"patternTransform\", \"rotate(45 0 0)\")\n .attr(\"patternUnits\", \"userSpaceOnUse\")\n .attr(\n \"transform\",\n \"matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0)\"\n )\n .append(\"svg:line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y2\", 10)\n .style(\"stroke\", (color) => color)\n .style(\"stroke-width\", 15)\n\n let [min, max] = extent(data.data, (item: Bar) => item.value0) as [\n number,\n number,\n ]\n max = Math.max(max, 1)\n min = Math.min(min, 0)\n const yTicks = Math.min(5, Math.ceil(max))\n\n const itemNode = document.createElement(\"div\")\n itemNode.setAttribute(\"data-item\", detail.item)\n widget.showItem(detail.title, itemNode)\n\n const svg = select(itemNode)\n .style(\"height\", \"100%\")\n .append(\"svg\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n\n svg.attr(\"aria-label\", detail.title)\n\n svg.append(() => patternDefs.node())\n\n const xScale = scaleBand()\n .domain(data.data.map((bar) => bar.year))\n .padding(0.2)\n const xAxis = axisBottom(xScale)\n const xAxisGroup = svg.append(\"g\").classed(\"x-axis\", true)\n\n const yScale = scaleLinear().domain([min, max])\n const yAxis = axisLeft<number>(yScale)\n .tickSizeInner(0)\n .tickSizeOuter(0)\n .ticks(yTicks)\n .tickFormat(\n widget.i18n().createNumberFormatter(data.numberFormat, \",.0f\")\n )\n const yAxisGroup = svg.append(\"g\").classed(\"y-axis\", true)\n\n const tooltipGroup = svg.append(\"g\")\n const rectGroup = svg.append(\"g\")\n\n const redraw = () => {\n const { width, height } = itemNode.getBoundingClientRect()\n\n svg.attr(\"viewBox\", `0 0 ${width} ${height}`)\n\n yScale.range([height - margin.bottom, margin.top])\n yAxisGroup\n .call(yAxis)\n .attr(\"font-size\", null)\n .attr(\"font-family\", null)\n .call((g) =>\n g\n .selectAll<SVGGElement, number>(\".tick\")\n .classed(\"zero\", (d) => d === 0)\n )\n\n // Determine size of the widest label\n let yAxisLabelWidth = 45\n yAxisGroup\n .selectAll<SVGSVGElement, unknown>(\".tick > text\")\n .each(function (this: SVGSVGElement) {\n yAxisLabelWidth = Math.max(yAxisLabelWidth, this.getBBox().width)\n })\n\n // Adjust inner tick size by setting x2 attribute\n // `tickSizeInner` cannot be used as the left margin is not known before rendering\n const marginLeft = margin.left + yAxisLabelWidth\n yAxisGroup\n .attr(\"transform\", `translate(${marginLeft},0)`)\n .selectAll(\".tick > line\")\n .attr(\"x2\", width - marginLeft - margin.right)\n\n xScale.range([marginLeft, width - margin.right])\n xAxis.tickSizeInner(-(height - margin.top - margin.bottom))\n xAxisGroup\n .attr(\"transform\", `translate(0,${height - margin.bottom})`)\n .call(xAxis)\n .call((g) => g.select(\".domain\").remove())\n .attr(\"font-size\", null)\n .attr(\"font-family\", null)\n\n const barHeight = (value0: number) =>\n Math.abs((yScale(0) as number) - (yScale(value0) as number))\n\n rectGroup\n .selectAll(\"rect\")\n .data(data.data)\n .join(\"rect\")\n .attr(\"x\", (d) => xScale(d.year) as number)\n .attr(\"y\", (d) => yScale(Math.max(d.value0, 0)) as number)\n .attr(\"height\", (d) =>\n // Ensure that the height is always >= 0\n // Otherwise the bar isn't displayed and doesn't show tooltips, etc.\n Math.max(barHeight(d.value0), 1.0)\n )\n .attr(\"width\", xScale.bandwidth())\n .attr(\"fill\", (_, index) => barColors[index])\n\n // Create a transparent bar for tooltips\n // if the original bar height is below the threshold\n const minimumBarHeight = 45\n tooltipGroup\n .selectAll(\"rect\")\n .data(data.data.filter((d) => barHeight(d.value0) < minimumBarHeight))\n .join(\"rect\")\n .attr(\"x\", (d) => xScale(d.year) as number)\n .attr(\"y\", (d) => {\n const offset = d.value0 > 0 ? minimumBarHeight : 0\n return (yScale(0) as number) - offset\n })\n .attr(\"height\", minimumBarHeight)\n .attr(\"width\", xScale.bandwidth())\n .attr(\"fill\", \"transparent\")\n\n // Attach tooltip event to all rects\n svg\n .selectAll<SVGElement, Bar>(\"g > rect\")\n .on(\"mousemove\", (event: MouseEvent) => {\n hoverTooltip.position(event.clientX, event.clientY)\n })\n .on(\"mouseover\", (_event, bar) => {\n hoverTooltip.content(tooltipContent(bar, detail.title)).visible(true)\n })\n .on(\"mouseout\", () => {\n hoverTooltip.visible(false)\n })\n }\n\n drawables.push(redraw)\n }\n\n if (note) {\n const noteNode = document.createElement(\"div\")\n const html = select(noteNode).classed(\"note\", true).html(note)\n widget.markup(html)\n widget.container.appendChild(noteNode)\n }\n\n return {\n draw: function () {\n for (const drawable of drawables) {\n drawable()\n }\n },\n }\n}\n","import { Data } from \"../base\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\nexport const contact: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (data) {\n const handler = widget.handlerValue(\"load\")\n if (handler) {\n handler(data)\n }\n }\n\n return alreadyDrawn\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import { select, Selection, BaseType } from \"d3-selection\"\nimport { line, curveLinear } from \"d3-shape\"\nimport { Widget } from \"./widget\"\nimport * as Dom from \"../util/dom\"\nimport { NorthData } from \"../viz-base\"\n\nexport interface Node {\n x: number\n y: number\n id: number\n desc: string\n children?: Node[]\n root: boolean\n old?: boolean\n warning?: string\n distance?: number\n url?: string\n text: string\n clickable?: boolean\n icon: string\n type: string\n query: unknown\n}\n\nexport interface Link {\n source: Node\n target: Node\n}\n\nexport const bigNodeRadius = 20\nexport const smallNodeRadius = 8\n\nexport function createArrowPath(arrowSize: number): string {\n const arrowRatio = 0.5\n const d = [\n { x: 0, y: 0 },\n { x: 1, y: arrowRatio },\n { x: 1, y: -arrowRatio },\n { x: 0, y: 0 },\n ]\n const lineFunction = line<{ x: number; y: number }>()\n .x(function (d) {\n return arrowSize * d.x\n })\n .y(function (d) {\n return arrowSize * d.y\n })\n .curve(curveLinear)\n return lineFunction(d) as string\n}\n\n// in SVG, texts don't have background. Thus, we add a \"rect\" element to serve as the background\n// this function keeps the position and width of text and background in sync\nexport function syncTextBackground<\n GElement extends BaseType,\n Datum,\n PElement extends BaseType,\n>(\n elements: Selection<GElement, Datum, PElement, unknown>,\n textSelector: string,\n bgSelector: string,\n marginX: number,\n marginY: number,\n maxWidth: number,\n cornerRadius: number = 0\n) {\n elements.each(function () {\n const parent = select(this)\n const text = parent.select<SVGTextElement>(textSelector).node()\n const bg = parent.select<SVGRectElement>(bgSelector).node()\n if (text && bg && text.textContent) {\n const bbox = text.getBBox()\n const dx = Number(parent.attr(\"data-dx\"))\n if (dx != 0) {\n const oldX = bbox.x\n const minX = -dx + marginX\n const maxX = maxWidth - marginX - bbox.width - dx\n if (oldX < minX) {\n bbox.x = minX\n select(text).attr(\"x\", minX - oldX)\n } else if (oldX > maxX) {\n bbox.x = maxX\n select(text).attr(\"x\", maxX - oldX)\n }\n }\n select(bg)\n .attr(\"width\", bbox.width + marginX * 2)\n .attr(\"height\", bbox.height + marginY * 2)\n .attr(\"x\", bbox.x - marginX)\n .attr(\"y\", bbox.y - marginY)\n .attr(\"rx\", cornerRadius)\n .attr(\"ry\", cornerRadius)\n }\n })\n}\n\nfunction moveToFront(elements: Element[]) {\n // in SVG, the last children are always in front\n // thus, we have to move the elements to the end in their parent's children list\n // this is only possible by re-appending them.\n elements.reverse()\n const uniqueElements: Element[] = []\n for (let element of elements) {\n if (uniqueElements.indexOf(element) < 0) {\n uniqueElements.push(element)\n }\n }\n uniqueElements.reverse()\n const size = uniqueElements.length\n if (size > 0 && !Dom.isIE()) {\n const first = uniqueElements[0]\n const parent = first.parentNode\n const children = parent == null ? [] : parent.childNodes\n // move only if not already there to avoid flickering\n let alreadyThere = true\n for (let i = 0; i < size; ++i) {\n if (children[children.length - size + i] != uniqueElements[i]) {\n alreadyThere = false\n break\n }\n }\n if (!alreadyThere) {\n for (let element of uniqueElements) {\n const parent = element.parentNode\n parent?.appendChild(element)\n }\n }\n }\n}\n\nexport function drawNodes<\n GElement extends BaseType,\n Datum,\n PElement extends BaseType,\n>(\n widget: Widget,\n svg: Selection<GElement, Datum, PElement, unknown>,\n nodes: Node[],\n rootId: number | undefined,\n denseLeaves: boolean\n) {\n const maxWidth = widget.container.getBoundingClientRect().width\n\n function selectNode(id: number) {\n return svg.select<Element>(\".node[data-id='\" + id + \"']\")\n }\n\n function selectRootNode() {\n return svg.select<Element>(\"[data-root]\")\n }\n\n let restoreDefaultOrder: number /* timeout handler */\n\n function highlight(node: Node) {\n const nodeId = node.id\n const highlightMode = nodeId == rootId ? \"root\" : \"node\"\n\n // highlight node\n const nodeEl = selectNode(nodeId).attr(\"data-highlight\", highlightMode)\n nodeEl.select<Element>(\".text\").text(node.desc)\n syncTextBackground(\n nodeEl,\n \".text\",\n \".text-bg\",\n denseLeaves ? 2 : 5,\n 2,\n maxWidth\n )\n\n // highlight links\n const linkEls = svg\n .selectAll<\n Element,\n Link\n >(\"[data-source-id='\" + nodeId + \"'],[data-target-id='\" + nodeId + \"']\")\n .attr(\"data-highlight\", highlightMode)\n syncTextBackground(linkEls, \".desc\", \".desc-bg\", 3, 2, maxWidth)\n\n // bring highlighted stuff to front\n window.clearTimeout(restoreDefaultOrder)\n const toBeMoved: Element[] = []\n linkEls.each(function (link) {\n toBeMoved.push(this)\n function moveOtherEndToFront(id: number) {\n if (id != nodeId) {\n toBeMoved.push(selectNode(id).node() as Element)\n }\n }\n moveOtherEndToFront(link.source.id)\n moveOtherEndToFront(link.target.id)\n })\n toBeMoved.push(nodeEl.node() as Element)\n moveToFront(toBeMoved)\n } // end highlight\n\n function arrangeInDefaultOrder() {\n const toBeMoved: Element[] = []\n svg.select<Element>(\".node\").each(function () {\n toBeMoved.push(this)\n })\n toBeMoved.push(selectRootNode().node() as Element)\n moveToFront(toBeMoved)\n }\n\n function unhighlight(node: Node) {\n svg.selectAll(\"[data-highlight]\").attr(\"data-highlight\", \"false\")\n const nodeEl = svg.select(\".node[data-id='\" + node.id + \"']\")\n nodeEl.select(\".text\").text(node.text).attr(\"x\", 0)\n\n restoreDefaultOrder = window.setTimeout(arrangeInDefaultOrder, 1000)\n }\n\n let d3NodesContainer = svg.select<SVGGElement>(\"g.nodes\")\n\n if (d3NodesContainer.empty()) {\n d3NodesContainer = svg.append(\"g\").attr(\"class\", \"nodes\")\n }\n\n d3NodesContainer.style(\"pointer-events\", \"all\")\n const d3Nodes = d3NodesContainer.selectAll(\".node\").data(nodes)\n\n const clickable = (node: Node) => node.clickable || !node.root\n // I think all code related to d3NewNodes can be deleted safely\n // because the rendering is now done on the server\n const d3NewNodes = d3Nodes\n .enter()\n .append<SVGAElement>(\"svg:a\")\n .attr(\"class\", \"node\")\n .attr(\"data-leaf\", (node) => !node.children || node.children.length == 0)\n .attr(\"data-id\", (node) => node.id)\n .attr(\"data-root\", (node) => node.root)\n .attr(\"data-old\", (node) => node.old ?? null)\n .attr(\"data-warning\", (node) => node.warning ?? null)\n .attr(\"data-d\", (node) => node.distance ?? null)\n .attr(\"xlink:href\", function (node) {\n return node.url || \"\" // clickable(node) ? widget.getLinkifier()(this) : null\n })\n .attr(\"data-clickable\", (node) =>\n clickable(node) && widget.getClickHandler(node.type) ? true : null\n )\n .on(\"click\", function (event: Event, node) {\n if (clickable(node)) {\n if (widget.invokeClickHandler(node.query, node.type)) {\n event.preventDefault()\n }\n }\n })\n\n Dom.onEvent(\n \"mouseover\",\n d3NodesContainer.node() as Element,\n d3NewNodes,\n highlight\n )\n Dom.onEvent(\n \"mouseout\",\n d3NodesContainer.node() as Element,\n d3NewNodes,\n unhighlight\n )\n\n d3NewNodes.append(\"circle\").attr(\"r\", bigNodeRadius)\n\n d3NewNodes\n .append(\"text\")\n .attr(\"class\", \"icon\")\n .text((node) => node.icon)\n\n d3NewNodes.append(\"rect\").attr(\"class\", \"text-bg\")\n\n d3NewNodes\n .append(\"text\")\n .attr(\"class\", \"text\")\n .text((node) => node.text)\n\n d3NewNodes\n .filter(\"[data-warning]\")\n .append(\"circle\")\n .attr(\"r\", 7)\n .attr(\"data-warn\", true)\n .attr(\"transform\", \"translate(20, -20)\")\n d3NewNodes\n .filter(\"[data-warning]\")\n .append(\"text\")\n .attr(\"r\", 8)\n .attr(\"class\", \"icon\")\n .text(\"\\uf071\")\n .attr(\"data-warn\", true)\n .append(\"title\")\n .text((node) => node.warning ?? \"\")\n\n arrangeInDefaultOrder()\n\n return d3NewNodes\n}\n\nexport function enrichNodes<\n GElement extends BaseType,\n Datum,\n PElement extends BaseType,\n>(\n widget: Widget,\n svg: Selection<GElement, Datum, PElement, unknown>,\n //nodes: Node[]\n //rootId: number | undefined,\n denseLeaves: boolean\n) {\n const maxWidth = widget.container.getBoundingClientRect().width\n\n function selectNode(id: string) {\n return svg.select<Element>(\".node[data-id='\" + id + \"']\")\n }\n\n function selectRootNode() {\n return svg.select<Element>(\"[data-root]\")\n }\n\n let restoreDefaultOrder: number /* timeout handler */\n\n function highlight(node: Element) {\n const nodeId = node.getAttribute(\"data-id\")\n const highlightMode =\n node.getAttribute(\"data-root\") == \"true\" ? \"root\" : \"node\"\n\n // highlight node\n node.setAttribute(\"data-highlight\", highlightMode)\n var textNode = node.querySelector(\".text\")\n if (textNode) {\n textNode.textContent = node.getAttribute(\"data-description\")\n }\n\n syncTextBackground(\n select(node),\n \".text\",\n \".text-bg\",\n denseLeaves ? 2 : 5,\n 2,\n maxWidth\n )\n\n // highlight links\n const linkEls = svg\n .selectAll<\n Element,\n Link\n >(\".link[data-source-id='\" + nodeId + \"'],.link[data-target-id='\" + nodeId + \"']\")\n .attr(\"data-highlight\", highlightMode)\n syncTextBackground(linkEls, \".desc\", \".desc-bg\", 3, 2, maxWidth)\n\n // bring highlighted stuff to front\n window.clearTimeout(restoreDefaultOrder)\n const toBeMoved: Element[] = []\n linkEls.each(function (link) {\n var linkEl = this\n toBeMoved.push(linkEl)\n function moveOtherEndToFront(id: string) {\n if (id != nodeId) {\n toBeMoved.push(selectNode(id).node() as Element)\n }\n }\n moveOtherEndToFront(linkEl.getAttribute(\"data-source-id\") || \"\")\n moveOtherEndToFront(linkEl.getAttribute(\"data-target-id\") || \"\")\n })\n toBeMoved.push(node)\n moveToFront(toBeMoved)\n }\n\n function arrangeInDefaultOrder() {\n const toBeMoved: Element[] = []\n svg.select<Element>(\".node\").each(function () {\n toBeMoved.push(this)\n })\n toBeMoved.push(selectRootNode().node() as Element)\n moveToFront(toBeMoved)\n }\n\n function unhighlight(node: Element) {\n svg.selectAll(\"[data-highlight]\").attr(\"data-highlight\", \"false\")\n const nodeId = node.getAttribute(\"data-id\")\n svg\n .select(\".node[data-id='\" + nodeId + \"']\")\n .select(\".text\")\n .text(node.getAttribute(\"data-text\") || \"\")\n .attr(\"x\", 0)\n\n restoreDefaultOrder = window.setTimeout(arrangeInDefaultOrder, 1000)\n }\n\n const d3NodesContainer = svg.select<SVGGElement>(\"g.nodes\")\n const d3NewNodes = d3NodesContainer.selectAll(\".node\").each(function () {\n const el = this as Element\n const root = el.getAttribute(\"data-root\") == \"true\"\n const linkify = widget.getLinkifier()\n if (!root) {\n const type = el.getAttribute(\"data-type\") || \"\"\n const query = el.getAttribute(\"data-query\") || \"\"\n NorthData.debug(el.getAttribute(\"data-url\") + \" -> \" + linkify(el))\n select(el)\n .attr(\"xlink:href\", linkify(el))\n .attr(\"data-clickable\", widget.getClickHandler(type) ? \"true\" : \"false\")\n .on(\"click\", function (event: Event) {\n if (widget.invokeClickHandler(query, type)) {\n event.preventDefault()\n }\n })\n }\n })\n\n d3NodesContainer\n .selectAll(\".node\")\n .on(\"mouseover\", function () {\n highlight(this as Element)\n })\n .on(\"mouseout\", function () {\n unhighlight(this as Element)\n })\n\n arrangeInDefaultOrder()\n\n // REMOVE ME\n NorthData.debug(\"successfully completed v12\")\n}\n","import { select } from \"d3-selection\"\nimport { min, max, extent } from \"d3-array\"\nimport { scaleLinear } from \"d3-scale\"\nimport { cluster, hierarchy, HierarchyPointNode } from \"d3-hierarchy\"\nimport { linkHorizontal } from \"d3-shape\"\n\nimport { setHeight } from \"../../util/dom\"\nimport {\n bigNodeRadius,\n drawNodes,\n smallNodeRadius,\n createArrowPath,\n Node,\n Link,\n} from \"../nodes\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\ninterface InputNode {\n root: boolean\n clickable?: boolean\n edge?: { old: boolean; warn: boolean; head?: string; tail?: string }\n id: number\n text: string\n desc: string\n type: string\n icon: string\n query: unknown\n}\n\ninterface InputRootNode extends InputNode {\n size: number\n scope: string\n}\n\ninterface GraphNode extends Node {\n depth: number\n edge?: { old: boolean; warn: boolean; head?: string; tail?: string }\n}\n\ninterface GraphLink extends Link {\n target: GraphNode\n source: GraphNode\n}\n\ntype HierarchyNode = HierarchyPointNode<InputNode>\n\nexport const dendrogram: Renderer = function (\n widget: Widget,\n data: InputRootNode\n): Rendition {\n const container = widget.container\n\n // do not show shake button:\n select(container).selectAll(\".shake\").style(\"display\", \"none\")\n\n const dense = data.size >= 10\n const scope = data.scope\n const svg = select(container)\n .append(\"svg\")\n .attr(\"data-dense\", dense)\n .attr(\"aria-label\", data.desc)\n\n function draw() {\n const width = container.getBoundingClientRect().width\n\n const bigBox = {\n left: -width / 6,\n right: width / 6,\n top: -bigNodeRadius,\n bottom: bigNodeRadius + 18 /*text*/,\n }\n const smallBox = {\n left: -smallNodeRadius,\n right: width / 3 - smallNodeRadius,\n top: -smallNodeRadius,\n bottom: smallNodeRadius,\n }\n const leafBox = dense ? smallBox : bigBox\n const nonLeafBox = bigBox\n\n const bigNodeSize: [number, number] = [\n bigBox.bottom - bigBox.top,\n bigBox.right - bigBox.left,\n ]\n const smallNodeSize: [number, number] = [\n smallBox.bottom - smallBox.top,\n smallBox.right - smallBox.left,\n ]\n\n const leafNodeSize: [number, number] = dense ? smallNodeSize : bigNodeSize\n const arrowSize = dense ? 7 : 12\n\n const denseSiblingDistance = 1\n const denseCousinDistance = 1.5\n const minParentDistance = 5\n\n const clusterLayout = cluster<InputNode>()\n .nodeSize(leafNodeSize)\n .separation(function (a, b) {\n const siblings = a.parent == b.parent\n if (dense) {\n if (siblings) {\n return denseSiblingDistance\n } else {\n const nonAdjustedDistance =\n ((a.parent!.children!.length + b.parent!.children!.length) *\n denseSiblingDistance) /\n 2 +\n denseCousinDistance\n const missingDistance = minParentDistance - nonAdjustedDistance\n const adjustedDistance =\n nonAdjustedDistance < minParentDistance\n ? denseCousinDistance + missingDistance\n : denseCousinDistance\n return adjustedDistance\n }\n } else {\n return siblings ? 1.0 : 1.4\n }\n })(hierarchy<InputNode>(data))\n\n const toNode = (hierarchyNode: HierarchyNode) => ({\n ...hierarchyNode.data,\n x: hierarchyNode.x,\n y: hierarchyNode.y,\n depth: hierarchyNode.depth,\n })\n const nodes: GraphNode[] = clusterLayout.descendants().map(toNode)\n const links: GraphLink[] = clusterLayout.links().map((hierarchyLink) => ({\n target: toNode(hierarchyLink.target),\n source: toNode(hierarchyLink.source),\n }))\n\n let rootNode\n let maxDepth = 0\n for (let node of nodes) {\n if (node.root) {\n rootNode = node\n if (scope === \"publication\") {\n node.clickable = true\n }\n }\n maxDepth = Math.max(maxDepth, node.depth)\n }\n\n svg.select(\"g\").remove()\n const canvas = svg.append(\"g\")\n const drawnLinks = canvas.append(\"g\").selectAll(\".link\").data(links)\n\n const edge = (link: GraphLink) => link.target.edge\n\n const newDrawnLinks = drawnLinks\n .enter()\n .append(\"g\")\n .attr(\"class\", \"link\")\n .attr(\"data-source-id\", (link) => link.source.id)\n .attr(\"data-target-id\", (link) => link.target.id)\n .attr(\"data-old\", (link) => edge(link)?.old ?? null)\n .attr(\"data-warn\", (link) => edge(link)?.warn ?? null)\n .attr(\"data-head\", (link) => edge(link)?.head ?? null)\n .attr(\"data-tail\", (link) => edge(link)?.tail ?? null)\n\n newDrawnLinks.append(\"path\").attr(\"class\", \"line\")\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"head\")\n .attr(\"d\", createArrowPath(arrowSize))\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"tail\")\n .attr(\"d\", createArrowPath(arrowSize))\n\n const drawnNodes = drawNodes(\n widget,\n canvas,\n nodes,\n rootNode ? rootNode.id : undefined,\n dense\n )\n\n interface Positioner {\n height: number\n canvasTransform: string\n nodeTransform: (node: Node) => string\n diagonal: (link: Link) => string | null\n headTransform: (link: Link) => string\n tailTransform: (link: Link) => string\n }\n\n const translate = (x: number, y: number) => \"translate(\" + x + \",\" + y + \")\"\n\n const createCartesianPositioner = function (width: number): Positioner {\n const isLeaf = (node: Node) =>\n !node.children || node.children.length === 0\n\n const box = (node: Node) => (isLeaf(node) ? leafBox : nonLeafBox)\n\n const left = (node: Node) => node.y + box(node).left\n const right = (node: Node) => node.y + box(node).right\n const top = (node: Node) => node.x + box(node).top\n const bottom = (node: Node) => node.x + box(node).bottom\n\n const hMin = min(nodes, left) as number\n const hMax = max(nodes, right) as number\n const hMinMax = [hMin, hMax]\n\n const vMin = min(nodes, top) as number\n const vMax = max(nodes, bottom) as number\n const vDomain = extent(nodes, (node: GraphNode) => node.x) as [\n number,\n number,\n ]\n const vExtent = vDomain[1] - vDomain[0]\n\n const scaleH = scaleLinear().domain(hMinMax).range([0, width])\n const scaleV = scaleLinear().domain(vDomain).range([0, vExtent])\n\n const positionH = (node: Node) =>\n scaleH(dense && isLeaf(node) ? left(node) : node.y) as number\n const positionV = (node: Node) => scaleV(node.x) as number\n\n const nodeTransform = (node: Node) =>\n translate(positionH(node), positionV(node))\n\n const diagonal = linkHorizontal<Link, Node>()\n .x((node) => positionH(node))\n .y((node) => positionV(node))\n\n const paddingV = Math.max(10, (150 - (vMax - vMin)) / 2)\n const paddingBottom = vMax - vDomain[1] + paddingV\n const paddingTop = vDomain[0] - vMin + paddingV\n\n const height = vExtent + paddingBottom + paddingTop\n\n const correctionH = 0\n const correctionV = paddingTop\n\n return {\n height: height,\n diagonal,\n nodeTransform,\n headTransform: (link) =>\n nodeTransform(link.target) +\n \" \" +\n translate(dense && isLeaf(link.target) ? 0 : -bigNodeRadius, 0) +\n \" rotate(180)\",\n tailTransform: (link) =>\n nodeTransform(link.source) + \" \" + translate(bigNodeRadius, 0),\n canvasTransform: translate(correctionH, correctionV),\n }\n }\n\n const positioner: Positioner = createCartesianPositioner(width)\n\n setHeight(container, positioner.height)\n\n svg\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"viewBox\", `0 0 ${width} ${positioner.height}`)\n\n canvas.attr(\"transform\", positioner.canvasTransform)\n\n drawnNodes.attr(\"transform\", positioner.nodeTransform)\n newDrawnLinks.select(\".line\").attr(\"d\", positioner.diagonal)\n newDrawnLinks.select(\".head\").attr(\"transform\", positioner.headTransform)\n newDrawnLinks.select(\".tail\").attr(\"transform\", positioner.tailTransform)\n }\n\n return { draw }\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","import { select, selectAll, Selection } from \"d3-selection\"\nimport { HSLColor } from \"d3-color\"\nimport { treemap, hierarchy, HierarchyRectangularNode } from \"d3-hierarchy\"\nimport { ascending } from \"d3-array\"\nimport { size } from \"../../util/dom\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { trilingual } from \"../i18n\"\n\ninterface Box {\n name: string\n raw: number\n formattedValue?: string\n color: string\n children?: Box[]\n}\n\ninterface Data {\n numberFormat: {\n prefix: string\n accuracy: number\n postfix: string\n }\n default: Box\n root: Box\n}\n\ninterface Item {\n data: Data\n item: string\n title: string\n date: string\n}\n\ninterface Data {\n item: Item[]\n}\n\ntype AnySelection = Selection<any, unknown, any, unknown>\n\nexport const drillDown: Renderer = function (\n widget: Widget,\n allData: Data\n): Rendition {\n if (!allData.item || allData.item.length == 0) {\n throw new Error(\"no data\")\n }\n const drawables: (() => void)[] = []\n for (const detail of allData.item) {\n const data = detail.data\n const itemNode = document.createElement(\"div\")\n const root = select(itemNode)\n .attr(\"data-item\", detail.item)\n .attr(\"class\", \"root\")\n const boxParent = root.append(\"div\").attr(\"class\", \"box-parent\")\n\n widget.showItem(detail.title, itemNode)\n\n let legend1: AnySelection = select(widget.nodeValue(\"legend1\") ?? null)\n if (legend1.empty()) {\n legend1 = root.selectAll(\".legend1\")\n }\n let legend2: AnySelection = select(widget.nodeValue(\"legend2\") ?? null)\n if (legend2.empty()) {\n legend2 = root.selectAll(\".legend2\")\n }\n let legend3: AnySelection = select(widget.nodeValue(\"legend3\") ?? null)\n if (legend3.empty()) {\n legend3 = root.selectAll(\".legend3\")\n }\n\n if (legend1.empty() || legend2.empty() || legend3.empty()) {\n let legendParent: AnySelection = root.selectAll(\".legends\")\n if (legendParent.empty()) {\n legendParent = root.append(\"div\").attr(\"class\", \"legends\")\n }\n if (legend1.empty()) {\n legend1 = legendParent.append(\"span\").attr(\"class\", \"legend1\")\n }\n if (legend2.empty()) {\n legend2 = legendParent.append(\"span\").attr(\"class\", \"legend2\")\n }\n if (legend3.empty()) {\n legend3 = legendParent.append(\"span\").attr(\"class\", \"legend3\")\n }\n }\n\n legend3.text(trilingual(\"As of: \", \"Stand: \", \"Date de \") + detail.date)\n\n const numberFormatter = widget\n .i18n()\n .createNumberFormatter(data.numberFormat, \",.3r\")\n let fixedHighlightedbox: Box | null = null\n const highlight = function (element: HTMLElement, data: Box) {\n if (data.children) {\n return\n }\n if (!fixedHighlightedbox || fixedHighlightedbox == data) {\n boxParent.classed(\"highlighting\", true)\n selectAll(\".highlighted\").classed(\"highlighted\", false)\n select(element).classed(\"highlighted\", true)\n showLegend(data)\n }\n }\n const unhighlight = function () {\n if (!fixedHighlightedbox) {\n boxParent.classed(\"highlighting\", false)\n selectAll(\".highlighted\").classed(\"highlighted\", false)\n showLegend(data.default ?? data.root)\n }\n }\n const fixHighlight = function (element: HTMLElement, data: Box) {\n if (fixedHighlightedbox == data) {\n fixedHighlightedbox = null\n unhighlight()\n } else {\n fixedHighlightedbox = data\n highlight(element, data)\n }\n }\n const containsNeg = function (text: string): boolean {\n return !!text && text.indexOf(\"Fehlbetrag\") >= 0\n }\n const showLegend = function (box: Box) {\n legend1.text((box.formattedValue ?? numberFormatter(box.raw)) + \" \")\n legend2.text(box.name)\n }\n\n const assignColors = function (node: Box) {\n function _assignColors(\n node: Box,\n color: HSLColor,\n minHue: number,\n maxHue: number\n ) {\n node.color = color.toString()\n let hue = minHue\n if (node.children) {\n const nChildren = node.children.length + 1\n if (nChildren > 0) {\n const dHue = (maxHue - minHue) / nChildren\n for (let child of node.children) {\n color.h = hue % 360\n _assignColors(child, color, hue, hue + dHue)\n hue += dHue\n }\n }\n }\n }\n const rootColor = widget.getRootColor()\n _assignColors(node, rootColor, rootColor.h, rootColor.h + 360)\n }\n unhighlight()\n assignColors(data.root)\n const draw = function () {\n let rect = boxParent.node()!.getBoundingClientRect()\n if (rect.width == 0 || rect.height == 0) {\n return\n }\n\n const boxHierarchy = hierarchy(data.root)\n .sum((box) => (box.children ? 0 : Math.abs(box.raw)))\n .sort((a, b) => ascending(a.value, b.value))\n\n const treemapLayout = treemap<Box>().size(size(rect)).round(true)(\n boxHierarchy\n )\n\n const dx = (node: HierarchyRectangularNode<Box>) => node.x1 - node.x0\n const dy = (node: HierarchyRectangularNode<Box>) => node.y1 - node.y0\n\n const boxes = boxParent\n .selectAll<HTMLDivElement, unknown>(\".box\")\n .data(treemapLayout.descendants())\n const newBoxes = boxes\n .enter()\n .append(\"div\")\n .attr(\"class\", \"box\")\n .on(\"mouseenter\", function (_event, node) {\n highlight(this, node.data)\n })\n .on(\"mouseleave\", unhighlight)\n .on(\"click\", function (_event, node) {\n fixHighlight(this, node.data)\n })\n .attr(\"data-neg\", (node) =>\n node.data.raw < 0 || containsNeg(node.data.name) ? true : false\n )\n newBoxes\n .append(\"div\")\n .attr(\"class\", \"value\")\n .text((node) =>\n node.children\n ? null\n : (node?.data?.formattedValue ??\n numberFormatter(node.value as number))\n )\n newBoxes\n .append(\"div\")\n .attr(\"class\", \"desc\")\n .text((node) => (node.children ? null : node.data.name))\n newBoxes\n .merge(boxes) // enter + update\n .attr(\"data-small\", (node) =>\n dx(node) < 40 || dy(node) < 32 ? true : null\n )\n .style(\"left\", (node) => node.x0 + \"px\")\n .style(\"top\", (node) => node.y0 + \"px\")\n .style(\"width\", (node) => Math.max(0, dx(node) - 1) + \"px\")\n .style(\"height\", (node) => Math.max(0, dy(node) - 1) + \"px\")\n .style(\"background\", (node) =>\n node.children ? \"white\" : node.data.color\n )\n }\n drawables.push(draw)\n }\n return {\n draw: function () {\n for (const drawable of drawables) {\n drawable()\n }\n },\n }\n}\n","import { select } from \"d3-selection\"\nimport { Data } from \"../base\"\nimport { Renderer, Rendition, alreadyDrawn } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\nexport const financials: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const history =\n data &&\n data.financials &&\n data.financials.filter(\n (financial: { items: unknown[] }) => financial.items.length > 0\n )\n const reverse = widget.isReverseChronology()\n\n if (history && history.length > 0 && history[0].items.length > 0) {\n const table = select(widget.container)\n .append(\"table\")\n .attr(\n \"class\",\n \"ui bizq very compact celled small unstackable striped selectable first stuck table\"\n )\n const theadRow = table.append(\"thead\").append(\"tr\")\n const tbody = table.append(\"tbody\")\n const tfootRow = table.append(\"tfoot\").append(\"tr\")\n var sampleItemsById: { [key: string]: any } = {}\n for (const financials of history) {\n financials.itemsById = {}\n for (const item of financials.items) {\n financials.itemsById[item.id] = item\n sampleItemsById[item.id] = item\n }\n }\n const latestFinancials = history[history.length - 1]\n if (reverse) {\n history.reverse()\n }\n\n const theadLeft = theadRow\n .append(\"th\")\n .attr(\"class\", \"first\")\n .text(widget.stringValue(\"title\") as string)\n theadLeft\n .append(\"a\")\n .attr(\"href\", data.csvUrl)\n .attr(\"download\", \"download\")\n .attr(\"title\", \"CSV/Excel Download\")\n .classed(\"screen-only\", true)\n .append(\"i\")\n .attr(\"class\", \"download icon\")\n\n for (const financials of history) {\n theadRow.append(\"th\").text(financials.formattedDate)\n }\n for (const id in sampleItemsById) {\n const tbodyRow = tbody.append(\"tr\").attr(\"class\", \"active-on-hover\")\n const rowItem = sampleItemsById[id]\n tbodyRow.append(\"td\").text(rowItem[\"name\"])\n for (const financials of history) {\n const cellItem = financials.itemsById[id]\n const td = tbodyRow.append(\"td\")\n if (cellItem) {\n const signClass = cellItem.value >= 0 ? \"pos\" : \"neg\"\n let text = cellItem.formattedValue\n td.append(\"span\")\n .attr(\"class\", signClass + \" value\")\n .text(text)\n if (cellItem.estimate) {\n td.append(\"a\")\n .attr(\"href\", \"javascript:void()\")\n .attr(\n \"title\",\n widget.trilingual(\n \"Unsafe value (estimation or indirect determination)\",\n \"Indirekte oder unsichere Bestimmungsmethode\",\n \"Valeur non sûre (estimation ou détermination indirecte)\"\n )\n )\n .html(\" *&nbsp;\")\n }\n if (cellItem.note) {\n td.append(\"span\").attr(\"class\", \"note\").text(cellItem.note)\n }\n } else {\n td.append(\"span\").text(\"N/A\")\n }\n }\n }\n\n if (latestFinancials.source) {\n if (latestFinancials.source.auditorName) {\n const tbodyRow = tbody.append(\"tr\").attr(\"class\", \"active-on-hover\")\n tbodyRow\n .append(\"td\")\n .text(widget.trilingual(\"Auditor\", \"Prüfer\", \"Auditeur\"))\n for (const financials of history) {\n const auditorName = financials.source && financials.source.auditorName\n const td = tbodyRow.append(\"td\")\n td.append(\"span\")\n .attr(\"class\", \"auditor value\")\n .text(auditorName || \"N/A\")\n }\n }\n if (latestFinancials.source && latestFinancials.source.publicationDate) {\n const tbodyRow = tbody.append(\"tr\").attr(\"class\", \"active-on-hover\")\n tbodyRow\n .append(\"td\")\n .text(\n widget.trilingual(\n \"Publication date\",\n \"Veröffentlichungs\\u00ADdatum\",\n \"Date de publication\"\n )\n )\n for (const financials of history) {\n const date = financials.source && financials.source.publicationDate\n const td = tbodyRow.append(\"td\")\n td.append(\"span\")\n .attr(\"class\", \"date value\")\n .text(date ? widget.i18n().dateFormatter(new Date(date)) : \"N/A\")\n }\n }\n tfootRow\n .append(\"th\")\n .text(widget.trilingual(\"Source\", \"Quelle\", \"Source\"))\n\n const clickHandler = widget.handlerValue(\"sourceClick\")\n for (const financials of history) {\n const th = tfootRow.append(\"th\")\n th.html(financials.note.html)\n\n if (clickHandler) {\n th.selectAll(\"a\")\n .attr(\"href\", \"javascript:void(0);\")\n .on(\"click\", function (event: Event) {\n event.preventDefault()\n clickHandler(financials.source)\n })\n }\n }\n }\n } else {\n throw new Error(\"no data available\")\n }\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { extent } from \"d3-array\"\nimport { setHeight, size } from \"../../util/dom\"\nimport {\n bigNodeRadius,\n drawNodes,\n syncTextBackground,\n createArrowPath,\n Node,\n Link,\n enrichNodes,\n} from \"../nodes\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { dendrogram } from \"./dendrogram\"\nimport { trilingual } from \"../i18n\"\nimport { NorthData } from \"../../viz-base\"\n\ninterface GraphLink extends Link {\n old: boolean\n warn: boolean\n head?: string\n tail?: string\n text: string\n type: string\n length?: unknown\n helper?: unknown\n}\n\ninterface Data {\n nodes: Node[]\n links: GraphLink[]\n children: unknown\n diameter: number\n type?: string\n html?: string\n legendHtml?: string\n}\n\nexport const graph: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (data.children) {\n return dendrogram(widget, data)\n }\n\n const orgchart = \"orgchart\" == data.type\n const container = widget.container\n\n if (data.html) {\n container.innerHTML = data.html\n\n if (!data.legendHtml) {\n select(container)\n .selectAll(\"foreignObject:has(> .extended-legend-button)\")\n .remove()\n }\n\n syncTextBackground(\n select(container).selectAll(\".link\"),\n \".desc\",\n \".desc-bg\",\n 3,\n 3,\n 1000\n )\n enrichNodes(widget, select(container).select(\"svg\"), false)\n return { draw: function () {} }\n }\n\n if (!data.nodes || data.nodes.length < 2) {\n throw new Error(\"graph empty or single node\")\n }\n\n let rootNode: Node\n const nodeById: Record<number, Node> = {}\n const count = data.nodes.length\n let showWarningLegend: boolean = false\n for (let node of data.nodes) {\n if (node.root) {\n rootNode = node\n }\n if (node.warning) {\n showWarningLegend = true\n }\n nodeById[node.id] = node\n }\n\n for (let link of data.links) {\n // source and target are transmitted as ids (number) pointing to nodes\n // rewrite links so that source and target point to actual Node\n link.source = nodeById[link.source as unknown as number]\n link.target = nodeById[link.target as unknown as number]\n if (!link.source || !link.target) {\n NorthData.log(\"error\", \"broken link: \", link)\n }\n }\n\n const svg = select(container)\n .append(\"svg\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"aria-label\", trilingual(\"Network\", \"Netzwerk\", \"Réseau\"))\n\n const drawnLinks = svg\n .append(\"g\")\n .attr(\"class\", \"nodes\")\n .selectAll(\".link\")\n .data(data.links)\n\n const legend = svg.append(\"g\").attr(\"class\", \"legend\")\n\n if (!orgchart) {\n legend.append(\"line\").attr(\"data-old\", false)\n legend.append(\"line\").attr(\"data-old\", true)\n }\n\n if (showWarningLegend) {\n legend.append(\"line\").attr(\"data-warn\", true)\n }\n\n legend\n .append(\"text\")\n .attr(\"data-old\", false)\n .text(widget.trilingual(\"currently\", \"aktuell\", \"actuel\"))\n\n legend\n .append(\"text\")\n .attr(\"data-old\", true)\n .text(widget.trilingual(\"previously\", \"vormals\", \"auparavant\"))\n\n if (showWarningLegend) {\n legend\n .append(\"text\")\n .attr(\"data-warn\", true)\n .text(\n widget.trilingual(\n \"politically exposed\",\n \"politisch exponiert\",\n \"politiquement exposé\"\n )\n )\n }\n\n function dashArray(link: GraphLink): string | undefined {\n if (link.type == \"SameAddress\") {\n return \"3, 3\"\n }\n if (link.type == \"CommonFiling\") {\n return \"6, 6\"\n }\n }\n\n const newDrawnLinks = drawnLinks\n .enter()\n .append(\"g\")\n .attr(\"class\", \"link\")\n .attr(\"data-source-id\", (link) => link.source.id)\n .attr(\"data-target-id\", (link) => link.target.id)\n .attr(\"data-head\", (link) => link.head as string | null)\n .attr(\"data-tail\", (link) => link.tail as string | null)\n .attr(\"data-old\", (link) => link.old)\n .attr(\"data-warn\", (link) => link.warn)\n .attr(\"data-length\", (link) => link.length as any)\n .attr(\"data-helper\", (link) => link.helper as any)\n\n if (orgchart) {\n for (var i = 0; i < 3; ++i) {\n newDrawnLinks\n .append(\"line\")\n .attr(\"class\", \"line\")\n .attr(\"class\", \"segment\" + i)\n .attr(\"stroke-width\", 1)\n .attr(\"stroke\", \"#000000\")\n // .attr(\"stroke-dasharray\", (link) => dashArray(link) as string)\n }\n } else {\n newDrawnLinks\n .append(\"line\")\n .attr(\"class\", \"line\")\n .attr(\"stroke-width\", 1)\n .attr(\"stroke\", \"#000000\")\n .attr(\"stroke-dasharray\", (link) => dashArray(link) as string)\n }\n\n newDrawnLinks.append(\"rect\").attr(\"class\", \"desc-bg\")\n\n newDrawnLinks\n .append(\"text\")\n .attr(\"class\", \"desc\")\n .attr(\"text-anchor\", \"middle\")\n .text((link) => link.text)\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"head\")\n .attr(\"d\", createArrowPath(12))\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"tail\")\n .attr(\"d\", createArrowPath(12))\n\n const drawnNodes = drawNodes(widget, svg, data.nodes, rootNode!.id, false)\n\n let ticks = 0\n let warmingUp = true\n\n const render = function () {\n if (warmingUp || ticks++ % 3 != 0) {\n return\n }\n\n function ratio(domain: [number, number], range: [number, number]) {\n return (range[1] - range[0]) / (domain[1] - domain[0])\n }\n function midpoint(domain: [number, number]) {\n return (domain[1] + domain[0]) / 2\n }\n\n const rect = container.getBoundingClientRect()\n const width = rect.width\n const height = rect.height\n const hSpace = 100,\n vSpace = 40\n const heightFor2 = 120\n const hDomain = extent(data.nodes, (node: Node) => node.x) as [\n number,\n number,\n ]\n const vDomain = extent(data.nodes, (node: Node) => node.y) as [\n number,\n number,\n ]\n\n const hRange: [number, number] = [hSpace, width - hSpace]\n const vRange: [number, number] = orgchart\n ? vDomain\n : [vSpace, (count == 2 ? heightFor2 : height) - 1.5 * vSpace]\n\n const hDomainMidpoint = midpoint(hDomain)\n const hRangeMidpoint = midpoint(hRange)\n const vDomainMidpoint = midpoint(vDomain)\n const vRangeMidpoint = midpoint(vRange)\n let hRatio = ratio(hDomain, hRange)\n let vRatio = ratio(vDomain, vRange)\n let maxAspectRatio = count == 2 ? 2 : data.diameter * 1.1\n hRatio = Math.min(hRatio, vRatio * maxAspectRatio)\n\n if (count == 2) {\n vRatio = 0\n hRatio = hRatio * 2\n setHeight(container, heightFor2)\n }\n\n const scaleH = (x: number) =>\n (x - hDomainMidpoint) * hRatio + hRangeMidpoint\n const scaleV = (y: number) =>\n (y - vDomainMidpoint) * vRatio + vRangeMidpoint\n\n const x1 = (link: GraphLink) => scaleH(link.source.x)\n const x2 = (link: GraphLink) => scaleH(link.target.x)\n const y1 = (link: GraphLink) => scaleV(link.source.y)\n const y2 = (link: GraphLink) => scaleV(link.target.y)\n\n const dx = (link: GraphLink) => x2(link) - x1(link)\n const dy = (link: GraphLink) => y2(link) - y1(link)\n const rx = (link: GraphLink) => (x2(link) - x1(link)) / 2\n const ry = (link: GraphLink) => (y2(link) - y1(link)) / 2\n\n const rawAngle = (link: GraphLink) => {\n let result = (180 / Math.PI) * Math.atan2(dy(link), dx(link))\n return result\n }\n\n const angle = (link: GraphLink) => {\n let result = (180 / Math.PI) * Math.atan2(dy(link), dx(link))\n if (result > 90 && result < 270) {\n result = result - 180\n } else if (result < -90 && result > -270) {\n result = result + 180\n }\n return result\n }\n\n newDrawnLinks.attr(\n \"transform\",\n (link) => \"translate(\" + x1(link) + \" \" + y1(link) + \")\"\n )\n\n newDrawnLinks\n .select(\"line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", dx)\n .attr(\"y2\", dy)\n\n // the three segments are used for org charts\n newDrawnLinks\n .select(\".segment0\")\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y2\", ry) // /2\n\n newDrawnLinks\n .select(\".segment1\")\n .attr(\"x1\", 0)\n .attr(\"y1\", ry)\n .attr(\"x2\", dx)\n .attr(\"y2\", ry)\n\n newDrawnLinks\n .select(\".segment2\")\n .attr(\"x1\", dx)\n .attr(\"y1\", ry)\n .attr(\"x2\", dx)\n .attr(\"y2\", dy)\n\n const linkDescTransform = (link: GraphLink) =>\n \"rotate(\" +\n angle(link) +\n \" \" +\n rx(link) +\n \" \" +\n ry(link) +\n \" \" +\n \") translate(0 -7)\"\n\n newDrawnLinks\n .select(\".desc\")\n .attr(\"x\", rx)\n .attr(\"y\", ry)\n .attr(\"transform\", linkDescTransform)\n\n newDrawnLinks\n .select(\".desc-bg\")\n .attr(\"x\", rx)\n .attr(\"y\", ry)\n .attr(\"transform\", linkDescTransform)\n\n // ARROW HEADs\n if (!orgchart) {\n const xHead = (link: GraphLink) => dx(link) + 0\n const yHead = (link: GraphLink) => dy(link) + 0\n\n newDrawnLinks\n .select(\".tail\")\n .attr(\n \"transform\",\n (link) =>\n \"rotate(\" +\n rawAngle(link) +\n \") \" +\n \"translate(\" +\n bigNodeRadius +\n \" \" +\n 0 +\n \")\"\n )\n\n newDrawnLinks\n .select(\".head\")\n .attr(\n \"transform\",\n (link) =>\n \"translate(\" +\n xHead(link) +\n \" \" +\n yHead(link) +\n \") \" +\n \"rotate(\" +\n (180 + rawAngle(link)) +\n \") \" +\n \"translate(\" +\n bigNodeRadius +\n \" \" +\n 0 +\n \")\"\n )\n }\n\n // LEGEND\n const legendLeft = hSpace / 2\n const legendRight = legendLeft + 40\n const legendYOld = vRange[1] + vSpace / 2\n const legendY = legendYOld - 18\n const legendYWarn = legendYOld + 18\n\n svg.selectAll(\".legend line\").attr(\"x1\", legendLeft).attr(\"x2\", legendRight)\n\n svg\n .selectAll(\".legend line[data-old='false'\")\n .attr(\"y1\", legendY)\n .attr(\"y2\", legendY)\n svg\n .selectAll(\".legend line[data-old='true'\")\n .attr(\"y1\", legendYOld)\n .attr(\"y2\", legendYOld)\n svg\n .selectAll(\".legend line[data-warn='true'\")\n .attr(\"y1\", legendYWarn)\n .attr(\"y2\", legendYWarn)\n\n svg.selectAll(\".legend text\").attr(\"x\", legendRight + 5)\n\n const textDy = 3\n svg.selectAll(\".legend text[data-old='false'\").attr(\"y\", legendY + textDy)\n svg.selectAll(\".legend text[data-old='true'\").attr(\"y\", legendYOld + textDy)\n svg\n .selectAll(\".legend text[data-warn='true'\")\n .attr(\"y\", legendYWarn + textDy)\n\n syncTextBackground(newDrawnLinks, \".desc\", \".desc-bg\", 3, 3, 1000)\n\n drawnNodes\n .attr(\"data-dx\", (node) => scaleH(node.x))\n .attr(\n \"transform\",\n (node) => \"translate(\" + scaleH(node.x) + \",\" + scaleV(node.y) + \")\"\n )\n }\n\n function draw() {\n const [width, height] = size(container.getBoundingClientRect())\n svg.attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n\n warmingUp = false\n render()\n }\n return { draw }\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n","import { hsl, HSLColor } from \"d3-color\"\n\nexport type Coloring = { standard: string; light: string; bright: string }\n\nexport function createColoring(color: HSLColor): Coloring {\n return {\n standard: color.toString(),\n light: color.brighter(1.15).toString(),\n bright: hsl(color.h, color.s * 1.3, color.l * 0.9).toString(),\n }\n}\n\nexport function createPalette(color: HSLColor, size: number): Coloring[] {\n const result: Coloring[] = []\n const dHue = 360 / size + 1\n let hue = color.h\n for (let i = 0; i < size; ++i) {\n color.h = (hue + i * dHue) % 360\n result.push(createColoring(color))\n }\n return result\n}\n","/*!\n * Portions of this code are derived from d3kit v3.2.0\n *\n * Copyright (c) 2015 Twitter, Inc.\n *\n * @license MIT\n *\n *\n * Portions of this code are derived from d3kit-timeline v2.0.1\n *\n * Copyright 2015 Krist Wongsuphasawat\n *\n * @license Apache-2.0\n *\n * NOTICE\n * -------\n *\n * This project includes code originally licensed under the Apache License, Version 2.0.\n *\n * Original Project: d3kit-timeline v2.0.1\n * Original Author: Krist Wongsuphasawat\n *\n * Modifications to the original code:\n * - Code has been inlined\n * - Unused options `keyFn`, `labella`, `labelTextColor`, `scale` have been removed\n * - Option `direction` has been restricted to \"horizontal\" and \"vertical\"\n * - Dependency to d3kit has been inlined\n *\n */\n\nimport { Transition } from \"d3\"\nimport { max } from \"d3-array\"\nimport { axisBottom, axisLeft, type Axis } from \"d3-axis\"\nimport { hsl, HSLColor } from \"d3-color\"\nimport { scaleTime } from \"d3-scale\"\nimport { BaseType, select, selectAll, Selection } from \"d3-selection\"\n\nimport \"d3-transition\"\nimport labella from \"labella\"\nimport debounce from \"lodash.debounce\"\n\nimport { Coloring, createColoring, createPalette } from \"../color\"\nimport { Renderer } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\ntype GenericSelection = Selection<\n SVGGElement | SVGTextElement,\n any,\n any,\n undefined\n>\ntype HistoryDirection = \"horizontal\" | \"vertical\"\n\ninterface HistoryEvent {\n id: number\n href: string\n\n type: string\n old?: boolean\n cat: number\n date: string\n text: string\n class: string\n desc?: string\n query: {\n id: number\n source: string\n url: string\n }\n}\n\ninterface HistoryData {\n minDate: string\n maxDate: string\n event: HistoryEvent[]\n title: string\n}\n\nfunction setupColorPallete(rootColor: HSLColor, paletteSize: number) {\n const palette = createPalette(rootColor, paletteSize)\n const greyColoring = createColoring(hsl(\"#888888\"))\n return function getEventColors(event: HistoryEvent): Coloring {\n return event.old ? greyColoring : palette[event.cat % paletteSize]\n }\n}\n\nexport const history: Renderer = function (widget: Widget, data: HistoryData) {\n const historyData = data.event\n\n let id = 1\n historyData.forEach((event) => (event.id = id++))\n\n widget.container.innerHTML = \"\"\n\n const minDate = new Date(data.minDate)\n const maxDate = new Date(data.maxDate)\n\n const getEventColors = setupColorPallete(widget.getRootColor(), 12)\n const getEventStandardColor = (event: HistoryEvent) =>\n getEventColors(event).standard\n\n const options = {\n alternatingTickLength: 10,\n initialHeight: 50,\n initialWidth: 400,\n direction: \"horizontal\" as HistoryDirection,\n domain: [minDate, maxDate],\n dotRadius: 5,\n linkColor: getEventStandardColor,\n dotColor: getEventStandardColor,\n labelBgColor: getEventStandardColor,\n layerGap: 20,\n textStyle: { fill: \"#fff\" },\n margin: { left: 12, right: 15, top: 5, bottom: 35 },\n labelPadding: { left: 4, right: 4, top: 3, bottom: 2 },\n textYOffset: \"0.85em\",\n\n timeFn: (event: HistoryEventData) => new Date(event.date),\n textFn: (event: HistoryEventData) => event.text,\n formatAxis: (axis: Axis<Date>) => {\n const yearRange = maxDate.getFullYear() - minDate.getFullYear()\n return axis\n .tickFormat(widget.i18n().timeScaleFormatter)\n .tickSizeInner(8)\n .tickSizeOuter(10)\n .ticks(yearRange <= 4 ? 2 * yearRange : undefined)\n },\n }\n\n const dimension = {\n innerWidth: 0,\n innerHeight: 0,\n width: options.initialWidth,\n height: options.initialHeight,\n }\n\n type HistoryEventData = (typeof historyData)[0]\n let force = new labella.Force()\n const scale = scaleTime()\n const container = select(widget.container)\n\n // Enforce line-height = 0 to fix issue with height resizing\n // https://github.com/twitter/d3kit/issues/13\n container.style(\"line-height\", 0)\n\n const chartRoot = container\n .append(\"div\")\n .style(\"display\", \"inline-block\")\n .style(\"position\", \"relative\")\n .style(\"line-height\", 0)\n const svg = chartRoot\n .append(\"svg\")\n .style(\"position\", \"absolute\")\n .style(\"top\", 0)\n .style(\"left\", 0)\n const rootG = svg.append(\"g\")\n\n function createLayer(parent: GenericSelection, name: string) {\n return parent.append(\"g\").attr(\"name\", name)\n }\n\n const dummyLayer = createLayer(rootG, \"dummy\")\n const mainLayer = createLayer(rootG, \"main\")\n const axisLayer = createLayer(mainLayer, \"main/axis\")\n const linkLayer = createLayer(mainLayer, \"main/link\")\n const labelLayer = createLayer(mainLayer, \"main/label\")\n const dotLayer = createLayer(mainLayer, \"main/dot\")\n\n axisLayer.classed(\"axis\", true)\n\n function fitToContainer() {\n const { width, height } = dimension\n const node = container.node()\n const containerWidth = node?.clientWidth ?? 0\n const containerHeight = node?.clientHeight ?? 0\n\n let needsUpdate = false\n // Always use full container width\n if (width !== containerWidth) {\n dimension.width = containerWidth\n needsUpdate = true\n }\n // Shrink height to container\n if (height > containerHeight) {\n dimension.height = containerHeight\n needsUpdate = true\n }\n if (needsUpdate) {\n updateDimension()\n updateDimension.flush()\n }\n }\n\n function resizeToFitNodes() {\n const nodes = force.nodes()\n let maxVal\n switch (options.direction) {\n case \"horizontal\":\n maxVal =\n max<labella.Node<HistoryEventData>, number>(nodes, (d) =>\n Math.abs(d.y)\n ) ?? 0\n dimension.height = maxVal + options.margin.top + options.margin.bottom\n break\n case \"vertical\":\n maxVal =\n max<labella.Node<HistoryEventData>, number>(nodes, (d) =>\n Math.abs(d.x + d.dx)\n ) ?? 0\n dimension.width = maxVal + options.margin.left + options.margin.right\n break\n }\n }\n\n const updateDimension = debounce(function updateDimension() {\n const { width, height } = dimension\n const { margin } = options\n const { top, right, bottom, left } = margin\n\n dimension.innerWidth = width - left - right\n dimension.innerHeight = height - top - bottom\n\n chartRoot.style(\"width\", `${width}px`).style(\"height\", `${height}px`)\n svg.attr(\"width\", width).attr(\"height\", height)\n rootG.attr(\"transform\", `translate(${left}, ${top})`)\n\n render()\n }, 1)\n\n function updateLabelText(\n selection:\n | Selection<SVGTextElement, any, SVGGElement, unknown>\n | Transition<BaseType, any, SVGGElement, unknown>,\n accessor: (\n node: labella.Node<HistoryEventData>\n ) => HistoryEventData | HistoryEventData\n ) {\n const accessorFn =\n typeof accessor === \"function\" ? accessor : () => accessor\n selection\n .attr(\"dy\", options.textYOffset)\n .attr(\"x\", options.labelPadding.left)\n .attr(\"y\", options.labelPadding.top)\n .style(\"fill\", options.textStyle.fill)\n .text((d) => options.textFn(accessorFn(d)))\n }\n\n function drawAxes() {\n let axis\n switch (options.direction) {\n case \"vertical\":\n axis = axisLeft<Date>(scale)\n mainLayer.attr(\"transform\", \"translate(\" + 0 + \",\" + 0 + \")\")\n break\n case \"horizontal\":\n axis = axisBottom<Date>(scale)\n mainLayer.attr(\n \"transform\",\n \"translate(\" + 0 + \",\" + dimension.innerHeight + \")\"\n )\n break\n }\n\n options.formatAxis?.(axis)\n axisLayer.call(axis).attr(\"font-family\", null).attr(\"font-size\", null)\n }\n\n function drawDots(data: HistoryEventData[]) {\n const field = options.direction === \"vertical\" ? \"cy\" : \"cx\"\n const timePos = (d: HistoryEventData) => scale(options.timeFn(d))\n\n const sUpdate = dotLayer.selectAll(\"circle.dot\").data(data)\n sUpdate\n .enter()\n .append(\"circle\")\n .classed(\"dot\", true)\n .style(\"fill\", options.dotColor)\n .attr(\"r\", options.dotRadius)\n .attr(field, timePos)\n sUpdate\n .transition()\n .style(\"fill\", options.dotColor)\n .attr(\"r\", options.dotRadius)\n .attr(field, timePos)\n sUpdate.exit().remove()\n }\n\n function drawLabels(nodes: labella.Node<HistoryEventData>[]) {\n let nodeHeight\n if (options.direction === \"vertical\") {\n nodeHeight = max<labella.Node<HistoryEventData>, number>(\n nodes,\n (d) => d.w\n )\n } else {\n nodeHeight = max<labella.Node<HistoryEventData>, number>(\n nodes,\n (d) => d.h\n )\n }\n\n const renderer = new labella.Renderer({\n nodeHeight: nodeHeight ?? 0,\n layerGap: options.layerGap,\n direction: options.direction === \"horizontal\" ? \"up\" : \"right\",\n })\n\n renderer.layout(nodes)\n\n function nodePos(d: labella.Node<HistoryEventData>): string | null {\n if (isNaN(d.x) || isNaN(d.y)) {\n return null\n }\n switch (options.direction) {\n case \"vertical\":\n return \"translate(\" + d.x + \",\" + (d.y - d.dy / 2) + \")\"\n case \"horizontal\":\n return \"translate(\" + (d.x - d.dx / 2) + \",\" + d.y + \")\"\n }\n }\n\n const selection = labelLayer\n .selectAll<SVGGElement, labella.Node<HistoryEventData>>(\"g.label-g\")\n .data(nodes)\n const sEnter = selection\n .enter()\n .append(\"g\")\n .classed(\"label-g\", true)\n .attr(\"transform\", nodePos)\n\n sEnter\n .append(\"rect\")\n .classed(\"label-bg\", true)\n .attr(\"rx\", 2)\n .attr(\"ry\", 2)\n .attr(\"width\", (d) => d.w)\n .attr(\"height\", (d) => d.h)\n .style(\"fill\", (d) => options.labelBgColor(d.data))\n sEnter\n .append(\"text\")\n .classed(\"label-text\", true)\n .call(updateLabelText, (d: labella.Node<HistoryEventData>) => d.data)\n\n const sTrans = selection.transition().attr(\"transform\", nodePos)\n\n sTrans\n .select(\"rect\")\n .attr(\"width\", (d) => d.w)\n .attr(\"height\", (d) => d.h)\n .style(\"fill\", (d) => options.labelBgColor(d.data))\n sTrans\n .select(\"text.label-text\")\n .call(updateLabelText, (d: labella.Node<HistoryEventData>) => d.data)\n\n selection.exit().remove()\n\n const paths = linkLayer.selectAll(\"path.link\").data(nodes)\n paths\n .enter()\n .append(\"path\")\n .classed(\"link\", true)\n .attr(\"d\", (d) => renderer.generatePath(d))\n .style(\"stroke\", (d) => options.linkColor(d.data))\n .style(\"fill\", \"none\")\n paths\n .transition()\n .attr(\"d\", (d) => renderer.generatePath(d))\n .style(\"stroke\", (d) => options.linkColor(d.data))\n paths.exit().remove()\n }\n\n let initialRender = true\n function render() {\n if (\n !historyData ||\n (dimension.innerWidth <= 0 && dimension.innerHeight <= 0)\n )\n return\n\n const data = historyData || []\n force = new labella.Force()\n\n scale.domain(options.domain)\n scale.range([\n 0,\n options.direction === \"vertical\"\n ? dimension.innerHeight\n : dimension.innerWidth,\n ])\n\n const dummyText = dummyLayer.append(\"text\").classed(\"label-text\", true)\n const nodes = data.map((d: HistoryEventData) => {\n const bbox = dummyText.call(updateLabelText, d).node()!.getBBox()\n const w =\n bbox.width + options.labelPadding.left + options.labelPadding.right\n const h =\n bbox.height + options.labelPadding.top + options.labelPadding.bottom\n const node = new labella.Node(\n scale(options.timeFn(d)),\n options.direction === \"vertical\" ? h : w,\n d\n )\n node.w = w\n node.h = h\n return node\n })\n dummyText.remove()\n\n const { left, right } = options.margin\n force\n .options({ maxPos: dimension.width - (left + right) })\n .nodes(nodes)\n .compute()\n\n drawAxes()\n drawDots(data)\n drawLabels(force.nodes())\n\n if (initialRender) {\n initialRender = false\n onInitialRender()\n }\n onRender()\n }\n\n function onInitialRender() {\n // Customize history after initial render\n svg.insert(\"title\", \":first-child\").text(data.title)\n\n // Wrap labels in link tag\n labelLayer\n .selectAll<SVGGElement, labella.Node<HistoryEventData>>(\"g.label-g\")\n .each(function () {\n const node = select<SVGGElement, labella.Node<HistoryEventData>>(this)\n const children = node.selectAll(\"g.label-g > *\").remove()\n\n const anchor = node\n .append(\"svg:a\")\n .attr(\"class\", (d) => d.data.class)\n .attr(\"xlink:href\", (d) => d.data.href)\n .attr(\"xlink:title\", (d) => d.data.desc ?? null)\n anchor.append(\"title\").text((d) => d.data.desc ?? null)\n\n children.each(function (this) {\n anchor.append(() => this)\n })\n })\n\n // Attach hover and click events\n const publicationClickHandler = widget.handlerValue(\"publicationClick\")\n const hasClickHandler = !!publicationClickHandler\n labelLayer\n .selectAll<SVGGElement, labella.Node<HistoryEventData>>(\".label-g\")\n .attr(\"data-clickable\", () => hasClickHandler || null)\n .on(\"click\", function (event: Event, node) {\n if (publicationClickHandler) {\n publicationClickHandler(node.data.query)\n event.preventDefault()\n }\n })\n .on(\"mouseenter touchstart\", function (event, node) {\n if (!event.target) {\n return\n }\n\n const coloring = getEventColors(node.data)\n // highlight label\n select(event.target).select(\"rect\").style(\"fill\", coloring.bright)\n\n // highlight link and dot\n const id = node.data.id\n container\n .selectAll<Element, labella.Node<HistoryEventData>>(\n \".link-layer path\"\n )\n .filter((node) => node.data.id === id)\n .attr(\"data-highlighted\", true)\n\n // highlight publications in pub table\n const publicationId = node.data.query && node.data.query.id\n if (publicationId) {\n selectAll(\"[data-publication-id='\" + publicationId + \"']\").style(\n \"background-color\",\n coloring.light\n )\n }\n })\n .on(\"mouseleave touchend\", function (event, node) {\n if (!event.target) {\n return\n }\n\n const coloring = getEventColors(node.data)\n // unhighlight label\n select(event.target).select(\"rect\").style(\"fill\", coloring.standard)\n\n // unhighlight link\n container.selectAll(\".link-layer path\").attr(\"data-highlighted\", false)\n\n // unhighlight publication in pub table\n const publicationId = node.data.query && node.data.query.id\n if (publicationId) {\n selectAll(\"[data-publication-id='\" + publicationId + \"']\").style(\n \"background-color\",\n null\n )\n }\n })\n }\n\n function onRender() {\n // Keep tick labels readable by alternating the length of the ticks\n // once the available space per tick falls below a threshold of 32px\n const ticks = axisLayer.selectAll(\"g.tick\")\n const widthPerTick = dimension.width / ticks.size()\n if (widthPerTick <= 32) {\n ticks.each(function (_datum: unknown, i: number) {\n if (i % 2 !== 0) {\n return\n }\n\n const tick = select(this)\n const textNode = tick.select(\"text\")\n const lineNode = tick.select(\"line\")\n textNode.attr(\n \"y\",\n Number(textNode.attr(\"y\")) + options.alternatingTickLength\n )\n lineNode.attr(\n \"y2\",\n Number(lineNode.attr(\"y2\")) + options.alternatingTickLength\n )\n })\n }\n }\n\n return {\n draw: function redraw() {\n // Container may have changed dimensions\n fitToContainer()\n // Automatically update size according to label positions\n resizeToFitNodes()\n // Force another rerender\n updateDimension()\n updateDimension.flush()\n },\n }\n}\n","import { Renderer, Rendition, alreadyDrawn } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { Data } from \"../base\"\n\nexport const overview: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (data) {\n const handler = widget.handlerValue(\"load\")\n if (handler) {\n handler(data)\n }\n }\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\n\nimport { Data } from \"../base\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { NorthData } from \"../../viz-base\"\n\nexport const personTable: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const toDate = (value: string) => (value ? new Date(value) : null)\n const formatDate = (value: string) => toDate(value)?.toLocaleDateString()\n\n const table = select(widget.container)\n .append(\"table\")\n .attr(\n \"class\",\n \"ui bizq very compact celled small unstackable striped table\"\n )\n const tbody = table.append(\"tbody\")\n\n NorthData.debug(\"data\", data)\n for (const section of [\"current\", \"former\"]) {\n if (section == \"former\")\n tbody\n .append(\"tr\")\n .append(\"td\")\n .attr(\"class\", \"first\")\n .attr(\"colspan\", 2)\n .text(\"Vormals\")\n const groups = data[\"current\"]\n for (const group of groups) {\n NorthData.debug(\"group\", group)\n const name = group.name\n const entries = group.entries\n\n tbody\n .append(\"tr\")\n .append(\"td\")\n .attr(\"class\", \"first\")\n .attr(\"colspan\", 2)\n .text(name)\n\n for (const entry of entries) {\n NorthData.debug(\"entry\", entry)\n const tr = tbody.append(\"tr\")\n const person = entry.person\n const personCell = tr\n .append(\"td\")\n .append(\"span\")\n .text(person.name)\n .attr(\"class\", \"person\")\n for (const key in person.query) {\n personCell.attr(key, person.query[key])\n }\n const chunkCell = tr.append(\"td\")\n for (const chunk of entry.chunks) {\n let text: string | undefined = undefined\n if (!chunk.start && chunk.end) {\n text = \"bis \" + formatDate(chunk.end)\n } else if (chunk.start && !chunk.end) {\n text = \"seit \" + formatDate(chunk.start)\n } else if (chunk.start && chunk.end) {\n text = formatDate(chunk.start) + \" – \" + formatDate(chunk.end)\n }\n chunkCell.append(\"span\").text(text as string)\n }\n }\n }\n }\n\n widget.markup(table)\n\n return alreadyDrawn\n}\n","let buttons: NodeListOf<HTMLButtonElement>\nexport function setWaiting(value: boolean): void {\n if (value) {\n buttons = document.querySelectorAll<HTMLButtonElement>(\n \"button:not([disabled])\"\n )\n for (let i = 0; i < buttons.length; ++i) {\n buttons[i][\"disabled\"] = true\n }\n } else {\n if (buttons) {\n for (let i = 0; i < buttons.length; ++i) {\n buttons[i][\"disabled\"] = false\n }\n }\n }\n document.body.classList.toggle(\"waiting\", value)\n}\n","import { Data } from \"../base\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport * as Ui from \"../../util/ui\"\nimport * as Dom from \"../../util/dom\"\nimport { NorthData } from \"../../viz-base\"\n\nexport const pubShop: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const onClick = function () {\n Ui.setWaiting(true)\n const request = new XMLHttpRequest()\n request.open(\"POST\", \"/_api/shop/v1/products\")\n request.setRequestHeader(\"Content-Type\", \"application/json\")\n function onError(error: any) {\n NorthData.log(\"error\", \"cannot list pubs\", error)\n }\n request.onerror = function (error) {\n Ui.setWaiting(false)\n onError(error)\n }\n request.onload = function () {\n Ui.setWaiting(false)\n NorthData.debug(request.status)\n if (request.status >= 400) {\n onError(request.responseText || request.statusText)\n }\n NorthData.debug(\"ok\", request.responseText)\n const data = JSON.parse(request.responseText)\n NorthData.debug(\"data\", data)\n }\n request.send(JSON.stringify(widget.options))\n return false\n }\n\n Dom.onEvent(\"click\", widget.container, \"*\", onClick)\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\ninterface Publication {\n id: string\n internal: { icon: string; formattedDate: string; htmlTitle: string }\n html: string\n}\n\ninterface Data {\n publications: Publication[]\n}\n\nexport const pubTable: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const drawnPubs = select(widget.container)\n .selectAll(\".publication\")\n .data(data.publications as Publication[])\n .enter()\n .append(\"div\")\n .attr(\"class\", \"pub\")\n .attr(\"data-publication-id\", (pub) => pub[\"id\"])\n\n const header = drawnPubs.append(\"h2\")\n\n header\n .append(\"span\")\n .attr(\"class\", \"icon\")\n .text((pub) => pub.internal.icon)\n\n header\n .append(\"span\")\n .attr(\"class\", \"date\")\n .text((pub) => pub.internal.formattedDate)\n\n header\n .append(\"a\")\n .attr(\"href\", \"#\")\n .html((pub) => pub.internal.htmlTitle)\n .on(\"click\", function (event: Event) {\n const node = event.target as HTMLElement\n node?.parentElement?.parentElement?.classList?.toggle(\"expanded\")\n event.preventDefault()\n })\n\n drawnPubs\n .append(\"div\")\n .attr(\"class\", \"text\")\n .html((pub) => pub.html)\n\n widget.markup(drawnPubs)\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { trim, toQueryString } from \"../../util/string\"\nimport { Renderer, Rendition, alreadyDrawn } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { Data } from \"../base\"\nimport { mixin } from \"../../util/params\"\nimport { dataSource } from \"../datasource\"\n\n// Improve types when working on this!\n\nexport const searchResults: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const root = select(widget.container)\n const searchResults = root.append(\"ul\").attr(\"class\", \"search-results\")\n const cursor = data.cursor\n function transformResult(item: any): any {\n const query: any = {}\n const subject = item.subject\n const name = subject.name[0].name\n const address = subject.address && subject.address[0]\n const city = address && address.city\n const result: any = {\n query,\n address,\n name,\n details: item.formattedDetails,\n }\n const tags = subject[\"tag\"]\n if (tags && tags[\"terminated\"]) {\n result[\"terminated\"] = true\n }\n switch (item.targetType) {\n case \"Company\":\n result[\"type\"] = \"c\"\n query[\"address\"] = city\n query[\"name\"] = name\n const register = subject.register && subject.register[0]\n if (register && register.id) {\n if (register.city) {\n query[\"registerCity\"] = register.city\n }\n query[\"registerId\"] = register.id\n }\n break\n case \"Person\":\n result[\"type\"] = \"p\"\n const nameParts = name.split(\",\")\n query[\"lastName\"] = nameParts[0]\n query[\"firstName\"] = trim(nameParts[1])\n query[\"birthDate\"] = subject.birthDate\n query[\"address\"] = city\n if (!query[\"address\"] || !query[\"birthDate\"]) {\n query[\"id\"] = item.targetId\n }\n break\n }\n return result\n }\n\n const more = root.append(\"div\").attr(\"class\", \"more\")\n const resultMessageNode = more.append(\"p\")\n const moreLink = more\n .append(\"a\")\n .attr(\"href\", \"#\")\n .on(\"click\", function (event: Event) {\n const newOptions = mixin(widget.options, {\n offset: moreLink.attr(\"data-offset\"),\n position: moreLink.attr(\"data-position\"),\n })\n dataSource.requestData(\n newOptions,\n function (data) {\n drawResultItems(data)\n },\n widget.fail.bind(widget)\n )\n\n event.preventDefault()\n })\n\n const noResults = cursor.items.length == 0\n const onNoResults = widget.handlerValue(\"noResults\")\n const onOneResult = widget.handlerValue(\"oneResult\")\n if (noResults) {\n if (onNoResults) {\n onNoResults()\n } else {\n root.append(\"p\").text(\"Keine Resultate zu dieser Suche.\")\n }\n } else if (cursor.items.length == 1 && onOneResult) {\n onOneResult(transformResult(cursor.items[0]))\n } else {\n drawResultItems(data)\n }\n\n function drawResultItems(data: any) {\n const cursor = data.cursor\n for (const _item of cursor.items) {\n const item = transformResult(_item)\n const query = item[\"query\"]\n const city = query[\"address\"]\n let linkText = query[\"name\"]\n if (!linkText) {\n linkText = query[\"lastName\"] + \", \" + query[\"firstName\"]\n }\n if (city) {\n linkText += \", \" + city\n }\n const searchResult = searchResults\n .append(\"li\")\n .attr(\"class\", \"search-result\")\n searchResult\n .append(\"span\")\n .attr(\"class\", \"icon\")\n .text(_item.targetType == \"Company\" ? \"\\uf1ad\" : \"\\uf007\")\n const searchResultBody = searchResult.append(\"div\").attr(\"class\", \"body\")\n const link = searchResultBody\n .append(\"a\")\n .attr(\"href\", document.location.pathname + \"?\" + toQueryString(query))\n .text(linkText)\n .on(\"click\", function (event: Event) {\n if (widget.invokeClickHandler(data)) {\n event.preventDefault()\n }\n })\n if (item[\"terminated\"]) {\n const terminationSymbol = \"✝\\uFE0E\"\n link.append(\"sup\").attr(\"title\", \"erloschen\").text(terminationSymbol)\n }\n searchResultBody\n .append(\"div\")\n .attr(\"class\", \"detail\")\n .text(item[\"detail\"])\n for (let formattedDetail of _item[\"formattedDetails\"]) {\n searchResultBody\n .append(\"div\")\n .attr(\"class\", \"detail\")\n .text(formattedDetail)\n }\n }\n more.attr(\"data-total\", cursor.total)\n\n let resultMessage = Number(\n cursor.offset + cursor.items.length\n ).toLocaleString()\n if (cursor.total) {\n resultMessage +=\n \" Resultate von \" +\n Number(cursor.total).toLocaleString() +\n \" insgesamt.\"\n } else {\n resultMessage += \" Resultate.\"\n }\n resultMessageNode.text(resultMessage)\n\n moreLink\n .text(cursor.lastPage ? \"\" : \"Weitere Resultate anzeigen\")\n .attr(\"data-offset\", cursor.offset + cursor.limit)\n .attr(\"data-position\", data.properties.nextPosition)\n }\n return alreadyDrawn\n}\n","import { select, Selection } from \"d3-selection\"\nimport { closest } from \"../../util/dom\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { trilingual } from \"../i18n\"\n\ntype HTMLSelection = Selection<HTMLElement, unknown, null, undefined>\ntype AnySelection = Selection<any, unknown, any, unknown>\n\ninterface Cell {\n value?: number\n}\n\ninterface Row {\n semantics: string[]\n cell: Cell[]\n level: { value: number }\n info: { childCount: number; id: number; parentId?: number }\n text: string\n name: string\n}\n\ninterface Currency {\n factor: number\n unit: string\n}\n\ninterface Column {\n currency: Currency\n date: string\n info: {\n noteHtml: string\n publication: {\n title: string\n date: string\n id: number\n }\n source: string | string[]\n }\n}\n\ninterface Sheet {\n column: Column[]\n row: Row[]\n info: {\n csvUrl: string\n item: string\n }\n}\n\ninterface Data {\n sheet: Sheet[]\n}\n\n// https://stackoverflow.com/questions/18082/validate-decimal-numbers-in-javascript-isnumeric\nfunction isNumeric(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n)\n}\n\nexport const sheet: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (!data.sheet) {\n throw new Error(\"no data\")\n }\n for (const sheet of data.sheet) {\n if (!sheet) {\n const subject = widget.stringValue(\"subject\") || \"assets\" // ???\n throw new Error(\"no data for subject '\" + subject + \"'\")\n }\n\n const columns = sheet.column\n const rows = sheet.row\n\n const reverse = widget.isReverseChronology()\n const maxYears = widget.numberValue(\"maxYears\") || 5\n if (reverse) {\n columns.reverse()\n }\n const shallShowColumn = function (iCol: number) {\n return reverse ? iCol < maxYears : iCol >= columns.length - maxYears\n }\n\n if (columns.length <= 0) {\n break\n }\n const currency = columns[0].currency\n let factor = 1\n let unit = currency.unit\n let formatter = widget.i18n().numberFormatter\n\n if (currency) {\n let veryBigCellCount = 0\n let bigCellCount = 0\n let mediumCellCount = 0\n\n for (let row of rows) {\n for (let selection of row.cell) {\n if (isNumeric(selection.value)) {\n const value = Math.abs(selection.value as number)\n if (value > 1e5) {\n ++mediumCellCount\n if (value > 1e7) {\n ++bigCellCount\n if (value > 1e10) {\n ++veryBigCellCount\n }\n }\n }\n }\n }\n }\n\n const qualifyingCellCount = 5\n const veryBigCells = veryBigCellCount >= qualifyingCellCount\n const bigCells = bigCellCount >= qualifyingCellCount\n const smallCells = mediumCellCount < qualifyingCellCount\n\n if (smallCells) {\n formatter = widget.i18n().decimalFormatter\n }\n\n if (bigCells) {\n if (unit == \"EUR\") {\n unit = \"€\"\n }\n if (unit == \"USD\") {\n unit = \"$\"\n }\n if (unit == \"GBP\") {\n unit = \"£\"\n }\n const prefix = trilingual(\"K\", \"Tsd. \", \"K\")\n factor = 1e3\n if (veryBigCells) {\n factor = 1e6\n const prefix = trilingual(\"M\", \"Mio. \", \"M\")\n }\n if (prefix.length == 1 && unit.length == 1) {\n unit = \" \" + unit\n }\n unit = prefix + unit\n }\n }\n\n const itemNode = document.createElement(\"table\")\n const table = select(itemNode).attr(\n \"class\",\n \"ui bizq very compact celled small unstackable selectable first stuck table\"\n )\n const theadRow = table.append(\"thead\").append(\"tr\")\n const theadLeft = theadRow.append(\"th\").attr(\"class\", \"first\")\n\n theadLeft.text(unit)\n theadLeft\n .append(\"a\")\n .attr(\"href\", sheet.info.csvUrl)\n .attr(\"download\", \"download\")\n .attr(\"title\", \"CSV/Excel Download\")\n .classed(\"screen-only\", true)\n .append(\"i\")\n .attr(\"class\", \"download icon\")\n\n columns.forEach((col, iCol) => {\n if (shallShowColumn(iCol)) {\n theadRow\n .append(\"th\")\n .text(col.date ? widget.i18n().dateFormatter(col.date) : \"\")\n .attr(\"data-col\", columns.length - iCol)\n .attr(\"data-source-title\", col.info.publication.title)\n .attr(\"data-source-date\", col.info.publication.date)\n }\n })\n\n const hasSemantics = (row: Row, semantic: string) =>\n row && row.semantics && row.semantics.indexOf(semantic) >= 0\n const isSummary = (row: Row) => hasSemantics(row, \"SUMMARY\")\n const isCustom = (row: Row) => hasSemantics(row, \"CUSTOM\")\n\n const tbody = table.append(\"tbody\")\n\n rows.forEach((row) => {\n if (!hasSemantics(row, \"HELPER\")) {\n let nonEmptyCells = 0\n\n const maxLevelVisible = widget.isPrint() ? 2 : 1\n const level = row.level && row.level.value\n let clazz = level < maxLevelVisible ? \"expanded\" : \"closed\"\n if (level > maxLevelVisible) {\n clazz += \" hidden\"\n }\n\n const tr = select(document.createElement(\"tr\"))\n .attr(\"class\", clazz + \" active-on-hover\")\n .attr(\"data-row\", row.info && row.info.id)\n .attr(\"data-level\", level)\n .attr(\"data-parent-row\", row.info ? row.info.parentId : (null as any))\n .attr(\"data-child-count\", () =>\n row.info &&\n typeof row.info.childCount == \"number\" &&\n row.info.childCount > 0\n ? row.info.childCount\n : null\n )\n .attr(\"data-summary\", isSummary(row))\n .attr(\"data-custom\", isCustom(row))\n .on(\"click\", function (event: Event) {\n const node = event && (event.target as HTMLElement)\n toggleChildren(node)\n event.preventDefault()\n })\n\n tr.append(\"td\")\n .attr(\"class\", \"first\")\n .text(row.text ?? row.name)\n\n if (reverse) {\n row.cell.reverse()\n }\n\n row.cell.forEach((cell, iCol: number) => {\n if (shallShowColumn(iCol)) {\n const text =\n typeof cell.value === \"undefined\"\n ? \"\"\n : formatter(cell.value / factor)\n if (text) {\n nonEmptyCells++\n }\n tr.append(\"td\")\n .attr(\"data-col\", columns.length - iCol)\n .text(text)\n }\n })\n\n if (nonEmptyCells > 0) {\n tbody.node()!.appendChild(tr.node()!)\n } else if (row.info?.parentId) {\n tbody\n .select(`tr[data-row=\"${row.info.parentId}\"][data-child-count]`)\n .attr(\"data-child-count\", function () {\n const newChildCount =\n parseInt(select(this).attr(\"data-child-count\")) - 1\n return newChildCount > 0 ? newChildCount : null\n })\n }\n }\n })\n\n const tfootRow = table.append(\"tfoot\").append(\"tr\")\n\n tfootRow\n .append(\"th\")\n .attr(\"class\", \"first\")\n .text(widget.trilingual(\"Source\", \"Quelle\", \"Source\"))\n\n const clickHandler = widget.handlerValue(\"sourceClick\")\n columns.forEach((col, iCol) => {\n if (shallShowColumn(iCol)) {\n const th = tfootRow.append(\"th\").attr(\"data-col\", columns.length - iCol)\n th.html(col.info.noteHtml)\n\n if (clickHandler) {\n const publication = col.info.publication\n const source =\n typeof col.info.source === \"string\"\n ? [col.info.source]\n : col.info.source\n\n th.selectAll(\"a\")\n .attr(\"href\", \"javascript:void(0);\")\n .on(\"click\", function (event: Event) {\n event.preventDefault()\n clickHandler({ publication, source })\n })\n }\n }\n })\n\n itemNode.setAttribute(\"data-item\", sheet.info.item)\n widget.showItem(undefined, itemNode)\n }\n\n // mouse interactions\n const expanded = \"expanded\"\n const closed = \"closed\"\n function rowOf(node: HTMLElement): HTMLSelection {\n const d3node = select(node)\n return node.matches(\"tr\") ? d3node : closest(d3node, \"tr\")\n }\n function children(row: HTMLSelection): AnySelection {\n let id = row.size() == 0 ? \"?\" : row.attr(\"data-row\")\n return closest(row, \"table\").selectAll(\"[data-parent-row='\" + id + \"']\")\n }\n function showChildren(node: HTMLElement) {\n const row = rowOf(node)\n row.classed(closed, false).classed(expanded, true)\n children(row).classed(\"hidden\", false)\n }\n function hideChildren(node: HTMLElement) {\n const row = rowOf(node)\n row.classed(closed, true).classed(expanded, false)\n children(row)\n .classed(\"hidden\", true)\n .each(function () {\n hideChildren(this)\n })\n }\n function toggleChildren(node: HTMLElement) {\n const row = rowOf(node)\n if (row.classed(expanded)) {\n hideChildren(node)\n } else {\n showChildren(node)\n }\n }\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { scaleTime } from \"d3-scale\"\nimport { axisBottom } from \"d3-axis\"\n\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { trilingual } from \"../i18n\"\n\ninterface Bar {\n start?: string\n assumedStart: string\n end?: string\n openEnded: boolean\n role: {\n name: string\n abbr: string\n cat: number\n }\n title: string\n query: object\n url?: string\n type: string\n}\n\ninterface Line {\n text: string\n description: string\n bars: Bar[]\n}\n\ninterface Data {\n lines: Line[]\n startDate: string\n endDate: string\n}\n\nexport const vita: Renderer = function (widget: Widget, data: Data): Rendition {\n const container = widget.container\n const tickFormat = widget.i18n().timeScaleFormatter\n const margin = { chartLeft: 12, right: 15, top: 0, bottom: 0 }\n\n const lineHeight = 18\n const itemMargin = 5\n const outerTextMargin = 2\n const barGap = 0.5\n const maxTriangleWidth = lineHeight * 0.71\n const lines = data.lines\n\n if (!lines || !lines.length) {\n throw new Error(\"vita empty\")\n }\n\n const nLines = lines.length\n const height = margin.top + (lineHeight + itemMargin) * nLines + itemMargin\n\n const beginning = new Date(data.startDate).getTime()\n const ending = new Date(data.endDate).getTime()\n\n const toDate = (value: string | undefined) => (value ? new Date(value) : null)\n const svg = select(widget.container).append(\"svg\")\n svg.append(\"title\").text(trilingual(\"History\", \"Historie\", \"Historique\"))\n const linkifier = widget.getLinkifier()\n const formatDate = (date: Date | null) =>\n date ? date.toLocaleDateString() : \"\"\n\n const draw = function () {\n svg.select(\"g\").remove()\n const canvas = svg.append(\"g\")\n const width = container.getBoundingClientRect().width\n svg.attr(\"width\", width)\n\n const determineTextWidths = function () {\n const texts = []\n for (const line of lines) {\n for (const bar of line.bars) {\n texts.push(bar.role.abbr)\n texts.push(bar.role.abbr + \" \" + line.text)\n }\n }\n\n const textsWidth: Record<string, number> = {}\n canvas\n .selectAll(\".textWidthDummy\")\n .data(texts)\n .enter()\n .append(\"text\")\n .text(function (d) {\n return d\n })\n .each(function (d) {\n textsWidth[d] = (this as SVGTextElement).getComputedTextLength()\n this.remove()\n })\n return textsWidth\n }\n\n const textsWidths = determineTextWidths()\n const getLabel = function (\n text: string,\n optionalSuffix: string | undefined,\n barWidth: number\n ): { text: string; width: number; containsSuffix?: boolean } {\n if (optionalSuffix) {\n const compoundText = text + \" \" + optionalSuffix\n const textWidth = textsWidths[compoundText]\n // Require small additional padding for compound labels\n const availableWidth = barWidth - 8\n if (textWidth !== undefined && availableWidth > textWidth) {\n return { text: compoundText, width: textWidth, containsSuffix: true }\n }\n }\n\n const textWidth = textsWidths[text]\n if (textWidth !== undefined && barWidth > textWidth) {\n return { text: text, width: textWidth }\n }\n return { text: \"…\", width: 0 }\n }\n\n const shouldUseNiceScale = function () {\n if (width >= 600) {\n return true\n }\n\n const paddingMilliseconds = 30 * 86400 * 1000 // 30 days\n for (const line of lines) {\n for (const bar of line.bars) {\n const startTime = toDate(bar.assumedStart)\n const endTime = toDate(bar.end) || new Date()\n if (!startTime) {\n // If start time or end time is missing the bar will\n // latch to the start of the diagram\n return true\n }\n\n // If one of the bars starts or ends close to the edge\n if (\n Math.abs(startTime.getTime() - beginning) < paddingMilliseconds ||\n Math.abs(ending - endTime.getTime()) < paddingMilliseconds\n ) {\n return true\n }\n }\n }\n return false\n }\n\n let xScale = scaleTime()\n .domain([beginning, ending])\n .range([margin.chartLeft, width - margin.right])\n if (shouldUseNiceScale()) {\n xScale = xScale.nice()\n }\n\n const xAxis = axisBottom<Date>(xScale)\n .tickFormat(tickFormat)\n .tickSizeInner(8)\n .tickSizeOuter(10)\n // min 100px distance and ~10 ticks (plus outer ticks and ticks added by nice())\n .ticks(Math.min(width / 100, 10))\n\n // small ticks\n canvas\n .append(\"g\")\n .attr(\"class\", \"axis\")\n .attr(\"transform\", \"translate(\" + 0 + \",\" + height + \")\")\n .call(xAxis)\n .attr(\"font-size\", null)\n .attr(\"font-family\", null)\n\n // vertical grid lines\n canvas\n .append(\"g\")\n .attr(\"class\", \"axis grid\")\n .attr(\"transform\", \"translate(\" + 0 + \",\" + height + \")\")\n .call(xAxis.tickSizeInner(-height).tickSizeOuter(0))\n .call((g) => g.selectAll(\".tick text\").remove())\n\n const chartLeft = margin.chartLeft\n const chartRight = width - margin.right\n\n // draw the chart\n let iLine = 0\n for (const line of lines) {\n const lineTop =\n margin.top + (lineHeight + itemMargin) * iLine + itemMargin\n const lineBottom = lineTop + lineHeight\n const lineYTextBase = lineTop + lineHeight * 0.75 - 1\n const lineYCenter = (lineTop + lineBottom) / 2\n\n canvas\n .append(\"line\")\n .attr(\"x1\", chartLeft)\n .attr(\"x2\", chartRight)\n .attr(\"y1\", lineYCenter)\n .attr(\"y2\", lineYCenter)\n .attr(\"class\", \"grid\")\n\n const nBars = line.bars.length\n let iBar = 0\n let companyNameShown = false\n let freeSpaceLeft = 0\n let freeSpaceRight = 0\n for (const bar of line.bars) {\n const startTime = toDate(bar.assumedStart)\n const endTime = toDate(bar.end) || new Date()\n let barLeft = startTime\n ? (xScale(startTime) as number)\n : margin.chartLeft + maxTriangleWidth\n const openStarted = !bar.start\n if (openStarted) {\n barLeft += maxTriangleWidth\n } else {\n barLeft += barGap\n }\n let barRight = xScale(endTime) as number\n if (bar.openEnded && bar.end) {\n barRight -= maxTriangleWidth\n } else {\n barRight -= barGap\n }\n barRight = Math.max(barLeft, barRight)\n\n const barWidth = barRight - barLeft\n let textX = barLeft + barWidth / 2\n // Use space provided by open ended bars to make short bars more legible\n if (barWidth < 10) {\n if (openStarted && !bar.openEnded) {\n textX -= 3\n } else if (bar.openEnded && !openStarted) {\n textX += 3\n }\n }\n\n /*\n let timeInfo: string | null = null\n if (!bar.start && bar.end) {\n timeInfo = \"bis \" + formatDate(endTime)\n } else if (bar.start && !bar.end) {\n timeInfo = \"ab \" + formatDate(startTime)\n } else if (bar.start && bar.end) {\n timeInfo = formatDate(startTime) + \" – \" + formatDate(endTime)\n }\n const title =\n (timeInfo ? timeInfo + \" \" : \"\") +\n bar.role.name +\n \" \" +\n line.description\n */\n\n const label = getLabel(\n bar.role.abbr,\n !companyNameShown ? line.text : undefined,\n barWidth\n )\n // where do we put the company name?\n if (label.containsSuffix) {\n companyNameShown = true\n }\n\n if (iBar == 0) {\n const barOuterLeft = openStarted\n ? barLeft - maxTriangleWidth\n : barLeft\n const barOrTextLeft = label.width\n ? Math.min(textX - label.width / 2, barOuterLeft)\n : barOuterLeft\n freeSpaceLeft = barOrTextLeft - chartLeft - outerTextMargin\n }\n if (iBar == nBars - 1) {\n const barOuterRight = bar.openEnded\n ? barRight + maxTriangleWidth\n : barRight\n const barOrTextLeft = label.width\n ? Math.max(textX + label.width / 2, barOuterRight)\n : barOuterRight\n freeSpaceRight = chartRight - barOrTextLeft - outerTextMargin\n }\n\n const link = canvas\n .append(\"svg:a\")\n // .attr(\"xlink:href\", linkifier(bar))\n .attr(\"xlink:href\", bar.url || \"\")\n .attr(\"xlink:title\", bar.title)\n .attr(\"data-old\", bar.end ? true : (null as any))\n .attr(\"data-clickable\", () =>\n widget.getClickHandler(\"p\") ? true : (null as any)\n )\n .on(\"click\", function (event) {\n if (widget.invokeClickHandler(bar)) {\n event.preventDefault()\n }\n })\n link.append(\"title\").text(bar.title)\n\n if (openStarted) {\n const triangleLeft = barLeft - maxTriangleWidth\n const triangleRight = barLeft\n const triangleTop = lineTop\n const triangleBottom = lineTop + lineHeight\n const points = [\n triangleRight + \",\" + triangleTop,\n triangleRight + \",\" + triangleBottom,\n triangleLeft + \",\" + (triangleTop + triangleBottom) / 2,\n ]\n link\n .append(\"polygon\")\n .attr(\"points\", points.join(\" \"))\n .attr(\"class\", \"in c\" + bar.role.cat)\n }\n\n if (bar.openEnded) {\n const triangleLeft = barRight\n const triangleRight = Math.min(\n maxTriangleWidth + triangleLeft,\n chartRight\n )\n const triangleTop = lineTop\n const triangleBottom = lineTop + lineHeight\n const points = [\n triangleLeft + \",\" + triangleTop,\n triangleLeft + \",\" + triangleBottom,\n triangleRight + \",\" + (triangleTop + triangleBottom) / 2,\n ]\n link\n .append(\"polygon\")\n .attr(\"points\", points.join(\" \"))\n .attr(\"class\", \"out c\" + bar.role.cat)\n }\n\n link\n .append(\"rect\")\n .attr(\"x\", barLeft)\n .attr(\"y\", lineTop)\n .attr(\"width\", barWidth)\n .attr(\"height\", lineHeight)\n .attr(\"class\", \"c\" + bar.role.cat)\n\n link\n .append(\"text\")\n .attr(\"x\", textX)\n .attr(\"y\", lineYTextBase)\n .attr(\"class\", \"label-text c\" + bar.role.cat)\n .text(label.text)\n\n ++iBar\n } // inner for\n\n if (!companyNameShown) {\n // look for free space to show name\n if (freeSpaceLeft > freeSpaceRight) {\n if (freeSpaceLeft > 200) {\n // show on the left\n canvas\n .append(\"text\")\n .attr(\"x\", chartLeft + freeSpaceLeft)\n .attr(\"y\", lineYTextBase)\n .attr(\"class\", \"left extra\")\n .text(line.text)\n }\n } else {\n if (freeSpaceRight > 200) {\n // show on the right\n canvas\n .append(\"text\")\n .attr(\"x\", chartRight - freeSpaceRight)\n .attr(\"y\", lineYTextBase)\n .attr(\"class\", \"right extra\")\n .text(line.text)\n }\n }\n }\n\n // ffd END\n ++iLine\n } // outer for\n\n const today = new Date()\n const todayTitle = \"Heute, \" + formatDate(today)\n const xToday = xScale(today) as number\n const todayParent = canvas.append(\"svg:a\").attr(\"xlink:title\", todayTitle)\n todayParent.append(\"title\").text(todayTitle)\n todayParent\n .append(\"line\")\n .attr(\"class\", \"today\")\n .attr(\"x1\", xToday)\n .attr(\"y1\", 0)\n .attr(\"x2\", xToday)\n .attr(\"y2\", height + 15)\n\n svg.attr(\"height\", height + 30)\n }\n\n return { draw }\n}\n","import { VERSION } from \"./env\"\nimport { registerRenderers } from \"./viz/renderer\"\nimport { Widget as WidgetClass } from \"./viz/widget\"\nimport { barChart } from \"./viz/widgets/barchart\"\nimport { contact } from \"./viz/widgets/contacts\"\nimport { dendrogram } from \"./viz/widgets/dendrogram\"\nimport { drillDown } from \"./viz/widgets/drilldown\"\nimport { financials } from \"./viz/widgets/financials\"\nimport { graph } from \"./viz/widgets/graph\"\nimport { history } from \"./viz/widgets/history\"\nimport { overview } from \"./viz/widgets/overview\"\nimport { personTable } from \"./viz/widgets/persontable\"\nimport { pubShop } from \"./viz/widgets/pubshop\"\nimport { pubTable } from \"./viz/widgets/pubtable\"\nimport { searchResults } from \"./viz/widgets/searchresults\"\nimport { sheet } from \"./viz/widgets/sheet\"\nimport { vita } from \"./viz/widgets/vita\"\n\nexport type ConfigOptions =\n | {\n /** Domain to retrieve widget data */\n dataDomain?: string\n /** Automatically detect data domain from script tags\n * @deprecated */\n detectDataDomain?: boolean\n }\n | undefined\n\nexport namespace Bizq {\n export const Widget = WidgetClass\n export const version = VERSION\n\n export const options = {\n dataDomain: \"\",\n detectDataDomain: true,\n __debug: true,\n }\n\n export function initialize(opts?: ConfigOptions) {\n options.__debug = false\n if (opts === undefined) {\n // Set sensible defaults for api users\n options.dataDomain = \"https://www.northdata.de\"\n options.detectDataDomain = false\n } else {\n options.dataDomain = opts.dataDomain ?? options.dataDomain\n options.detectDataDomain =\n opts.detectDataDomain ?? options.detectDataDomain\n }\n }\n\n export function debug(...args: unknown[]) {\n log(\"info\", ...args)\n }\n export function log(type: \"error\" | \"info\", ...args: unknown[]) {\n if (options.__debug) {\n console[type](...args)\n }\n }\n\n registerRenderers({\n barChart,\n drillDown,\n graph,\n dendrogram,\n history,\n vita,\n pubTable,\n pubShop,\n personTable,\n sheet,\n financials,\n contact,\n overview,\n searchResults,\n })\n}\n\nexport const NorthData = Bizq\n","import { Bizq } from \"./viz-base\"\n\nexport const Widget = Bizq.Widget\nexport const initialize = Bizq.initialize\nexport const version = Bizq.version\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"viz.esm.js","mappings":"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AAc,aAAa,GAAG,E;;;;;;;ACA3gsB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;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,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+CAA+C,iBAAiB;AAChE;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;SCxXA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA;UACA,iCAAiC,WAAW;UAC5C;UACA,E;;;;;UCPA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA,E;;;;;UCPA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA;UACA,CAAC,I;;;;;UCPD,wF;;;;;;ACIO,IAAM,OAAO,GAAG,UAAW;AAC3B,IAAM,cAAc,GAAG,+DAAkB;;;ACHzC,SAAS,KAAK,CAAI,MAAiB;IACxC,OAAO,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC;AAC1B,CAAC;AAEM,SAAS,MAAM,CAAI,OAAkB,EAAE,OAAkB;IAC9D,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;AACvC,CAAC;AAEM,SAAS,KAAK,CAAI,MAAiB,EAAE,MAAiB;IAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;IAChC,OAAO,MAAM;AACf,CAAC;;;ACbqC;AAU/B,IAAM,YAAY,GAAc;IACrC,IAAI,gBAAI,CAAC;CACV;AAED,IAAM,mBAAmB,GAAc,EAAE;AAElC,SAAS,iBAAiB,CAAC,SAAoB;IACpD,KAAK,CAAC,mBAAmB,EAAE,SAAS,CAAC;AACvC,CAAC;AAEM,SAAS,qBAAqB,CAAC,GAAW;IAC/C,OAAO,mBAAmB,CAAC,GAAG,CAAC;AACjC,CAAC;;;ACtBD,6BAAe,oBAAS;AACxB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;ACT2C;;AAEpC;;AAEA;AACA;;AAEP;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnE,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnE,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,UAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AACnB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,UAAM,MAAM,SAAG,EAAE,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,aAAa,YAAY,EAAE,YAAY,EAAE,YAAY;AACrD;;AAEA;AACA,aAAa,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,oDAAoD;AAC3G;;AAEA;AACA;AACA,YAAY,2BAA2B,EAAE,eAAe,IAAI,eAAe,IAAI,eAAe,EAAE,qBAAqB,EAAE,GAAG;AAC1H;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAM,WAAW,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,2BAA2B,EAAE,eAAe,IAAI,qBAAqB,KAAK,qBAAqB,GAAG,qBAAqB,EAAE,GAAG;AAC1I;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3YA;;AAEA,6BAAe,kBAAS;AACxB;AACA;AACA;AACA;;;ACNqC;AACC;;AAEtC,6BAAe,0BAAS;AACxB,6CAA6C,QAAQ;;AAErD,sFAAsF,OAAO;AAC7F,gHAAgH,OAAO;AACvH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;AChBA;AACA;AACA;AACA,cAAc;AACd;AACA;AACe;AACf;AACA;;;ACRA;AACA;AACA;;AAEA,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;;;ACRqC;AACL;AACY;;AAE5C;AACA;AACA,WAAW,KAAK;AAChB;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA,gBAAgB,WAAW;;AAE3B,0FAA0F,OAAO;AACjG,+DAA+D,OAAO;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;ACxBA,6BAAe,iBAAS;AACxB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;;ACV2C;;AAE3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,qBAAS;AACxB;AACA,wDAAwD,YAAY;AACpE;;;ACjB2C;;AAE3C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,wBAAS;AACxB;AACA,6DAA6D,YAAY;AACzE;;;ACjBqC;AACD;;AAEpC,6BAAe,0BAAS;AACxB,2CAA2C,OAAO;;AAElD,sFAAsF,OAAO;AAC7F,6FAA6F,OAAO;AACpG;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;ACfA,6BAAe,gBAAS;AACxB;AACA;;;ACFiC;AACI;;AAErC,6BAAe,iBAAW;AAC1B,aAAa,SAAS,iCAAiC,MAAM;AAC7D;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,sDAAsD;AACvF,wCAAwC,gDAAgD;AACxF,sCAAsC,8CAA8C;AACpF,yCAAyC;AACzC;;;ACrBA,6BAAe,sBAAS;AACxB;AACA;AACA;AACA;;;ACJqC;AACA;AACC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA,MAAM;AACN,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA;;AAEA,2CAA2C,YAAQ;;AAEnD,uGAAuG,OAAO;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,wBAAwB;AACxB;;;AC/HiC;AACI;;AAErC,6BAAe,gBAAW;AAC1B,aAAa,SAAS,gCAAgC,MAAM;AAC5D;;;ACLA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;;ACdqC;;AAErC,6BAAe,eAAS;AACxB;;AAEA,+JAA+J,OAAO;AACtK,yHAAyH,OAAO;AAChI;AACA;AACA;AACA;AACA;;AAEA,SAAS,QAAQ;AACjB;AACA;;AAEA,aAAa,SAAS;AACtB;;;AClBA,6BAAe,iBAAW;;AAE1B,6DAA6D,QAAQ;AACrE,6EAA6E,SAAS;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACZqC;;AAErC,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA;;AAEA,uFAAuF,OAAO;AAC9F,yGAAyG,OAAO;AAChH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;AAEA;AACA;AACA;;;ACvBA,6BAAe,gBAAW;AAC1B;AACA;AACA;AACA;AACA;;;ACLA,6BAAe,iBAAW;AAC1B;AACA;;;ACFA,6BAAe,gBAAW;;AAE1B,4DAA4D,OAAO;AACnE,yDAAyD,OAAO;AAChE;AACA;AACA;AACA;;AAEA;AACA;;;ACVA,6BAAe,gBAAW;AAC1B;AACA,mCAAmC;AACnC;AACA;;;ACJA,6BAAe,2BAAW;AAC1B;AACA;;;ACFA,6BAAe,cAAS;;AAExB,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA;AACA;;AAEA;AACA;;;ACTO;;AAEP,iDAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACRuC;;AAEzC,6BAAe,mBAAS;AACxB;AACA;AACA,SAAS,UAAU,2BAA2B,OAAO,UAAU,uBAAuB,QAAQ;AAC9F;;;ACNwC;;AAExC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB,iBAAiB,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACxDA,6BAAe,oBAAS;AACxB;AACA;AACA,2BAA2B;AAC3B;;;ACJuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,eAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,SAAS,UAAW;AACpB;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,kBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,iBAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AC1EA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACNA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACNuC;AACD;;AAEtC;AACA;AACA;AACA;AACA,mBAAmB,KAAK,8CAA8C,KAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,iBAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;;ACxBoC;;AAEpC,6BAAe,gBAAS;AACxB,mDAAmD,OAAO;AAC1D;AACA;AACA,GAAG;AACH;;;ACPoC;AACE;;AAEtC;AACA;AACA;;AAEA,6BAAe,gBAAS;AACxB,mDAAmD,OAAO;AAC1D,uFAAuF,QAAQ;AAC/F;AACA;AACA,GAAG;AACH;;;ACbA;AACA;AACA;AACA;;AAEA,6BAAe,4BAAW;AAC1B;AACA;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAAe,yBAAS;AACxB;AACA;;;ACZA,6BAAe,yBAAS;AACxB;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,6BAAe,YAAS;AACxB;;AAEA;AACA;AACA,8CAA8C,OAAO;AACrD,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;;;AClEuC;;AAEvC;AACA,eAAe,UAAW;AAC1B;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;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J,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,sBAAsB;QAC7B,eAAe,CAAC,eAAe,CAAC;QAChC,eAAe,GAAG,EAAE;IACtB,CAAC;IAED,OAAO,EAAE,WAAW,eAAE;AACxB,CAAC,CAAC,EAAE;;;ACrGJ;;AAEO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,oDAAoD;AACpD,UAAU;AACV,oDAAoD;AACpD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACpEO;AACA;AACA;AACA;AACA;AACA;AACA;;;ACNoC;AACgB;;AAE3D;AACA,SAAS,YAAY;AACrB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,kFAAkF,cAAc,IAAI,YAAY;AAChH,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEP;AACA,SAAS,YAAY;AACrB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,2BAA2B,YAAY;AACvC,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvDoC;AACe;;AAEnD,gBAAgB,YAAY;AACnC;AACA;AACA,yFAAyF,cAAc,IAAI,WAAW;AACtH;AACA;;AAEO;;AAEA,eAAe,YAAY;AAClC;AACA,CAAC;AACD;AACA,CAAC;AACD,yBAAyB,WAAW;AACpC,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,gBAAgB,YAAY;AACnC;AACA,CAAC;AACD;AACA,CAAC;AACD,yBAAyB,WAAW;AACpC,CAAC;AACD,2BAA2B,WAAW;AACtC,CAAC;;AAEM;;;AClCoC;;AAEpC,iBAAiB,YAAY;AACpC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,YAAY;AACvE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEO;;AAEA,gBAAgB,YAAY;AACnC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,YAAY;AACvE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEO;;;ACrCU;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS,cAAc,SAAS;AACxE,iBAAiB,MAAM;AACvB;AACA;AACA;AACA,UAAU;AACV;AACA,wCAAwC,UAAU,cAAc,UAAU;AAC1E,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACA,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACA,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,OAAO,OAAO,QAAQ;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,UAAU,OAAO,QAAQ;AACtC;;AAEA;AACA;AACA,mCAAmC,YAAY,MAAM,YAAY;AACjE;;AAEA;AACA;AACA,aAAa,YAAY,OAAO,QAAQ,WAAW,QAAQ;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,UAAU,OAAO,QAAQ;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,YAAY,MAAM,YAAY;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,MAAM,OAAO,OAAO;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS,OAAO,OAAO;AACpC;;AAEA;AACA;AACA,mCAAmC,WAAW,MAAM,WAAW;AAC/D;;AAEA;AACA;AACA,aAAa,WAAW,OAAO,OAAO,WAAW,OAAO;AACxD;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,SAAS,OAAO,OAAO;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,WAAW,MAAM,WAAW;AAC5D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;ACxrB2C;AACE;;AAEtC,eAAe,YAAY;AAClC;AACA,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEM;;;ACboC;AACkB;;AAEtD,mBAAmB,YAAY;AACtC,mEAAmE,cAAc;AACjF,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,kBAAkB,YAAY;AACrC;AACA,CAAC;AACD,8BAA8B,cAAc;AAC5C,CAAC;AACD,yBAAyB,cAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAEM;;;ACzBoC;AACgC;;AAEpE,iBAAiB,YAAY;AACpC,mEAAmE,cAAc,uBAAuB,cAAc;AACtH,CAAC;AACD,8BAA8B,YAAY;AAC1C,CAAC;AACD,yBAAyB,YAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,gBAAgB,YAAY;AACnC;AACA,CAAC;AACD,8BAA8B,YAAY;AAC1C,CAAC;AACD,yBAAyB,YAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAEM;;;ACzBoC;;AAEpC,kBAAkB,YAAY;AACrC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEM;;AAEA,iBAAiB,YAAY;AACpC;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAEM;;;AC1BP,6BAAe,uBAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP,gGAAgG;AAChG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBsD;;AAEtD,6BAAe,kBAAS;AACxB,aAAa,kBAAkB;AAC/B;;;ACJA,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACjBA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;;;ACNA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,uDAAuD;;AAEhD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACA,6BAAe,oBAAS;AACxB,kDAAkD,OAAO;AACzD;AACA,6BAA6B;AAC7B,sCAAsC,QAAQ;AAC9C,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;;;ACVsD;;AAE/C;;AAEP,6BAAe,0BAAS;AACxB,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,kBAAkB,gCAAgC;AAC9F;;;ACfsD;;AAEtD,6BAAe,uBAAS;AACxB,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;;ACV+C;AACM;AACN;;AAE/C,kDAAe;AACf;AACA;AACA;AACA,OAAO,aAAa;AACpB;AACA;AACA;AACA;AACA,iBAAiB,aAAa;AAC9B,OAAO,aAAa;AACpB,OAAO,gBAAgB;AACvB;AACA;AACA,CAAC,EAAC;;;AClBF,6BAAe,kBAAS;AACxB;AACA;;;ACFqC;AACM;AACM;AACE;AACV;AACE;AACU;AAChB;;AAErC;AACA;;AAEA,6BAAe,gBAAS;AACxB,gFAAgF,QAAQ,GAAG,WAAW;AACtG;AACA;AACA;AACA,iDAAiD,QAAQ,GAAG,cAAc;AAC1E;AACA;AACA;;AAEA;AACA,gBAAgB,eAAe;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,WAAW;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA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hC,+CAA+C;AAC/C;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBO;AACP;AACA;AACA,mCAAmC,UAAU,iBAAiB,SAAS,YAAY;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,mCAAmC,UAAU,iBAAiB,SAAS,YAAY;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;AACA;;AAEA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AC5DmC;AACC;;AAE7B;;AAEQ;AACf,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AC7C2C;AACP;AACD;;AAEpB;AACf,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAQ,sBAAsB,0BAA0B;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;;ACpGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC,yBAAyB,OAAO;AAChC,IAAI;AACJ,iCAAiC,OAAO;AACxC,yBAAyB,OAAO;AAChC;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;ACtDe,SAAS,mBAAS;AACjC;AACA;;;ACFe;AACf;AACA;AACA;AACA;AACA;AACA;;;ACNuC;AACE;;AAE1B;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAS;AACxB,yBAAyB,mBAAS;AAClC;AACA,IAAI;AACJ,qBAAqB,mBAAS,UAAU,UAAU;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;;ACvDe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBuC;AACF;AACJ;;AAEjC,wBAAwB,QAAQ,CAAC,mBAAS;AACnC;AACA;AACA,qBAAqB,QAAQ,CAAC,MAAM;AAC3C,6CAAe,WAAW,EAAC;;;ACRpB;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClBiC;;AAEjC,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA;;;ACZA,kEAAe,YAAY,EAAC;;;ACAS;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA,0CAA0C,2BAAQ;AAClD;AACA;;AAEe;AACf;AACA,4BAA4B,2BAAQ;AACpC;;;AC5ByC;AACV;AACY;AACD;;AAE1C,0CAAe;AACf,cAAc,KAAK;;AAEnB;AACA,2BAA2B,SAAQ,mBAAmB,SAAQ;AAC9D;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,IAAI,EAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,SAAK;AAC9B,+BAA+B,WAAW;;;ACtDlB;AAC6B;;AAE5D,6BAAe,mBAAS;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,cAAc,QAAQ,YAAY,KAAK;AACvC,SAAS,QAAQ;;AAEjB;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;;;ACrBA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;;;ACLA,6BAAe,oBAAS;AACxB;AACA;AACA;AACA;;;ACJ+B;;AAE/B,6BAAe,gBAAS;AACxB,YAAY;AACZ,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,KAAK;AAClB,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACtBiC;;AAEjC;AACA;;AAEA,SAAS,WAAI;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,gBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,4BAA4B;AAC5B;AACA;AACA,yCAAyC;AACzC,4BAA4B;AAC5B;AACA,MAAM,OAAO;AACb;AACA,cAAc,SAAS,UAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AAC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AAC;QACnB,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;IACxC,CAAC;IAED,OAAO;QACL,IAAI,EAAE;YACJ,KAAuB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE,CAAC;gBAA9B,IAAM,QAAQ;gBACjB,QAAQ,EAAE;YACZ,CAAC;QACH,CAAC;KACF;AACH,CAAC;;;AC9Q8D;AAGxD,IAAM,OAAO,GAAa,UAC/B,MAAc,EACd,IAAU;IAEV,IAAI,IAAI,EAAE,CAAC;QACT,IAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,YAAY;AACrB,CAAC;;;AChBc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACXA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;ACNA,6BAAe,oBAAS;AACxB;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;;;ACXA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACdA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACPA,6BAAe,aAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;ACRA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;;;ACNA,6BAAe,cAAS;AACxB;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;AACA;;;AC7BA,6BAAe,qBAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;;ACNA,6BAAe,uBAAW;AAC1B;AACA;;;ACFA,6BAAe,kBAAW;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;ACRA,6BAAe,iBAAW;AAC1B;AACA;AACA,yBAAyB;AACzB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA;;;ACRA,6BAAe,+BAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA,IAAI;AACJ;;;ACboC;AACF;AACY;AACF;AACV;AACF;AACE;AACA;AACU;AACI;AACV;AACF;AACM;;AAE3B;AACf;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,eAAU;AACnB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,cAAc,UAAe;AAC7B,QAAQ,cAAS;AACjB,OAAO,GAAQ;AACf,QAAQ,cAAS;AACjB,QAAQ,IAAS;AACjB,aAAa,SAAc;AAC3B,eAAe,WAAgB;AAC/B,UAAU,MAAW;AACrB,SAAS,KAAU;AACnB;AACA,qBAAqB,kBAAa;AAClC;;;AC1FO;;AAEP,6BAAe,4BAAS;AACxB;AACA;AACA,qBAAqB;AACrB;;;ACNA,6BAAe,+BAAS;AACxB;AACA;AACA;AACA;;;ACJ4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO,SAAS,UAAK;AACrB;AACA;;AAEO,SAAS,eAAU;AAC1B;AACA;;;AC1EA;AACA;AACA,IAAI,YAAO;AACX,uBAAuB,YAAO;;AAE9B,SAAS,WAAM;AACf;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;;AAEA;AACA;AACA,oDAAoD,OAAO;AAC3D,qBAAqB,WAAM;AAC3B;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,gCAAgC;AAChC;AACA,oCAAoC,WAAM;AAC1C;AACA;AACA,oBAAoB,yBAAyB,GAAG,yBAAyB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc,GAAG,cAAc;AACnD;AACA;AACA,oBAAoB,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,cAAc;AACjE;AACA;AACA,oBAAoB,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,cAAc;AAC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A;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD,WAAM,kBAAkB,SAAI;AAC/E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;;AAEA;AACA,WAAW,IAAI;AACf;;AAEA;AACA;;AAEe;AACf,SAAS,SAAS,gBAAgB,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAU,EAAE,UAAU;AACnJ;;;ACtEA,YAAY;;AAEZ,SAAS,iBAAQ;AACjB,8CAA8C,KAAK,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,uBAAc;AACvB;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA,qBAAqB,iBAAQ;AAC7B;AACA;AACA;AACA,YAAY,uBAAc;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,mFAAmF,OAAO;AAC1F;AACA,gDAAgD,OAAO;AACvD,GAAG;AACH;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;;AAEA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEA,mDAAe,iBAAQ,EAAC;;;ACnFxB,IAAI,WAAK;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI;;AAE/H;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,SAAS;AACT,IAAI,WAAK,EAAE;AACX;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;;AAEA;AACA;AACA,EAAE,WAAK;AACP;AACA;AACA,IAAI;AACJ,IAAI,WAAK;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,WAAK,UAAU;AACrB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI,WAAK;AACT;AACA;;;AC7GiC;;AAEjC,6BAAe,qBAAS;AACxB,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;ACVqC;AACG;;AAExC,cAAc,YAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEP,6BAAe,kBAAS;AACxB;AACA;AACA;AACA,EAAE,eAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP,iBAAiB,YAAG;AACpB,2DAA2D;AAC3D;AACA;;AAEO,SAAS,YAAG;AACnB,iBAAiB,YAAG;AACpB,2DAA2D;AAC3D;AACA;;AAEO,SAAS,YAAG;AACnB;AACA;AACA;AACA;;AAEA,SAAS,eAAM;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C,sCAAsC,WAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAyD;AACzD;AACA,2DAA2D;AAC3D;AACA,IAAI,WAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;;;ACxJiE;;AAEjE,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,mDAAmD,eAAe;AAClE,8BAA8B,QAAQ,qBAAqB,MAAM;AACjE,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;;ACvBwC;;AAExC,6BAAe,6BAAS;AACxB;AACA,IAAI,SAAS;AACb,GAAG;AACH;;;ACNA;;AAEO,IAAI,kBAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBmD;;AAEnD;;AAEA;AACO;AACP;AACA,wBAAwB,kBAAQ,GAAG,SAAS;AAC5C;;AAEO;AACP,4BAA4B,kBAAQ;AACpC;AACA;AACA,iEAAiE,kBAAQ;AACzE;AACA,SAAS,SAAS;AAClB;;;ACjBkC;AACY;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,UAAM,SAAS,GAAG,aAAa,UAAM,SAAS;AACzE,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,gCAAgC;AACjE,cAAc,sDAAsD,UAAM,OAAO;AACjF,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,cAAc,qDAAqD,UAAM,OAAO;AAChF,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,UAAM,SAAS,GAAG,aAAa,UAAM,SAAS;AACzE,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,mDAAmD,QAAQ;AAC3D,mDAAmD,QAAQ;;;AC9D3B;;AAEvC;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,4BAA4B,OAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,eAAS;AACxB;;AAEA;;AAEA;AACA,gBAAgB,YAAG;AACnB,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA,mBAAmB,YAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,YAAG;AACd;AACA;;;AChF+B;AACqD;;AAEpF,6BAAe,qBAAS;AACxB;AACA,kCAAkC,UAAiB;AACnD,qBAAqB,KAAK,GAAG,GAAc;AAC3C,aAAa,KAAK,eAAe,GAAc;AAC/C,QAAQ,MAAiB;AACzB;;;ACT+E;AACxC;AACD;AACK;;AAE3C,SAAS,eAAU;AACnB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,yBAAS;AACxB,iBAAiB,SAAS,uCAAuC,uBAAoB,GAAG,WAAW;AACnG;AACA,0BAA0B,mBAAc,GAAG,iBAAY,eAAe,UAAU;AAChF,0CAA0C,iBAAY,GAAG,eAAU;AACnE,0BAA0B,mBAAc,GAAG,iBAAY;AACvD;;;AC7EuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,8BAAS;AACxB;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;;AC3CwC;;AAExC;AACA;AACA,IAAI,IAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,IAAI;AACR;AACA;;AAEA,6BAAe,eAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX;;;ACtBuC;;AAEvC;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,kBAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX;;;ACtBuC;;AAEvC;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA,QAAQ,YAAG;AACX;;;ACfkC;;AAElC;AACA;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,gCAAS;AACxB;AACA;AACA;;;ACbqC;AACC;;AAEtC,6BAAe,2BAAS;AACxB,2CAA2C,OAAO;;AAElD,sFAAsF,OAAO;AAC7F,6FAA6F,OAAO;AACpG;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACfsC;;AAEtC,6BAAe,0BAAS;AACxB;;AAEA,gKAAgK,OAAO;AACvK,yHAAyH,OAAO;AAChI;AACA;AACA;AACA;AACA;;AAEA,SAAS,QAAQ;AACjB;AACA;;AAEA,aAAa,UAAU;AACvB;;;AClB6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,oCAAoC,IAAI,GAAG,YAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,uBAAS;AACxB;;AAEA;AACA,QAAQ,YAAG;AACX;AACA;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,6BAAW;AAC1B;AACA;;;ACVsC;AACA;AACM;;AAE5C,6BAAe,2BAAS;AACxB;AACA;;AAEA,6CAA6C,QAAQ;;AAErD,sFAAsF,OAAO;AAC7F,gHAAgH,OAAO;AACvH;AACA;AACA;AACA,QAAQ,QAAQ,qCAAqC,YAAG;AACxD;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACrByC;AACH;AACM;;AAE5C,6BAAe,8BAAS;AACxB;AACA;;AAEA,6CAA6C,WAAW;;AAExD,0FAA0F,OAAO;AACjG,+DAA+D,OAAO;AACtE;AACA,yFAAyF,YAAG,wCAAwC,OAAO;AAC3I;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACzBuC;;AAEvC,IAAI,mBAAS,GAAG,aAAS;;AAEzB,6BAAe,gCAAW;AAC1B,aAAa,mBAAS;AACtB;;;ACN+E;AAC5C;AACD;AACI;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB,oDAAoD,UAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAW;AACpB;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA,6EAA6E,UAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;AACA,qEAAqE,iBAAW;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,0BAAS;AACxB,yCAAyC,uBAAoB,GAAG,WAAW;AAC3E;AACA;AACA,+BAA+B,iBAAW;AAC1C;AACA,wBAAwB,mBAAa,UAAU,UAAU;AACzD;AACA;AACA,wBAAwB,mBAAa;AACrC;AACA;;;AC/EA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,+BAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;ACvBsC;;AAEtC,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA,6BAAe,yBAAS;AACxB;AACA,QAAQ,iBAAY,CAAC,UAAU;AAC/B,QAAQ,iBAAY;AACpB;;;ACnBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,8BAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;ACvB6C;AACD;;AAE5C,6BAAe,sBAAW;AAC1B;AACA;AACA,YAAY,KAAK;;AAEjB,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA,sBAAsB,YAAG;AACzB,QAAQ,QAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACvBkC;;AAElC,6BAAe,eAAW;AAC1B;AACA;AACA,kBAAkB,cAAc;AAChC,eAAe,oBAAoB;;AAEnC;AACA,qBAAqB,YAAG;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,GAAG;AACH;;;AC5BuC;AACC;AACU;AACR;AACM;AACR;AACc;AACV;AACF;AACN;AACQ;AACA;AACM;AACA;AACR;AACU;AACZ;AACU;AACE;AACV;AACJ;;AAEtC;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEe,SAAS,qBAAU;AAClC,SAAS,aAAS;AAClB;;AAEO;AACP;AACA;;AAEA,0BAA0B,aAAS;;AAEnC,uBAAuB,qBAAU;AACjC;AACA,UAAU,iBAAiB;AAC3B,aAAa,oBAAoB;AACjC;AACA;AACA,UAAU,iBAAiB;AAC3B,SAAS,gBAAgB;AACzB,aAAa,oBAAoB;AACjC,cAAc,UAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB,QAAQ,eAAe;AACvB,aAAa,oBAAoB;AACjC,SAAS,gBAAgB;AACzB,cAAc,qBAAqB;AACnC,QAAQ,eAAe;AACvB,aAAa,oBAAoB;AACjC,UAAU,iBAAiB;AAC3B,SAAS,KAAgB;AACzB,SAAS,KAAgB;AACzB,YAAY,QAAmB;AAC/B,QAAQ,IAAe;AACvB,eAAe,sBAAsB;AACrC,OAAO,GAAc;AACrB;AACA;;;ACxEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;ACVyD;AACR;AACV;AACV;;AAE7B;AACA;AACA;AACA;AACA,QAAQ,UAAc;AACtB;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;;AAEA,6BAAe,8BAAS;AACxB;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA,IAAI;AACJ,SAAS,KAAK,oCAAoC,GAAG;AACrD;;AAEA,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACzCuC;AACU;AACE;;AAEnD,aAAS,uBAAuB,mBAAmB;AACnD,aAAS,wBAAwB,oBAAoB;;;ACLvB;AAC8B;AACd;AACM;;;;;;;;;ACHZ;AAIjC,SAAS,cAAc,CAAC,KAAe;IAC5C,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;QAC1B,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QACtC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE;KAC9D;AACH,CAAC;AAEM,SAAS,aAAa,CAAC,KAAe,EAAE,IAAY;IACzD,IAAM,MAAM,GAAe,EAAE;IAC7B,IAAM,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC;IAC3B,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;QAChC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM;AACf,CAAC;;;ACrBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAG2B;AAC2B;AACjB;AACJ;AACiC;AAE/C;AACO;AACS;AAE4B;AAqClE,SAAS,iBAAiB,CAAC,SAAmB,EAAE,WAAmB;IACjE,IAAM,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC;IACrD,IAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,SAAS,cAAc,CAAC,KAAmB;QAChD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC;IACpE,CAAC;AACH,CAAC;AAEM,IAAM,eAAO,GAAa,UAAU,MAAc,EAAE,IAAiB;IAC1E,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK;IAE9B,IAAI,EAAE,GAAG,CAAC;IACV,WAAW,CAAC,OAAO,CAAC,UAAC,KAAK,IAAK,QAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAjB,CAAiB,CAAC;IAEjD,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE;IAE/B,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC,IAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAEtC,IAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnE,IAAM,qBAAqB,GAAG,UAAC,KAAmB;QAChD,qBAAc,CAAC,KAAK,CAAC,CAAC,QAAQ;IAA9B,CAA8B;IAEhC,IAAM,OAAO,GAAG;QACd,qBAAqB,EAAE,EAAE;QACzB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,YAAgC;QAC3C,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1B,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,qBAAqB;QAChC,QAAQ,EAAE,qBAAqB;QAC/B,YAAY,EAAE,qBAAqB;QACnC,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACnD,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACtD,WAAW,EAAE,QAAQ;QAErB,MAAM,EAAE,UAAC,KAAuB,IAAK,WAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAApB,CAAoB;QACzD,MAAM,EAAE,UAAC,KAAuB,IAAK,YAAK,CAAC,IAAI,EAAV,CAAU;QAC/C,UAAU,EAAE,UAAC,IAAgB;YAC3B,IAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE;YAC/D,OAAO,IAAI;iBACR,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC;iBAC5C,aAAa,CAAC,CAAC,CAAC;iBAChB,aAAa,CAAC,EAAE,CAAC;iBACjB,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,CAAC;KACF;IAED,IAAM,SAAS,GAAG;QAChB,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,KAAK,EAAE,OAAO,CAAC,YAAY;QAC3B,MAAM,EAAE,OAAO,CAAC,aAAa;KAC9B;IAGD,IAAI,KAAK,GAAG,IAAI,6BAAa,EAAE;IAC/B,IAAM,KAAK,GAAG,IAAS,EAAE;IACzB,IAAM,SAAS,GAAG,UAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAE1C,4DAA4D;IAC5D,6CAA6C;IAC7C,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IAEjC,IAAM,SAAS,GAAG,SAAS;SACxB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC;SAChC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;SAC7B,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,IAAM,GAAG,GAAG,SAAS;SAClB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;SAC7B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;SACf,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,IAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;IAE7B,SAAS,WAAW,CAAC,MAAwB,EAAE,IAAY;QACzD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IAC9C,CAAC;IAED,IAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IAC9C,IAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;IAC5C,IAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC;IACrD,IAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC;IACrD,IAAM,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC;IACvD,IAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC;IAEnD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;IAE/B,SAAS,cAAc;;QACb,SAAK,GAAa,SAAS,MAAtB,EAAE,MAAM,GAAK,SAAS,OAAd,CAAc;QACnC,IAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE;QAC7B,IAAM,cAAc,GAAG,UAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,mCAAI,CAAC;QAC7C,IAAM,eAAe,GAAG,UAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,mCAAI,CAAC;QAE/C,IAAI,WAAW,GAAG,KAAK;QACvB,kCAAkC;QAClC,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YAC7B,SAAS,CAAC,KAAK,GAAG,cAAc;YAChC,WAAW,GAAG,IAAI;QACpB,CAAC;QACD,6BAA6B;QAC7B,IAAI,MAAM,GAAG,eAAe,EAAE,CAAC;YAC7B,SAAS,CAAC,MAAM,GAAG,eAAe;YAClC,WAAW,GAAG,IAAI;QACpB,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,eAAe,EAAE;YACjB,eAAe,CAAC,KAAK,EAAE;QACzB,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB;;QACvB,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;QAC3B,IAAI,MAAM;QACV,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1B,KAAK,YAAY;gBACf,MAAM;oBACJ,SAAG,CAAyC,KAAK,EAAE,UAAC,CAAC;wBACnD,WAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAb,CAAa,CACd,mCAAI,CAAC;gBACR,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM;gBACtE,MAAK;YACP,KAAK,UAAU;gBACb,MAAM;oBACJ,SAAG,CAAyC,KAAK,EAAE,UAAC,CAAC;wBACnD,WAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAApB,CAAoB,CACrB,mCAAI,CAAC;gBACR,SAAS,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK;gBACrE,MAAK;QACT,CAAC;IACH,CAAC;IAED,IAAM,eAAe,GAAG,yBAAQ,CAAC,SAAS,eAAe;QAC/C,SAAK,GAAa,SAAS,MAAtB,EAAE,MAAM,GAAK,SAAS,OAAd,CAAc;QAC3B,UAAM,GAAK,OAAO,OAAZ,CAAY;QAClB,OAAG,GAA0B,MAAM,IAAhC,EAAE,KAAK,GAAmB,MAAM,MAAzB,EAAE,MAAM,GAAW,MAAM,OAAjB,EAAE,IAAI,GAAK,MAAM,KAAX,CAAW;QAE3C,SAAS,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK;QAC3C,SAAS,CAAC,WAAW,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM;QAE7C,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAG,KAAK,OAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAG,MAAM,OAAI,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAa,IAAI,eAAK,GAAG,MAAG,CAAC;QAErD,MAAM,EAAE;IACV,CAAC,EAAE,CAAC,CAAC;IAEL,SAAS,eAAe,CACtB,SAEmD,EACnD,QAEwC;QAExC,IAAM,UAAU,GACd,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAM,eAAQ,EAAR,CAAQ;QAC5D,SAAS;aACN,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC;aAC/B,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;aACnC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;aACrC,IAAI,CAAC,UAAC,CAAC,IAAK,cAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAA7B,CAA6B,CAAC;IAC/C,CAAC;IAED,SAAS,QAAQ;;QACf,IAAI,IAAI;QACR,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1B,KAAK,UAAU;gBACb,IAAI,GAAG,QAAQ,CAAO,KAAK,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC7D,MAAK;YACP,KAAK,YAAY;gBACf,IAAI,GAAG,UAAU,CAAO,KAAK,CAAC;gBAC9B,SAAS,CAAC,IAAI,CACZ,WAAW,EACX,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG,CACrD;gBACD,MAAK;QACT,CAAC;QAED,aAAO,CAAC,UAAU,wDAAG,IAAI,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;IACxE,CAAC;IAED,SAAS,QAAQ,CAAC,IAAwB;QACxC,IAAM,KAAK,GAAG,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC5D,IAAM,OAAO,GAAG,UAAC,CAAmB,IAAK,YAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAxB,CAAwB;QAEjE,IAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3D,OAAO;aACJ,KAAK,EAAE;aACP,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;aACpB,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;aAC/B,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC;aAC5B,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;QACvB,OAAO;aACJ,UAAU,EAAE;aACZ,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;aAC/B,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC;aAC5B,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;QACvB,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;IACzB,CAAC;IAED,SAAS,UAAU,CAAC,KAAuC;QACzD,IAAI,UAAU;QACd,IAAI,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACrC,UAAU,GAAG,GAAG,CACd,KAAK,EACL,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,EAAH,CAAG,CACX;QACH,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,GAAG,CACd,KAAK,EACL,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,EAAH,CAAG,CACX;QACH,CAAC;QAED,IAAM,QAAQ,GAAG,IAAI,gCAAgB,CAAC;YACpC,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,CAAC;YAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;SAC/D,CAAC;QAEF,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAEtB,SAAS,OAAO,CAAC,CAAiC;YAChD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,OAAO,IAAI;YACb,CAAC;YACD,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1B,KAAK,UAAU;oBACb,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;gBAC1D,KAAK,YAAY;oBACf,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;YAC5D,CAAC;QACH,CAAC;QAED,IAAM,SAAS,GAAG,UAAU;aACzB,SAAS,CAA8C,WAAW,CAAC;aACnE,IAAI,CAAC,KAAK,CAAC;QACd,IAAM,MAAM,GAAG,SAAS;aACrB,KAAK,EAAE;aACP,MAAM,CAAC,GAAG,CAAC;aACX,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;aACxB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;QAE7B,MAAM;aACH,MAAM,CAAC,MAAM,CAAC;aACd,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;aACzB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,OAAO,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,EAAH,CAAG,CAAC;aACzB,IAAI,CAAC,QAAQ,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,EAAH,CAAG,CAAC;aAC1B,KAAK,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,cAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAA5B,CAA4B,CAAC;QACrD,MAAM;aACH,MAAM,CAAC,MAAM,CAAC;aACd,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;aAC3B,IAAI,CAAC,eAAe,EAAE,UAAC,CAAiC,IAAK,QAAC,CAAC,IAAI,EAAN,CAAM,CAAC;QAEvE,IAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;QAEhE,MAAM;aACH,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,OAAO,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,EAAH,CAAG,CAAC;aACzB,IAAI,CAAC,QAAQ,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,CAAC,EAAH,CAAG,CAAC;aAC1B,KAAK,CAAC,MAAM,EAAE,UAAC,CAAC,IAAK,cAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAA5B,CAA4B,CAAC;QACrD,MAAM;aACH,MAAM,CAAC,iBAAiB,CAAC;aACzB,IAAI,CAAC,eAAe,EAAE,UAAC,CAAiC,IAAK,QAAC,CAAC,IAAI,EAAN,CAAM,CAAC;QAEvE,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;QAEzB,IAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1D,KAAK;aACF,KAAK,EAAE;aACP,MAAM,CAAC,MAAM,CAAC;aACd,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;aACrB,IAAI,CAAC,GAAG,EAAE,UAAC,CAAC,IAAK,eAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAxB,CAAwB,CAAC;aAC1C,KAAK,CAAC,QAAQ,EAAE,UAAC,CAAC,IAAK,cAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAzB,CAAyB,CAAC;aACjD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,KAAK;aACF,UAAU,EAAE;aACZ,IAAI,CAAC,GAAG,EAAE,UAAC,CAAC,IAAK,eAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAxB,CAAwB,CAAC;aAC1C,KAAK,CAAC,QAAQ,EAAE,UAAC,CAAC,IAAK,cAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAzB,CAAyB,CAAC;QACpD,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;IACvB,CAAC;IAED,IAAI,aAAa,GAAG,IAAI;IACxB,SAAS,MAAM;QACb,IACE,CAAC,WAAW;YACZ,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;YAEzD,OAAM;QAER,IAAM,IAAI,GAAG,WAAW,IAAI,EAAE;QAC9B,KAAK,GAAG,IAAI,6BAAa,EAAE;QAE3B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5B,KAAK,CAAC,KAAK,CAAC;YACV,CAAC;YACD,OAAO,CAAC,SAAS,KAAK,UAAU;gBAC9B,CAAC,CAAC,SAAS,CAAC,WAAW;gBACvB,CAAC,CAAC,SAAS,CAAC,UAAU;SACzB,CAAC;QAEF,IAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;QACvE,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,CAAmB;YACzC,IAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,EAAG,CAAC,OAAO,EAAE;YACjE,IAAM,CAAC,GACL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK;YACrE,IAAM,CAAC,GACL,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM;YACtE,IAAM,IAAI,GAAG,IAAI,4BAAY,CAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxC,CAAC,CACF;YACD,IAAI,CAAC,CAAC,GAAG,CAAC;YACV,IAAI,CAAC,CAAC,GAAG,CAAC;YACV,OAAO,IAAI;QACb,CAAC,CAAC;QACF,SAAS,CAAC,MAAM,EAAE;QAEZ,SAAkB,OAAO,CAAC,MAAM,EAA9B,IAAI,YAAE,KAAK,WAAmB;QACtC,KAAK;aACF,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;aACrD,KAAK,CAAC,KAAK,CAAC;aACZ,OAAO,EAAE;QAEZ,QAAQ,EAAE;QACV,QAAQ,CAAC,IAAI,CAAC;QACd,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEzB,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,GAAG,KAAK;YACrB,eAAe,EAAE;QACnB,CAAC;QACD,QAAQ,EAAE;IACZ,CAAC;IAED,SAAS,eAAe;QACtB,yCAAyC;QACzC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAEpD,0BAA0B;QAC1B,UAAU;aACP,SAAS,CAA8C,WAAW,CAAC;aACnE,IAAI,CAAC;YACJ,IAAM,IAAI,GAAG,UAAM,CAA8C,IAAI,CAAC;YACtE,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE;YAEzD,IAAM,MAAM,GAAG,IAAI;iBAChB,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,OAAO,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,IAAI,CAAC,KAAK,EAAZ,CAAY,CAAC;iBAClC,IAAI,CAAC,YAAY,EAAE,UAAC,CAAC,IAAK,QAAC,CAAC,IAAI,CAAC,IAAI,EAAX,CAAW,CAAC;iBACtC,IAAI,CAAC,aAAa,EAAE,UAAC,CAAC,YAAK,cAAC,CAAC,IAAI,CAAC,IAAI,mCAAI,IAAI,IAAC;YAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,YAAK,cAAC,CAAC,IAAI,CAAC,IAAI,mCAAI,IAAI,IAAC;YAEvD,QAAQ,CAAC,IAAI,CAAC;gBAAA,iBAEb;gBADC,MAAM,CAAC,MAAM,CAAC,cAAM,YAAI,EAAJ,CAAI,CAAC;YAC3B,CAAC,CAAC;QACJ,CAAC,CAAC;QAEJ,gCAAgC;QAChC,IAAM,uBAAuB,GAAG,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC;QACvE,IAAM,eAAe,GAAG,CAAC,CAAC,uBAAuB;QACjD,UAAU;aACP,SAAS,CAA8C,UAAU,CAAC;aAClE,IAAI,CAAC,gBAAgB,EAAE,cAAM,sBAAe,IAAI,IAAI,EAAvB,CAAuB,CAAC;aACrD,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY,EAAE,IAAI;YACvC,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxC,KAAK,CAAC,cAAc,EAAE;YACxB,CAAC;QACH,CAAC,CAAC;aACD,EAAE,CAAC,uBAAuB,EAAE,UAAU,KAAK,EAAE,IAAI;YAChD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAM;YACR,CAAC;YAED,IAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,kBAAkB;YAClB,UAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;YAElE,yBAAyB;YACzB,IAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE;YACvB,SAAS;iBACN,SAAS,CACR,kBAAkB,CACnB;iBACA,MAAM,CAAC,UAAC,IAAI,IAAK,WAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAnB,CAAmB,CAAC;iBACrC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;YAEjC,sCAAsC;YACtC,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3D,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAS,CAAC,wBAAwB,GAAG,aAAa,GAAG,IAAI,CAAC,CAAC,KAAK,CAC9D,kBAAkB,EAClB,QAAQ,CAAC,KAAK,CACf;YACH,CAAC;QACH,CAAC,CAAC;aACD,EAAE,CAAC,qBAAqB,EAAE,UAAU,KAAK,EAAE,IAAI;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAM;YACR,CAAC;YAED,IAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,oBAAoB;YACpB,UAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;YAEpE,mBAAmB;YACnB,SAAS,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC;YAEvE,uCAAuC;YACvC,IAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3D,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAS,CAAC,wBAAwB,GAAG,aAAa,GAAG,IAAI,CAAC,CAAC,KAAK,CAC9D,kBAAkB,EAClB,IAAI,CACL;YACH,CAAC;QACH,CAAC,CAAC;IACN,CAAC;IAED,SAAS,QAAQ;QACf,mEAAmE;QACnE,oEAAoE;QACpE,IAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3C,IAAM,YAAY,GAAG,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;QACnD,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,UAAU,MAAe,EAAE,CAAS;gBAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChB,OAAM;gBACR,CAAC;gBAED,IAAM,IAAI,GAAG,UAAM,CAAC,IAAI,CAAC;gBACzB,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACpC,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACpC,QAAQ,CAAC,IAAI,CACX,GAAG,EACH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAC3D;gBACD,QAAQ,CAAC,IAAI,CACX,IAAI,EACJ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAC5D;YACH,CAAC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,MAAM;YACnB,wCAAwC;YACxC,cAAc,EAAE;YAChB,yDAAyD;YACzD,gBAAgB,EAAE;YAClB,yBAAyB;YACzB,eAAe,EAAE;YACjB,eAAe,CAAC,KAAK,EAAE;QACzB,CAAC;KACF;AACH,CAAC;;;ACniB8D;AAIxD,IAAM,QAAQ,GAAa,UAChC,MAAc,EACd,IAAU;IAEV,IAAI,IAAI,EAAE,CAAC;QACT,IAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,YAAY;AACrB,CAAC;;;AChBoC;AAG0B;AAErB;AAEnC,IAAM,WAAW,GAAa,UACnC,MAAc,EACd,IAAU;IAEV,IAAM,MAAM,GAAG,UAAC,KAAa,IAAK,QAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAhC,CAAgC;IAClE,IAAM,UAAU,GAAG,UAAC,KAAa,YAAK,mBAAM,CAAC,KAAK,CAAC,0CAAE,kBAAkB,EAAE;IAEzE,IAAM,KAAK,GAAG,UAAM,CAAC,MAAM,CAAC,SAAS,CAAC;SACnC,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CACH,OAAO,EACP,6DAA6D,CAC9D;IACH,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IAEnC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;IAC7B,KAAsB,UAAqB,EAArB,MAAC,SAAS,EAAE,QAAQ,CAAC,EAArB,cAAqB,EAArB,IAAqB,EAAE,CAAC;QAAzC,IAAM,OAAO;QAChB,IAAI,OAAO,IAAI,QAAQ;YACrB,KAAK;iBACF,MAAM,CAAC,IAAI,CAAC;iBACZ,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;iBACtB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;iBAClB,IAAI,CAAC,SAAS,CAAC;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE,CAAC;YAAxB,IAAM,KAAK;YACd,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;YAC/B,IAAM,MAAI,GAAG,KAAK,CAAC,IAAI;YACvB,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO;YAE7B,KAAK;iBACF,MAAM,CAAC,IAAI,CAAC;iBACZ,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;iBACtB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;iBAClB,IAAI,CAAC,MAAI,CAAC;YAEb,KAAoB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE,CAAC;gBAAzB,IAAM,KAAK;gBACd,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC/B,IAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC7B,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM;gBAC3B,IAAM,UAAU,GAAG,EAAE;qBAClB,MAAM,CAAC,IAAI,CAAC;qBACZ,MAAM,CAAC,MAAM,CAAC;qBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;qBACjB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAC1B,KAAK,IAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjC,KAAoB,UAAY,EAAZ,UAAK,CAAC,MAAM,EAAZ,cAAY,EAAZ,IAAY,EAAE,CAAC;oBAA9B,IAAM,KAAK;oBACd,IAAI,IAAI,GAAuB,SAAS;oBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;wBAC9B,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;oBACvC,CAAC;yBAAM,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;wBACrC,IAAI,GAAG,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC1C,CAAC;yBAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;wBACpC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;oBAChE,CAAC;oBACD,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAc,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAEpB,OAAO,YAAY;AACrB,CAAC;;;AC3ED,IAAI,OAAsC;AACnC,SAAS,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CACjC,wBAAwB,CACzB;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI;QAC/B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;AAClD,CAAC;;;AChB8D;AAE5B;AACE;AACK;AAEnC,IAAM,OAAO,GAAa,UAC/B,MAAc,EACd,IAAU;IAEV,IAAM,OAAO,GAAG;QACd,UAAa,CAAC,IAAI,CAAC;QACnB,IAAM,OAAO,GAAG,IAAI,cAAc,EAAE;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,wBAAwB,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC;QAC5D,SAAS,OAAO,CAAC,KAAU;YACzB,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK;YAC/B,UAAa,CAAC,KAAK,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,MAAM,GAAG;YACf,UAAa,CAAC,KAAK,CAAC;YACpB,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/B,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC1B,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;YACrD,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC;YAC3C,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;YAC7C,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,KAAK;IACd,CAAC;IAED,OAAW,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC;IAEpD,OAAO,YAAY;AACrB,CAAC;;;ACxCoC;AAC0B;AAaxD,IAAM,QAAQ,GAAa,UAChC,MAAc,EACd,IAAU;IAEV,IAAM,SAAS,GAAG,UAAM,CAAC,MAAM,CAAC,SAAS,CAAC;SACvC,SAAS,CAAC,cAAc,CAAC;SACzB,IAAI,CAAC,IAAI,CAAC,YAA6B,CAAC;SACxC,KAAK,EAAE;SACP,MAAM,CAAC,KAAK,CAAC;SACb,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;SACpB,IAAI,CAAC,qBAAqB,EAAE,UAAC,GAAG,IAAK,UAAG,CAAC,IAAI,CAAC,EAAT,CAAS,CAAC;IAElD,IAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;IAErC,MAAM;SACH,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,UAAC,GAAG,IAAK,UAAG,CAAC,QAAQ,CAAC,IAAI,EAAjB,CAAiB,CAAC;IAEnC,MAAM;SACH,MAAM,CAAC,MAAM,CAAC;SACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,UAAC,GAAG,IAAK,UAAG,CAAC,QAAQ,CAAC,aAAa,EAA1B,CAA0B,CAAC;IAE5C,MAAM;SACH,MAAM,CAAC,GAAG,CAAC;SACX,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;SACjB,IAAI,CAAC,UAAC,GAAG,IAAK,UAAG,CAAC,QAAQ,CAAC,SAAS,EAAtB,CAAsB,CAAC;SACrC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY;;QACjC,IAAM,IAAI,GAAG,KAAK,CAAC,MAAqB;QACxC,sBAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,0CAAE,aAAa,0CAAE,SAAS,0CAAE,MAAM,CAAC,UAAU,CAAC;QACjE,KAAK,CAAC,cAAc,EAAE;IACxB,CAAC,CAAC;IAEJ,SAAS;SACN,MAAM,CAAC,KAAK,CAAC;SACb,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,UAAC,GAAG,IAAK,UAAG,CAAC,IAAI,EAAR,CAAQ,CAAC;IAE1B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAExB,OAAO,YAAY;AACrB,CAAC;;;ACxDoC;AACkB;AACQ;AAGtB;AACC;AAE1C,sCAAsC;AAE/B,IAAM,aAAa,GAAa,UACrC,MAAc,EACd,IAAU;IAEV,IAAM,IAAI,GAAG,UAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IACrC,IAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACvE,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM;IAC1B,SAAS,eAAe,CAAC,IAAS;QAChC,IAAM,KAAK,GAAQ,EAAE;QACrB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO;QAC5B,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QACjC,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,IAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI;QACpC,IAAM,MAAM,GAAQ;YAClB,KAAK;YACL,OAAO;YACP,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,gBAAgB;SAC/B;QACD,IAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI;QAC7B,CAAC;QACD,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,SAAS;gBACZ,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;gBACpB,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;gBACvB,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;gBACpB,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxD,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAC5B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAClB,KAAK,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI;oBACvC,CAAC;oBACD,KAAK,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE;gBACnC,CAAC;gBACD,MAAK;YACP,KAAK,QAAQ;gBACX,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;gBACpB,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACjC,KAAK,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;gBAChC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvC,KAAK,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS;gBACtC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;gBACvB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ;gBAC7B,CAAC;gBACD,MAAK;QACT,CAAC;QACD,OAAO,MAAM;IACf,CAAC;IAED,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;IACrD,IAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1C,IAAM,QAAQ,GAAG,IAAI;SAClB,MAAM,CAAC,GAAG,CAAC;SACX,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;SACjB,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY;QACjC,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YACvC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;YACpC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;SACzC,CAAC;QACF,UAAU,CAAC,WAAW,CACpB,UAAU,EACV,UAAU,IAAI;YACZ,eAAe,CAAC,IAAI,CAAC;QACvB,CAAC,EACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CACzB;QAED,KAAK,CAAC,cAAc,EAAE;IACxB,CAAC,CAAC;IAEJ,IAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;IAC1C,IAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC;IACpD,IAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC;IACpD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,EAAE;QACf,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC;QAC3D,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;QACnD,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,SAAS,eAAe,CAAC,IAAS;QAChC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM;QAC1B,KAAoB,UAAY,EAAZ,WAAM,CAAC,KAAK,EAAZ,cAAY,EAAZ,IAAY,EAAE,CAAC;YAA9B,IAAM,KAAK;YACd,IAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC;YACnC,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3B,IAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;YAC1D,CAAC;YACD,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,IAAI,IAAI,GAAG,IAAI;YACzB,CAAC;YACD,IAAM,YAAY,GAAG,aAAa;iBAC/B,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;YACjC,YAAY;iBACT,MAAM,CAAC,MAAM,CAAC;iBACd,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;iBACrB,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5D,IAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;YACzE,IAAM,IAAI,GAAG,gBAAgB;iBAC1B,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;iBACrE,IAAI,CAAC,QAAQ,CAAC;iBACd,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY;gBACjC,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,KAAK,CAAC,cAAc,EAAE;gBACxB,CAAC;YACH,CAAC,CAAC;YACJ,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvB,IAAM,iBAAiB,GAAG,SAAS;gBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACvE,CAAC;YACD,gBAAgB;iBACb,MAAM,CAAC,KAAK,CAAC;iBACb,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;iBACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,KAA4B,UAAyB,EAAzB,UAAK,CAAC,kBAAkB,CAAC,EAAzB,cAAyB,EAAzB,IAAyB,EAAE,CAAC;gBAAnD,IAAI,eAAe;gBACtB,gBAAgB;qBACb,MAAM,CAAC,KAAK,CAAC;qBACb,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;qBACvB,IAAI,CAAC,eAAe,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC;QAErC,IAAI,aAAa,GAAG,MAAM,CACxB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CACpC,CAAC,cAAc,EAAE;QAClB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,aAAa;gBACX,iBAAiB;oBACjB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE;oBACrC,aAAa;QACjB,CAAC;aAAM,CAAC;YACN,aAAa,IAAI,aAAa;QAChC,CAAC;QACD,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC;QAErC,QAAQ;aACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC;aACzD,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;aACjD,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IACxD,CAAC;IACD,OAAO,YAAY;AACrB,CAAC;;;ACnK+C;AACR;AACuB;AAE3B;AAkDpC,6FAA6F;AAC7F,SAAS,SAAS,CAAC,CAAM;IACvB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;AAC7C,CAAC;AAEM,IAAM,KAAK,GAAa,UAC7B,MAAc,EACd,IAAU;IAEV,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;IAC5B,CAAC;4BACU,OAAK;QACd,IAAI,CAAC,OAAK,EAAE,CAAC;YACX,IAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAC,MAAM;YAChE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,OAAO,GAAG,GAAG,CAAC;QAC1D,CAAC;QAED,IAAM,OAAO,GAAG,OAAK,CAAC,MAAM;QAC5B,IAAM,IAAI,GAAG,OAAK,CAAC,GAAG;QAEtB,IAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,EAAE;QAC5C,IAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,EAAE;QACnB,CAAC;QACD,IAAM,eAAe,GAAG,UAAU,IAAY;YAC5C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ;QACtE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;;QAE1B,CAAC;QACD,IAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;QACpC,IAAI,MAAM,GAAG,CAAC;QACd,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI;QACxB,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,gBAAgB,GAAG,CAAC;YACxB,IAAI,YAAY,GAAG,CAAC;YACpB,IAAI,eAAe,GAAG,CAAC;YAEvB,KAAgB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE,CAAC;gBAAlB,IAAI,GAAG;gBACV,KAAsB,UAAQ,EAAR,QAAG,CAAC,IAAI,EAAR,cAAQ,EAAR,IAAQ,EAAE,CAAC;oBAA5B,IAAI,SAAS;oBAChB,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAe,CAAC;wBACjD,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;4BAChB,EAAE,eAAe;4BACjB,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;gCAChB,EAAE,YAAY;gCACd,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;oCACjB,EAAE,gBAAgB;gCACpB,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAM,mBAAmB,GAAG,CAAC;YAC7B,IAAM,YAAY,GAAG,gBAAgB,IAAI,mBAAmB;YAC5D,IAAM,QAAQ,GAAG,YAAY,IAAI,mBAAmB;YACpD,IAAM,UAAU,GAAG,eAAe,GAAG,mBAAmB;YAExD,IAAI,UAAU,EAAE,CAAC;gBACf,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,gBAAgB;YAC5C,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAClB,IAAI,GAAG,GAAG;gBACZ,CAAC;gBACD,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAClB,IAAI,GAAG,GAAG;gBACZ,CAAC;gBACD,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;oBAClB,IAAI,GAAG,GAAG;gBACZ,CAAC;gBACD,IAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC;gBAC5C,MAAM,GAAG,GAAG;gBACZ,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,GAAG,GAAG;oBACZ,IAAM,QAAM,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC;gBAC9C,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC3C,IAAI,GAAG,GAAG,GAAG,IAAI;gBACnB,CAAC;gBACD,IAAI,GAAG,MAAM,GAAG,IAAI;YACtB,CAAC;QACH,CAAC;QAED,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;QAChD,IAAM,KAAK,GAAG,UAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACjC,OAAO,EACP,4EAA4E,CAC7E;QACD,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACnD,IAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QAE9D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,SAAS;aACN,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,MAAM,EAAE,OAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aAC/B,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;aAC5B,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC;aACnC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;aAC5B,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;QAEjC,OAAO,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,IAAI;YACxB,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,QAAQ;qBACL,MAAM,CAAC,IAAI,CAAC;qBACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC3D,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;qBACvC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;qBACrD,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACxD,CAAC;QACH,CAAC,CAAC;QAEF,IAAM,YAAY,GAAG,UAAC,GAAQ,EAAE,QAAgB;YAC9C,UAAG,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAA5D,CAA4D;QAC9D,IAAM,SAAS,GAAG,UAAC,GAAQ,IAAK,mBAAY,CAAC,GAAG,EAAE,SAAS,CAAC,EAA5B,CAA4B;QAC5D,IAAM,QAAQ,GAAG,UAAC,GAAQ,IAAK,mBAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,EAA3B,CAA2B;QAE1D,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;;YACf,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACjC,IAAI,eAAa,GAAG,CAAC;gBAErB,IAAM,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK;gBAC1C,IAAI,KAAK,GAAG,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;gBAC3D,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;oBAC5B,KAAK,IAAI,SAAS;gBACpB,CAAC;gBAED,IAAM,IAAE,GAAG,UAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;qBAC5C,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,kBAAkB,CAAC;qBACzC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;qBACzC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;qBACzB,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,IAAY,CAAC;qBACrE,IAAI,CAAC,kBAAkB,EAAE;oBACxB,UAAG,CAAC,IAAI;wBACR,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ;wBACtC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC;wBACrB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU;wBACrB,CAAC,CAAC,IAAI;gBAJR,CAIQ,CACT;qBACA,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;qBACpC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;qBAClC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY;oBACjC,IAAM,IAAI,GAAG,KAAK,IAAK,KAAK,CAAC,MAAsB;oBACnD,cAAc,CAAC,IAAI,CAAC;oBACpB,KAAK,CAAC,cAAc,EAAE;gBACxB,CAAC,CAAC;gBAEJ,IAAE,CAAC,MAAM,CAAC,IAAI,CAAC;qBACZ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;qBACtB,IAAI,CAAC,SAAG,CAAC,IAAI,mCAAI,GAAG,CAAC,IAAI,CAAC;gBAE7B,IAAI,OAAO,EAAE,CAAC;oBACZ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gBACpB,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,IAAY;oBAClC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1B,IAAM,IAAI,GACR,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;4BAC/B,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;wBACpC,IAAI,IAAI,EAAE,CAAC;4BACT,eAAa,EAAE;wBACjB,CAAC;wBACD,IAAE,CAAC,MAAM,CAAC,IAAI,CAAC;6BACZ,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;6BACvC,IAAI,CAAC,IAAI,CAAC;oBACf,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,eAAa,GAAG,CAAC,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,EAAG,CAAC,WAAW,CAAC,IAAE,CAAC,IAAI,EAAG,CAAC;gBACvC,CAAC;qBAAM,IAAI,SAAG,CAAC,IAAI,0CAAE,QAAQ,EAAE,CAAC;oBAC9B,KAAK;yBACF,MAAM,CAAC,wBAAgB,GAAG,CAAC,IAAI,CAAC,QAAQ,0BAAsB,CAAC;yBAC/D,IAAI,CAAC,kBAAkB,EAAE;wBACxB,IAAM,aAAa,GACjB,QAAQ,CAAC,UAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;wBACrD,OAAO,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;oBACjD,CAAC,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,IAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAEnD,QAAQ;aACL,MAAM,CAAC,IAAI,CAAC;aACZ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;aACtB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAExD,IAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC;QACvD,OAAO,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE,IAAI;YACxB,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;gBACxE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAE1B,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAM,aAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW;oBACxC,IAAM,QAAM,GACV,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;wBACjC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;wBACnB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;oBAErB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;yBACd,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC;yBACnC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAY;wBACjC,KAAK,CAAC,cAAc,EAAE;wBACtB,YAAY,CAAC,EAAE,WAAW,iBAAE,MAAM,YAAE,CAAC;oBACvC,CAAC,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,OAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;;IAvNtC,KAAoB,UAAU,EAAV,SAAI,CAAC,KAAK,EAAV,cAAU,EAAV,IAAU;QAAzB,IAAM,OAAK;8BAAL,OAAK;;;KAwNf;IAED,qBAAqB;IACrB,IAAM,QAAQ,GAAG,UAAU;IAC3B,IAAM,MAAM,GAAG,QAAQ;IACvB,SAAS,KAAK,CAAC,IAAiB;QAC9B,IAAM,MAAM,GAAG,UAAM,CAAC,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;IAC5D,CAAC;IACD,SAAS,QAAQ,CAAC,GAAkB;QAClC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACrD,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1E,CAAC;IACD,SAAS,YAAY,CAAC,IAAiB;QACrC,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;IACxC,CAAC;IACD,SAAS,YAAY,CAAC,IAAiB;QACrC,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC;aACV,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;aACvB,IAAI,CAAC;YACJ,YAAY,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC;IACN,CAAC;IACD,SAAS,cAAc,CAAC,IAAiB;QACvC,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,YAAY;AACrB,CAAC;;;AC/ToC;AACD;AACA;AAIA;AA8B7B,IAAM,IAAI,GAAa,UAAU,MAAc,EAAE,IAAU;IAChE,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS;IAClC,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,kBAAkB;IACnD,IAAM,MAAM,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAE9D,IAAM,UAAU,GAAG,EAAE;IACrB,IAAM,UAAU,GAAG,CAAC;IACpB,IAAM,eAAe,GAAG,CAAC;IACzB,IAAM,MAAM,GAAG,GAAG;IAClB,IAAM,gBAAgB,GAAG,UAAU,GAAG,IAAI;IAC1C,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK;IAExB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM;IAC3B,IAAM,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,MAAM,GAAG,UAAU;IAE3E,IAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IACpD,IAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAE/C,IAAM,MAAM,GAAG,UAAC,KAAyB,IAAK,QAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAhC,CAAgC;IAC9E,IAAM,GAAG,GAAG,UAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAClD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACzE,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;IACvC,IAAM,UAAU,GAAG,UAAC,IAAiB;QACnC,WAAI,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE;IAArC,CAAqC;IAEvC,IAAM,IAAI,GAAG;QACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QACxB,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QAC9B,IAAM,KAAK,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC,KAAK;QACrD,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAExB,IAAM,mBAAmB,GAAG;YAC1B,IAAM,KAAK,GAAG,EAAE;YAChB,KAAmB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE,CAAC;gBAAtB,IAAM,IAAI;gBACb,KAAkB,UAAS,EAAT,SAAI,CAAC,IAAI,EAAT,cAAS,EAAT,IAAS,EAAE,CAAC;oBAAzB,IAAM,GAAG;oBACZ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,IAAM,UAAU,GAA2B,EAAE;YAC7C,MAAM;iBACH,SAAS,CAAC,iBAAiB,CAAC;iBAC5B,IAAI,CAAC,KAAK,CAAC;iBACX,KAAK,EAAE;iBACP,MAAM,CAAC,MAAM,CAAC;iBACd,IAAI,CAAC,UAAU,CAAC;gBACf,OAAO,CAAC;YACV,CAAC,CAAC;iBACD,IAAI,CAAC,UAAU,CAAC;gBACf,UAAU,CAAC,CAAC,CAAC,GAAI,IAAuB,CAAC,qBAAqB,EAAE;gBAChE,IAAI,CAAC,MAAM,EAAE;YACf,CAAC,CAAC;YACJ,OAAO,UAAU;QACnB,CAAC;QAED,IAAM,WAAW,GAAG,mBAAmB,EAAE;QACzC,IAAM,QAAQ,GAAG,UACf,IAAY,EACZ,cAAkC,EAClC,QAAgB;YAEhB,IAAI,cAAc,EAAE,CAAC;gBACnB,IAAM,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,cAAc;gBAChD,IAAM,WAAS,GAAG,WAAW,CAAC,YAAY,CAAC;gBAC3C,uDAAuD;gBACvD,IAAM,cAAc,GAAG,QAAQ,GAAG,CAAC;gBACnC,IAAI,WAAS,KAAK,SAAS,IAAI,cAAc,GAAG,WAAS,EAAE,CAAC;oBAC1D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,WAAS,EAAE,cAAc,EAAE,IAAI,EAAE;gBACvE,CAAC;YACH,CAAC;YAED,IAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC;YACnC,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;gBACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;YACzC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;QAChC,CAAC;QAED,IAAM,kBAAkB,GAAG;YACzB,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;gBACjB,OAAO,IAAI;YACb,CAAC;YAED,IAAM,mBAAmB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,EAAC,UAAU;YACxD,KAAmB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE,CAAC;gBAAtB,IAAM,IAAI;gBACb,KAAkB,UAAS,EAAT,SAAI,CAAC,IAAI,EAAT,cAAS,EAAT,IAAS,EAAE,CAAC;oBAAzB,IAAM,GAAG;oBACZ,IAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;oBAC1C,IAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE;oBAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,oDAAoD;wBACpD,oCAAoC;wBACpC,OAAO,IAAI;oBACb,CAAC;oBAED,sDAAsD;oBACtD,IACE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,mBAAmB;wBAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,mBAAmB,EAC1D,CAAC;wBACD,OAAO,IAAI;oBACb,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,KAAK;QACd,CAAC;QAED,IAAI,MAAM,GAAG,IAAS,EAAE;aACrB,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;aAC3B,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,kBAAkB,EAAE,EAAE,CAAC;YACzB,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE;QACxB,CAAC;QAED,IAAM,KAAK,GAAG,UAAU,CAAO,MAAM,CAAC;aACnC,UAAU,CAAC,UAAU,CAAC;aACtB,aAAa,CAAC,CAAC,CAAC;aAChB,aAAa,CAAC,EAAE,CAAC;YAClB,gFAAgF;aAC/E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;QAEnC,cAAc;QACd,MAAM;aACH,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;aACxD,IAAI,CAAC,KAAK,CAAC;aACX,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;aACvB,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;QAE5B,sBAAsB;QACtB,MAAM;aACH,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;aAC1B,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;aACxD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACnD,IAAI,CAAC,UAAC,CAAC,IAAK,QAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAlC,CAAkC,CAAC;QAElD,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS;QAClC,IAAM,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK;QAEvC,iBAAiB;QACjB,IAAI,KAAK,GAAG,CAAC;QACb,KAAmB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE,CAAC;YAAtB,IAAM,IAAI;YACb,IAAM,OAAO,GACX,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,KAAK,GAAG,UAAU;YAC7D,IAAM,UAAU,GAAG,OAAO,GAAG,UAAU;YACvC,IAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,IAAI,GAAG,CAAC;YACrD,IAAM,WAAW,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;YAE9C,MAAM;iBACH,MAAM,CAAC,MAAM,CAAC;iBACd,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;iBACrB,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;iBACtB,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;iBACvB,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;iBACvB,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;YAExB,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAC9B,IAAI,IAAI,GAAG,CAAC;YACZ,IAAI,gBAAgB,GAAG,KAAK;YAC5B,IAAI,aAAa,GAAG,CAAC;YACrB,IAAI,cAAc,GAAG,CAAC;oCACX,GAAG;gBACZ,IAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;gBAC1C,IAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE;gBAC7C,IAAI,OAAO,GAAG,SAAS;oBACrB,CAAC,CAAE,MAAM,CAAC,SAAS,CAAY;oBAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,gBAAgB;gBACvC,IAAM,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK;gBAC9B,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,IAAI,gBAAgB;gBAC7B,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,MAAM;gBACnB,CAAC;gBACD,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAW;gBACxC,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBAC7B,QAAQ,IAAI,gBAAgB;gBAC9B,CAAC;qBAAM,CAAC;oBACN,QAAQ,IAAI,MAAM;gBACpB,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;gBAEtC,IAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO;gBACnC,IAAI,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,CAAC;gBAClC,wEAAwE;gBACxE,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;oBAClB,IAAI,WAAW,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;wBAClC,KAAK,IAAI,CAAC;oBACZ,CAAC;yBAAM,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;wBACzC,KAAK,IAAI,CAAC;oBACZ,CAAC;gBACH,CAAC;gBAED;;;;;;;;;;;;;;oBAcI;gBAEJ,IAAM,KAAK,GAAG,QAAQ,CACpB,GAAG,CAAC,IAAI,CAAC,IAAI,EACb,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACzC,QAAQ,CACT;gBACD,oCAAoC;gBACpC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;oBACzB,gBAAgB,GAAG,IAAI;gBACzB,CAAC;gBAED,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;oBACd,IAAM,YAAY,GAAG,WAAW;wBAC9B,CAAC,CAAC,OAAO,GAAG,gBAAgB;wBAC5B,CAAC,CAAC,OAAO;oBACX,IAAM,aAAa,GAAG,KAAK,CAAC,KAAK;wBAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,YAAY,CAAC;wBACjD,CAAC,CAAC,YAAY;oBAChB,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe;gBAC7D,CAAC;gBACD,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAM,aAAa,GAAG,GAAG,CAAC,SAAS;wBACjC,CAAC,CAAC,QAAQ,GAAG,gBAAgB;wBAC7B,CAAC,CAAC,QAAQ;oBACZ,IAAM,aAAa,GAAG,KAAK,CAAC,KAAK;wBAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,CAAC;wBAClD,CAAC,CAAC,aAAa;oBACjB,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe;gBAC/D,CAAC;gBAED,IAAM,IAAI,GAAG,MAAM;qBAChB,MAAM,CAAC,OAAO,CAAC;oBAChB,uCAAuC;qBACtC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;qBACjC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC;qBAC9B,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAY,CAAC;qBAChD,IAAI,CAAC,gBAAgB,EAAE;oBACtB,aAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAY;gBAAlD,CAAkD,CACnD;qBACA,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK;oBAC1B,IAAI,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnC,KAAK,CAAC,cAAc,EAAE;oBACxB,CAAC;gBACH,CAAC,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAEpC,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAM,YAAY,GAAG,OAAO,GAAG,gBAAgB;oBAC/C,IAAM,aAAa,GAAG,OAAO;oBAC7B,IAAM,WAAW,GAAG,OAAO;oBAC3B,IAAM,cAAc,GAAG,OAAO,GAAG,UAAU;oBAC3C,IAAM,MAAM,GAAG;wBACb,aAAa,GAAG,GAAG,GAAG,WAAW;wBACjC,aAAa,GAAG,GAAG,GAAG,cAAc;wBACpC,YAAY,GAAG,GAAG,GAAG,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;qBACxD;oBACD,IAAI;yBACD,MAAM,CAAC,SAAS,CAAC;yBACjB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBAChC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACzC,CAAC;gBAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBAClB,IAAM,YAAY,GAAG,QAAQ;oBAC7B,IAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,gBAAgB,GAAG,YAAY,EAC/B,UAAU,CACX;oBACD,IAAM,WAAW,GAAG,OAAO;oBAC3B,IAAM,cAAc,GAAG,OAAO,GAAG,UAAU;oBAC3C,IAAM,MAAM,GAAG;wBACb,YAAY,GAAG,GAAG,GAAG,WAAW;wBAChC,YAAY,GAAG,GAAG,GAAG,cAAc;wBACnC,aAAa,GAAG,GAAG,GAAG,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;qBACzD;oBACD,IAAI;yBACD,MAAM,CAAC,SAAS,CAAC;yBACjB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBAChC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC1C,CAAC;gBAED,IAAI;qBACD,MAAM,CAAC,MAAM,CAAC;qBACd,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;qBAClB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;qBAClB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;qBACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;qBAC1B,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBAEpC,IAAI;qBACD,MAAM,CAAC,MAAM,CAAC;qBACd,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;qBAChB,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;qBACxB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;qBAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAEnB,EAAE,IAAI;;YA9IR,KAAkB,UAAS,EAAT,SAAI,CAAC,IAAI,EAAT,cAAS,EAAT,IAAS;gBAAtB,IAAM,GAAG;wBAAH,GAAG;aA+Ib,CAAC,YAAY;YAEd,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,mCAAmC;gBACnC,IAAI,aAAa,GAAG,cAAc,EAAE,CAAC;oBACnC,IAAI,aAAa,GAAG,GAAG,EAAE,CAAC;wBACxB,mBAAmB;wBACnB,MAAM;6BACH,MAAM,CAAC,MAAM,CAAC;6BACd,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,aAAa,CAAC;6BACpC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;6BACxB,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;6BAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,cAAc,GAAG,GAAG,EAAE,CAAC;wBACzB,oBAAoB;wBACpB,MAAM;6BACH,MAAM,CAAC,MAAM,CAAC;6BACd,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC;6BACtC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;6BACxB,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;6BAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,UAAU;YACV,EAAE,KAAK;QACT,CAAC,CAAC,YAAY;QAEd,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE;QACxB,IAAM,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;QAChD,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAW;QACtC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;QAC1E,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5C,WAAW;aACR,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;aACtB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;aAClB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACb,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;aAClB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;QAE1B,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,IAAI,QAAE;AACjB,CAAC;;;;;;;;;;;;AC1Y8B;AACmB;AACE;AACH;AACD;AACK;AACF;AACE;AACV;AACI;AACE;AACM;AACR;AACE;AACU;AAChB;AACF;AAYlC,IAAU,IAAI,CAgDpB;AAhDD,WAAiB,IAAI;IACN,WAAM,GAAG,MAAW;IACpB,YAAO,GAAG,OAAO;IAEjB,YAAO,GAAG;QACrB,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,IAAI;KACd;IAED,SAAgB,UAAU,CAAC,IAAoB;;QAC7C,YAAO,CAAC,OAAO,GAAG,KAAK;QACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,sCAAsC;YACtC,YAAO,CAAC,UAAU,GAAG,0BAA0B;YAC/C,YAAO,CAAC,gBAAgB,GAAG,KAAK;QAClC,CAAC;aAAM,CAAC;YACN,YAAO,CAAC,UAAU,GAAG,UAAI,CAAC,UAAU,mCAAI,YAAO,CAAC,UAAU;YAC1D,YAAO,CAAC,gBAAgB;gBACtB,UAAI,CAAC,gBAAgB,mCAAI,YAAO,CAAC,gBAAgB;QACrD,CAAC;IACH,CAAC;IAXe,eAAU,aAWzB;IAED,SAAgB,KAAK;QAAC,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,yBAAkB;;QACtC,GAAG,8BAAC,MAAM,GAAK,IAAI,UAAC;IACtB,CAAC;IAFe,UAAK,QAEpB;IACD,SAAgB,GAAG,CAAC,IAAsB;QAAE,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,6BAAkB;;QAC5D,IAAI,YAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,OAAb,OAAO,EAAU,IAAI,EAAC;QACxB,CAAC;IACH,CAAC;IAJe,QAAG,MAIlB;IAED,iBAAiB,CAAC;QAChB,QAAQ;QACR,SAAS;QACT,KAAK;QACL,UAAU;QACV,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,WAAW;QACX,KAAK;QACL,UAAU;QACV,OAAO;QACP,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC,EAhDgB,IAAI,KAAJ,IAAI,QAgDpB;AAEM,IAAM,SAAS,GAAG,IAAI;;;AC9EI;AAE1B,IAAM,cAAM,GAAG,IAAI,CAAC,MAAM;AAC1B,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO","sources":["webpack://northdata-frontend/./node_modules/labella/dist/labella.min.js","webpack://northdata-frontend/./node_modules/lodash.debounce/index.js","webpack://northdata-frontend/webpack/bootstrap","webpack://northdata-frontend/webpack/runtime/compat get default export","webpack://northdata-frontend/webpack/runtime/define property getters","webpack://northdata-frontend/webpack/runtime/global","webpack://northdata-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://northdata-frontend/./src/ts/env.ts","webpack://northdata-frontend/./src/ts/util/params.ts","webpack://northdata-frontend/./src/ts/viz/renderer.ts","webpack://northdata-frontend/./node_modules/d3-color/src/define.js","webpack://northdata-frontend/./node_modules/d3-color/src/color.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selector.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/select.js","webpack://northdata-frontend/./node_modules/d3-selection/src/array.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selectorAll.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/selectAll.js","webpack://northdata-frontend/./node_modules/d3-selection/src/matcher.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/selectChild.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/selectChildren.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/filter.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/sparse.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/enter.js","webpack://northdata-frontend/./node_modules/d3-selection/src/constant.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/data.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/exit.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/join.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/merge.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/order.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/sort.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/call.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/nodes.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/node.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/size.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/empty.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/each.js","webpack://northdata-frontend/./node_modules/d3-selection/src/namespaces.js","webpack://northdata-frontend/./node_modules/d3-selection/src/namespace.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/attr.js","webpack://northdata-frontend/./node_modules/d3-selection/src/window.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/style.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/property.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/classed.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/text.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/html.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/raise.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/lower.js","webpack://northdata-frontend/./node_modules/d3-selection/src/creator.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/append.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/insert.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/remove.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/clone.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/datum.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/on.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/dispatch.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/iterator.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selection/index.js","webpack://northdata-frontend/./node_modules/d3-selection/src/select.js","webpack://northdata-frontend/./node_modules/d3-selection/src/selectAll.js","webpack://northdata-frontend/./src/ts/util/dom.ts","webpack://northdata-frontend/./src/ts/util/string.ts","webpack://northdata-frontend/./src/ts/viz/base.ts","webpack://northdata-frontend/./node_modules/d3-fetch/src/json.js","webpack://northdata-frontend/./src/ts/viz/datasource.ts","webpack://northdata-frontend/./node_modules/d3-time/src/interval.js","webpack://northdata-frontend/./node_modules/d3-time/src/duration.js","webpack://northdata-frontend/./node_modules/d3-time/src/week.js","webpack://northdata-frontend/./node_modules/d3-time/src/day.js","webpack://northdata-frontend/./node_modules/d3-time/src/year.js","webpack://northdata-frontend/./node_modules/d3-time-format/src/locale.js","webpack://northdata-frontend/./node_modules/d3-time/src/second.js","webpack://northdata-frontend/./node_modules/d3-time/src/minute.js","webpack://northdata-frontend/./node_modules/d3-time/src/hour.js","webpack://northdata-frontend/./node_modules/d3-time/src/month.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatDecimal.js","webpack://northdata-frontend/./node_modules/d3-format/src/exponent.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatGroup.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatNumerals.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatSpecifier.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatTrim.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatRounded.js","webpack://northdata-frontend/./node_modules/d3-format/src/formatTypes.js","webpack://northdata-frontend/./node_modules/d3-format/src/identity.js","webpack://northdata-frontend/./node_modules/d3-format/src/locale.js","webpack://northdata-frontend/./src/ts/util/language.ts","webpack://northdata-frontend/./src/ts/viz/i18n.ts","webpack://northdata-frontend/./src/ts/viz/widget.ts","webpack://northdata-frontend/./node_modules/d3-selection/src/create.js","webpack://northdata-frontend/./node_modules/d3-array/src/extent.js","webpack://northdata-frontend/./node_modules/d3-array/src/range.js","webpack://northdata-frontend/./node_modules/d3-scale/src/init.js","webpack://northdata-frontend/./node_modules/internmap/src/index.js","webpack://northdata-frontend/./node_modules/d3-scale/src/ordinal.js","webpack://northdata-frontend/./node_modules/d3-scale/src/band.js","webpack://northdata-frontend/./node_modules/d3-array/src/ticks.js","webpack://northdata-frontend/./node_modules/d3-array/src/ascending.js","webpack://northdata-frontend/./node_modules/d3-array/src/descending.js","webpack://northdata-frontend/./node_modules/d3-array/src/bisector.js","webpack://northdata-frontend/./node_modules/d3-array/src/number.js","webpack://northdata-frontend/./node_modules/d3-array/src/bisect.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/basis.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/basisClosed.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/constant.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/color.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/rgb.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/array.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/date.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/number.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/object.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/string.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/numberArray.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/value.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/round.js","webpack://northdata-frontend/./node_modules/d3-scale/src/constant.js","webpack://northdata-frontend/./node_modules/d3-scale/src/number.js","webpack://northdata-frontend/./node_modules/d3-scale/src/continuous.js","webpack://northdata-frontend/./node_modules/d3-format/src/precisionPrefix.js","webpack://northdata-frontend/./node_modules/d3-format/src/defaultLocale.js","webpack://northdata-frontend/./node_modules/d3-format/src/precisionRound.js","webpack://northdata-frontend/./node_modules/d3-format/src/precisionFixed.js","webpack://northdata-frontend/./node_modules/d3-scale/src/tickFormat.js","webpack://northdata-frontend/./node_modules/d3-scale/src/linear.js","webpack://northdata-frontend/./node_modules/d3-axis/src/identity.js","webpack://northdata-frontend/./node_modules/d3-axis/src/axis.js","webpack://northdata-frontend/./src/ts/viz/tooltip.ts","webpack://northdata-frontend/./src/ts/viz/widgets/barchart.ts","webpack://northdata-frontend/./src/ts/viz/widgets/contacts.ts","webpack://northdata-frontend/./node_modules/d3-array/src/min.js","webpack://northdata-frontend/./node_modules/d3-array/src/max.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/cluster.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://northdata-frontend/./node_modules/d3-shape/src/array.js","webpack://northdata-frontend/./node_modules/d3-shape/src/constant.js","webpack://northdata-frontend/./node_modules/d3-shape/src/curve/bump.js","webpack://northdata-frontend/./node_modules/d3-path/src/path.js","webpack://northdata-frontend/./node_modules/d3-shape/src/path.js","webpack://northdata-frontend/./node_modules/d3-shape/src/point.js","webpack://northdata-frontend/./node_modules/d3-shape/src/link.js","webpack://northdata-frontend/./node_modules/d3-shape/src/curve/linear.js","webpack://northdata-frontend/./node_modules/d3-shape/src/line.js","webpack://northdata-frontend/./src/ts/viz/nodes.ts","webpack://northdata-frontend/./src/ts/viz/widgets/dendrogram.ts","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/accessors.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/constant.js","webpack://northdata-frontend/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://northdata-frontend/./src/ts/viz/widgets/drilldown.ts","webpack://northdata-frontend/./src/ts/viz/widgets/financials.ts","webpack://northdata-frontend/./src/ts/viz/widgets/graph.ts","webpack://northdata-frontend/./node_modules/d3-time/src/millisecond.js","webpack://northdata-frontend/./node_modules/d3-time/src/ticks.js","webpack://northdata-frontend/./node_modules/d3-time-format/src/defaultLocale.js","webpack://northdata-frontend/./node_modules/d3-scale/src/nice.js","webpack://northdata-frontend/./node_modules/d3-scale/src/time.js","webpack://northdata-frontend/./node_modules/d3-dispatch/src/dispatch.js","webpack://northdata-frontend/./node_modules/d3-timer/src/timer.js","webpack://northdata-frontend/./node_modules/d3-timer/src/timeout.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/schedule.js","webpack://northdata-frontend/./node_modules/d3-transition/src/interrupt.js","webpack://northdata-frontend/./node_modules/d3-transition/src/selection/interrupt.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/transform/parse.js","webpack://northdata-frontend/./node_modules/d3-interpolate/src/transform/index.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/tween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/interpolate.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/attr.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/attrTween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/delay.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/duration.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/ease.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/easeVarying.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/filter.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/merge.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/on.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/remove.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/select.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/selectAll.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/selection.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/style.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/styleTween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/text.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/textTween.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/transition.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/end.js","webpack://northdata-frontend/./node_modules/d3-transition/src/transition/index.js","webpack://northdata-frontend/./node_modules/d3-ease/src/cubic.js","webpack://northdata-frontend/./node_modules/d3-transition/src/selection/transition.js","webpack://northdata-frontend/./node_modules/d3-transition/src/selection/index.js","webpack://northdata-frontend/./node_modules/d3-transition/src/index.js","webpack://northdata-frontend/./src/ts/viz/color.ts","webpack://northdata-frontend/./src/ts/viz/widgets/history.ts","webpack://northdata-frontend/./src/ts/viz/widgets/overview.ts","webpack://northdata-frontend/./src/ts/viz/widgets/persontable.ts","webpack://northdata-frontend/./src/ts/util/ui.ts","webpack://northdata-frontend/./src/ts/viz/widgets/pubshop.ts","webpack://northdata-frontend/./src/ts/viz/widgets/pubtable.ts","webpack://northdata-frontend/./src/ts/viz/widgets/searchresults.ts","webpack://northdata-frontend/./src/ts/viz/widgets/sheet.ts","webpack://northdata-frontend/./src/ts/viz/widgets/vita.ts","webpack://northdata-frontend/./src/ts/viz-base.ts","webpack://northdata-frontend/./src/ts/viz.esm.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.labella=e():t.labella=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var r={};return e.m=t,e.c=r,e.p=\"\",e(0)}([function(t,e,r){\"use strict\";t.exports={Node:r(1),Force:r(2),Distributor:r(3),Renderer:r(10)}},function(t,e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var n=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),i=function(){function t(e,n,i){r(this,t),this.idealPos=e,this.currentPos=e,this.width=n,this.data=i,this.layerIndex=0}return n(t,[{key:\"distanceFrom\",value:function(t){var e=this.width/2,r=t.width/2;return Math.max(this.currentPos-e,t.currentPos-r)-Math.min(this.currentPos+e,t.currentPos+r)}},{key:\"moveToIdealPosition\",value:function(){return this.currentPos=this.idealPos,this}},{key:\"displacement\",value:function(){return this.idealPos-this.currentPos}},{key:\"overlapWithNode\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.distanceFrom(t)-e<0}},{key:\"overlapWithPoint\",value:function(t){var e=this.width/2;return t>=this.currentPos-e&&t<=this.currentPos+e}},{key:\"positionBefore\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.currentLeft()-this.width/2-e}},{key:\"positionAfter\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.currentRight()+this.width/2+e}},{key:\"currentRight\",value:function(){return this.currentPos+this.width/2}},{key:\"currentLeft\",value:function(){return this.currentPos-this.width/2}},{key:\"idealRight\",value:function(){return this.idealPos+this.width/2}},{key:\"idealLeft\",value:function(){return this.idealPos-this.width/2}},{key:\"createStub\",value:function(e){var r=new t(this.idealPos,e,this.data);return r.currentPos=this.currentPos,r.child=this,this.parent=r,r}},{key:\"removeStub\",value:function(){return this.parent&&(this.parent.child=null,this.parent=null),this}},{key:\"isStub\",value:function(){return!!this.child}},{key:\"getPathToRoot\",value:function(){for(var t=[],e=this;e;)t.push(e),e=e.parent;return t}},{key:\"getPathFromRoot\",value:function(){return this.getPathToRoot().reverse()}},{key:\"getPathToRootLength\",value:function(){for(var t=0,e=this;e;){var r=e.parent?e.parent.currentPos:e.idealPos;t+=Math.abs(e.currentPos-r),e=e.parent}return t}},{key:\"getRoot\",value:function(){for(var t=this,e=this;e;)t=e,e=e.parent;return t}},{key:\"getLayerIndex\",value:function(){return this.layerIndex}},{key:\"clone\",value:function(){var e=new t(this.idealPos,this.width,this.data);return e.currentPos=this.currentPos,e.layerIndex=this.layerIndex,e}}]),t}();t.exports=i},function(t,e,r){\"use strict\";var n=r(3),i=r(4),o=r(8),s={nodeSpacing:3,minPos:0,maxPos:null,algorithm:\"overlap\",removeOverlap:!0,density:.85,stubWidth:1},u=function(t){var e={},r=i.extend({},s),u=new n,a=[],c=null;return e.nodes=function(t){return arguments.length?(a=t,c=[t.concat()],e):a},e.getLayers=function(){return c},e.options=function(t){if(!arguments.length)return r;r=i.extend(r,t);var o=i.pick(r,Object.keys(n.DEFAULT_OPTIONS));return i.isDefined(r.minPos)&&i.isDefined(r.maxPos)?o.layerWidth=r.maxPos-r.minPos:o.layerWidth=null,u.options(o),e},e.options(t),e.compute=function(){var t=i.pick(r,Object.keys(o.DEFAULT_OPTIONS));return a.forEach(function(t){t.removeStub()}),c=u.distribute(a),c.map(function(e,n){e.forEach(function(t){t.layerIndex=n}),r.removeOverlap&&o(e,t)}),e},e.start=function(){console.log(\"[warning] force.start() is deprecated. Please use force.compute() instead.\")},e};u.DEFAULT_OPTIONS=s,t.exports=u},function(t,e,r){\"use strict\";var n=r(4),i=r(6),o={algorithm:\"overlap\",layerWidth:1e3,density:.75,nodeSpacing:3,stubWidth:1},s=function(t){var e={};t=n.extend({},o,t),e.options=function(r){return arguments.length?(t=n.extend(t,r),e):t},e.computeRequiredWidth=function(e){return n.sum(e,function(e){return e.width+t.nodeSpacing})-t.nodeSpacing},e.maxWidthPerLayer=function(){return t.density*t.layerWidth},e.needToSplit=function(t){return e.estimateRequiredLayers(t)>1},e.estimateRequiredLayers=function(r){return t.layerWidth?Math.ceil(e.computeRequiredWidth(r)/e.maxWidthPerLayer()):1};var r={simple:function(r){for(var n=e.estimateRequiredLayers(r),i=[],o=0;o<n;o++)i.push([]);return r.forEach(function(e,r){var o=r%n;i[o].push(e);for(var s=e,u=o-1;u>=0;u--)s=s.createStub(t.stubWidth),i[u].push(s)}),i},roundRobin:function(t){var e=[];return e},overlap:function(r){for(var n=[],i=e.maxWidthPerLayer(),o=r.concat(),s=e.computeRequiredWidth(o);s>i;){e.countIdealOverlaps(o);var u=o.concat(),a=s;for(o=[];u.length>2&&a>i;){u.sort(function(t,e){return e.overlapCount-t.overlapCount});var c=u.shift();a-=c.width,a+=t.stubWidth,c.overlaps.forEach(function(t){t.overlapCount--}),o.push(c)}n.push(u),s=e.computeRequiredWidth(o)}o.length>0&&n.push(o);for(var h=n.length-1;h>=1;h--)for(var l=n[h],f=0;f<l.length;f++){var p=l[f];if(!p.isStub())for(var d=p,v=h-1;v>=0;v--)d=d.createStub(t.stubWidth),n[v].push(d)}return n}};return e.countIdealOverlaps=function(e){var r=new i(t.layerWidth/2);return e.forEach(function(t){r.add([t.idealLeft(),t.idealRight(),t])}),e.forEach(function(t){var e=r.search(t.idealLeft(),t.idealRight());t.overlaps=e.map(function(t){return t.data[2]}),t.overlapCount=e.length}),e},e.distribute=function(i){if(!i||0===i.length)return[];if(\"none\"==t.algorithm||!n.isDefined(t.algorithm))return[i];if(!e.needToSplit(i))return[i];var o=i.concat().sort(function(t,e){return t.idealPos-e.idealPos});if(\"function\"==typeof t.algorithm)return t.algorithm(o,t);if(r.hasOwnProperty(t.algorithm))return r[t.algorithm](o);throw\"Unknown algorithm: \"+t.algorithm},e};s.DEFAULT_OPTIONS=o,t.exports=s},function(t,e,r){\"use strict\";var n={isDefined:function(t){return null!==t&&void 0!==t},last:function(t){return t.length>0?t[t.length-1]:null},pick:function(t,e){return e.reduce(function(e,r){return e[r]=t[r],e},{})},sum:function(t,e){return t.map(e).reduce(function(t,e){return t+e},0)}};n.extend=r(5),t.exports=n},function(t,e){\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=function(t){return\"function\"==typeof Array.isArray?Array.isArray(t):\"[object Array]\"===i.call(t)},s=function(t){if(!t||\"[object Object]\"!==i.call(t))return!1;var e=n.call(t,\"constructor\"),r=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,\"isPrototypeOf\");if(t.constructor&&!e&&!r)return!1;var o;for(o in t);return void 0===o||n.call(t,o)};t.exports=function u(){var t,e,n,i,a,c,h=arguments[0],l=1,f=arguments.length,p=!1;for(\"boolean\"==typeof h?(p=h,h=arguments[1]||{},l=2):(\"object\"!==(\"undefined\"==typeof h?\"undefined\":r(h))&&\"function\"!=typeof h||null==h)&&(h={});l<f;++l)if(t=arguments[l],null!=t)for(e in t)n=h[e],i=t[e],h!==i&&(p&&i&&(s(i)||(a=o(i)))?(a?(a=!1,c=n&&o(n)?n:[]):c=n&&s(n)?n:{},h[e]=u(p,c,i)):void 0!==i&&(h[e]=i));return h}},function(t,e,r){\"use strict\";function n(t,e){if(e||(e={}),this.startKey=e.startKey||0,this.endKey=e.endKey||1,this.intervalHash={},this.pointTree=new c({compare:function(t,e){if(null==t)return-1;if(null==e)return 1;var r=t[0]-e[0];return r>0?1:0==r?0:-1}}),this._autoIncrement=0,!t||\"number\"!=typeof t)throw new Error(\"you must specify center index as the 2nd argument.\");this.root=new u(t,this)}function i(t,e){return e.end<t.idx?(t.left||(t.left=new u(e.start+e.end>>1,this)),i.call(this,t.left,e)):t.idx<e.start?(t.right||(t.right=new u(e.start+e.end>>1,this)),i.call(this,t.right,e)):t.insert(e)}function o(t,e,r){if(t)return e<t.idx?(t.starts.every(function(t){var n=t.start<=e;return n&&r.push(t.result()),n}),o.call(this,t.left,e,r)):e>t.idx?(t.ends.every(function(t){var n=t.end>=e;return n&&r.push(t.result()),n}),o.call(this,t.right,e,r)):void t.starts.map(function(t){r.push(t.result())})}function s(t,e,r){if(e-t<=0)throw new Error(\"end must be greater than start. start: \"+t+\", end: \"+e);var n={},i=[];o.call(this,this.root,t+e>>1,i,!0),i.forEach(function(t){n[t.id]=!0});for(var s=this.pointTree.bsearch([t,null]),u=this.pointTree;s>=0&&u[s][0]==t;)s--;var a=this.pointTree.bsearch([e,null]);if(a>=0){for(var c=u.length-1;a<=c&&u[a][0]<=e;)a++;u.slice(s+1,a).forEach(function(t){var e=t[1];n[e]=!0},this),Object.keys(n).forEach(function(n){var i=this.intervalHash[n];r.push(i.result(t,e))},this)}}function u(t){this.idx=t,this.starts=new c({compare:function(t,e){if(null==t)return-1;if(null==e)return 1;var r=t.start-e.start;return r>0?1:0==r?0:-1}}),this.ends=new c({compare:function(t,e){if(null==t)return-1;if(null==e)return 1;var r=t.end-e.end;return r<0?1:0==r?0:-1}})}function a(t,e,r,n){if(this.id=e,this.start=t[r],this.end=t[n],this.data=t,\"number\"!=typeof this.start||\"number\"!=typeof this.end)throw new Error(\"start, end must be number. start: \"+this.start+\", end: \"+this.end);if(this.start>=this.end)throw new Error(\"start must be smaller than end. start: \"+this.start+\", end: \"+this.end)}var c=r(7);n.prototype.add=function(t,e){if(this.intervalHash[e])throw new Error(\"id \"+e+\" is already registered.\");if(void 0==e){for(;this.intervalHash[this._autoIncrement];)this._autoIncrement++;e=this._autoIncrement}var r=new a(t,e,this.startKey,this.endKey);this.pointTree.insert([r.start,e]),this.pointTree.insert([r.end,e]),this.intervalHash[e]=r,this._autoIncrement++,i.call(this,this.root,r)},n.prototype.search=function(t,e){var r=[];if(\"number\"!=typeof t)throw new Error(t+\": invalid input\");if(void 0==e)o.call(this,this.root,t,r);else{if(\"number\"!=typeof e)throw new Error(t+\",\"+e+\": invalid input\");s.call(this,t,e,r)}return r},n.prototype.remove=function(t){},u.prototype.insert=function(t){this.starts.insert(t),this.ends.insert(t)},a.prototype.result=function(t,e){var r={id:this.id,data:this.data};if(\"number\"==typeof t&&\"number\"==typeof e){var n=Math.max(this.start,t),i=Math.min(this.end,e),o=i-n;r.rate1=o/(e-t),r.rate2=o/(this.end-this.start)}return r},t.exports=n},function(t,e){\"use strict\";var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},n=function i(){var t=null,e={},n=arguments;[\"0\",\"1\"].forEach(function(i){var o=n[i];Array.isArray(o)?t=o:o&&\"object\"==(\"undefined\"==typeof o?\"undefined\":r(o))&&(e=o)}),\"function\"==typeof e.filter&&(this._filter=e.filter),\"function\"==typeof e.compare?this._compare=e.compare:\"string\"==typeof e.compare&&i.compares[e.compare]&&(this._compare=i.compares[e.compare]),this._unique=!!e.unique,e.resume&&t?t.forEach(function(t,e){this.push(t)},this):t&&this.insert.apply(this,t)};n.create=function(t,e){return new n(t,e)},n.prototype=new Array,n.prototype.constructor=Array.prototype.constructor,n.prototype.insertOne=function(t){var e=this.bsearch(t);return(!this._unique||null==this.key(t,e))&&(!!this._filter(t,e)&&(this.splice(e+1,0,t),e+1))},n.prototype.insert=function(){return Array.prototype.map.call(arguments,function(t){return this.insertOne(t)},this)},n.prototype.remove=function(t){return this.splice(t,1),this},n.prototype.bsearch=function(t){if(!this.length)return-1;for(var e,r=0,n=this.length;n-r>1;){e=Math.floor((r+n)/2);var i=this[e],o=this._compare(t,i);if(0==o)return e;o>0?r=e:n=e}return 0==r&&this._compare(this[0],t)>0?-1:r},n.prototype.key=function(t,e){null==e&&(e=this.bsearch(t));var r=e;if(r==-1||this._compare(this[r],t)<0)return r+1<this.length&&0==this._compare(this[r+1],t)?r+1:null;for(;r>=1&&0==this._compare(this[r-1],t);)r--;return r},n.prototype.keys=function(t,e){var r=[];null==e&&(e=this.bsearch(t));for(var n=e;n>=0&&0==this._compare(this[n],t);)r.push(n),n--;var i=this.length;for(n=e+1;n<i&&0==this._compare(this[n],t);)r.push(n),n++;return r.length?r:null},n.prototype.unique=function(t){if(t)return this.filter(function(t,e){return 0==e||0!=this._compare(this[e-1],t)},this);var e=0;return this.map(function(t,r){return 0==r||0!=this._compare(this[r-1],t)?null:r-e++},this).forEach(function(t){null!=t&&this.remove(t)},this),this},n.prototype.toArray=function(){return this.slice()},n.prototype._filter=function(t,e){return!0},n.compares={number:function(t,e){var r=t-e;return r>0?1:0==r?0:-1},string:function(t,e){return t>e?1:t==e?0:-1}},n.prototype._compare=n.compares.string,t.exports=n},function(t,e,r){\"use strict\";function n(t){var e=new s.Variable(t.targetPos);return e.node=t,e}function i(t,e){if(t.length>0){e=o.extend(u,e),t.forEach(function(t,e){t.targetPos=t.parent?t.parent.currentPos:t.idealPos,t.index=e});for(var r=t.concat().sort(function(t,e){var r=t.targetPos-e.targetPos;if(0!==r)return r;var n=t.isStub()-e.isStub();return 0!==n?n:t.index-e.index}).map(n),i=[],a=1;a<r.length;a++){var c=r[a-1],h=r[a],l=void 0;l=c.node.isStub()&&h.node.isStub()?(c.node.width+h.node.width)/2+e.lineSpacing:(c.node.width+h.node.width)/2+e.nodeSpacing,i.push(new s.Constraint(c,h,l))}if(o.isDefined(e.minPos)){var f=new s.Variable(e.minPos,1e10),p=r[0];i.push(new s.Constraint(f,p,p.node.width/2)),r.unshift(f)}if(o.isDefined(e.maxPos)){var d=new s.Variable(e.maxPos,1e10),v=o.last(r);i.push(new s.Constraint(v,d,v.node.width/2)),r.push(d)}new s.Solver(r,i).solve(),r.filter(function(t){return t.node}).map(function(t){return t.node.currentPos=Math.round(t.position()),t})}return t}var o=r(4),s=r(9),u={lineSpacing:2,nodeSpacing:3,minPos:0,maxPos:null};i.DEFAULT_OPTIONS=u,t.exports=i},function(t,e){\"use strict\";var r={},n=function(){function t(t){this.scale=t,this.AB=0,this.AD=0,this.A2=0}return t.prototype.addVariable=function(t){var e=this.scale/t.scale,r=t.offset/t.scale,n=t.weight;this.AB+=n*e*r,this.AD+=n*e*t.desiredPosition,this.A2+=n*e*e},t.prototype.getPosn=function(){return(this.AD-this.AB)/this.A2},t}();r.PositionStats=n;var i=function(){function t(t,e,r,n){void 0===n&&(n=!1),this.left=t,this.right=e,this.gap=r,this.equality=n,this.active=!1,this.unsatisfiable=!1,this.left=t,this.right=e,this.gap=r,this.equality=n}return t.prototype.slack=function(){return this.unsatisfiable?Number.MAX_VALUE:this.right.scale*this.right.position()-this.gap-this.left.scale*this.left.position()},t}();r.Constraint=i;var o=function(){function t(t,e,r){void 0===e&&(e=1),void 0===r&&(r=1),this.desiredPosition=t,this.weight=e,this.scale=r,this.offset=0}return t.prototype.dfdv=function(){return 2*this.weight*(this.position()-this.desiredPosition)},t.prototype.position=function(){return(this.block.ps.scale*this.block.posn+this.offset)/this.scale},t.prototype.visitNeighbours=function(t,e){var r=function(r,n){return r.active&&t!==n&&e(r,n)};this.cOut.forEach(function(t){return r(t,t.right)}),this.cIn.forEach(function(t){return r(t,t.left)})},t}();r.Variable=o;var s=function(){function t(t){this.vars=[],t.offset=0,this.ps=new n(t.scale),this.addVariable(t)}return t.prototype.addVariable=function(t){t.block=this,this.vars.push(t),this.ps.addVariable(t),this.posn=this.ps.getPosn()},t.prototype.updateWeightedPosition=function(){this.ps.AB=this.ps.AD=this.ps.A2=0;for(var t=0,e=this.vars.length;t<e;++t)this.ps.addVariable(this.vars[t]);this.posn=this.ps.getPosn()},t.prototype.compute_lm=function(t,e,r){var n=this,i=t.dfdv();return t.visitNeighbours(e,function(e,o){var s=n.compute_lm(o,t,r);o===e.right?(i+=s*e.left.scale,e.lm=s):(i+=s*e.right.scale,e.lm=-s),r(e)}),i/t.scale},t.prototype.populateSplitBlock=function(t,e){var r=this;t.visitNeighbours(e,function(e,n){n.offset=t.offset+(n===e.right?e.gap:-e.gap),r.addVariable(n),r.populateSplitBlock(n,t)})},t.prototype.traverse=function(t,e,r,n){var i=this;void 0===r&&(r=this.vars[0]),void 0===n&&(n=null),r.visitNeighbours(n,function(n,o){e.push(t(n)),i.traverse(t,e,o,r)})},t.prototype.findMinLM=function(){var t=null;return this.compute_lm(this.vars[0],null,function(e){!e.equality&&(null===t||e.lm<t.lm)&&(t=e)}),t},t.prototype.findMinLMBetween=function(t,e){this.compute_lm(t,null,function(){});var r=null;return this.findPath(t,null,e,function(t,e){!t.equality&&t.right===e&&(null===r||t.lm<r.lm)&&(r=t)}),r},t.prototype.findPath=function(t,e,r,n){var i=this,o=!1;return t.visitNeighbours(e,function(e,s){o||s!==r&&!i.findPath(s,t,r,n)||(o=!0,n(e,s))}),o},t.prototype.isActiveDirectedPathBetween=function(t,e){if(t===e)return!0;for(var r=t.cOut.length;r--;){var n=t.cOut[r];if(n.active&&this.isActiveDirectedPathBetween(n.right,e))return!0}return!1},t.split=function(e){return e.active=!1,[t.createSplitBlock(e.left),t.createSplitBlock(e.right)]},t.createSplitBlock=function(e){var r=new t(e);return r.populateSplitBlock(e,null),r},t.prototype.splitBetween=function(e,r){var n=this.findMinLMBetween(e,r);if(null!==n){var i=t.split(n);return{constraint:n,lb:i[0],rb:i[1]}}return null},t.prototype.mergeAcross=function(t,e,r){e.active=!0;for(var n=0,i=t.vars.length;n<i;++n){var o=t.vars[n];o.offset+=r,this.addVariable(o)}this.posn=this.ps.getPosn()},t.prototype.cost=function(){for(var t=0,e=this.vars.length;e--;){var r=this.vars[e],n=r.position()-r.desiredPosition;t+=n*n*r.weight}return t},t}();r.Block=s;var u=function(){function t(t){this.vs=t;var e=t.length;for(this.list=new Array(e);e--;){var r=new s(t[e]);this.list[e]=r,r.blockInd=e}}return t.prototype.cost=function(){for(var t=0,e=this.list.length;e--;)t+=this.list[e].cost();return t},t.prototype.insert=function(t){t.blockInd=this.list.length,this.list.push(t)},t.prototype.remove=function(t){var e=this.list.length-1,r=this.list[e];this.list.length=e,t!==r&&(this.list[t.blockInd]=r,r.blockInd=t.blockInd)},t.prototype.merge=function(t){var e=t.left.block,r=t.right.block,n=t.right.offset-t.left.offset-t.gap;e.vars.length<r.vars.length?(r.mergeAcross(e,t,n),this.remove(e)):(e.mergeAcross(r,t,-n),this.remove(r))},t.prototype.forEach=function(t){this.list.forEach(t)},t.prototype.updateBlockPositions=function(){this.list.forEach(function(t){return t.updateWeightedPosition()})},t.prototype.split=function(t){var e=this;this.updateBlockPositions(),this.list.forEach(function(r){var n=r.findMinLM();null!==n&&n.lm<a.LAGRANGIAN_TOLERANCE&&(r=n.left.block,s.split(n).forEach(function(t){return e.insert(t)}),e.remove(r),t.push(n))})},t}();r.Blocks=u;var a=function(){function t(t,e){this.vs=t,this.cs=e,this.vs=t,t.forEach(function(t){t.cIn=[],t.cOut=[]}),this.cs=e,e.forEach(function(t){t.left.cOut.push(t),t.right.cIn.push(t)}),this.inactive=e.map(function(t){return t.active=!1,t}),this.bs=null}return t.prototype.cost=function(){return this.bs.cost()},t.prototype.setStartingPositions=function(t){this.inactive=this.cs.map(function(t){return t.active=!1,t}),this.bs=new u(this.vs),this.bs.forEach(function(e,r){return e.posn=t[r]})},t.prototype.setDesiredPositions=function(t){this.vs.forEach(function(e,r){return e.desiredPosition=t[r]})},t.prototype.mostViolated=function(){for(var e=Number.MAX_VALUE,r=null,n=this.inactive,i=n.length,o=i,s=0;s<i;++s){var u=n[s];if(!u.unsatisfiable){var a=u.slack();if((u.equality||a<e)&&(e=a,r=u,o=s,u.equality))break}}return o!==i&&(e<t.ZERO_UPPERBOUND&&!r.active||r.equality)&&(n[o]=n[i-1],n.length=i-1),r},t.prototype.satisfy=function(){null==this.bs&&(this.bs=new u(this.vs)),this.bs.split(this.inactive);for(var e=null;(e=this.mostViolated())&&(e.equality||e.slack()<t.ZERO_UPPERBOUND&&!e.active);){var r=e.left.block,n=e.right.block;if(r!==n)this.bs.merge(e);else{if(r.isActiveDirectedPathBetween(e.right,e.left)){e.unsatisfiable=!0;continue}var i=r.splitBetween(e.left,e.right);if(null===i){e.unsatisfiable=!0;continue}this.bs.insert(i.lb),this.bs.insert(i.rb),this.bs.remove(r),this.inactive.push(i.constraint),e.slack()>=0?this.inactive.push(e):this.bs.merge(e)}}},t.prototype.solve=function(){this.satisfy();for(var t=Number.MAX_VALUE,e=this.bs.cost();Math.abs(t-e)>1e-4;)this.satisfy(),t=e,e=this.bs.cost();return e},t.LAGRANGIAN_TOLERANCE=-1e-4,t.ZERO_UPPERBOUND=-1e-10,t}();r.Solver=a,t.exports=r},function(t,e,r){\"use strict\";function n(t){this.options=c.extend({layerGap:60,nodeHeight:10,direction:\"down\"},t)}function i(t){return\"L \"+t.join(\" \")}function o(t){return\"M \"+t.join(\" \")}function s(t,e,r){return\"C \"+t.join(\" \")+\" \"+e.join(\" \")+\" \"+r.join(\" \")}function u(t,e){var r=(t[1]+e[1])/2;return s([t[0],r],[e[0],r],e)}function a(t,e){var r=(t[0]+e[0])/2;return s([r,t[1]],[r,e[1]],e)}var c=r(4);n.lineTo=i,n.moveTo=o,n.curveTo=s,n.vCurveBetween=u,n.hCurveBetween=a,n.prototype.getWaypoints=function(t){var e=this.options,r=e.direction,n=t.getPathFromRoot(),i=e.nodeHeight+e.layerGap;return\"left\"===r?[[[0,n[0].idealPos]]].concat(n.map(function(t,r){var n=i*(r+1)*-1;return[[n+e.nodeHeight,t.currentPos],[n,t.currentPos]]})):\"right\"===r?[[[0,n[0].idealPos]]].concat(n.map(function(t,r){var n=i*(r+1);return[[n-e.nodeHeight,t.currentPos],[n,t.currentPos]]})):\"up\"===r?[[[n[0].idealPos,0]]].concat(n.map(function(t,r){var n=i*(r+1)*-1;return[[t.currentPos,n+e.nodeHeight],[t.currentPos,n]]})):[[[n[0].idealPos,0]]].concat(n.map(function(t,r){var n=i*(r+1);return[[t.currentPos,n-e.nodeHeight],[t.currentPos,n]]}))},n.prototype.layout=function(t){var e=this.options,r=e.layerGap+e.nodeHeight;switch(e.direction){case\"left\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=-n-e.nodeHeight,t.y=t.currentPos,t.dx=e.nodeHeight,t.dy=t.width});break;case\"right\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=n,t.y=t.currentPos,t.dx=e.nodeHeight,t.dy=t.width});break;case\"up\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=t.currentPos,t.y=-n-e.nodeHeight,t.dx=t.width,t.dy=e.nodeHeight});break;default:case\"down\":t.forEach(function(t){var n=t.getLayerIndex()*r+e.layerGap;t.x=t.currentPos,t.y=n,t.dx=t.width,t.dy=e.nodeHeight})}return t},n.prototype.generatePath=function(t){var e=this.options,r=e.direction,n=this.getWaypoints(t,r),s=[o(n[0][0])];return\"left\"===r||\"right\"===r?n.reduce(function(t,e,r){return s.push(a(t[t.length-1],e[0])),r<n.length-1&&s.push(i(e[1])),e}):n.reduce(function(t,e,r){return s.push(u(t[t.length-1],e[0])),r<n.length-1&&s.push(i(e[1])),e}),s.join(\" \")},t.exports=n}])});","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\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 objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\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 && (type == 'object' || type == 'function');\n}\n\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 && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// will be set by webpack\ndeclare const __VERSION__: string\ndeclare const __VERSION_PREFIX__: string\n\nexport const VERSION = __VERSION__\nexport const VERSION_PREFIX = __VERSION_PREFIX__\n","export type Params<T = any> = { [key: string]: T }\n\nexport function clone<T>(object: Params<T>): Params<T> {\n return mixin({}, object)\n}\n\nexport function concat<T>(object1: Params<T>, object2: Params<T>): Params<T> {\n return mixin(clone(object1), object2)\n}\n\nexport function mixin<T>(source: Params<T>, target: Params<T>): Params<T> {\n Object[\"assign\"](source, target)\n return source\n}\n","import { mixin } from \"../util/params\"\nimport { Data } from \"./base\"\nimport { Widget } from \"./widget\"\n\nexport interface Rendition {\n draw(): void\n}\nexport type Renderer = (widget: Widget, data: Data) => Rendition\nexport type Renderers = { [key: string]: Renderer }\n\nexport const alreadyDrawn: Rendition = {\n draw() {},\n}\n\nconst registeredRenderers: Renderers = {}\n\nexport function registerRenderers(renderers: Renderers) {\n mixin(registeredRenderers, renderers)\n}\n\nexport function getRegisteredRenderer(key: string) {\n return registeredRenderers[key]\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","import { select, selectAll, Selection, BaseType } from \"d3-selection\"\n\nexport function size(rect: ClientRect): [number, number] {\n return [rect.width, rect.height]\n}\n\nexport function setHeight(element: HTMLElement, height: number): void {\n select(element).style(\"height\", height + \"px\")\n}\n\nexport function closest(\n elements: Selection<HTMLElement, unknown, null, undefined>,\n selector: string\n): Selection<any, unknown, null, undefined> {\n let closestMatch: any = undefined\n let matchArr: any[] = []\n elements.each(function (this: any) {\n let elm = this\n while (typeof elm.parentNode.matches === \"function\" && !closestMatch) {\n elm = elm.parentNode\n if (elm.matches(selector)) {\n closestMatch = elm\n matchArr.push(closestMatch)\n }\n }\n closestMatch = undefined\n })\n return selectAll(matchArr)\n}\n\nexport function isDescendant(node: Node | null, parent: Node): boolean {\n for (;;) {\n if (!node || !parent) {\n return false\n }\n if (node.isSameNode(parent)) {\n return true\n }\n node = node.parentNode\n }\n}\n\nexport function onEvent<GElement extends Element, Datum>(\n eventName: string,\n parent: Element,\n children: Selection<GElement, Datum, BaseType, unknown> | string,\n handler: (value: Datum) => void\n) {\n select(parent).on(eventName, function (event: Event) {\n try {\n let actualChildren: Selection<GElement, Datum, BaseType, unknown>\n if (typeof children === \"string\") {\n actualChildren = select(parent).selectAll<GElement, Datum>(children)\n } else {\n actualChildren = children\n }\n actualChildren.each(function () {\n const node = this\n if (isDescendant(event.target as Node, node)) {\n handler.bind(node)(select<Element, Datum>(node).data()[0])\n }\n })\n } catch (error) {\n console.error(error)\n throw error\n }\n })\n}\n\nexport function isIE() {\n let ua = window.navigator.userAgent\n return (\n ua.indexOf(\"MSIE \") >= 0 ||\n ua.indexOf(\"Edge \") >= 0 ||\n ua.indexOf(\"Trident\") >= 0\n )\n}\n\nexport function isInViewport(element: Element) {\n const rect = element.getBoundingClientRect()\n return (\n rect.bottom > 0 &&\n rect.right > 0 &&\n rect.top < (window.innerHeight || document.documentElement.clientHeight) &&\n rect.left < (window.innerWidth || document.documentElement.clientWidth)\n )\n}\n\n/**\n * Registers an event handler that executes once\n * when `element` enters the viewport\n */\nexport function addViewportHandler(\n element: Element,\n namespace: string,\n callback: () => void\n) {\n let handleViewportChange = () => {\n if (isInViewport(element)) {\n callback()\n $(window).off(`.${namespace}`)\n }\n }\n\n // Register event handler and do initial check\n $(window).on(\n `scroll.${namespace} resize.${namespace}`,\n debounce(handleViewportChange, 50)\n )\n handleViewportChange()\n}\n\nexport function debounce(callback: Function, wait: number) {\n let timer: number\n return (...args: any[]) => {\n window.clearTimeout(timer)\n timer = window.setTimeout(() => {\n callback(...args)\n }, wait)\n }\n}\n","export function trim(s: string) {\n return s ? s.trim() : s\n}\n\nexport function unescape(s: string): string | null {\n if (s) {\n const el = document.createElement(\"div\")\n el.innerHTML = s\n return el.innerText || el.textContent\n }\n return s\n}\n\nexport function encode(s: string): string {\n if (s) {\n s = encodeURIComponent(s).replace(/%20/g, \"+\")\n }\n return s\n}\n\nexport function decode(s: string): string {\n if (s) {\n s = decodeURIComponent(s.replace(/\\+/g, \"%20\"))\n }\n return s\n}\n\nexport function camelCased(s: string): string {\n return s.replace(/-([a-z])/g, (g) => g[1].toUpperCase())\n}\n\nexport function fromQueryString(query: string): Record<string, any> {\n const result: Record<string, any> = {}\n const a = (query[0] === \"?\" ? query.substr(1) : query).split(\"&\")\n for (let i = 0; i < a.length; i++) {\n const b = a[i].split(\"=\")\n result[decode(b[0])] = decode(b[1] || \"\")\n }\n return result\n}\n\nexport function toQueryString(object: Record<string, any>): string {\n const parts: string[] = []\n for (let i in object) {\n if (object.hasOwnProperty(i)) {\n let value = object[i]\n if (typeof value === \"object\") {\n value = JSON.stringify(value)\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n parts.push(encode(i) + \"=\" + encode(value as any))\n }\n }\n }\n return parts.join(\"&\")\n}\n","export type Data = any\nexport type Linkifier = (node: Element) => string\nexport type Handler = (param1?: any, param2?: any, param3?: any) => any\nexport type Callback = (value: any) => void\n\nexport function getDataDomain(): string {\n const scripts = document.scripts\n for (let i = 0; i < scripts.length; ++i) {\n const script = scripts[i]\n const src = script[\"src\"]\n if (src && src.indexOf(\"/viz.\") >= 0) {\n const pos = src.indexOf(\"/\", 9)\n if (pos >= 0) {\n return src.substring(0, pos)\n }\n }\n }\n return \"\"\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import { NorthData } from \"../viz-base\"\nimport { Callback, getDataDomain } from \"./base\"\nimport { json } from \"d3-fetch\"\n\nexport type RequestOptions = {\n apiKey?: string\n immediate?: boolean\n}\n\ntype Request = {\n options: RequestOptions\n success: Callback\n error: Callback\n}\n\ninterface DataSource {\n requestData(options: RequestOptions, success: Callback, error: Callback): void\n}\n\nexport const dataSource: DataSource = (function () {\n let waitingRequests: Request[] = []\n\n function requestData(\n options: RequestOptions,\n success: Callback,\n error: Callback\n ): void {\n const request = { options, success, error }\n if (options[\"immediate\"]) {\n executeRequests([request])\n } else {\n waitingRequests.push(request)\n window.setTimeout(executeWaitingRequests)\n }\n }\n\n function submit(\n apiKey: string | undefined,\n params: Record<string, any>,\n callback: (err: any, data: any) => void\n ) {\n const detectedDomain = NorthData.options.detectDataDomain\n ? getDataDomain()\n : undefined\n const domain = detectedDomain || NorthData.options.dataDomain\n const baseUrl =\n ((window as any)[\"dataDomain\"] /* undocumented: for CORS testing!*/ ||\n domain) + \"/data.json\"\n const headers = {\n \"Content-Type\": \"application/json; charset=UTF-8\",\n ...(apiKey && { \"X-Api-Key\": apiKey }),\n }\n\n json(baseUrl, {\n headers,\n method: \"POST\",\n body: JSON.stringify(params),\n })\n .then((data) => callback(null, data))\n .catch((error) => callback(error, undefined))\n }\n\n function executeRequests(requests: Request[]) {\n const options: RequestOptions[] = []\n const params: Record<string, any> = {}\n let apiKey: string | undefined = undefined\n for (const request of requests) {\n options.push(request.options)\n apiKey = apiKey ?? request.options[\"apiKey\"]\n }\n if (options.length > 0) {\n params[\"options\"] = options\n params[\"origin\"] = document.location.hostname\n params[\"v\"] = NorthData.version\n submit(apiKey, params, function (error: Error, response) {\n if (error) {\n for (let request of requests) {\n request.error(error.message)\n }\n } else {\n const results = response[\"result\"]\n requests.forEach((request, index) => {\n const result = results[index]\n const error = result.error\n if (error) {\n request.error(error.message)\n } else {\n request.success(results[index])\n }\n })\n }\n })\n }\n }\n\n function executeWaitingRequests() {\n executeRequests(waitingRequests)\n waitingRequests = []\n }\n\n return { requestData }\n})()\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export type SupportedLanguage = \"de\" | \"en\" | \"fr\"\n\nconst language: SupportedLanguage =\n document.documentElement.lang === \"en\"\n ? \"en\"\n : document.documentElement.lang === \"fr\"\n ? \"fr\"\n : \"de\"\n\nexport function getLanguage(): SupportedLanguage {\n return language\n}\n","import {\n timeFormatLocale,\n TimeLocaleDefinition,\n TimeLocaleObject,\n} from \"d3-time-format\"\nimport {\n timeSecond,\n timeMinute,\n timeHour,\n timeDay,\n timeWeek,\n timeMonth,\n timeYear,\n} from \"d3-time\"\nimport { formatLocale, FormatLocaleDefinition } from \"d3-format\"\n\nimport deDeTimeFormat from \"d3-time-format/locale/de-DE\"\nimport enUsTimeFormat from \"d3-time-format/locale/en-US\"\nimport frFrTimeFormat from \"d3-time-format/locale/fr-FR\"\n\nimport deDeFormat from \"d3-format/locale/de-DE\"\nimport enUsFormat from \"d3-format/locale/en-US\"\nimport frFrFormat from \"d3-format/locale/fr-FR\"\n\nimport { getLanguage } from \"../util/language\"\n\ntype NumberFormatter = (n: number) => string\ntype DateFormatter = (date: Date) => string\ntype DateStringFormatter = (date: string) => string\nexport interface NumberFormat {\n accuracy: number\n prefix: string\n postfix: string\n}\n\n//\nexport function trilingual(\n english: string,\n german: string,\n french: string = \"\"\n): string {\n return getLanguage() === \"de\"\n ? german\n : getLanguage() === \"fr\"\n ? french\n : english\n}\n\nexport function getI18n(): I18n {\n return getLanguage() === \"de\"\n ? German\n : getLanguage() === \"fr\"\n ? French\n : English\n}\n\nexport interface I18n {\n timeFormatLocaleDefinition: TimeLocaleDefinition\n numberFormatLocaleDefinition: FormatLocaleDefinition\n createNumberFormatter(\n numberFormat: NumberFormat,\n d3FormatSpecifier: string\n ): NumberFormatter\n decimalFormatter: NumberFormatter\n numberFormatter: NumberFormatter\n dateFormatter: DateFormatter & DateStringFormatter\n timeScaleFormatter: DateFormatter\n}\n\n/**\n * Creates a conditional time formatter for time scales.\n * https://github.com/d3/d3-time-format#d3-time-format\n */\nfunction createTimeScaleFormatter(timeLocale: TimeLocaleObject): DateFormatter {\n const formatMillisecond = timeLocale.format(\".%L\")\n const formatSecond = timeLocale.format(\":%S\")\n const formatMinute = timeLocale.format(\"%I:%M\")\n const formatHour = timeLocale.format(\"%I %p\")\n const formatDay = timeLocale.format(\"%a %d\")\n const formatWeek = timeLocale.format(\"%b %d\")\n const formatMonth = timeLocale.format(\"%B\")\n const formatYear = timeLocale.format(\"%Y\")\n\n return (date) =>\n (timeSecond(date) < date\n ? formatMillisecond\n : timeMinute(date) < date\n ? formatSecond\n : timeHour(date) < date\n ? formatMinute\n : timeDay(date) < date\n ? formatHour\n : timeMonth(date) < date\n ? timeWeek(date) < date\n ? formatDay\n : formatWeek\n : timeYear(date) < date\n ? formatMonth\n : formatYear)(date)\n}\n\nfunction createI18n(\n timeFormatLocaleDefinition: TimeLocaleDefinition,\n numberFormatLocaleDefinition: FormatLocaleDefinition\n): I18n {\n const timeLocale = timeFormatLocale(timeFormatLocaleDefinition)\n const numberLocale = formatLocale(numberFormatLocaleDefinition)\n\n const round2 = (x: number) => Math.round(x * 100) / 100\n const _decimalFormatter = numberLocale.format(\",.2f\")\n const _numberFormatter = numberLocale.format(\",.0f\")\n const _dateFormatter = timeLocale.format(timeFormatLocaleDefinition.date)\n\n return {\n timeFormatLocaleDefinition: timeFormatLocaleDefinition,\n numberFormatLocaleDefinition: numberFormatLocaleDefinition,\n createNumberFormatter: function (\n numberFormat: NumberFormat,\n d3FormatSpecifier: string\n ): NumberFormatter {\n const accuracy = numberFormat.accuracy\n const d3formatter = numberLocale.format(d3FormatSpecifier)\n return (value) =>\n numberFormat.prefix +\n d3formatter(value / accuracy) +\n numberFormat.postfix\n },\n decimalFormatter: (x) => _decimalFormatter(round2(x)),\n numberFormatter: (x) => _numberFormatter(Math.round(x)),\n dateFormatter: (date: Date | string) => {\n if (!date) {\n return \"\"\n }\n if (typeof date === \"string\") {\n date = new Date(date)\n }\n return _dateFormatter(date)\n },\n timeScaleFormatter: createTimeScaleFormatter(timeLocale),\n }\n}\n\nexport const German = createI18n(\n deDeTimeFormat as TimeLocaleDefinition,\n { ...deDeFormat, currency: [\"€\", \"\"] } as FormatLocaleDefinition\n)\n\nexport const English = createI18n(\n {\n ...enUsTimeFormat,\n // use international style instead:\n date: \"%Y-%m-%d\",\n } as TimeLocaleDefinition,\n {\n ...enUsFormat,\n currency: [\"€\", \"\"],\n } as FormatLocaleDefinition\n)\n\nexport const French = createI18n(\n frFrTimeFormat as TimeLocaleDefinition,\n { ...frFrFormat, currency: [\"€\", \"\"] } as FormatLocaleDefinition\n)\n","import { BaseType, Selection } from \"d3-selection\"\nimport { hsl, HSLColor } from \"d3-color\"\nimport { select } from \"d3-selection\"\n\nimport { Rendition, getRegisteredRenderer } from \"./renderer\"\nimport { Handler, Linkifier } from \"./base\"\nimport { setHeight } from \"../util/dom\"\nimport { camelCased } from \"../util/string\"\nimport { dataSource, RequestOptions } from \"./datasource\"\nimport { I18n, German, English, French } from \"./i18n\"\nimport { NorthData } from \"../viz-base\"\n\ninterface WidgetOptions extends RequestOptions {\n type?: string\n colors?: string | string[]\n [key: string]: unknown\n}\n\nexport class Widget {\n data: {}\n chart?: Rendition\n readonly container: HTMLElement\n readonly widgetType: string\n readonly options: WidgetOptions\n readonly items: HTMLElement[] = []\n\n constructor(container: HTMLElement | string, options: WidgetOptions) {\n const containerNode =\n typeof container == \"string\"\n ? document.getElementById(container)\n : container\n if (!containerNode) {\n throw new Error(\"container node undefined or null\")\n }\n this.container = containerNode\n this.options = mixinDataAttributes(options, this.container)\n const widgetType = this.stringValue(\"type\") || this.stringValue(\"layout\")\n if (!widgetType) {\n throw new Error(\"no widget type specified\")\n }\n this.widgetType = widgetType\n this.options[\"type\"] = widgetType\n if (widgetType == \"graph\" || widgetType == \"contact\") {\n // don't bundle heavy calls with others\n this.options[\"immediate\"] = true\n }\n const loadHandler = this.load.bind(this)\n this.data = this.objectValue(\"data\") as object\n // if data is available, continue with load handler\n if (this.data) {\n window.setTimeout(loadHandler)\n }\n // if data is not yet available, request it from the server\n else {\n dataSource.requestData(this.options, loadHandler, this.fail.bind(this))\n }\n }\n\n getType() {\n return this.widgetType\n }\n\n fail(error: unknown) {\n const onError = this.handlerValue(\"error\")\n if (onError) {\n onError(error)\n } else {\n NorthData.log(\"error\", error)\n }\n }\n\n load(data: any) {\n this.data = this.data || data\n try {\n const renderer = getRegisteredRenderer(this.widgetType)\n if (!renderer) {\n throw new Error(\"invalid widget type: \" + this.widgetType)\n }\n this.chart = renderer(this, this.data)\n this.container.setAttribute(\"data-layout\", this.widgetType)\n this.draw()\n } catch (error) {\n this.fail(error)\n return\n }\n const onSuccess = this.handlerValue(\"success\")\n if (onSuccess) {\n onSuccess()\n }\n }\n\n showItem(title: string | undefined, itemNode: HTMLElement) {\n const defaultItemHandler = (title: string, element: HTMLElement) => {\n const legacyBehavior = !!this.stringValue(\"subject\")\n if (legacyBehavior) {\n return element\n }\n const result = document.createElement(\"div\")\n const titleEl = document.createElement(\"h2\")\n titleEl.textContent = title\n result.appendChild(titleEl)\n result.appendChild(element)\n return result\n }\n const itemHandler = this.handlerValue(\"handleItem\") || defaultItemHandler\n const handledItem = itemHandler(title as string, itemNode) as HTMLElement\n if (handledItem) {\n this.container.appendChild(handledItem)\n this.items.push(handledItem)\n }\n }\n\n adjustSize(element: HTMLElement) {\n const rect = element.getBoundingClientRect()\n const width = this.numberValue(\"width\") || rect.width\n const height = this.numberValue(\"height\") || rect.height\n const ratio = this.numberValue(\"ratio\")\n const minHeight = this.numberValue(\"minHeight\")\n const maxHeight = this.numberValue(\"maxHeight\")\n let newHeight = height\n if (ratio) {\n newHeight = width * ratio\n }\n if (minHeight) {\n newHeight = Math.max(newHeight, minHeight)\n }\n if (maxHeight) {\n newHeight = Math.min(newHeight, maxHeight)\n }\n if (height != newHeight) {\n setHeight(element, newHeight)\n }\n }\n\n draw() {\n this.adjustSize(this.container)\n if (this.chart) {\n this.chart.draw()\n select(this.container)\n .selectAll<HTMLElement, unknown>(\"*\")\n .each(function () {\n // IE <= 11 compatibility\n let transform = this.getAttribute(\"transform\")\n if (!transform) {\n transform = getComputedStyle(this).getPropertyValue(\"transform\")\n if (transform && transform != \"none\") {\n this.setAttribute(\"transform\", transform)\n }\n }\n })\n }\n }\n\n markup<GElement extends BaseType, Datum, PElement extends BaseType>(\n html: Selection<GElement, Datum, PElement, unknown>\n ) {\n const companyClick = this.handlerValue(\"companyClick\")\n if (companyClick) {\n html.selectAll(\".company\").attr(\"data-clickable\", true)\n }\n const personClick = this.handlerValue(\"personClick\")\n if (personClick) {\n html.selectAll(\".person\").attr(\"data-clickable\", true)\n }\n const addressClick = this.handlerValue(\"addressClick\")\n if (addressClick) {\n html.selectAll(\"address\").attr(\"data-clickable\", true)\n }\n const registerClick = this.handlerValue(\"registerClick\")\n if (registerClick) {\n html.selectAll(\".register\").attr(\"data-clickable\", true)\n }\n const filingClick = this.handlerValue(\"filingClick\")\n if (filingClick) {\n html.selectAll(\".filing\").attr(\"data-clickable\", true)\n }\n\n html.on(\"click\", function (event: Event) {\n const target = event.target as HTMLElement\n const data = dataAttributesToObject(target)\n let handled\n if (companyClick && target.classList.contains(\"company\")) {\n companyClick(data)\n handled = true\n }\n if (personClick && target.classList.contains(\"person\")) {\n personClick(data)\n handled = true\n }\n if (addressClick && target.tagName == \"ADDRESS\") {\n addressClick({ query: target.textContent })\n handled = true\n }\n if (registerClick && target.classList.contains(\"register\")) {\n registerClick({ query: target.textContent })\n handled = true\n }\n if (filingClick && target.classList.contains(\"filing\")) {\n filingClick({ query: target.textContent })\n handled = true\n }\n if (handled) {\n event.preventDefault()\n }\n })\n }\n\n invokeClickHandler(query: unknown, dataType?: string): boolean {\n const handler = this.getClickHandler(dataType)\n if (handler) {\n handler(query)\n return true\n }\n return false\n }\n\n getClickHandler(dataType?: string): Handler | undefined {\n if (dataType) {\n switch (dataType.toString().toLowerCase()[0]) {\n case \"c\":\n return this.handlerValue(\"companyClick\")\n case \"p\":\n return this.handlerValue(\"personClick\")\n case \"h\":\n return this.handlerValue(\"publicationClick\")\n }\n }\n }\n\n getLinkifier(): Linkifier {\n return (this.handlerValue(\"linkify\") as Linkifier) || defaultLinkify\n }\n\n getRootColor(): HSLColor {\n return hsl(this.stringValue(\"rootColor\") || \"#00dddd\")\n }\n\n isReverseChronology(): boolean {\n return this.stringValue(\"chronology\") === \"reverse\"\n }\n\n getLanguage(): string {\n return this.stringValue(\"language\") || \"de\"\n }\n\n i18n(): I18n {\n return this.getLanguage() == \"de\"\n ? German\n : this.getLanguage() == \"fr\"\n ? French\n : English\n }\n\n trilingual(english: string, german: string, french: string): string {\n return this.getLanguage() == \"de\"\n ? german\n : this.getLanguage() == \"fr\"\n ? french\n : english\n }\n\n isPrint() {\n return (\n document.documentElement.classList &&\n document.documentElement.classList.contains(\"print\")\n )\n }\n\n numberValue(key: string): number | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value() as number\n }\n if (typeof value === \"number\") {\n return value\n }\n if (typeof value === \"string\") {\n return Number(value)\n }\n }\n\n stringValue(key: string): string | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value() as string\n }\n if (typeof value === \"string\") {\n return value\n }\n }\n\n nodeValue(key: string): HTMLElement | undefined {\n let value = this.options[key]\n if (typeof value === \"object\") {\n return value as HTMLElement\n }\n if (typeof value === \"function\") {\n return value() as HTMLElement\n }\n if (typeof value === \"string\") {\n return select(this.container)\n .select<HTMLElement>(value)\n .node() as HTMLElement\n }\n }\n\n objectValue(key: string): string | object | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value() as string\n }\n if (typeof value === \"object\") {\n if (value === null) {\n return undefined\n }\n return value\n }\n if (typeof value === \"string\") {\n // parse json\n return JSON.parse(value)\n }\n }\n\n handlerValue(key: string): Handler | undefined {\n const value = this.options[key]\n if (typeof value === \"function\") {\n return value.bind(this)\n }\n }\n}\n\nfunction mixinDataAttributes(\n options: WidgetOptions,\n container: HTMLElement\n): WidgetOptions {\n const result: Record<string, any> = {}\n Object[\"assign\"](result, options)\n for (let i = 0; i < container.attributes.length; ++i) {\n const attribute = container.attributes[i]\n const name = attribute.name\n if (name.indexOf(\"data-\") === 0) {\n const key = camelCased(name.substring(5))\n result[key] = result[key] || attribute.value\n }\n }\n return result\n}\n\nfunction dataAttributesToObject(element: HTMLElement): {} {\n return mixinDataAttributes({}, element)\n}\n\nconst defaultLinkify = () => null\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","import { select } from \"d3-selection\"\n\nexport function tooltip() {\n const tooltip = select(\"body\")\n .append(\"div\")\n .attr(\"class\", \"tooltip ui basic black label\")\n .style(\"position\", \"fixed\")\n .style(\"top\", 0)\n .style(\"left\", 0)\n .style(\"pointer-events\", \"none\")\n .style(\"visibility\", \"hidden\")\n\n return {\n position(clientX: number, clientY: number) {\n const distance = 16\n const clientWidth = document.documentElement.clientWidth\n const width = tooltip.node()!.offsetWidth\n const height = tooltip.node()!.offsetHeight\n\n const leftPointing = clientX + width + distance < clientWidth\n\n const left = leftPointing\n ? clientX + distance\n : clientX - width - distance\n const top = clientY - height / 2\n\n tooltip\n .style(\"transform\", `translate(${left}px, ${top}px)`)\n .classed(\"left right pointing\", false)\n .classed(leftPointing ? \"left\" : \"right\", true)\n .classed(\"pointing\", true)\n return this\n },\n visible(makeVisible: boolean) {\n tooltip\n .interrupt()\n .transition()\n .delay(makeVisible ? 0 : 100)\n .duration(0)\n .style(\"visibility\", () => (makeVisible ? null : \"hidden\"))\n return this\n },\n content(content: string) {\n tooltip.html(content)\n return this\n },\n }\n}\n","import { create, select } from \"d3-selection\"\nimport { extent } from \"d3-array\"\nimport { scaleBand, scaleLinear } from \"d3-scale\"\nimport { axisBottom, axisLeft } from \"d3-axis\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { tooltip } from \"../tooltip\"\nimport { NumberFormat } from \"../i18n\"\n\ninterface Bar {\n year: string\n value0: number\n note: string\n formattedValue: string\n source?: {\n publicationTitle: string\n }\n}\n\ninterface ChartData {\n colors: string[]\n title: string\n colorIndexes: number[]\n estimate: boolean[]\n numberFormat: NumberFormat\n data: Bar[]\n}\n\ninterface Chart {\n data: ChartData\n title: string\n item: string\n}\n\ninterface Data {\n note: string\n item: Chart[]\n}\n\nexport const barChart: Renderer = function (\n widget: Widget,\n allData: Data\n): Rendition {\n type Drawable = () => void\n const drawables: Drawable[] = []\n const note = allData.note\n\n if ((!allData.item || allData.item.length == 0) && !note) {\n throw new Error(\"no data\")\n }\n\n const margin = { top: 15, right: 10, bottom: 50, left: 15 }\n\n const hoverTooltip = tooltip()\n\n function tooltipContent(item: Bar, title: string) {\n const itemNote = item.note\n ? \"<span class='note'>\" + item.note + \"</span>\"\n : \"\"\n const itemSource =\n item.source && item.source.publicationTitle\n ? \"<span class='source'>\" +\n widget.trilingual(\"Source: \", \"Quelle: \", \"Source: \") +\n item.source.publicationTitle +\n \"</span>\"\n : \"\"\n return (\n \"<span class='name'>\" +\n title +\n \" \" +\n item.year +\n \"</span>\" +\n \"<span class='value'>\" +\n item.formattedValue +\n \"</span>\" +\n itemNote +\n itemSource\n )\n }\n\n for (const detail of allData.item) {\n const data = detail.data\n if (!data) {\n continue\n }\n\n const colorValue = widget.options.colors\n let colors =\n typeof colorValue === \"string\" ? colorValue.split(\"|\") : colorValue\n colors = colors ?? data.colors\n\n const key = data.title.substring(0, 3)\n const barColors: string[] = []\n const colorIndexes = data.colorIndexes\n for (let i = 0; i < colorIndexes.length; ++i) {\n const colorIndex = colorIndexes[i]\n const barColor = data.estimate[i]\n ? \"url(#diag\" + key + colorIndex + \")\"\n : colors[colorIndex]\n barColors.push(barColor)\n }\n\n const patternDefs = create(\"svg:defs\")\n patternDefs\n .selectAll(\"pattern\")\n .data(colors)\n .join(\"svg:pattern\")\n .attr(\"id\", (_, index) => `diag${key}${index}`)\n .attr(\"width\", 10)\n .attr(\"height\", 10)\n .attr(\"patternTransform\", \"rotate(45 0 0)\")\n .attr(\"patternUnits\", \"userSpaceOnUse\")\n .attr(\n \"transform\",\n \"matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0)\"\n )\n .append(\"svg:line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y2\", 10)\n .style(\"stroke\", (color) => color)\n .style(\"stroke-width\", 15)\n\n let [min, max] = extent(data.data, (item: Bar) => item.value0) as [\n number,\n number,\n ]\n max = Math.max(max, 1)\n min = Math.min(min, 0)\n const minimumTicks = Math.floor(Math.max(Math.abs(min), max))\n const yTicks = Math.min(5, minimumTicks)\n\n const itemNode = document.createElement(\"div\")\n itemNode.setAttribute(\"data-item\", detail.item)\n widget.showItem(detail.title, itemNode)\n\n const svg = select(itemNode)\n .style(\"height\", \"100%\")\n .append(\"svg\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n\n svg.attr(\"aria-label\", detail.title)\n\n svg.append(() => patternDefs.node())\n\n const xScale = scaleBand()\n .domain(data.data.map((bar) => bar.year))\n .padding(0.2)\n const xAxis = axisBottom(xScale)\n const xAxisGroup = svg.append(\"g\").classed(\"x-axis\", true)\n\n const yScale = scaleLinear().domain([min, max])\n const yAxis = axisLeft<number>(yScale)\n .tickSizeInner(0)\n .tickSizeOuter(0)\n .ticks(yTicks)\n .tickFormat(\n widget.i18n().createNumberFormatter(data.numberFormat, \",.0f\")\n )\n const yAxisGroup = svg.append(\"g\").classed(\"y-axis\", true)\n\n const tooltipGroup = svg.append(\"g\")\n const rectGroup = svg.append(\"g\")\n\n const redraw = () => {\n const { width, height } = itemNode.getBoundingClientRect()\n\n svg.attr(\"viewBox\", `0 0 ${width} ${height}`)\n\n yScale.range([height - margin.bottom, margin.top])\n yAxisGroup\n .call(yAxis)\n .attr(\"font-size\", null)\n .attr(\"font-family\", null)\n .call((g) =>\n g\n .selectAll<SVGGElement, number>(\".tick\")\n .classed(\"zero\", (d) => d === 0)\n )\n\n // Determine size of the widest label\n let yAxisLabelWidth = 45\n yAxisGroup\n .selectAll<SVGSVGElement, unknown>(\".tick > text\")\n .each(function (this: SVGSVGElement) {\n yAxisLabelWidth = Math.max(yAxisLabelWidth, this.getBBox().width)\n })\n\n // Adjust inner tick size by setting x2 attribute\n // `tickSizeInner` cannot be used as the left margin is not known before rendering\n const marginLeft = margin.left + yAxisLabelWidth\n yAxisGroup\n .attr(\"transform\", `translate(${marginLeft},0)`)\n .selectAll(\".tick > line\")\n .attr(\"x2\", width - marginLeft - margin.right)\n\n xScale.range([marginLeft, width - margin.right])\n xAxis.tickSizeInner(-(height - margin.top - margin.bottom))\n xAxisGroup\n .attr(\"transform\", `translate(0,${height - margin.bottom})`)\n .call(xAxis)\n .call((g) => g.select(\".domain\").remove())\n .attr(\"font-size\", null)\n .attr(\"font-family\", null)\n\n const barHeight = (value0: number) =>\n Math.abs((yScale(0) as number) - (yScale(value0) as number))\n\n rectGroup\n .selectAll(\"rect\")\n .data(data.data)\n .join(\"rect\")\n .attr(\"x\", (d) => xScale(d.year) as number)\n .attr(\"y\", (d) => yScale(Math.max(d.value0, 0)) as number)\n .attr(\"height\", (d) =>\n // Ensure that the height is always >= 0\n // Otherwise the bar isn't displayed and doesn't show tooltips, etc.\n Math.max(barHeight(d.value0), 1.0)\n )\n .attr(\"width\", xScale.bandwidth())\n .attr(\"fill\", (_, index) => barColors[index])\n\n // Create a transparent bar for tooltips\n // if the original bar height is below the threshold\n const minimumBarHeight = 45\n tooltipGroup\n .selectAll(\"rect\")\n .data(data.data.filter((d) => barHeight(d.value0) < minimumBarHeight))\n .join(\"rect\")\n .attr(\"x\", (d) => xScale(d.year) as number)\n .attr(\"y\", (d) => {\n const offset = d.value0 > 0 ? minimumBarHeight : 0\n return (yScale(0) as number) - offset\n })\n .attr(\"height\", minimumBarHeight)\n .attr(\"width\", xScale.bandwidth())\n .attr(\"fill\", \"transparent\")\n\n // Attach tooltip event to all rects\n svg\n .selectAll<SVGElement, Bar>(\"g > rect\")\n .on(\"mousemove\", (event: MouseEvent) => {\n hoverTooltip.position(event.clientX, event.clientY)\n })\n .on(\"mouseover\", (_event, bar) => {\n hoverTooltip.content(tooltipContent(bar, detail.title)).visible(true)\n })\n .on(\"mouseout\", () => {\n hoverTooltip.visible(false)\n })\n }\n\n drawables.push(redraw)\n }\n\n if (note) {\n const noteNode = document.createElement(\"div\")\n const html = select(noteNode).classed(\"note\", true).html(note)\n widget.markup(html)\n widget.container.appendChild(noteNode)\n }\n\n return {\n draw: function () {\n for (const drawable of drawables) {\n drawable()\n }\n },\n }\n}\n","import { Data } from \"../base\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\nexport const contact: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (data) {\n const handler = widget.handlerValue(\"load\")\n if (handler) {\n handler(data)\n }\n }\n\n return alreadyDrawn\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import { select, Selection, BaseType } from \"d3-selection\"\nimport { line, curveLinear } from \"d3-shape\"\nimport { Widget } from \"./widget\"\nimport * as Dom from \"../util/dom\"\nimport { NorthData } from \"../viz-base\"\n\nexport interface Node {\n x: number\n y: number\n id: number\n desc: string\n children?: Node[]\n root: boolean\n old?: boolean\n warning?: string\n distance?: number\n url?: string\n text: string\n clickable?: boolean\n icon: string\n type: string\n query: unknown\n}\n\nexport interface Link {\n source: Node\n target: Node\n}\n\nexport const bigNodeRadius = 20\nexport const smallNodeRadius = 8\n\nexport function createArrowPath(arrowSize: number): string {\n const arrowRatio = 0.5\n const d = [\n { x: 0, y: 0 },\n { x: 1, y: arrowRatio },\n { x: 1, y: -arrowRatio },\n { x: 0, y: 0 },\n ]\n const lineFunction = line<{ x: number; y: number }>()\n .x(function (d) {\n return arrowSize * d.x\n })\n .y(function (d) {\n return arrowSize * d.y\n })\n .curve(curveLinear)\n return lineFunction(d) as string\n}\n\n// in SVG, texts don't have background. Thus, we add a \"rect\" element to serve as the background\n// this function keeps the position and width of text and background in sync\nexport function syncTextBackground<\n GElement extends BaseType,\n Datum,\n PElement extends BaseType,\n>(\n elements: Selection<GElement, Datum, PElement, unknown>,\n textSelector: string,\n bgSelector: string,\n marginX: number,\n marginY: number,\n maxWidth: number,\n cornerRadius: number = 0\n) {\n elements.each(function () {\n const parent = select(this)\n const text = parent.select<SVGTextElement>(textSelector).node()\n const bg = parent.select<SVGRectElement>(bgSelector).node()\n if (text && bg && text.textContent) {\n const bbox = text.getBBox()\n const dx = Number(parent.attr(\"data-dx\"))\n if (dx != 0) {\n const oldX = bbox.x\n const minX = -dx + marginX\n const maxX = maxWidth - marginX - bbox.width - dx\n if (oldX < minX) {\n bbox.x = minX\n select(text).attr(\"x\", minX - oldX)\n } else if (oldX > maxX) {\n bbox.x = maxX\n select(text).attr(\"x\", maxX - oldX)\n }\n }\n select(bg)\n .attr(\"width\", bbox.width + marginX * 2)\n .attr(\"height\", bbox.height + marginY * 2)\n .attr(\"x\", bbox.x - marginX)\n .attr(\"y\", bbox.y - marginY)\n .attr(\"rx\", cornerRadius)\n .attr(\"ry\", cornerRadius)\n }\n })\n}\n\nfunction moveToFront(elements: Element[]) {\n // in SVG, the last children are always in front\n // thus, we have to move the elements to the end in their parent's children list\n // this is only possible by re-appending them.\n elements.reverse()\n const uniqueElements: Element[] = []\n for (let element of elements) {\n if (uniqueElements.indexOf(element) < 0) {\n uniqueElements.push(element)\n }\n }\n uniqueElements.reverse()\n const size = uniqueElements.length\n if (size > 0 && !Dom.isIE()) {\n const first = uniqueElements[0]\n const parent = first.parentNode\n const children = parent == null ? [] : parent.childNodes\n // move only if not already there to avoid flickering\n let alreadyThere = true\n for (let i = 0; i < size; ++i) {\n if (children[children.length - size + i] != uniqueElements[i]) {\n alreadyThere = false\n break\n }\n }\n if (!alreadyThere) {\n for (let element of uniqueElements) {\n const parent = element.parentNode\n parent?.appendChild(element)\n }\n }\n }\n}\n\nexport function drawNodes<\n GElement extends BaseType,\n Datum,\n PElement extends BaseType,\n>(\n widget: Widget,\n svg: Selection<GElement, Datum, PElement, unknown>,\n nodes: Node[],\n rootId: number | undefined,\n denseLeaves: boolean\n) {\n const maxWidth = widget.container.getBoundingClientRect().width\n\n function selectNode(id: number) {\n return svg.select<Element>(\".node[data-id='\" + id + \"']\")\n }\n\n function selectRootNode() {\n return svg.select<Element>(\"[data-root]\")\n }\n\n let restoreDefaultOrder: number /* timeout handler */\n\n function highlight(node: Node) {\n const nodeId = node.id\n const highlightMode = nodeId == rootId ? \"root\" : \"node\"\n\n // highlight node\n const nodeEl = selectNode(nodeId).attr(\"data-highlight\", highlightMode)\n nodeEl.select<Element>(\".text\").text(node.desc)\n syncTextBackground(\n nodeEl,\n \".text\",\n \".text-bg\",\n denseLeaves ? 2 : 5,\n 2,\n maxWidth\n )\n\n // highlight links\n const linkEls = svg\n .selectAll<\n Element,\n Link\n >(\"[data-source-id='\" + nodeId + \"'],[data-target-id='\" + nodeId + \"']\")\n .attr(\"data-highlight\", highlightMode)\n syncTextBackground(linkEls, \".desc\", \".desc-bg\", 3, 2, maxWidth)\n\n // bring highlighted stuff to front\n window.clearTimeout(restoreDefaultOrder)\n const toBeMoved: Element[] = []\n linkEls.each(function (link) {\n toBeMoved.push(this)\n function moveOtherEndToFront(id: number) {\n if (id != nodeId) {\n toBeMoved.push(selectNode(id).node() as Element)\n }\n }\n moveOtherEndToFront(link.source.id)\n moveOtherEndToFront(link.target.id)\n })\n toBeMoved.push(nodeEl.node() as Element)\n moveToFront(toBeMoved)\n } // end highlight\n\n function arrangeInDefaultOrder() {\n const toBeMoved: Element[] = []\n svg.select<Element>(\".node\").each(function () {\n toBeMoved.push(this)\n })\n toBeMoved.push(selectRootNode().node() as Element)\n moveToFront(toBeMoved)\n }\n\n function unhighlight(node: Node) {\n svg.selectAll(\"[data-highlight]\").attr(\"data-highlight\", \"false\")\n const nodeEl = svg.select(\".node[data-id='\" + node.id + \"']\")\n nodeEl.select(\".text\").text(node.text).attr(\"x\", 0)\n\n restoreDefaultOrder = window.setTimeout(arrangeInDefaultOrder, 1000)\n }\n\n let d3NodesContainer = svg.select<SVGGElement>(\"g.nodes\")\n\n if (d3NodesContainer.empty()) {\n d3NodesContainer = svg.append(\"g\").attr(\"class\", \"nodes\")\n }\n\n d3NodesContainer.style(\"pointer-events\", \"all\")\n const d3Nodes = d3NodesContainer.selectAll(\".node\").data(nodes)\n\n const clickable = (node: Node) => node.clickable || !node.root\n // I think all code related to d3NewNodes can be deleted safely\n // because the rendering is now done on the server\n const d3NewNodes = d3Nodes\n .enter()\n .append<SVGAElement>(\"svg:a\")\n .attr(\"class\", \"node\")\n .attr(\"data-leaf\", (node) => !node.children || node.children.length == 0)\n .attr(\"data-id\", (node) => node.id)\n .attr(\"data-root\", (node) => node.root)\n .attr(\"data-old\", (node) => node.old ?? null)\n .attr(\"data-warning\", (node) => node.warning ?? null)\n .attr(\"data-d\", (node) => node.distance ?? null)\n .attr(\"xlink:href\", function (node) {\n return node.url || \"\" // clickable(node) ? widget.getLinkifier()(this) : null\n })\n .attr(\"data-clickable\", (node) =>\n clickable(node) && widget.getClickHandler(node.type) ? true : null\n )\n .on(\"click\", function (event: Event, node) {\n if (clickable(node)) {\n if (widget.invokeClickHandler(node.query, node.type)) {\n event.preventDefault()\n }\n }\n })\n\n Dom.onEvent(\n \"mouseover\",\n d3NodesContainer.node() as Element,\n d3NewNodes,\n highlight\n )\n Dom.onEvent(\n \"mouseout\",\n d3NodesContainer.node() as Element,\n d3NewNodes,\n unhighlight\n )\n\n d3NewNodes.append(\"circle\").attr(\"r\", bigNodeRadius)\n\n d3NewNodes\n .append(\"text\")\n .attr(\"class\", \"icon\")\n .text((node) => node.icon)\n\n d3NewNodes.append(\"rect\").attr(\"class\", \"text-bg\")\n\n d3NewNodes\n .append(\"text\")\n .attr(\"class\", \"text\")\n .text((node) => node.text)\n\n d3NewNodes\n .filter(\"[data-warning]\")\n .append(\"circle\")\n .attr(\"r\", 7)\n .attr(\"data-warn\", true)\n .attr(\"transform\", \"translate(20, -20)\")\n d3NewNodes\n .filter(\"[data-warning]\")\n .append(\"text\")\n .attr(\"r\", 8)\n .attr(\"class\", \"icon\")\n .text(\"\\uf071\")\n .attr(\"data-warn\", true)\n .append(\"title\")\n .text((node) => node.warning ?? \"\")\n\n arrangeInDefaultOrder()\n\n return d3NewNodes\n}\n\nexport function enrichNodes<\n GElement extends BaseType,\n Datum,\n PElement extends BaseType,\n>(\n widget: Widget,\n svg: Selection<GElement, Datum, PElement, unknown>,\n //nodes: Node[]\n //rootId: number | undefined,\n denseLeaves: boolean\n) {\n const maxWidth = widget.container.getBoundingClientRect().width\n\n function selectNode(id: string) {\n return svg.select<Element>(\".node[data-id='\" + id + \"']\")\n }\n\n function selectRootNode() {\n return svg.select<Element>(\"[data-root]\")\n }\n\n let restoreDefaultOrder: number /* timeout handler */\n\n function highlight(node: Element) {\n const nodeId = node.getAttribute(\"data-id\")\n const highlightMode =\n node.getAttribute(\"data-root\") == \"true\" ? \"root\" : \"node\"\n\n // highlight node\n node.setAttribute(\"data-highlight\", highlightMode)\n var textNode = node.querySelector(\".text\")\n if (textNode) {\n textNode.textContent = node.getAttribute(\"data-description\")\n }\n\n syncTextBackground(\n select(node),\n \".text\",\n \".text-bg\",\n denseLeaves ? 2 : 5,\n 2,\n maxWidth\n )\n\n // highlight links\n const linkEls = svg\n .selectAll<\n Element,\n Link\n >(\".link[data-source-id='\" + nodeId + \"'],.link[data-target-id='\" + nodeId + \"']\")\n .attr(\"data-highlight\", highlightMode)\n syncTextBackground(linkEls, \".desc\", \".desc-bg\", 3, 2, maxWidth)\n\n // bring highlighted stuff to front\n window.clearTimeout(restoreDefaultOrder)\n const toBeMoved: Element[] = []\n linkEls.each(function (link) {\n var linkEl = this\n toBeMoved.push(linkEl)\n function moveOtherEndToFront(id: string) {\n if (id != nodeId) {\n toBeMoved.push(selectNode(id).node() as Element)\n }\n }\n moveOtherEndToFront(linkEl.getAttribute(\"data-source-id\") || \"\")\n moveOtherEndToFront(linkEl.getAttribute(\"data-target-id\") || \"\")\n })\n toBeMoved.push(node)\n moveToFront(toBeMoved)\n }\n\n function arrangeInDefaultOrder() {\n const toBeMoved: Element[] = []\n svg.select<Element>(\".node\").each(function () {\n toBeMoved.push(this)\n })\n toBeMoved.push(selectRootNode().node() as Element)\n moveToFront(toBeMoved)\n }\n\n function unhighlight(node: Element) {\n svg.selectAll(\"[data-highlight]\").attr(\"data-highlight\", \"false\")\n const nodeId = node.getAttribute(\"data-id\")\n svg\n .select(\".node[data-id='\" + nodeId + \"']\")\n .select(\".text\")\n .text(node.getAttribute(\"data-text\") || \"\")\n .attr(\"x\", 0)\n\n restoreDefaultOrder = window.setTimeout(arrangeInDefaultOrder, 1000)\n }\n\n const d3NodesContainer = svg.select<SVGGElement>(\"g.nodes\")\n const d3NewNodes = d3NodesContainer.selectAll(\".node\").each(function () {\n const el = this as Element\n const root = el.getAttribute(\"data-root\") == \"true\"\n const linkify = widget.getLinkifier()\n if (!root) {\n const type = el.getAttribute(\"data-type\") || \"\"\n const query = el.getAttribute(\"data-query\") || \"\"\n NorthData.debug(el.getAttribute(\"data-url\") + \" -> \" + linkify(el))\n select(el)\n .attr(\"xlink:href\", linkify(el))\n .attr(\"data-clickable\", widget.getClickHandler(type) ? \"true\" : \"false\")\n .on(\"click\", function (event: Event) {\n if (widget.invokeClickHandler(query, type)) {\n event.preventDefault()\n }\n })\n }\n })\n\n d3NodesContainer\n .selectAll(\".node\")\n .on(\"mouseover\", function () {\n highlight(this as Element)\n })\n .on(\"mouseout\", function () {\n unhighlight(this as Element)\n })\n\n arrangeInDefaultOrder()\n\n // REMOVE ME\n NorthData.debug(\"successfully completed v12\")\n}\n","import { select } from \"d3-selection\"\nimport { min, max, extent } from \"d3-array\"\nimport { scaleLinear } from \"d3-scale\"\nimport { cluster, hierarchy, HierarchyPointNode } from \"d3-hierarchy\"\nimport { linkHorizontal } from \"d3-shape\"\n\nimport { setHeight } from \"../../util/dom\"\nimport {\n bigNodeRadius,\n drawNodes,\n smallNodeRadius,\n createArrowPath,\n Node,\n Link,\n} from \"../nodes\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\ninterface InputNode {\n root: boolean\n clickable?: boolean\n edge?: { old: boolean; warn: boolean; head?: string; tail?: string }\n id: number\n text: string\n desc: string\n type: string\n icon: string\n query: unknown\n}\n\ninterface InputRootNode extends InputNode {\n size: number\n scope: string\n}\n\ninterface GraphNode extends Node {\n depth: number\n edge?: { old: boolean; warn: boolean; head?: string; tail?: string }\n}\n\ninterface GraphLink extends Link {\n target: GraphNode\n source: GraphNode\n}\n\ntype HierarchyNode = HierarchyPointNode<InputNode>\n\nexport const dendrogram: Renderer = function (\n widget: Widget,\n data: InputRootNode\n): Rendition {\n const container = widget.container\n\n // do not show shake button:\n select(container).selectAll(\".shake\").style(\"display\", \"none\")\n\n const dense = data.size >= 10\n const scope = data.scope\n const svg = select(container)\n .append(\"svg\")\n .attr(\"data-dense\", dense)\n .attr(\"aria-label\", data.desc)\n\n function draw() {\n const width = container.getBoundingClientRect().width\n\n const bigBox = {\n left: -width / 6,\n right: width / 6,\n top: -bigNodeRadius,\n bottom: bigNodeRadius + 18 /*text*/,\n }\n const smallBox = {\n left: -smallNodeRadius,\n right: width / 3 - smallNodeRadius,\n top: -smallNodeRadius,\n bottom: smallNodeRadius,\n }\n const leafBox = dense ? smallBox : bigBox\n const nonLeafBox = bigBox\n\n const bigNodeSize: [number, number] = [\n bigBox.bottom - bigBox.top,\n bigBox.right - bigBox.left,\n ]\n const smallNodeSize: [number, number] = [\n smallBox.bottom - smallBox.top,\n smallBox.right - smallBox.left,\n ]\n\n const leafNodeSize: [number, number] = dense ? smallNodeSize : bigNodeSize\n const arrowSize = dense ? 7 : 12\n\n const denseSiblingDistance = 1\n const denseCousinDistance = 1.5\n const minParentDistance = 5\n\n const clusterLayout = cluster<InputNode>()\n .nodeSize(leafNodeSize)\n .separation(function (a, b) {\n const siblings = a.parent == b.parent\n if (dense) {\n if (siblings) {\n return denseSiblingDistance\n } else {\n const nonAdjustedDistance =\n ((a.parent!.children!.length + b.parent!.children!.length) *\n denseSiblingDistance) /\n 2 +\n denseCousinDistance\n const missingDistance = minParentDistance - nonAdjustedDistance\n const adjustedDistance =\n nonAdjustedDistance < minParentDistance\n ? denseCousinDistance + missingDistance\n : denseCousinDistance\n return adjustedDistance\n }\n } else {\n return siblings ? 1.0 : 1.4\n }\n })(hierarchy<InputNode>(data))\n\n const toNode = (hierarchyNode: HierarchyNode) => ({\n ...hierarchyNode.data,\n x: hierarchyNode.x,\n y: hierarchyNode.y,\n depth: hierarchyNode.depth,\n })\n const nodes: GraphNode[] = clusterLayout.descendants().map(toNode)\n const links: GraphLink[] = clusterLayout.links().map((hierarchyLink) => ({\n target: toNode(hierarchyLink.target),\n source: toNode(hierarchyLink.source),\n }))\n\n let rootNode\n let maxDepth = 0\n for (let node of nodes) {\n if (node.root) {\n rootNode = node\n if (scope === \"publication\") {\n node.clickable = true\n }\n }\n maxDepth = Math.max(maxDepth, node.depth)\n }\n\n svg.select(\"g\").remove()\n const canvas = svg.append(\"g\")\n const drawnLinks = canvas.append(\"g\").selectAll(\".link\").data(links)\n\n const edge = (link: GraphLink) => link.target.edge\n\n const newDrawnLinks = drawnLinks\n .enter()\n .append(\"g\")\n .attr(\"class\", \"link\")\n .attr(\"data-source-id\", (link) => link.source.id)\n .attr(\"data-target-id\", (link) => link.target.id)\n .attr(\"data-old\", (link) => edge(link)?.old ?? null)\n .attr(\"data-warn\", (link) => edge(link)?.warn ?? null)\n .attr(\"data-head\", (link) => edge(link)?.head ?? null)\n .attr(\"data-tail\", (link) => edge(link)?.tail ?? null)\n\n newDrawnLinks.append(\"path\").attr(\"class\", \"line\")\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"head\")\n .attr(\"d\", createArrowPath(arrowSize))\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"tail\")\n .attr(\"d\", createArrowPath(arrowSize))\n\n const drawnNodes = drawNodes(\n widget,\n canvas,\n nodes,\n rootNode ? rootNode.id : undefined,\n dense\n )\n\n interface Positioner {\n height: number\n canvasTransform: string\n nodeTransform: (node: Node) => string\n diagonal: (link: Link) => string | null\n headTransform: (link: Link) => string\n tailTransform: (link: Link) => string\n }\n\n const translate = (x: number, y: number) => \"translate(\" + x + \",\" + y + \")\"\n\n const createCartesianPositioner = function (width: number): Positioner {\n const isLeaf = (node: Node) =>\n !node.children || node.children.length === 0\n\n const box = (node: Node) => (isLeaf(node) ? leafBox : nonLeafBox)\n\n const left = (node: Node) => node.y + box(node).left\n const right = (node: Node) => node.y + box(node).right\n const top = (node: Node) => node.x + box(node).top\n const bottom = (node: Node) => node.x + box(node).bottom\n\n const hMin = min(nodes, left) as number\n const hMax = max(nodes, right) as number\n const hMinMax = [hMin, hMax]\n\n const vMin = min(nodes, top) as number\n const vMax = max(nodes, bottom) as number\n const vDomain = extent(nodes, (node: GraphNode) => node.x) as [\n number,\n number,\n ]\n const vExtent = vDomain[1] - vDomain[0]\n\n const scaleH = scaleLinear().domain(hMinMax).range([0, width])\n const scaleV = scaleLinear().domain(vDomain).range([0, vExtent])\n\n const positionH = (node: Node) =>\n scaleH(dense && isLeaf(node) ? left(node) : node.y) as number\n const positionV = (node: Node) => scaleV(node.x) as number\n\n const nodeTransform = (node: Node) =>\n translate(positionH(node), positionV(node))\n\n const diagonal = linkHorizontal<Link, Node>()\n .x((node) => positionH(node))\n .y((node) => positionV(node))\n\n const paddingV = Math.max(10, (150 - (vMax - vMin)) / 2)\n const paddingBottom = vMax - vDomain[1] + paddingV\n const paddingTop = vDomain[0] - vMin + paddingV\n\n const height = vExtent + paddingBottom + paddingTop\n\n const correctionH = 0\n const correctionV = paddingTop\n\n return {\n height: height,\n diagonal,\n nodeTransform,\n headTransform: (link) =>\n nodeTransform(link.target) +\n \" \" +\n translate(dense && isLeaf(link.target) ? 0 : -bigNodeRadius, 0) +\n \" rotate(180)\",\n tailTransform: (link) =>\n nodeTransform(link.source) + \" \" + translate(bigNodeRadius, 0),\n canvasTransform: translate(correctionH, correctionV),\n }\n }\n\n const positioner: Positioner = createCartesianPositioner(width)\n\n setHeight(container, positioner.height)\n\n svg\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"viewBox\", `0 0 ${width} ${positioner.height}`)\n\n canvas.attr(\"transform\", positioner.canvasTransform)\n\n drawnNodes.attr(\"transform\", positioner.nodeTransform)\n newDrawnLinks.select(\".line\").attr(\"d\", positioner.diagonal)\n newDrawnLinks.select(\".head\").attr(\"transform\", positioner.headTransform)\n newDrawnLinks.select(\".tail\").attr(\"transform\", positioner.tailTransform)\n }\n\n return { draw }\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","import { select, selectAll, Selection } from \"d3-selection\"\nimport { HSLColor } from \"d3-color\"\nimport { treemap, hierarchy, HierarchyRectangularNode } from \"d3-hierarchy\"\nimport { ascending } from \"d3-array\"\nimport { size } from \"../../util/dom\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { trilingual } from \"../i18n\"\n\ninterface Box {\n name: string\n raw: number\n formattedValue?: string\n color: string\n children?: Box[]\n}\n\ninterface Data {\n numberFormat: {\n prefix: string\n accuracy: number\n postfix: string\n }\n default: Box\n root: Box\n}\n\ninterface Item {\n data: Data\n item: string\n title: string\n date: string\n}\n\ninterface Data {\n item: Item[]\n}\n\ntype AnySelection = Selection<any, unknown, any, unknown>\n\nexport const drillDown: Renderer = function (\n widget: Widget,\n allData: Data\n): Rendition {\n if (!allData.item || allData.item.length == 0) {\n throw new Error(\"no data\")\n }\n const drawables: (() => void)[] = []\n for (const detail of allData.item) {\n const data = detail.data\n const itemNode = document.createElement(\"div\")\n const root = select(itemNode)\n .attr(\"data-item\", detail.item)\n .attr(\"class\", \"root\")\n const boxParent = root.append(\"div\").attr(\"class\", \"box-parent\")\n\n widget.showItem(detail.title, itemNode)\n\n let legend1: AnySelection = select(widget.nodeValue(\"legend1\") ?? null)\n if (legend1.empty()) {\n legend1 = root.selectAll(\".legend1\")\n }\n let legend2: AnySelection = select(widget.nodeValue(\"legend2\") ?? null)\n if (legend2.empty()) {\n legend2 = root.selectAll(\".legend2\")\n }\n let legend3: AnySelection = select(widget.nodeValue(\"legend3\") ?? null)\n if (legend3.empty()) {\n legend3 = root.selectAll(\".legend3\")\n }\n\n if (legend1.empty() || legend2.empty() || legend3.empty()) {\n let legendParent: AnySelection = root.selectAll(\".legends\")\n if (legendParent.empty()) {\n legendParent = root.append(\"div\").attr(\"class\", \"legends\")\n }\n if (legend1.empty()) {\n legend1 = legendParent.append(\"span\").attr(\"class\", \"legend1\")\n }\n if (legend2.empty()) {\n legend2 = legendParent.append(\"span\").attr(\"class\", \"legend2\")\n }\n if (legend3.empty()) {\n legend3 = legendParent.append(\"span\").attr(\"class\", \"legend3\")\n }\n }\n\n legend3.text(trilingual(\"As of: \", \"Stand: \", \"Date de \") + detail.date)\n\n const numberFormatter = widget\n .i18n()\n .createNumberFormatter(data.numberFormat, \",.3r\")\n let fixedHighlightedbox: Box | null = null\n const highlight = function (element: HTMLElement, data: Box) {\n if (data.children) {\n return\n }\n if (!fixedHighlightedbox || fixedHighlightedbox == data) {\n boxParent.classed(\"highlighting\", true)\n selectAll(\".highlighted\").classed(\"highlighted\", false)\n select(element).classed(\"highlighted\", true)\n showLegend(data)\n }\n }\n const unhighlight = function () {\n if (!fixedHighlightedbox) {\n boxParent.classed(\"highlighting\", false)\n selectAll(\".highlighted\").classed(\"highlighted\", false)\n showLegend(data.default ?? data.root)\n }\n }\n const fixHighlight = function (element: HTMLElement, data: Box) {\n if (fixedHighlightedbox == data) {\n fixedHighlightedbox = null\n unhighlight()\n } else {\n fixedHighlightedbox = data\n highlight(element, data)\n }\n }\n const containsNeg = function (text: string): boolean {\n return !!text && text.indexOf(\"Fehlbetrag\") >= 0\n }\n const showLegend = function (box: Box) {\n legend1.text((box.formattedValue ?? numberFormatter(box.raw)) + \" \")\n legend2.text(box.name)\n }\n\n const assignColors = function (node: Box) {\n function _assignColors(\n node: Box,\n color: HSLColor,\n minHue: number,\n maxHue: number\n ) {\n node.color = color.toString()\n let hue = minHue\n if (node.children) {\n const nChildren = node.children.length + 1\n if (nChildren > 0) {\n const dHue = (maxHue - minHue) / nChildren\n for (let child of node.children) {\n color.h = hue % 360\n _assignColors(child, color, hue, hue + dHue)\n hue += dHue\n }\n }\n }\n }\n const rootColor = widget.getRootColor()\n _assignColors(node, rootColor, rootColor.h, rootColor.h + 360)\n }\n unhighlight()\n assignColors(data.root)\n const draw = function () {\n let rect = boxParent.node()!.getBoundingClientRect()\n if (rect.width == 0 || rect.height == 0) {\n return\n }\n\n const boxHierarchy = hierarchy(data.root)\n .sum((box) => (box.children ? 0 : Math.abs(box.raw)))\n .sort((a, b) => ascending(a.value, b.value))\n\n const treemapLayout = treemap<Box>().size(size(rect)).round(true)(\n boxHierarchy\n )\n\n const dx = (node: HierarchyRectangularNode<Box>) => node.x1 - node.x0\n const dy = (node: HierarchyRectangularNode<Box>) => node.y1 - node.y0\n\n const boxes = boxParent\n .selectAll<HTMLDivElement, unknown>(\".box\")\n .data(treemapLayout.descendants())\n const newBoxes = boxes\n .enter()\n .append(\"div\")\n .attr(\"class\", \"box\")\n .on(\"mouseenter\", function (_event, node) {\n highlight(this, node.data)\n })\n .on(\"mouseleave\", unhighlight)\n .on(\"click\", function (_event, node) {\n fixHighlight(this, node.data)\n })\n .attr(\"data-neg\", (node) =>\n node.data.raw < 0 || containsNeg(node.data.name) ? true : false\n )\n newBoxes\n .append(\"div\")\n .attr(\"class\", \"value\")\n .text((node) =>\n node.children\n ? null\n : (node?.data?.formattedValue ??\n numberFormatter(node.value as number))\n )\n newBoxes\n .append(\"div\")\n .attr(\"class\", \"desc\")\n .text((node) => (node.children ? null : node.data.name))\n newBoxes\n .merge(boxes) // enter + update\n .attr(\"data-small\", (node) =>\n dx(node) < 40 || dy(node) < 32 ? true : null\n )\n .style(\"left\", (node) => node.x0 + \"px\")\n .style(\"top\", (node) => node.y0 + \"px\")\n .style(\"width\", (node) => Math.max(0, dx(node) - 1) + \"px\")\n .style(\"height\", (node) => Math.max(0, dy(node) - 1) + \"px\")\n .style(\"background\", (node) =>\n node.children ? \"white\" : node.data.color\n )\n }\n drawables.push(draw)\n }\n return {\n draw: function () {\n for (const drawable of drawables) {\n drawable()\n }\n },\n }\n}\n","import { select } from \"d3-selection\"\nimport { Data } from \"../base\"\nimport { Renderer, Rendition, alreadyDrawn } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\nexport const financials: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const history =\n data &&\n data.financials &&\n data.financials.filter(\n (financial: { items: unknown[] }) => financial.items.length > 0\n )\n const reverse = widget.isReverseChronology()\n\n if (history && history.length > 0 && history[0].items.length > 0) {\n const table = select(widget.container)\n .append(\"table\")\n .attr(\n \"class\",\n \"ui bizq very compact celled small unstackable striped selectable first stuck table\"\n )\n const theadRow = table.append(\"thead\").append(\"tr\")\n const tbody = table.append(\"tbody\")\n const tfootRow = table.append(\"tfoot\").append(\"tr\")\n var sampleItemsById: { [key: string]: any } = {}\n for (const financials of history) {\n financials.itemsById = {}\n for (const item of financials.items) {\n financials.itemsById[item.id] = item\n sampleItemsById[item.id] = item\n }\n }\n const latestFinancials = history[history.length - 1]\n if (reverse) {\n history.reverse()\n }\n\n const theadLeft = theadRow\n .append(\"th\")\n .attr(\"class\", \"first\")\n .text(widget.stringValue(\"title\") as string)\n theadLeft\n .append(\"a\")\n .attr(\"href\", data.csvUrl)\n .attr(\"download\", \"download\")\n .attr(\"title\", \"CSV/Excel Download\")\n .classed(\"screen-only\", true)\n .append(\"i\")\n .attr(\"class\", \"download icon\")\n\n for (const financials of history) {\n theadRow.append(\"th\").text(financials.formattedDate)\n }\n for (const id in sampleItemsById) {\n const tbodyRow = tbody.append(\"tr\").attr(\"class\", \"active-on-hover\")\n const rowItem = sampleItemsById[id]\n tbodyRow.append(\"td\").text(rowItem[\"name\"])\n for (const financials of history) {\n const cellItem = financials.itemsById[id]\n const td = tbodyRow.append(\"td\")\n if (cellItem) {\n const signClass = cellItem.value >= 0 ? \"pos\" : \"neg\"\n let text = cellItem.formattedValue\n td.append(\"span\")\n .attr(\"class\", signClass + \" value\")\n .text(text)\n if (cellItem.estimate) {\n td.append(\"a\")\n .attr(\"href\", \"javascript:void()\")\n .attr(\n \"title\",\n widget.trilingual(\n \"Unsafe value (estimation or indirect determination)\",\n \"Indirekte oder unsichere Bestimmungsmethode\",\n \"Valeur non sûre (estimation ou détermination indirecte)\"\n )\n )\n .html(\" *&nbsp;\")\n }\n if (cellItem.note) {\n td.append(\"span\").attr(\"class\", \"note\").text(cellItem.note)\n }\n } else {\n td.append(\"span\").text(\"N/A\")\n }\n }\n }\n\n if (latestFinancials.source) {\n if (latestFinancials.source.auditorName) {\n const tbodyRow = tbody.append(\"tr\").attr(\"class\", \"active-on-hover\")\n tbodyRow\n .append(\"td\")\n .text(widget.trilingual(\"Auditor\", \"Prüfer\", \"Auditeur\"))\n for (const financials of history) {\n const auditorName = financials.source && financials.source.auditorName\n const td = tbodyRow.append(\"td\")\n td.append(\"span\")\n .attr(\"class\", \"auditor value\")\n .text(auditorName || \"N/A\")\n }\n }\n if (latestFinancials.source && latestFinancials.source.publicationDate) {\n const tbodyRow = tbody.append(\"tr\").attr(\"class\", \"active-on-hover\")\n tbodyRow\n .append(\"td\")\n .text(\n widget.trilingual(\n \"Publication date\",\n \"Veröffentlichungs\\u00ADdatum\",\n \"Date de publication\"\n )\n )\n for (const financials of history) {\n const date = financials.source && financials.source.publicationDate\n const td = tbodyRow.append(\"td\")\n td.append(\"span\")\n .attr(\"class\", \"date value\")\n .text(date ? widget.i18n().dateFormatter(new Date(date)) : \"N/A\")\n }\n }\n tfootRow\n .append(\"th\")\n .text(widget.trilingual(\"Source\", \"Quelle\", \"Source\"))\n\n const clickHandler = widget.handlerValue(\"sourceClick\")\n for (const financials of history) {\n const th = tfootRow.append(\"th\")\n th.html(financials.note.html)\n\n if (clickHandler) {\n th.selectAll(\"a\")\n .attr(\"href\", \"javascript:void(0);\")\n .on(\"click\", function (event: Event) {\n event.preventDefault()\n clickHandler(financials.source)\n })\n }\n }\n }\n } else {\n throw new Error(\"no data available\")\n }\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { extent } from \"d3-array\"\nimport { setHeight, size } from \"../../util/dom\"\nimport {\n bigNodeRadius,\n drawNodes,\n syncTextBackground,\n createArrowPath,\n Node,\n Link,\n enrichNodes,\n} from \"../nodes\"\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { dendrogram } from \"./dendrogram\"\nimport { trilingual } from \"../i18n\"\nimport { NorthData } from \"../../viz-base\"\n\ninterface GraphLink extends Link {\n old: boolean\n warn: boolean\n head?: string\n tail?: string\n text: string\n type: string\n length?: unknown\n helper?: unknown\n}\n\ninterface Data {\n nodes: Node[]\n links: GraphLink[]\n children: unknown\n diameter: number\n type?: string\n html?: string\n legendHtml?: string\n}\n\nexport const graph: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (data.children) {\n return dendrogram(widget, data)\n }\n\n const orgchart = \"orgchart\" == data.type\n const container = widget.container\n\n if (data.html) {\n container.innerHTML = data.html\n\n if (!data.legendHtml) {\n select(container)\n .selectAll(\"foreignObject:has(> .extended-legend-button)\")\n .remove()\n }\n\n syncTextBackground(\n select(container).selectAll(\".link\"),\n \".desc\",\n \".desc-bg\",\n 3,\n 3,\n 1000\n )\n enrichNodes(widget, select(container).select(\"svg\"), false)\n return { draw: function () {} }\n }\n\n if (!data.nodes || data.nodes.length < 2) {\n throw new Error(\"graph empty or single node\")\n }\n\n let rootNode: Node\n const nodeById: Record<number, Node> = {}\n const count = data.nodes.length\n let showWarningLegend: boolean = false\n for (let node of data.nodes) {\n if (node.root) {\n rootNode = node\n }\n if (node.warning) {\n showWarningLegend = true\n }\n nodeById[node.id] = node\n }\n\n for (let link of data.links) {\n // source and target are transmitted as ids (number) pointing to nodes\n // rewrite links so that source and target point to actual Node\n link.source = nodeById[link.source as unknown as number]\n link.target = nodeById[link.target as unknown as number]\n if (!link.source || !link.target) {\n NorthData.log(\"error\", \"broken link: \", link)\n }\n }\n\n const svg = select(container)\n .append(\"svg\")\n .attr(\"width\", \"100%\")\n .attr(\"height\", \"100%\")\n .attr(\"aria-label\", trilingual(\"Network\", \"Netzwerk\", \"Réseau\"))\n\n const drawnLinks = svg\n .append(\"g\")\n .attr(\"class\", \"nodes\")\n .selectAll(\".link\")\n .data(data.links)\n\n const legend = svg.append(\"g\").attr(\"class\", \"legend\")\n\n if (!orgchart) {\n legend.append(\"line\").attr(\"data-old\", false)\n legend.append(\"line\").attr(\"data-old\", true)\n }\n\n if (showWarningLegend) {\n legend.append(\"line\").attr(\"data-warn\", true)\n }\n\n legend\n .append(\"text\")\n .attr(\"data-old\", false)\n .text(widget.trilingual(\"currently\", \"aktuell\", \"actuel\"))\n\n legend\n .append(\"text\")\n .attr(\"data-old\", true)\n .text(widget.trilingual(\"previously\", \"vormals\", \"auparavant\"))\n\n if (showWarningLegend) {\n legend\n .append(\"text\")\n .attr(\"data-warn\", true)\n .text(\n widget.trilingual(\n \"politically exposed\",\n \"politisch exponiert\",\n \"politiquement exposé\"\n )\n )\n }\n\n function dashArray(link: GraphLink): string | undefined {\n if (link.type == \"SameAddress\") {\n return \"3, 3\"\n }\n if (link.type == \"CommonFiling\") {\n return \"6, 6\"\n }\n }\n\n const newDrawnLinks = drawnLinks\n .enter()\n .append(\"g\")\n .attr(\"class\", \"link\")\n .attr(\"data-source-id\", (link) => link.source.id)\n .attr(\"data-target-id\", (link) => link.target.id)\n .attr(\"data-head\", (link) => link.head as string | null)\n .attr(\"data-tail\", (link) => link.tail as string | null)\n .attr(\"data-old\", (link) => link.old)\n .attr(\"data-warn\", (link) => link.warn)\n .attr(\"data-length\", (link) => link.length as any)\n .attr(\"data-helper\", (link) => link.helper as any)\n\n if (orgchart) {\n for (var i = 0; i < 3; ++i) {\n newDrawnLinks\n .append(\"line\")\n .attr(\"class\", \"line\")\n .attr(\"class\", \"segment\" + i)\n .attr(\"stroke-width\", 1)\n .attr(\"stroke\", \"#000000\")\n // .attr(\"stroke-dasharray\", (link) => dashArray(link) as string)\n }\n } else {\n newDrawnLinks\n .append(\"line\")\n .attr(\"class\", \"line\")\n .attr(\"stroke-width\", 1)\n .attr(\"stroke\", \"#000000\")\n .attr(\"stroke-dasharray\", (link) => dashArray(link) as string)\n }\n\n newDrawnLinks.append(\"rect\").attr(\"class\", \"desc-bg\")\n\n newDrawnLinks\n .append(\"text\")\n .attr(\"class\", \"desc\")\n .attr(\"text-anchor\", \"middle\")\n .text((link) => link.text)\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"head\")\n .attr(\"d\", createArrowPath(12))\n\n newDrawnLinks\n .append(\"path\")\n .attr(\"class\", \"tail\")\n .attr(\"d\", createArrowPath(12))\n\n const drawnNodes = drawNodes(widget, svg, data.nodes, rootNode!.id, false)\n\n let ticks = 0\n let warmingUp = true\n\n const render = function () {\n if (warmingUp || ticks++ % 3 != 0) {\n return\n }\n\n function ratio(domain: [number, number], range: [number, number]) {\n return (range[1] - range[0]) / (domain[1] - domain[0])\n }\n function midpoint(domain: [number, number]) {\n return (domain[1] + domain[0]) / 2\n }\n\n const rect = container.getBoundingClientRect()\n const width = rect.width\n const height = rect.height\n const hSpace = 100,\n vSpace = 40\n const heightFor2 = 120\n const hDomain = extent(data.nodes, (node: Node) => node.x) as [\n number,\n number,\n ]\n const vDomain = extent(data.nodes, (node: Node) => node.y) as [\n number,\n number,\n ]\n\n const hRange: [number, number] = [hSpace, width - hSpace]\n const vRange: [number, number] = orgchart\n ? vDomain\n : [vSpace, (count == 2 ? heightFor2 : height) - 1.5 * vSpace]\n\n const hDomainMidpoint = midpoint(hDomain)\n const hRangeMidpoint = midpoint(hRange)\n const vDomainMidpoint = midpoint(vDomain)\n const vRangeMidpoint = midpoint(vRange)\n let hRatio = ratio(hDomain, hRange)\n let vRatio = ratio(vDomain, vRange)\n let maxAspectRatio = count == 2 ? 2 : data.diameter * 1.1\n hRatio = Math.min(hRatio, vRatio * maxAspectRatio)\n\n if (count == 2) {\n vRatio = 0\n hRatio = hRatio * 2\n setHeight(container, heightFor2)\n }\n\n const scaleH = (x: number) =>\n (x - hDomainMidpoint) * hRatio + hRangeMidpoint\n const scaleV = (y: number) =>\n (y - vDomainMidpoint) * vRatio + vRangeMidpoint\n\n const x1 = (link: GraphLink) => scaleH(link.source.x)\n const x2 = (link: GraphLink) => scaleH(link.target.x)\n const y1 = (link: GraphLink) => scaleV(link.source.y)\n const y2 = (link: GraphLink) => scaleV(link.target.y)\n\n const dx = (link: GraphLink) => x2(link) - x1(link)\n const dy = (link: GraphLink) => y2(link) - y1(link)\n const rx = (link: GraphLink) => (x2(link) - x1(link)) / 2\n const ry = (link: GraphLink) => (y2(link) - y1(link)) / 2\n\n const rawAngle = (link: GraphLink) => {\n let result = (180 / Math.PI) * Math.atan2(dy(link), dx(link))\n return result\n }\n\n const angle = (link: GraphLink) => {\n let result = (180 / Math.PI) * Math.atan2(dy(link), dx(link))\n if (result > 90 && result < 270) {\n result = result - 180\n } else if (result < -90 && result > -270) {\n result = result + 180\n }\n return result\n }\n\n newDrawnLinks.attr(\n \"transform\",\n (link) => \"translate(\" + x1(link) + \" \" + y1(link) + \")\"\n )\n\n newDrawnLinks\n .select(\"line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", dx)\n .attr(\"y2\", dy)\n\n // the three segments are used for org charts\n newDrawnLinks\n .select(\".segment0\")\n .attr(\"x1\", 0)\n .attr(\"y1\", 0)\n .attr(\"x2\", 0)\n .attr(\"y2\", ry) // /2\n\n newDrawnLinks\n .select(\".segment1\")\n .attr(\"x1\", 0)\n .attr(\"y1\", ry)\n .attr(\"x2\", dx)\n .attr(\"y2\", ry)\n\n newDrawnLinks\n .select(\".segment2\")\n .attr(\"x1\", dx)\n .attr(\"y1\", ry)\n .attr(\"x2\", dx)\n .attr(\"y2\", dy)\n\n const linkDescTransform = (link: GraphLink) =>\n \"rotate(\" +\n angle(link) +\n \" \" +\n rx(link) +\n \" \" +\n ry(link) +\n \" \" +\n \") translate(0 -7)\"\n\n newDrawnLinks\n .select(\".desc\")\n .attr(\"x\", rx)\n .attr(\"y\", ry)\n .attr(\"transform\", linkDescTransform)\n\n newDrawnLinks\n .select(\".desc-bg\")\n .attr(\"x\", rx)\n .attr(\"y\", ry)\n .attr(\"transform\", linkDescTransform)\n\n // ARROW HEADs\n if (!orgchart) {\n const xHead = (link: GraphLink) => dx(link) + 0\n const yHead = (link: GraphLink) => dy(link) + 0\n\n newDrawnLinks\n .select(\".tail\")\n .attr(\n \"transform\",\n (link) =>\n \"rotate(\" +\n rawAngle(link) +\n \") \" +\n \"translate(\" +\n bigNodeRadius +\n \" \" +\n 0 +\n \")\"\n )\n\n newDrawnLinks\n .select(\".head\")\n .attr(\n \"transform\",\n (link) =>\n \"translate(\" +\n xHead(link) +\n \" \" +\n yHead(link) +\n \") \" +\n \"rotate(\" +\n (180 + rawAngle(link)) +\n \") \" +\n \"translate(\" +\n bigNodeRadius +\n \" \" +\n 0 +\n \")\"\n )\n }\n\n // LEGEND\n const legendLeft = hSpace / 2\n const legendRight = legendLeft + 40\n const legendYOld = vRange[1] + vSpace / 2\n const legendY = legendYOld - 18\n const legendYWarn = legendYOld + 18\n\n svg.selectAll(\".legend line\").attr(\"x1\", legendLeft).attr(\"x2\", legendRight)\n\n svg\n .selectAll(\".legend line[data-old='false'\")\n .attr(\"y1\", legendY)\n .attr(\"y2\", legendY)\n svg\n .selectAll(\".legend line[data-old='true'\")\n .attr(\"y1\", legendYOld)\n .attr(\"y2\", legendYOld)\n svg\n .selectAll(\".legend line[data-warn='true'\")\n .attr(\"y1\", legendYWarn)\n .attr(\"y2\", legendYWarn)\n\n svg.selectAll(\".legend text\").attr(\"x\", legendRight + 5)\n\n const textDy = 3\n svg.selectAll(\".legend text[data-old='false'\").attr(\"y\", legendY + textDy)\n svg.selectAll(\".legend text[data-old='true'\").attr(\"y\", legendYOld + textDy)\n svg\n .selectAll(\".legend text[data-warn='true'\")\n .attr(\"y\", legendYWarn + textDy)\n\n syncTextBackground(newDrawnLinks, \".desc\", \".desc-bg\", 3, 3, 1000)\n\n drawnNodes\n .attr(\"data-dx\", (node) => scaleH(node.x))\n .attr(\n \"transform\",\n (node) => \"translate(\" + scaleH(node.x) + \",\" + scaleV(node.y) + \")\"\n )\n }\n\n function draw() {\n const [width, height] = size(container.getBoundingClientRect())\n svg.attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n\n warmingUp = false\n render()\n }\n return { draw }\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n","import { hsl, HSLColor } from \"d3-color\"\n\nexport type Coloring = { standard: string; light: string; bright: string }\n\nexport function createColoring(color: HSLColor): Coloring {\n return {\n standard: color.toString(),\n light: color.brighter(1.15).toString(),\n bright: hsl(color.h, color.s * 1.3, color.l * 0.9).toString(),\n }\n}\n\nexport function createPalette(color: HSLColor, size: number): Coloring[] {\n const result: Coloring[] = []\n const dHue = 360 / size + 1\n let hue = color.h\n for (let i = 0; i < size; ++i) {\n color.h = (hue + i * dHue) % 360\n result.push(createColoring(color))\n }\n return result\n}\n","/*!\n * Portions of this code are derived from d3kit v3.2.0\n *\n * Copyright (c) 2015 Twitter, Inc.\n *\n * @license MIT\n *\n *\n * Portions of this code are derived from d3kit-timeline v2.0.1\n *\n * Copyright 2015 Krist Wongsuphasawat\n *\n * @license Apache-2.0\n *\n * NOTICE\n * -------\n *\n * This project includes code originally licensed under the Apache License, Version 2.0.\n *\n * Original Project: d3kit-timeline v2.0.1\n * Original Author: Krist Wongsuphasawat\n *\n * Modifications to the original code:\n * - Code has been inlined\n * - Unused options `keyFn`, `labella`, `labelTextColor`, `scale` have been removed\n * - Option `direction` has been restricted to \"horizontal\" and \"vertical\"\n * - Dependency to d3kit has been inlined\n *\n */\n\nimport { Transition } from \"d3\"\nimport { max } from \"d3-array\"\nimport { axisBottom, axisLeft, type Axis } from \"d3-axis\"\nimport { hsl, HSLColor } from \"d3-color\"\nimport { scaleTime } from \"d3-scale\"\nimport { BaseType, select, selectAll, Selection } from \"d3-selection\"\n\nimport \"d3-transition\"\nimport labella from \"labella\"\nimport debounce from \"lodash.debounce\"\n\nimport { Coloring, createColoring, createPalette } from \"../color\"\nimport { Renderer } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\ntype GenericSelection = Selection<\n SVGGElement | SVGTextElement,\n any,\n any,\n undefined\n>\ntype HistoryDirection = \"horizontal\" | \"vertical\"\n\ninterface HistoryEvent {\n id: number\n href: string\n\n type: string\n old?: boolean\n cat: number\n date: string\n text: string\n class: string\n desc?: string\n query: {\n id: number\n source: string\n url: string\n }\n}\n\ninterface HistoryData {\n minDate: string\n maxDate: string\n event: HistoryEvent[]\n title: string\n}\n\nfunction setupColorPallete(rootColor: HSLColor, paletteSize: number) {\n const palette = createPalette(rootColor, paletteSize)\n const greyColoring = createColoring(hsl(\"#888888\"))\n return function getEventColors(event: HistoryEvent): Coloring {\n return event.old ? greyColoring : palette[event.cat % paletteSize]\n }\n}\n\nexport const history: Renderer = function (widget: Widget, data: HistoryData) {\n const historyData = data.event\n\n let id = 1\n historyData.forEach((event) => (event.id = id++))\n\n widget.container.innerHTML = \"\"\n\n const minDate = new Date(data.minDate)\n const maxDate = new Date(data.maxDate)\n\n const getEventColors = setupColorPallete(widget.getRootColor(), 12)\n const getEventStandardColor = (event: HistoryEvent) =>\n getEventColors(event).standard\n\n const options = {\n alternatingTickLength: 10,\n initialHeight: 50,\n initialWidth: 400,\n direction: \"horizontal\" as HistoryDirection,\n domain: [minDate, maxDate],\n dotRadius: 5,\n linkColor: getEventStandardColor,\n dotColor: getEventStandardColor,\n labelBgColor: getEventStandardColor,\n layerGap: 20,\n textStyle: { fill: \"#fff\" },\n margin: { left: 12, right: 15, top: 5, bottom: 35 },\n labelPadding: { left: 4, right: 4, top: 3, bottom: 2 },\n textYOffset: \"0.85em\",\n\n timeFn: (event: HistoryEventData) => new Date(event.date),\n textFn: (event: HistoryEventData) => event.text,\n formatAxis: (axis: Axis<Date>) => {\n const yearRange = maxDate.getFullYear() - minDate.getFullYear()\n return axis\n .tickFormat(widget.i18n().timeScaleFormatter)\n .tickSizeInner(8)\n .tickSizeOuter(10)\n .ticks(yearRange <= 4 ? 2 * yearRange : undefined)\n },\n }\n\n const dimension = {\n innerWidth: 0,\n innerHeight: 0,\n width: options.initialWidth,\n height: options.initialHeight,\n }\n\n type HistoryEventData = (typeof historyData)[0]\n let force = new labella.Force()\n const scale = scaleTime()\n const container = select(widget.container)\n\n // Enforce line-height = 0 to fix issue with height resizing\n // https://github.com/twitter/d3kit/issues/13\n container.style(\"line-height\", 0)\n\n const chartRoot = container\n .append(\"div\")\n .style(\"display\", \"inline-block\")\n .style(\"position\", \"relative\")\n .style(\"line-height\", 0)\n const svg = chartRoot\n .append(\"svg\")\n .style(\"position\", \"absolute\")\n .style(\"top\", 0)\n .style(\"left\", 0)\n const rootG = svg.append(\"g\")\n\n function createLayer(parent: GenericSelection, name: string) {\n return parent.append(\"g\").attr(\"name\", name)\n }\n\n const dummyLayer = createLayer(rootG, \"dummy\")\n const mainLayer = createLayer(rootG, \"main\")\n const axisLayer = createLayer(mainLayer, \"main/axis\")\n const linkLayer = createLayer(mainLayer, \"main/link\")\n const labelLayer = createLayer(mainLayer, \"main/label\")\n const dotLayer = createLayer(mainLayer, \"main/dot\")\n\n axisLayer.classed(\"axis\", true)\n\n function fitToContainer() {\n const { width, height } = dimension\n const node = container.node()\n const containerWidth = node?.clientWidth ?? 0\n const containerHeight = node?.clientHeight ?? 0\n\n let needsUpdate = false\n // Always use full container width\n if (width !== containerWidth) {\n dimension.width = containerWidth\n needsUpdate = true\n }\n // Shrink height to container\n if (height > containerHeight) {\n dimension.height = containerHeight\n needsUpdate = true\n }\n if (needsUpdate) {\n updateDimension()\n updateDimension.flush()\n }\n }\n\n function resizeToFitNodes() {\n const nodes = force.nodes()\n let maxVal\n switch (options.direction) {\n case \"horizontal\":\n maxVal =\n max<labella.Node<HistoryEventData>, number>(nodes, (d) =>\n Math.abs(d.y)\n ) ?? 0\n dimension.height = maxVal + options.margin.top + options.margin.bottom\n break\n case \"vertical\":\n maxVal =\n max<labella.Node<HistoryEventData>, number>(nodes, (d) =>\n Math.abs(d.x + d.dx)\n ) ?? 0\n dimension.width = maxVal + options.margin.left + options.margin.right\n break\n }\n }\n\n const updateDimension = debounce(function updateDimension() {\n const { width, height } = dimension\n const { margin } = options\n const { top, right, bottom, left } = margin\n\n dimension.innerWidth = width - left - right\n dimension.innerHeight = height - top - bottom\n\n chartRoot.style(\"width\", `${width}px`).style(\"height\", `${height}px`)\n svg.attr(\"width\", width).attr(\"height\", height)\n rootG.attr(\"transform\", `translate(${left}, ${top})`)\n\n render()\n }, 1)\n\n function updateLabelText(\n selection:\n | Selection<SVGTextElement, any, SVGGElement, unknown>\n | Transition<BaseType, any, SVGGElement, unknown>,\n accessor: (\n node: labella.Node<HistoryEventData>\n ) => HistoryEventData | HistoryEventData\n ) {\n const accessorFn =\n typeof accessor === \"function\" ? accessor : () => accessor\n selection\n .attr(\"dy\", options.textYOffset)\n .attr(\"x\", options.labelPadding.left)\n .attr(\"y\", options.labelPadding.top)\n .style(\"fill\", options.textStyle.fill)\n .text((d) => options.textFn(accessorFn(d)))\n }\n\n function drawAxes() {\n let axis\n switch (options.direction) {\n case \"vertical\":\n axis = axisLeft<Date>(scale)\n mainLayer.attr(\"transform\", \"translate(\" + 0 + \",\" + 0 + \")\")\n break\n case \"horizontal\":\n axis = axisBottom<Date>(scale)\n mainLayer.attr(\n \"transform\",\n \"translate(\" + 0 + \",\" + dimension.innerHeight + \")\"\n )\n break\n }\n\n options.formatAxis?.(axis)\n axisLayer.call(axis).attr(\"font-family\", null).attr(\"font-size\", null)\n }\n\n function drawDots(data: HistoryEventData[]) {\n const field = options.direction === \"vertical\" ? \"cy\" : \"cx\"\n const timePos = (d: HistoryEventData) => scale(options.timeFn(d))\n\n const sUpdate = dotLayer.selectAll(\"circle.dot\").data(data)\n sUpdate\n .enter()\n .append(\"circle\")\n .classed(\"dot\", true)\n .style(\"fill\", options.dotColor)\n .attr(\"r\", options.dotRadius)\n .attr(field, timePos)\n sUpdate\n .transition()\n .style(\"fill\", options.dotColor)\n .attr(\"r\", options.dotRadius)\n .attr(field, timePos)\n sUpdate.exit().remove()\n }\n\n function drawLabels(nodes: labella.Node<HistoryEventData>[]) {\n let nodeHeight\n if (options.direction === \"vertical\") {\n nodeHeight = max<labella.Node<HistoryEventData>, number>(\n nodes,\n (d) => d.w\n )\n } else {\n nodeHeight = max<labella.Node<HistoryEventData>, number>(\n nodes,\n (d) => d.h\n )\n }\n\n const renderer = new labella.Renderer({\n nodeHeight: nodeHeight ?? 0,\n layerGap: options.layerGap,\n direction: options.direction === \"horizontal\" ? \"up\" : \"right\",\n })\n\n renderer.layout(nodes)\n\n function nodePos(d: labella.Node<HistoryEventData>): string | null {\n if (isNaN(d.x) || isNaN(d.y)) {\n return null\n }\n switch (options.direction) {\n case \"vertical\":\n return \"translate(\" + d.x + \",\" + (d.y - d.dy / 2) + \")\"\n case \"horizontal\":\n return \"translate(\" + (d.x - d.dx / 2) + \",\" + d.y + \")\"\n }\n }\n\n const selection = labelLayer\n .selectAll<SVGGElement, labella.Node<HistoryEventData>>(\"g.label-g\")\n .data(nodes)\n const sEnter = selection\n .enter()\n .append(\"g\")\n .classed(\"label-g\", true)\n .attr(\"transform\", nodePos)\n\n sEnter\n .append(\"rect\")\n .classed(\"label-bg\", true)\n .attr(\"rx\", 2)\n .attr(\"ry\", 2)\n .attr(\"width\", (d) => d.w)\n .attr(\"height\", (d) => d.h)\n .style(\"fill\", (d) => options.labelBgColor(d.data))\n sEnter\n .append(\"text\")\n .classed(\"label-text\", true)\n .call(updateLabelText, (d: labella.Node<HistoryEventData>) => d.data)\n\n const sTrans = selection.transition().attr(\"transform\", nodePos)\n\n sTrans\n .select(\"rect\")\n .attr(\"width\", (d) => d.w)\n .attr(\"height\", (d) => d.h)\n .style(\"fill\", (d) => options.labelBgColor(d.data))\n sTrans\n .select(\"text.label-text\")\n .call(updateLabelText, (d: labella.Node<HistoryEventData>) => d.data)\n\n selection.exit().remove()\n\n const paths = linkLayer.selectAll(\"path.link\").data(nodes)\n paths\n .enter()\n .append(\"path\")\n .classed(\"link\", true)\n .attr(\"d\", (d) => renderer.generatePath(d))\n .style(\"stroke\", (d) => options.linkColor(d.data))\n .style(\"fill\", \"none\")\n paths\n .transition()\n .attr(\"d\", (d) => renderer.generatePath(d))\n .style(\"stroke\", (d) => options.linkColor(d.data))\n paths.exit().remove()\n }\n\n let initialRender = true\n function render() {\n if (\n !historyData ||\n (dimension.innerWidth <= 0 && dimension.innerHeight <= 0)\n )\n return\n\n const data = historyData || []\n force = new labella.Force()\n\n scale.domain(options.domain)\n scale.range([\n 0,\n options.direction === \"vertical\"\n ? dimension.innerHeight\n : dimension.innerWidth,\n ])\n\n const dummyText = dummyLayer.append(\"text\").classed(\"label-text\", true)\n const nodes = data.map((d: HistoryEventData) => {\n const bbox = dummyText.call(updateLabelText, d).node()!.getBBox()\n const w =\n bbox.width + options.labelPadding.left + options.labelPadding.right\n const h =\n bbox.height + options.labelPadding.top + options.labelPadding.bottom\n const node = new labella.Node(\n scale(options.timeFn(d)),\n options.direction === \"vertical\" ? h : w,\n d\n )\n node.w = w\n node.h = h\n return node\n })\n dummyText.remove()\n\n const { left, right } = options.margin\n force\n .options({ maxPos: dimension.width - (left + right) })\n .nodes(nodes)\n .compute()\n\n drawAxes()\n drawDots(data)\n drawLabels(force.nodes())\n\n if (initialRender) {\n initialRender = false\n onInitialRender()\n }\n onRender()\n }\n\n function onInitialRender() {\n // Customize history after initial render\n svg.insert(\"title\", \":first-child\").text(data.title)\n\n // Wrap labels in link tag\n labelLayer\n .selectAll<SVGGElement, labella.Node<HistoryEventData>>(\"g.label-g\")\n .each(function () {\n const node = select<SVGGElement, labella.Node<HistoryEventData>>(this)\n const children = node.selectAll(\"g.label-g > *\").remove()\n\n const anchor = node\n .append(\"svg:a\")\n .attr(\"class\", (d) => d.data.class)\n .attr(\"xlink:href\", (d) => d.data.href)\n .attr(\"xlink:title\", (d) => d.data.desc ?? null)\n anchor.append(\"title\").text((d) => d.data.desc ?? null)\n\n children.each(function (this) {\n anchor.append(() => this)\n })\n })\n\n // Attach hover and click events\n const publicationClickHandler = widget.handlerValue(\"publicationClick\")\n const hasClickHandler = !!publicationClickHandler\n labelLayer\n .selectAll<SVGGElement, labella.Node<HistoryEventData>>(\".label-g\")\n .attr(\"data-clickable\", () => hasClickHandler || null)\n .on(\"click\", function (event: Event, node) {\n if (publicationClickHandler) {\n publicationClickHandler(node.data.query)\n event.preventDefault()\n }\n })\n .on(\"mouseenter touchstart\", function (event, node) {\n if (!event.target) {\n return\n }\n\n const coloring = getEventColors(node.data)\n // highlight label\n select(event.target).select(\"rect\").style(\"fill\", coloring.bright)\n\n // highlight link and dot\n const id = node.data.id\n container\n .selectAll<Element, labella.Node<HistoryEventData>>(\n \".link-layer path\"\n )\n .filter((node) => node.data.id === id)\n .attr(\"data-highlighted\", true)\n\n // highlight publications in pub table\n const publicationId = node.data.query && node.data.query.id\n if (publicationId) {\n selectAll(\"[data-publication-id='\" + publicationId + \"']\").style(\n \"background-color\",\n coloring.light\n )\n }\n })\n .on(\"mouseleave touchend\", function (event, node) {\n if (!event.target) {\n return\n }\n\n const coloring = getEventColors(node.data)\n // unhighlight label\n select(event.target).select(\"rect\").style(\"fill\", coloring.standard)\n\n // unhighlight link\n container.selectAll(\".link-layer path\").attr(\"data-highlighted\", false)\n\n // unhighlight publication in pub table\n const publicationId = node.data.query && node.data.query.id\n if (publicationId) {\n selectAll(\"[data-publication-id='\" + publicationId + \"']\").style(\n \"background-color\",\n null\n )\n }\n })\n }\n\n function onRender() {\n // Keep tick labels readable by alternating the length of the ticks\n // once the available space per tick falls below a threshold of 32px\n const ticks = axisLayer.selectAll(\"g.tick\")\n const widthPerTick = dimension.width / ticks.size()\n if (widthPerTick <= 32) {\n ticks.each(function (_datum: unknown, i: number) {\n if (i % 2 !== 0) {\n return\n }\n\n const tick = select(this)\n const textNode = tick.select(\"text\")\n const lineNode = tick.select(\"line\")\n textNode.attr(\n \"y\",\n Number(textNode.attr(\"y\")) + options.alternatingTickLength\n )\n lineNode.attr(\n \"y2\",\n Number(lineNode.attr(\"y2\")) + options.alternatingTickLength\n )\n })\n }\n }\n\n return {\n draw: function redraw() {\n // Container may have changed dimensions\n fitToContainer()\n // Automatically update size according to label positions\n resizeToFitNodes()\n // Force another rerender\n updateDimension()\n updateDimension.flush()\n },\n }\n}\n","import { Renderer, Rendition, alreadyDrawn } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { Data } from \"../base\"\n\nexport const overview: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (data) {\n const handler = widget.handlerValue(\"load\")\n if (handler) {\n handler(data)\n }\n }\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\n\nimport { Data } from \"../base\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { NorthData } from \"../../viz-base\"\n\nexport const personTable: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const toDate = (value: string) => (value ? new Date(value) : null)\n const formatDate = (value: string) => toDate(value)?.toLocaleDateString()\n\n const table = select(widget.container)\n .append(\"table\")\n .attr(\n \"class\",\n \"ui bizq very compact celled small unstackable striped table\"\n )\n const tbody = table.append(\"tbody\")\n\n NorthData.debug(\"data\", data)\n for (const section of [\"current\", \"former\"]) {\n if (section == \"former\")\n tbody\n .append(\"tr\")\n .append(\"td\")\n .attr(\"class\", \"first\")\n .attr(\"colspan\", 2)\n .text(\"Vormals\")\n const groups = data[\"current\"]\n for (const group of groups) {\n NorthData.debug(\"group\", group)\n const name = group.name\n const entries = group.entries\n\n tbody\n .append(\"tr\")\n .append(\"td\")\n .attr(\"class\", \"first\")\n .attr(\"colspan\", 2)\n .text(name)\n\n for (const entry of entries) {\n NorthData.debug(\"entry\", entry)\n const tr = tbody.append(\"tr\")\n const person = entry.person\n const personCell = tr\n .append(\"td\")\n .append(\"span\")\n .text(person.name)\n .attr(\"class\", \"person\")\n for (const key in person.query) {\n personCell.attr(key, person.query[key])\n }\n const chunkCell = tr.append(\"td\")\n for (const chunk of entry.chunks) {\n let text: string | undefined = undefined\n if (!chunk.start && chunk.end) {\n text = \"bis \" + formatDate(chunk.end)\n } else if (chunk.start && !chunk.end) {\n text = \"seit \" + formatDate(chunk.start)\n } else if (chunk.start && chunk.end) {\n text = formatDate(chunk.start) + \" – \" + formatDate(chunk.end)\n }\n chunkCell.append(\"span\").text(text as string)\n }\n }\n }\n }\n\n widget.markup(table)\n\n return alreadyDrawn\n}\n","let buttons: NodeListOf<HTMLButtonElement>\nexport function setWaiting(value: boolean): void {\n if (value) {\n buttons = document.querySelectorAll<HTMLButtonElement>(\n \"button:not([disabled])\"\n )\n for (let i = 0; i < buttons.length; ++i) {\n buttons[i][\"disabled\"] = true\n }\n } else {\n if (buttons) {\n for (let i = 0; i < buttons.length; ++i) {\n buttons[i][\"disabled\"] = false\n }\n }\n }\n document.body.classList.toggle(\"waiting\", value)\n}\n","import { Data } from \"../base\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport * as Ui from \"../../util/ui\"\nimport * as Dom from \"../../util/dom\"\nimport { NorthData } from \"../../viz-base\"\n\nexport const pubShop: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const onClick = function () {\n Ui.setWaiting(true)\n const request = new XMLHttpRequest()\n request.open(\"POST\", \"/_api/shop/v1/products\")\n request.setRequestHeader(\"Content-Type\", \"application/json\")\n function onError(error: any) {\n NorthData.log(\"error\", \"cannot list pubs\", error)\n }\n request.onerror = function (error) {\n Ui.setWaiting(false)\n onError(error)\n }\n request.onload = function () {\n Ui.setWaiting(false)\n NorthData.debug(request.status)\n if (request.status >= 400) {\n onError(request.responseText || request.statusText)\n }\n NorthData.debug(\"ok\", request.responseText)\n const data = JSON.parse(request.responseText)\n NorthData.debug(\"data\", data)\n }\n request.send(JSON.stringify(widget.options))\n return false\n }\n\n Dom.onEvent(\"click\", widget.container, \"*\", onClick)\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\n\ninterface Publication {\n id: string\n internal: { icon: string; formattedDate: string; htmlTitle: string }\n html: string\n}\n\ninterface Data {\n publications: Publication[]\n}\n\nexport const pubTable: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const drawnPubs = select(widget.container)\n .selectAll(\".publication\")\n .data(data.publications as Publication[])\n .enter()\n .append(\"div\")\n .attr(\"class\", \"pub\")\n .attr(\"data-publication-id\", (pub) => pub[\"id\"])\n\n const header = drawnPubs.append(\"h2\")\n\n header\n .append(\"span\")\n .attr(\"class\", \"icon\")\n .text((pub) => pub.internal.icon)\n\n header\n .append(\"span\")\n .attr(\"class\", \"date\")\n .text((pub) => pub.internal.formattedDate)\n\n header\n .append(\"a\")\n .attr(\"href\", \"#\")\n .html((pub) => pub.internal.htmlTitle)\n .on(\"click\", function (event: Event) {\n const node = event.target as HTMLElement\n node?.parentElement?.parentElement?.classList?.toggle(\"expanded\")\n event.preventDefault()\n })\n\n drawnPubs\n .append(\"div\")\n .attr(\"class\", \"text\")\n .html((pub) => pub.html)\n\n widget.markup(drawnPubs)\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { trim, toQueryString } from \"../../util/string\"\nimport { Renderer, Rendition, alreadyDrawn } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { Data } from \"../base\"\nimport { mixin } from \"../../util/params\"\nimport { dataSource } from \"../datasource\"\n\n// Improve types when working on this!\n\nexport const searchResults: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n const root = select(widget.container)\n const searchResults = root.append(\"ul\").attr(\"class\", \"search-results\")\n const cursor = data.cursor\n function transformResult(item: any): any {\n const query: any = {}\n const subject = item.subject\n const name = subject.name[0].name\n const address = subject.address && subject.address[0]\n const city = address && address.city\n const result: any = {\n query,\n address,\n name,\n details: item.formattedDetails,\n }\n const tags = subject[\"tag\"]\n if (tags && tags[\"terminated\"]) {\n result[\"terminated\"] = true\n }\n switch (item.targetType) {\n case \"Company\":\n result[\"type\"] = \"c\"\n query[\"address\"] = city\n query[\"name\"] = name\n const register = subject.register && subject.register[0]\n if (register && register.id) {\n if (register.city) {\n query[\"registerCity\"] = register.city\n }\n query[\"registerId\"] = register.id\n }\n break\n case \"Person\":\n result[\"type\"] = \"p\"\n const nameParts = name.split(\",\")\n query[\"lastName\"] = nameParts[0]\n query[\"firstName\"] = trim(nameParts[1])\n query[\"birthDate\"] = subject.birthDate\n query[\"address\"] = city\n if (!query[\"address\"] || !query[\"birthDate\"]) {\n query[\"id\"] = item.targetId\n }\n break\n }\n return result\n }\n\n const more = root.append(\"div\").attr(\"class\", \"more\")\n const resultMessageNode = more.append(\"p\")\n const moreLink = more\n .append(\"a\")\n .attr(\"href\", \"#\")\n .on(\"click\", function (event: Event) {\n const newOptions = mixin(widget.options, {\n offset: moreLink.attr(\"data-offset\"),\n position: moreLink.attr(\"data-position\"),\n })\n dataSource.requestData(\n newOptions,\n function (data) {\n drawResultItems(data)\n },\n widget.fail.bind(widget)\n )\n\n event.preventDefault()\n })\n\n const noResults = cursor.items.length == 0\n const onNoResults = widget.handlerValue(\"noResults\")\n const onOneResult = widget.handlerValue(\"oneResult\")\n if (noResults) {\n if (onNoResults) {\n onNoResults()\n } else {\n root.append(\"p\").text(\"Keine Resultate zu dieser Suche.\")\n }\n } else if (cursor.items.length == 1 && onOneResult) {\n onOneResult(transformResult(cursor.items[0]))\n } else {\n drawResultItems(data)\n }\n\n function drawResultItems(data: any) {\n const cursor = data.cursor\n for (const _item of cursor.items) {\n const item = transformResult(_item)\n const query = item[\"query\"]\n const city = query[\"address\"]\n let linkText = query[\"name\"]\n if (!linkText) {\n linkText = query[\"lastName\"] + \", \" + query[\"firstName\"]\n }\n if (city) {\n linkText += \", \" + city\n }\n const searchResult = searchResults\n .append(\"li\")\n .attr(\"class\", \"search-result\")\n searchResult\n .append(\"span\")\n .attr(\"class\", \"icon\")\n .text(_item.targetType == \"Company\" ? \"\\uf1ad\" : \"\\uf007\")\n const searchResultBody = searchResult.append(\"div\").attr(\"class\", \"body\")\n const link = searchResultBody\n .append(\"a\")\n .attr(\"href\", document.location.pathname + \"?\" + toQueryString(query))\n .text(linkText)\n .on(\"click\", function (event: Event) {\n if (widget.invokeClickHandler(data)) {\n event.preventDefault()\n }\n })\n if (item[\"terminated\"]) {\n const terminationSymbol = \"✝\\uFE0E\"\n link.append(\"sup\").attr(\"title\", \"erloschen\").text(terminationSymbol)\n }\n searchResultBody\n .append(\"div\")\n .attr(\"class\", \"detail\")\n .text(item[\"detail\"])\n for (let formattedDetail of _item[\"formattedDetails\"]) {\n searchResultBody\n .append(\"div\")\n .attr(\"class\", \"detail\")\n .text(formattedDetail)\n }\n }\n more.attr(\"data-total\", cursor.total)\n\n let resultMessage = Number(\n cursor.offset + cursor.items.length\n ).toLocaleString()\n if (cursor.total) {\n resultMessage +=\n \" Resultate von \" +\n Number(cursor.total).toLocaleString() +\n \" insgesamt.\"\n } else {\n resultMessage += \" Resultate.\"\n }\n resultMessageNode.text(resultMessage)\n\n moreLink\n .text(cursor.lastPage ? \"\" : \"Weitere Resultate anzeigen\")\n .attr(\"data-offset\", cursor.offset + cursor.limit)\n .attr(\"data-position\", data.properties.nextPosition)\n }\n return alreadyDrawn\n}\n","import { select, Selection } from \"d3-selection\"\nimport { closest } from \"../../util/dom\"\nimport { alreadyDrawn, Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { trilingual } from \"../i18n\"\n\ntype HTMLSelection = Selection<HTMLElement, unknown, null, undefined>\ntype AnySelection = Selection<any, unknown, any, unknown>\n\ninterface Cell {\n value?: number\n}\n\ninterface Row {\n semantics: string[]\n cell: Cell[]\n level: { value: number }\n info: { childCount: number; id: number; parentId?: number }\n text: string\n name: string\n}\n\ninterface Currency {\n factor: number\n unit: string\n}\n\ninterface Column {\n currency: Currency\n date: string\n info: {\n noteHtml: string\n publication: {\n title: string\n date: string\n id: number\n }\n source: string | string[]\n }\n}\n\ninterface Sheet {\n column: Column[]\n row: Row[]\n info: {\n csvUrl: string\n item: string\n }\n}\n\ninterface Data {\n sheet: Sheet[]\n}\n\n// https://stackoverflow.com/questions/18082/validate-decimal-numbers-in-javascript-isnumeric\nfunction isNumeric(n: any) {\n return !isNaN(parseFloat(n)) && isFinite(n)\n}\n\nexport const sheet: Renderer = function (\n widget: Widget,\n data: Data\n): Rendition {\n if (!data.sheet) {\n throw new Error(\"no data\")\n }\n for (const sheet of data.sheet) {\n if (!sheet) {\n const subject = widget.stringValue(\"subject\") || \"assets\" // ???\n throw new Error(\"no data for subject '\" + subject + \"'\")\n }\n\n const columns = sheet.column\n const rows = sheet.row\n\n const reverse = widget.isReverseChronology()\n const maxYears = widget.numberValue(\"maxYears\") || 5\n if (reverse) {\n columns.reverse()\n }\n const shallShowColumn = function (iCol: number) {\n return reverse ? iCol < maxYears : iCol >= columns.length - maxYears\n }\n\n if (columns.length <= 0) {\n break\n }\n const currency = columns[0].currency\n let factor = 1\n let unit = currency.unit\n let formatter = widget.i18n().numberFormatter\n\n if (currency) {\n let veryBigCellCount = 0\n let bigCellCount = 0\n let mediumCellCount = 0\n\n for (let row of rows) {\n for (let selection of row.cell) {\n if (isNumeric(selection.value)) {\n const value = Math.abs(selection.value as number)\n if (value > 1e5) {\n ++mediumCellCount\n if (value > 1e7) {\n ++bigCellCount\n if (value > 1e10) {\n ++veryBigCellCount\n }\n }\n }\n }\n }\n }\n\n const qualifyingCellCount = 5\n const veryBigCells = veryBigCellCount >= qualifyingCellCount\n const bigCells = bigCellCount >= qualifyingCellCount\n const smallCells = mediumCellCount < qualifyingCellCount\n\n if (smallCells) {\n formatter = widget.i18n().decimalFormatter\n }\n\n if (bigCells) {\n if (unit == \"EUR\") {\n unit = \"€\"\n }\n if (unit == \"USD\") {\n unit = \"$\"\n }\n if (unit == \"GBP\") {\n unit = \"£\"\n }\n const prefix = trilingual(\"K\", \"Tsd. \", \"K\")\n factor = 1e3\n if (veryBigCells) {\n factor = 1e6\n const prefix = trilingual(\"M\", \"Mio. \", \"M\")\n }\n if (prefix.length == 1 && unit.length == 1) {\n unit = \" \" + unit\n }\n unit = prefix + unit\n }\n }\n\n const itemNode = document.createElement(\"table\")\n const table = select(itemNode).attr(\n \"class\",\n \"ui bizq very compact celled small unstackable selectable first stuck table\"\n )\n const theadRow = table.append(\"thead\").append(\"tr\")\n const theadLeft = theadRow.append(\"th\").attr(\"class\", \"first\")\n\n theadLeft.text(unit)\n theadLeft\n .append(\"a\")\n .attr(\"href\", sheet.info.csvUrl)\n .attr(\"download\", \"download\")\n .attr(\"title\", \"CSV/Excel Download\")\n .classed(\"screen-only\", true)\n .append(\"i\")\n .attr(\"class\", \"download icon\")\n\n columns.forEach((col, iCol) => {\n if (shallShowColumn(iCol)) {\n theadRow\n .append(\"th\")\n .text(col.date ? widget.i18n().dateFormatter(col.date) : \"\")\n .attr(\"data-col\", columns.length - iCol)\n .attr(\"data-source-title\", col.info.publication.title)\n .attr(\"data-source-date\", col.info.publication.date)\n }\n })\n\n const hasSemantics = (row: Row, semantic: string) =>\n row && row.semantics && row.semantics.indexOf(semantic) >= 0\n const isSummary = (row: Row) => hasSemantics(row, \"SUMMARY\")\n const isCustom = (row: Row) => hasSemantics(row, \"CUSTOM\")\n\n const tbody = table.append(\"tbody\")\n\n rows.forEach((row) => {\n if (!hasSemantics(row, \"HELPER\")) {\n let nonEmptyCells = 0\n\n const maxLevelVisible = widget.isPrint() ? 2 : 1\n const level = row.level && row.level.value\n let clazz = level < maxLevelVisible ? \"expanded\" : \"closed\"\n if (level > maxLevelVisible) {\n clazz += \" hidden\"\n }\n\n const tr = select(document.createElement(\"tr\"))\n .attr(\"class\", clazz + \" active-on-hover\")\n .attr(\"data-row\", row.info && row.info.id)\n .attr(\"data-level\", level)\n .attr(\"data-parent-row\", row.info ? row.info.parentId : (null as any))\n .attr(\"data-child-count\", () =>\n row.info &&\n typeof row.info.childCount == \"number\" &&\n row.info.childCount > 0\n ? row.info.childCount\n : null\n )\n .attr(\"data-summary\", isSummary(row))\n .attr(\"data-custom\", isCustom(row))\n .on(\"click\", function (event: Event) {\n const node = event && (event.target as HTMLElement)\n toggleChildren(node)\n event.preventDefault()\n })\n\n tr.append(\"td\")\n .attr(\"class\", \"first\")\n .text(row.text ?? row.name)\n\n if (reverse) {\n row.cell.reverse()\n }\n\n row.cell.forEach((cell, iCol: number) => {\n if (shallShowColumn(iCol)) {\n const text =\n typeof cell.value === \"undefined\"\n ? \"\"\n : formatter(cell.value / factor)\n if (text) {\n nonEmptyCells++\n }\n tr.append(\"td\")\n .attr(\"data-col\", columns.length - iCol)\n .text(text)\n }\n })\n\n if (nonEmptyCells > 0) {\n tbody.node()!.appendChild(tr.node()!)\n } else if (row.info?.parentId) {\n tbody\n .select(`tr[data-row=\"${row.info.parentId}\"][data-child-count]`)\n .attr(\"data-child-count\", function () {\n const newChildCount =\n parseInt(select(this).attr(\"data-child-count\")) - 1\n return newChildCount > 0 ? newChildCount : null\n })\n }\n }\n })\n\n const tfootRow = table.append(\"tfoot\").append(\"tr\")\n\n tfootRow\n .append(\"th\")\n .attr(\"class\", \"first\")\n .text(widget.trilingual(\"Source\", \"Quelle\", \"Source\"))\n\n const clickHandler = widget.handlerValue(\"sourceClick\")\n columns.forEach((col, iCol) => {\n if (shallShowColumn(iCol)) {\n const th = tfootRow.append(\"th\").attr(\"data-col\", columns.length - iCol)\n th.html(col.info.noteHtml)\n\n if (clickHandler) {\n const publication = col.info.publication\n const source =\n typeof col.info.source === \"string\"\n ? [col.info.source]\n : col.info.source\n\n th.selectAll(\"a\")\n .attr(\"href\", \"javascript:void(0);\")\n .on(\"click\", function (event: Event) {\n event.preventDefault()\n clickHandler({ publication, source })\n })\n }\n }\n })\n\n itemNode.setAttribute(\"data-item\", sheet.info.item)\n widget.showItem(undefined, itemNode)\n }\n\n // mouse interactions\n const expanded = \"expanded\"\n const closed = \"closed\"\n function rowOf(node: HTMLElement): HTMLSelection {\n const d3node = select(node)\n return node.matches(\"tr\") ? d3node : closest(d3node, \"tr\")\n }\n function children(row: HTMLSelection): AnySelection {\n let id = row.size() == 0 ? \"?\" : row.attr(\"data-row\")\n return closest(row, \"table\").selectAll(\"[data-parent-row='\" + id + \"']\")\n }\n function showChildren(node: HTMLElement) {\n const row = rowOf(node)\n row.classed(closed, false).classed(expanded, true)\n children(row).classed(\"hidden\", false)\n }\n function hideChildren(node: HTMLElement) {\n const row = rowOf(node)\n row.classed(closed, true).classed(expanded, false)\n children(row)\n .classed(\"hidden\", true)\n .each(function () {\n hideChildren(this)\n })\n }\n function toggleChildren(node: HTMLElement) {\n const row = rowOf(node)\n if (row.classed(expanded)) {\n hideChildren(node)\n } else {\n showChildren(node)\n }\n }\n\n return alreadyDrawn\n}\n","import { select } from \"d3-selection\"\nimport { scaleTime } from \"d3-scale\"\nimport { axisBottom } from \"d3-axis\"\n\nimport { Renderer, Rendition } from \"../renderer\"\nimport { Widget } from \"../widget\"\nimport { trilingual } from \"../i18n\"\n\ninterface Bar {\n start?: string\n assumedStart: string\n end?: string\n openEnded: boolean\n role: {\n name: string\n abbr: string\n cat: number\n }\n title: string\n query: object\n url?: string\n type: string\n}\n\ninterface Line {\n text: string\n description: string\n bars: Bar[]\n}\n\ninterface Data {\n lines: Line[]\n startDate: string\n endDate: string\n}\n\nexport const vita: Renderer = function (widget: Widget, data: Data): Rendition {\n const container = widget.container\n const tickFormat = widget.i18n().timeScaleFormatter\n const margin = { chartLeft: 12, right: 15, top: 0, bottom: 0 }\n\n const lineHeight = 18\n const itemMargin = 5\n const outerTextMargin = 2\n const barGap = 0.5\n const maxTriangleWidth = lineHeight * 0.71\n const lines = data.lines\n\n if (!lines || !lines.length) {\n throw new Error(\"vita empty\")\n }\n\n const nLines = lines.length\n const height = margin.top + (lineHeight + itemMargin) * nLines + itemMargin\n\n const beginning = new Date(data.startDate).getTime()\n const ending = new Date(data.endDate).getTime()\n\n const toDate = (value: string | undefined) => (value ? new Date(value) : null)\n const svg = select(widget.container).append(\"svg\")\n svg.append(\"title\").text(trilingual(\"History\", \"Historie\", \"Historique\"))\n const linkifier = widget.getLinkifier()\n const formatDate = (date: Date | null) =>\n date ? date.toLocaleDateString() : \"\"\n\n const draw = function () {\n svg.select(\"g\").remove()\n const canvas = svg.append(\"g\")\n const width = container.getBoundingClientRect().width\n svg.attr(\"width\", width)\n\n const determineTextWidths = function () {\n const texts = []\n for (const line of lines) {\n for (const bar of line.bars) {\n texts.push(bar.role.abbr)\n texts.push(bar.role.abbr + \" \" + line.text)\n }\n }\n\n const textsWidth: Record<string, number> = {}\n canvas\n .selectAll(\".textWidthDummy\")\n .data(texts)\n .enter()\n .append(\"text\")\n .text(function (d) {\n return d\n })\n .each(function (d) {\n textsWidth[d] = (this as SVGTextElement).getComputedTextLength()\n this.remove()\n })\n return textsWidth\n }\n\n const textsWidths = determineTextWidths()\n const getLabel = function (\n text: string,\n optionalSuffix: string | undefined,\n barWidth: number\n ): { text: string; width: number; containsSuffix?: boolean } {\n if (optionalSuffix) {\n const compoundText = text + \" \" + optionalSuffix\n const textWidth = textsWidths[compoundText]\n // Require small additional padding for compound labels\n const availableWidth = barWidth - 8\n if (textWidth !== undefined && availableWidth > textWidth) {\n return { text: compoundText, width: textWidth, containsSuffix: true }\n }\n }\n\n const textWidth = textsWidths[text]\n if (textWidth !== undefined && barWidth > textWidth) {\n return { text: text, width: textWidth }\n }\n return { text: \"…\", width: 0 }\n }\n\n const shouldUseNiceScale = function () {\n if (width >= 600) {\n return true\n }\n\n const paddingMilliseconds = 30 * 86400 * 1000 // 30 days\n for (const line of lines) {\n for (const bar of line.bars) {\n const startTime = toDate(bar.assumedStart)\n const endTime = toDate(bar.end) || new Date()\n if (!startTime) {\n // If start time or end time is missing the bar will\n // latch to the start of the diagram\n return true\n }\n\n // If one of the bars starts or ends close to the edge\n if (\n Math.abs(startTime.getTime() - beginning) < paddingMilliseconds ||\n Math.abs(ending - endTime.getTime()) < paddingMilliseconds\n ) {\n return true\n }\n }\n }\n return false\n }\n\n let xScale = scaleTime()\n .domain([beginning, ending])\n .range([margin.chartLeft, width - margin.right])\n if (shouldUseNiceScale()) {\n xScale = xScale.nice()\n }\n\n const xAxis = axisBottom<Date>(xScale)\n .tickFormat(tickFormat)\n .tickSizeInner(8)\n .tickSizeOuter(10)\n // min 100px distance and ~10 ticks (plus outer ticks and ticks added by nice())\n .ticks(Math.min(width / 100, 10))\n\n // small ticks\n canvas\n .append(\"g\")\n .attr(\"class\", \"axis\")\n .attr(\"transform\", \"translate(\" + 0 + \",\" + height + \")\")\n .call(xAxis)\n .attr(\"font-size\", null)\n .attr(\"font-family\", null)\n\n // vertical grid lines\n canvas\n .append(\"g\")\n .attr(\"class\", \"axis grid\")\n .attr(\"transform\", \"translate(\" + 0 + \",\" + height + \")\")\n .call(xAxis.tickSizeInner(-height).tickSizeOuter(0))\n .call((g) => g.selectAll(\".tick text\").remove())\n\n const chartLeft = margin.chartLeft\n const chartRight = width - margin.right\n\n // draw the chart\n let iLine = 0\n for (const line of lines) {\n const lineTop =\n margin.top + (lineHeight + itemMargin) * iLine + itemMargin\n const lineBottom = lineTop + lineHeight\n const lineYTextBase = lineTop + lineHeight * 0.75 - 1\n const lineYCenter = (lineTop + lineBottom) / 2\n\n canvas\n .append(\"line\")\n .attr(\"x1\", chartLeft)\n .attr(\"x2\", chartRight)\n .attr(\"y1\", lineYCenter)\n .attr(\"y2\", lineYCenter)\n .attr(\"class\", \"grid\")\n\n const nBars = line.bars.length\n let iBar = 0\n let companyNameShown = false\n let freeSpaceLeft = 0\n let freeSpaceRight = 0\n for (const bar of line.bars) {\n const startTime = toDate(bar.assumedStart)\n const endTime = toDate(bar.end) || new Date()\n let barLeft = startTime\n ? (xScale(startTime) as number)\n : margin.chartLeft + maxTriangleWidth\n const openStarted = !bar.start\n if (openStarted) {\n barLeft += maxTriangleWidth\n } else {\n barLeft += barGap\n }\n let barRight = xScale(endTime) as number\n if (bar.openEnded && bar.end) {\n barRight -= maxTriangleWidth\n } else {\n barRight -= barGap\n }\n barRight = Math.max(barLeft, barRight)\n\n const barWidth = barRight - barLeft\n let textX = barLeft + barWidth / 2\n // Use space provided by open ended bars to make short bars more legible\n if (barWidth < 10) {\n if (openStarted && !bar.openEnded) {\n textX -= 3\n } else if (bar.openEnded && !openStarted) {\n textX += 3\n }\n }\n\n /*\n let timeInfo: string | null = null\n if (!bar.start && bar.end) {\n timeInfo = \"bis \" + formatDate(endTime)\n } else if (bar.start && !bar.end) {\n timeInfo = \"ab \" + formatDate(startTime)\n } else if (bar.start && bar.end) {\n timeInfo = formatDate(startTime) + \" – \" + formatDate(endTime)\n }\n const title =\n (timeInfo ? timeInfo + \" \" : \"\") +\n bar.role.name +\n \" \" +\n line.description\n */\n\n const label = getLabel(\n bar.role.abbr,\n !companyNameShown ? line.text : undefined,\n barWidth\n )\n // where do we put the company name?\n if (label.containsSuffix) {\n companyNameShown = true\n }\n\n if (iBar == 0) {\n const barOuterLeft = openStarted\n ? barLeft - maxTriangleWidth\n : barLeft\n const barOrTextLeft = label.width\n ? Math.min(textX - label.width / 2, barOuterLeft)\n : barOuterLeft\n freeSpaceLeft = barOrTextLeft - chartLeft - outerTextMargin\n }\n if (iBar == nBars - 1) {\n const barOuterRight = bar.openEnded\n ? barRight + maxTriangleWidth\n : barRight\n const barOrTextLeft = label.width\n ? Math.max(textX + label.width / 2, barOuterRight)\n : barOuterRight\n freeSpaceRight = chartRight - barOrTextLeft - outerTextMargin\n }\n\n const link = canvas\n .append(\"svg:a\")\n // .attr(\"xlink:href\", linkifier(bar))\n .attr(\"xlink:href\", bar.url || \"\")\n .attr(\"xlink:title\", bar.title)\n .attr(\"data-old\", bar.end ? true : (null as any))\n .attr(\"data-clickable\", () =>\n widget.getClickHandler(\"p\") ? true : (null as any)\n )\n .on(\"click\", function (event) {\n if (widget.invokeClickHandler(bar)) {\n event.preventDefault()\n }\n })\n link.append(\"title\").text(bar.title)\n\n if (openStarted) {\n const triangleLeft = barLeft - maxTriangleWidth\n const triangleRight = barLeft\n const triangleTop = lineTop\n const triangleBottom = lineTop + lineHeight\n const points = [\n triangleRight + \",\" + triangleTop,\n triangleRight + \",\" + triangleBottom,\n triangleLeft + \",\" + (triangleTop + triangleBottom) / 2,\n ]\n link\n .append(\"polygon\")\n .attr(\"points\", points.join(\" \"))\n .attr(\"class\", \"in c\" + bar.role.cat)\n }\n\n if (bar.openEnded) {\n const triangleLeft = barRight\n const triangleRight = Math.min(\n maxTriangleWidth + triangleLeft,\n chartRight\n )\n const triangleTop = lineTop\n const triangleBottom = lineTop + lineHeight\n const points = [\n triangleLeft + \",\" + triangleTop,\n triangleLeft + \",\" + triangleBottom,\n triangleRight + \",\" + (triangleTop + triangleBottom) / 2,\n ]\n link\n .append(\"polygon\")\n .attr(\"points\", points.join(\" \"))\n .attr(\"class\", \"out c\" + bar.role.cat)\n }\n\n link\n .append(\"rect\")\n .attr(\"x\", barLeft)\n .attr(\"y\", lineTop)\n .attr(\"width\", barWidth)\n .attr(\"height\", lineHeight)\n .attr(\"class\", \"c\" + bar.role.cat)\n\n link\n .append(\"text\")\n .attr(\"x\", textX)\n .attr(\"y\", lineYTextBase)\n .attr(\"class\", \"label-text c\" + bar.role.cat)\n .text(label.text)\n\n ++iBar\n } // inner for\n\n if (!companyNameShown) {\n // look for free space to show name\n if (freeSpaceLeft > freeSpaceRight) {\n if (freeSpaceLeft > 200) {\n // show on the left\n canvas\n .append(\"text\")\n .attr(\"x\", chartLeft + freeSpaceLeft)\n .attr(\"y\", lineYTextBase)\n .attr(\"class\", \"left extra\")\n .text(line.text)\n }\n } else {\n if (freeSpaceRight > 200) {\n // show on the right\n canvas\n .append(\"text\")\n .attr(\"x\", chartRight - freeSpaceRight)\n .attr(\"y\", lineYTextBase)\n .attr(\"class\", \"right extra\")\n .text(line.text)\n }\n }\n }\n\n // ffd END\n ++iLine\n } // outer for\n\n const today = new Date()\n const todayTitle = \"Heute, \" + formatDate(today)\n const xToday = xScale(today) as number\n const todayParent = canvas.append(\"svg:a\").attr(\"xlink:title\", todayTitle)\n todayParent.append(\"title\").text(todayTitle)\n todayParent\n .append(\"line\")\n .attr(\"class\", \"today\")\n .attr(\"x1\", xToday)\n .attr(\"y1\", 0)\n .attr(\"x2\", xToday)\n .attr(\"y2\", height + 15)\n\n svg.attr(\"height\", height + 30)\n }\n\n return { draw }\n}\n","import { VERSION } from \"./env\"\nimport { registerRenderers } from \"./viz/renderer\"\nimport { Widget as WidgetClass } from \"./viz/widget\"\nimport { barChart } from \"./viz/widgets/barchart\"\nimport { contact } from \"./viz/widgets/contacts\"\nimport { dendrogram } from \"./viz/widgets/dendrogram\"\nimport { drillDown } from \"./viz/widgets/drilldown\"\nimport { financials } from \"./viz/widgets/financials\"\nimport { graph } from \"./viz/widgets/graph\"\nimport { history } from \"./viz/widgets/history\"\nimport { overview } from \"./viz/widgets/overview\"\nimport { personTable } from \"./viz/widgets/persontable\"\nimport { pubShop } from \"./viz/widgets/pubshop\"\nimport { pubTable } from \"./viz/widgets/pubtable\"\nimport { searchResults } from \"./viz/widgets/searchresults\"\nimport { sheet } from \"./viz/widgets/sheet\"\nimport { vita } from \"./viz/widgets/vita\"\n\nexport type ConfigOptions =\n | {\n /** Domain to retrieve widget data */\n dataDomain?: string\n /** Automatically detect data domain from script tags\n * @deprecated */\n detectDataDomain?: boolean\n }\n | undefined\n\nexport namespace Bizq {\n export const Widget = WidgetClass\n export const version = VERSION\n\n export const options = {\n dataDomain: \"\",\n detectDataDomain: true,\n __debug: true,\n }\n\n export function initialize(opts?: ConfigOptions) {\n options.__debug = false\n if (opts === undefined) {\n // Set sensible defaults for api users\n options.dataDomain = \"https://www.northdata.de\"\n options.detectDataDomain = false\n } else {\n options.dataDomain = opts.dataDomain ?? options.dataDomain\n options.detectDataDomain =\n opts.detectDataDomain ?? options.detectDataDomain\n }\n }\n\n export function debug(...args: unknown[]) {\n log(\"info\", ...args)\n }\n export function log(type: \"error\" | \"info\", ...args: unknown[]) {\n if (options.__debug) {\n console[type](...args)\n }\n }\n\n registerRenderers({\n barChart,\n drillDown,\n graph,\n dendrogram,\n history,\n vita,\n pubTable,\n pubShop,\n personTable,\n sheet,\n financials,\n contact,\n overview,\n searchResults,\n })\n}\n\nexport const NorthData = Bizq\n","import { Bizq } from \"./viz-base\"\n\nexport const Widget = Bizq.Widget\nexport const initialize = Bizq.initialize\nexport const version = Bizq.version\n"],"names":[],"sourceRoot":""}