{"version":3,"sources":["../../../../src/integrations/functiontostring.ts","../../../../src/integrations/inboundfilters.ts","../../../../src/integrations/index.ts","../../../src/index.ts","../../../src/request.ts","../../../src/scope.ts","../../../../src/transports/noop.ts","../../../src/version.ts","../../../../src/transports/base.ts","../../../src/sdk.ts","../../../src/basebackend.ts","../../../src/integration.ts","../../../src/baseclient.ts","../../../src/session.ts","../../../src/flags.ts","../../../src/hub.ts","../../../src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA;AAEA,IAAI,wBAAJ;AAEA;;AACA;AAAA;AAAA;EAAA;IAME;;AAEG;IACI,YAAe,gBAAgB,CAAC,EAAhC;EAeR;EAbC;;AAEG;;;EACI,uCAAP;IACE;IACA,wBAAwB,GAAG,QAAQ,CAAC,SAAT,CAAmB,QAA9C,CAFF,CAIE;;IACA,QAAQ,CAAC,SAAT,CAAmB,QAAnB,GAA8B;MAAiC;;WAAA,U,EAAA,qB,EAAA,I,EAAc;QAAd;;;MAC7D,IAAM,OAAO,GAAG,6CAAmB,CAAC,IAAD,CAAnB,IAA6B,IAA7C;MACA,OAAO,wBAAwB,CAAC,KAAzB,CAA+B,OAA/B,EAAwC,IAAxC,CAAP;IACD,CAHD;EAID,CATM;EAbP;;AAEG;;;EACW,sBAAa,kBAAb;EAoBhB;AAAC,CAxBD;;;;;;;;;;;;;;;;;;;;ACLA;CAIA;AACA;;AACA,IAAM,qBAAqB,GAAG,CAAC,mBAAD,EAAsB,+CAAtB,CAA9B;AAeA;;AACA;AAAA;AAAA;EAWE,wBAAoC,QAApC,EAAiF;IAA7C;MAAA;IAA6C;;IAA7C;IALpC;;AAEG;;IACI,YAAe,cAAc,CAAC,EAA9B;EAE8E;EAErF;;AAEG;;;EACI,qCAAP,UAAiB,uBAAjB,EAA+E,aAA/E,EAAuG;IACrG,uBAAuB,CAAC,UAAC,KAAD,EAAa;MACnC,IAAM,GAAG,GAAG,aAAa,EAAzB;;MACA,IAAI,GAAJ,EAAS;QACP,IAAM,MAAI,GAAG,GAAG,CAAC,cAAJ,CAAmB,cAAnB,CAAb;;QACA,IAAI,MAAJ,EAAU;UACR,IAAM,MAAM,GAAG,GAAG,CAAC,SAAJ,EAAf;UACA,IAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC,UAAP,EAAH,GAAyB,EAArD;;UACA,IAAM,OAAO,GAAG,aAAa,CAAC,MAAI,CAAC,QAAN,EAAgB,aAAhB,CAA7B;;UACA,OAAO,gBAAgB,CAAC,KAAD,EAAQ,OAAR,CAAhB,GAAmC,IAAnC,GAA0C,KAAjD;QACD;MACF;;MACD,OAAO,KAAP;IACD,CAZsB,CAAvB;EAaD,CAdM;EAfP;;AAEG;;;EACW,oBAAa,gBAAb;EA2BhB;AAAC,CA/BD;;;AAiCA;;AACM,SAAU,aAAV,CACJ,eADI,EAEJ,aAFI,EAE8C;EADlD;IAAA;EAAoD;;EACpD;IAAA;EAAkD;;EAElD,OAAO;IACL,SAAS,wCAEH,eAAe,CAAC,aAAhB,IAAiC,EAF9B,EAGH,eAAe,CAAC,SAAhB,IAA6B,EAH1B,EAKH,aAAa,CAAC,aAAd,IAA+B,EAL5B,EAMH,aAAa,CAAC,SAAd,IAA2B,EANxB,CADJ;IASL,QAAQ,wCAEF,eAAe,CAAC,aAAhB,IAAiC,EAF/B,EAGF,eAAe,CAAC,QAAhB,IAA4B,EAH1B,EAKF,aAAa,CAAC,aAAd,IAA+B,EAL7B,EAMF,aAAa,CAAC,QAAd,IAA0B,EANxB,CATH;IAiBL,YAAY,wCACN,eAAe,CAAC,YAAhB,IAAgC,EAD1B,EAEN,aAAa,CAAC,YAAd,IAA8B,EAFxB,EAGP,qBAHO,CAjBP;IAsBL,cAAc,EAAE,eAAe,CAAC,cAAhB,KAAmC,SAAnC,GAA+C,eAAe,CAAC,cAA/D,GAAgF;EAtB3F,CAAP;AAwBD;AAED;;AACM,SAAU,gBAAV,CAA2B,KAA3B,EAAyC,OAAzC,EAAgF;EACpF,IAAI,OAAO,CAAC,cAAR,IAA0B,cAAc,CAAC,KAAD,CAA5C,EAAqD;IACnD,+BAAc,IACZ,wBAAM,CAAC,IAAP,CAAY,+DAA6D,2CAAmB,CAAC,KAAD,CAA5F,CADF;IAEA,OAAO,IAAP;EACD;;EACD,IAAI,eAAe,CAAC,KAAD,EAAQ,OAAO,CAAC,YAAhB,CAAnB,EAAkD;IAChD,+BAAc,IACZ,wBAAM,CAAC,IAAP,CACE,0EAA0E,2CAAmB,CAAC,KAAD,CAD/F,CADF;IAIA,OAAO,IAAP;EACD;;EACD,IAAI,YAAY,CAAC,KAAD,EAAQ,OAAO,CAAC,QAAhB,CAAhB,EAA2C;IACzC,+BAAc,IACZ,wBAAM,CAAC,IAAP,CACE,sEAAsE,2CAAmB,CACvF,KADuF,CAAzF,GAEC,UAFD,GAEY,kBAAkB,CAAC,KAAD,CAHhC,CADF;IAMA,OAAO,IAAP;EACD;;EACD,IAAI,CAAC,aAAa,CAAC,KAAD,EAAQ,OAAO,CAAC,SAAhB,CAAlB,EAA8C;IAC5C,+BAAc,IACZ,wBAAM,CAAC,IAAP,CACE,2EAA2E,2CAAmB,CAC5F,KAD4F,CAA9F,GAEC,UAFD,GAEY,kBAAkB,CAAC,KAAD,CAHhC,CADF;IAMA,OAAO,IAAP;EACD;;EACD,OAAO,KAAP;AACD;;AAED,SAAS,eAAT,CAAyB,KAAzB,EAAuC,YAAvC,EAA4E;EAC1E,IAAI,CAAC,YAAD,IAAiB,CAAC,YAAY,CAAC,MAAnC,EAA2C;IACzC,OAAO,KAAP;EACD;;EAED,OAAO,yBAAyB,CAAC,KAAD,CAAzB,CAAiC,IAAjC,CAAsC,mBAAO;IAClD,mBAAY,CAAC,IAAb,CAAkB,mBAAO;MAAI,kDAAiB,CAAC,OAAD,EAAjB,OAAiB,CAAjB;IAAmC,CAAhE;EAAiE,CAD5D,CAAP;AAGD;;AAED,SAAS,YAAT,CAAsB,KAAtB,EAAoC,QAApC,EAAqE;EACnE;EACA,IAAI,CAAC,QAAD,IAAa,CAAC,QAAQ,CAAC,MAA3B,EAAmC;IACjC,OAAO,KAAP;EACD;;EACD,IAAM,GAAG,GAAG,kBAAkB,CAAC,KAAD,CAA9B;;EACA,OAAO,CAAC,GAAD,GAAO,KAAP,GAAe,QAAQ,CAAC,IAAT,CAAc,mBAAO;IAAI,kDAAiB,CAAC,GAAD,EAAjB,OAAiB,CAAjB;EAA+B,CAAxD,CAAtB;AACD;;AAED,SAAS,aAAT,CAAuB,KAAvB,EAAqC,SAArC,EAAuE;EACrE;EACA,IAAI,CAAC,SAAD,IAAc,CAAC,SAAS,CAAC,MAA7B,EAAqC;IACnC,OAAO,IAAP;EACD;;EACD,IAAM,GAAG,GAAG,kBAAkB,CAAC,KAAD,CAA9B;;EACA,OAAO,CAAC,GAAD,GAAO,IAAP,GAAc,SAAS,CAAC,IAAV,CAAe,mBAAO;IAAI,kDAAiB,CAAC,GAAD,EAAjB,OAAiB,CAAjB;EAA+B,CAAzD,CAArB;AACD;;AAED,SAAS,yBAAT,CAAmC,KAAnC,EAA+C;EAC7C,IAAI,KAAK,CAAC,OAAV,EAAmB;IACjB,OAAO,CAAC,KAAK,CAAC,OAAP,CAAP;EACD;;EACD,IAAI,KAAK,CAAC,SAAV,EAAqB;IACnB,IAAI;MACI;MAAA,IAAE,YAAF;MAAA,IAAE,8BAAF;MAAA,IAAa,aAAb;MAAA,IAAa,+BAAb;;MACN,OAAO,CAAC,KAAG,KAAJ,EAAgB,IAAI,OAAJ,GAAS,KAAzB,CAAP;IACD,CAHD,CAGE,OAAO,EAAP,EAAW;MACX,+BAAc,IAAI,wBAAM,CAAC,KAAP,CAAa,sCAAoC,2CAAmB,CAAC,KAAD,CAApE,CAAlB;MACA,OAAO,EAAP;IACD;EACF;;EACD,OAAO,EAAP;AACD;;AAED,SAAS,cAAT,CAAwB,KAAxB,EAAoC;EAClC,IAAI;IACF;IACA;IACA,OAAO,KAAK,CAAC,SAAN,CAAgB,MAAhB,CAAuB,CAAvB,EAA0B,IAA1B,KAAmC,aAA1C;EACD,CAJD,CAIE,OAAO,CAAP,EAAU,CACV;EACD;;EACD,OAAO,KAAP;AACD;;AAED,SAAS,gBAAT,CAA0B,MAA1B,EAAmD;EAAzB;IAAA;EAAyB;;EACjD,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAP,GAAgB,CAA7B,EAAgC,CAAC,IAAI,CAArC,EAAwC,CAAC,EAAzC,EAA6C;IAC3C,IAAM,KAAK,GAAG,MAAM,CAAC,CAAD,CAApB;;IAEA,IAAI,KAAK,IAAI,KAAK,CAAC,QAAN,KAAmB,aAA5B,IAA6C,KAAK,CAAC,QAAN,KAAmB,eAApE,EAAqF;MACnF,OAAO,KAAK,CAAC,QAAN,IAAkB,IAAzB;IACD;EACF;;EAED,OAAO,IAAP;AACD;;AAED,SAAS,kBAAT,CAA4B,KAA5B,EAAwC;EACtC,IAAI;IACF,IAAI,KAAK,CAAC,UAAV,EAAsB;MACpB,OAAO,gBAAgB,CAAC,KAAK,CAAC,UAAN,CAAiB,MAAlB,CAAvB;IACD;;IACD,IAAI,QAAJ;;IACA,IAAI;MACF;MACA,QAAM,GAAG,KAAK,CAAC,SAAN,CAAgB,MAAhB,CAAuB,CAAvB,EAA0B,UAA1B,CAAqC,MAA9C;IACD,CAHD,CAGE,OAAO,CAAP,EAAU,CACV;IACD;;IACD,OAAO,QAAM,GAAG,gBAAgB,CAAC,QAAD,CAAnB,GAA8B,IAA3C;EACD,CAZD,CAYE,OAAO,EAAP,EAAW;IACX,+BAAc,IAAI,wBAAM,CAAC,KAAP,CAAa,kCAAgC,2CAAmB,CAAC,KAAD,CAAhE,CAAlB;IACA,OAAO,IAAP;EACD;AACF,C;;AC9MD;;;ACAA;AAeA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AAQA;AAEA;;;;;;;;;;;;;;;;;;;AC7BA;AAEA;AAEA;;AACA,SAAS,+BAAT,CAAyC,GAAzC,EAAwD;EACtD,IAAI,CAAC,GAAG,CAAC,QAAL,IAAiB,CAAC,GAAG,CAAC,QAAJ,CAAa,GAAnC,EAAwC;IACtC;EACD;;EACK;EAAA,IAAE,cAAF;EAAA,IAAQ,oBAAR;EACN,OAAO;IAAE,IAAI,MAAN;IAAQ,OAAO;EAAf,CAAP;AACD;AAED;;;AAGI;;;AACJ,SAAS,uBAAT,CAAiC,KAAjC,EAA+C,OAA/C,EAAgE;EAC9D,IAAI,CAAC,OAAL,EAAc;IACZ,OAAO,KAAP;EACD;;EACD,KAAK,CAAC,GAAN,GAAY,KAAK,CAAC,GAAN,IAAa,EAAzB;EACA,KAAK,CAAC,GAAN,CAAU,IAAV,GAAiB,KAAK,CAAC,GAAN,CAAU,IAAV,IAAkB,OAAO,CAAC,IAA3C;EACA,KAAK,CAAC,GAAN,CAAU,OAAV,GAAoB,KAAK,CAAC,GAAN,CAAU,OAAV,IAAqB,OAAO,CAAC,OAAjD;EACA,KAAK,CAAC,GAAN,CAAU,YAAV,GAAsB,+DAAQ,KAAK,CAAC,GAAN,CAAU,YAAV,IAA0B,EAAlC,EAA2C,OAAO,CAAC,YAAR,IAAwB,EAAnE,CAAtB;EACA,KAAK,CAAC,GAAN,CAAU,QAAV,GAAkB,+DAAQ,KAAK,CAAC,GAAN,CAAU,QAAV,IAAsB,EAA9B,EAAuC,OAAO,CAAC,QAAR,IAAoB,EAA3D,CAAlB;EACA,OAAO,KAAP;AACD;AAED;;;AACM,SAAU,qBAAV,CACJ,OADI,EAEJ,GAFI,EAEW;EAEf,IAAM,OAAO,GAAG,+BAA+B,CAAC,GAAD,CAA/C;;EACA,IAAM,eAAe;IACnB,OAAO,EAAE,IAAI,IAAJ,GAAW,WAAX;EADU,GAEf,OAAO,IAAI;IAAE,GAAG,EAAE;EAAP,CAFI,GAGf,CAAC,CAAC,GAAG,CAAC,MAAN,IAAgB;IAAE,GAAG,EAAE,yEAAW,CAAC,GAAG,CAAC,GAAL;EAAlB,CAHD,CAArB,CAHe,CASf;;;EACA,IAAM,IAAI,GAAG,gBAAgB,OAAhB,GAA2B,UAA3B,GAA8D,SAA3E,CAVe,CAYf;;EACA,IAAM,YAAY,GAAG,CAAC;IAAE,IAAI;EAAN,CAAD,EAA+C,OAA/C,CAArB;EACA,IAAM,QAAQ,GAAG,4EAAc,CAAkB,eAAlB,EAAmC,CAAC,YAAD,CAAnC,CAA/B;EAEA,OAAO,CAAC,QAAD,EAAW,IAAX,CAAP;AACD;AAED;;AACM,SAAU,sBAAV,CAAiC,OAAjC,EAAuE,GAAvE,EAAsF;EACpF;EAAA,IAAC,gBAAD;EAAA,IAAW,YAAX;;EACN,OAAO;IACL,IAAI,EAAE,+EAAiB,CAAC,QAAD,CADlB;IAEL,IAAI,MAFC;IAGL,GAAG,EAAE,0FAAqC,CAAC,GAAG,CAAC,GAAL,EAAU,GAAG,CAAC,MAAd;EAHrC,CAAP;AAKD;AAED;;;AAGG;;AACG,SAAU,mBAAV,CAA8B,KAA9B,EAA4C,GAA5C,EAA2D;EAC/D,IAAM,OAAO,GAAG,+BAA+B,CAAC,GAAD,CAA/C;EACA,IAAM,SAAS,GAAG,KAAK,CAAC,IAAN,IAAc,OAAhC;EAEQ;;EACF;EAAA,IAAE,0BAAF;EAAA,IAA0B,oBAA1B,CALyD,CAO/D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,uBAAuB,CAAC,KAAD,EAAQ,GAAG,CAAC,QAAJ,CAAa,GAArB,CAAvB;EACA,KAAK,CAAC,IAAN,GAAa,KAAK,CAAC,IAAN,IAAc,EAA3B;EACA,KAAK,CAAC,KAAN,GAAc,KAAK,CAAC,KAAN,IAAe,EAA7B,CAvB+D,CAyB/D;EACA;;EACA,IAAI,EAAE,KAAK,CAAC,qBAAN,IAA+B,KAAK,CAAC,qBAAN,CAA4B,oBAA7D,CAAJ,EAAwF;IACtF,KAAK,CAAC,IAAN,CAAW,oBAAX,GAAkC,IAAlC;IACA,KAAK,CAAC,KAAN,CAAY,cAAZ,GAA6B,KAAK,CAAC,qBAAN,GAA8B,KAAK,CAAC,qBAAN,CAA4B,cAA1D,GAA2E,OAAxG;EACD,CA9B8D,CAgC/D;EACA;;;EACA,OAAO,KAAK,CAAC,qBAAb;;EAEA,IAAM,eAAe;IACnB,QAAQ,EAAE,KAAK,CAAC,QADG;IAEnB,OAAO,EAAE,IAAI,IAAJ,GAAW,WAAX;EAFU,GAGf,OAAO,IAAI;IAAE,GAAG,EAAE;EAAP,CAHI,GAIf,CAAC,CAAC,GAAG,CAAC,MAAN,IAAgB;IAAE,GAAG,EAAE,yEAAW,CAAC,GAAG,CAAC,GAAL;EAAlB,CAJD,CAArB;;EAMA,IAAM,SAAS,GAAc,CAC3B;IACE,IAAI,EAAE,SADR;IAEE,YAAY,EAAE,CAAC;MAAE,EAAE,EAAE,cAAN;MAAsB,IAAI,EAAE;IAA5B,CAAD;EAFhB,CAD2B,EAK3B,KAL2B,CAA7B;EAOA,OAAO,4EAAc,CAAgB,eAAhB,EAAiC,CAAC,SAAD,CAAjC,CAArB;AACD;AAED;;AACM,SAAU,oBAAV,CAA+B,KAA/B,EAA6C,GAA7C,EAA4D;EAChE,IAAM,OAAO,GAAG,+BAA+B,CAAC,GAAD,CAA/C;EACA,IAAM,SAAS,GAAG,KAAK,CAAC,IAAN,IAAc,OAAhC;EACA,IAAM,WAAW,GAAG,SAAS,KAAK,aAAd,IAA+B,CAAC,CAAC,GAAG,CAAC,MAAzD;EAEQ;;EACF;EAAA,IAAE,0BAAF;EAAA,IAA0B,oBAA1B,CAN0D,CAQhE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,uBAAuB,CAAC,KAAD,EAAQ,GAAG,CAAC,QAAJ,CAAa,GAArB,CAAvB;EACA,KAAK,CAAC,IAAN,GAAa,KAAK,CAAC,IAAN,IAAc,EAA3B;EACA,KAAK,CAAC,KAAN,GAAc,KAAK,CAAC,KAAN,IAAe,EAA7B,CAxBgE,CA0BhE;EACA;;EACA,IAAI,EAAE,KAAK,CAAC,qBAAN,IAA+B,KAAK,CAAC,qBAAN,CAA4B,oBAA7D,CAAJ,EAAwF;IACtF,KAAK,CAAC,IAAN,CAAW,oBAAX,GAAkC,IAAlC;IACA,KAAK,CAAC,KAAN,CAAY,cAAZ,GAA6B,KAAK,CAAC,qBAAN,GAA8B,KAAK,CAAC,qBAAN,CAA4B,cAA1D,GAA2E,OAAxG;EACD,CA/B+D,CAiChE;EACA;;;EACA,OAAO,KAAK,CAAC,qBAAb;EAEA,IAAI,IAAJ;;EACA,IAAI;IACF;IACA,IAAI,GAAG,IAAI,CAAC,SAAL,CAAe,KAAf,CAAP;EACD,CAHD,CAGE,OAAO,GAAP,EAAY;IACZ;IACA,KAAK,CAAC,IAAN,CAAW,kBAAX,GAAgC,IAAhC;IACA,KAAK,CAAC,KAAN,CAAY,kBAAZ,GAAiC,GAAjC;;IACA,IAAI;MACF,IAAI,GAAG,IAAI,CAAC,SAAL,CAAe,uEAAS,CAAC,KAAD,CAAxB,CAAP;IACD,CAFD,CAEE,OAAO,MAAP,EAAe;MACf;MACA;MACA;MACA,IAAM,QAAQ,GAAG,MAAjB;MACA,IAAI,GAAG,IAAI,CAAC,SAAL,CAAe;QACpB,OAAO,EAAE,4CADW;QAEpB;QACA,KAAK,EAAE;UAAE,OAAO,EAAE,QAAQ,CAAC,OAApB;UAA6B,KAAK,EAAE,QAAQ,CAAC;QAA7C;MAHa,CAAf,CAAP;IAKD;EACF;;EAED,IAAM,GAAG,GAAkB;IACzB;IACA;IACA;IACA,IAAI,MAJqB;IAKzB,IAAI,EAAE,SALmB;IAMzB,GAAG,EAAE,WAAW,GACZ,0FAAqC,CAAC,GAAG,CAAC,GAAL,EAAU,GAAG,CAAC,MAAd,CADzB,GAEZ,uFAAkC,CAAC,GAAG,CAAC,GAAL;EARb,CAA3B,CA5DgE,CAuEhE;EAEA;EACA;EACA;EACA;;EACA,IAAI,WAAJ,EAAiB;IACf,IAAM,eAAe;MACnB,QAAQ,EAAE,KAAK,CAAC,QADG;MAEnB,OAAO,EAAE,IAAI,IAAJ,GAAW,WAAX;IAFU,GAGf,OAAO,IAAI;MAAE,GAAG,EAAE;IAAP,CAHI,GAIf,CAAC,CAAC,GAAG,CAAC,MAAN,IAAgB;MAAE,GAAG,EAAE,yEAAW,CAAC,GAAG,CAAC,GAAL;IAAlB,CAJD,CAArB;;IAMA,IAAM,SAAS,GAAc,CAC3B;MACE,IAAI,EAAE,SADR;MAEE,YAAY,EAAE,CAAC;QAAE,EAAE,EAAE,cAAN;QAAsB,IAAI,EAAE;MAA5B,CAAD;IAFhB,CAD2B,EAK3B,GAAG,CAAC,IALuB,CAA7B;IAOA,IAAM,QAAQ,GAAG,4EAAc,CAAgB,eAAhB,EAAiC,CAAC,SAAD,CAAjC,CAA/B;IACA,GAAG,CAAC,IAAJ,GAAW,+EAAiB,CAAC,QAAD,CAA5B;EACD;;EAED,OAAO,GAAP;AACD,C;;;;;;;;;;;;;;;;AC9MD;AAIA;;;AAGG;;AACH,IAAM,eAAe,GAAG,GAAxB;AAEA;;;AAGG;;AACH;AAAA;AAAA;EAAA;IACE;IACU,2BAA+B,KAA/B;IAEV;;IACU,uBAAiD,EAAjD;IAEV;;IACU,wBAAqC,EAArC;IAEV;;IACU,oBAA6B,EAA7B;IAEV;;IACU,aAAc,EAAd;IAEV;;IACU,aAAsC,EAAtC;IAEV;;IACU,cAAiB,EAAjB;IAEV;;IACU,iBAAsB,EAAtB;IAoBV;;;AAGG;;IACO,8BAAsD,EAAtD;EAqbX;EAnbC;;;AAGG;;;EACW,cAAd,UAAoB,KAApB,EAAiC;IAC/B,IAAM,QAAQ,GAAG,IAAI,KAAJ,EAAjB;;IACA,IAAI,KAAJ,EAAW;MACT,QAAQ,CAAC,YAAT,GAAqB,+DAAO,KAAK,CAAC,YAAb,CAArB;MACA,QAAQ,CAAC,KAAT,GAAc,mEAAQ,KAAK,CAAC,KAAd,CAAd;MACA,QAAQ,CAAC,MAAT,GAAe,mEAAQ,KAAK,CAAC,MAAd,CAAf;MACA,QAAQ,CAAC,SAAT,GAAkB,mEAAQ,KAAK,CAAC,SAAd,CAAlB;MACA,QAAQ,CAAC,KAAT,GAAiB,KAAK,CAAC,KAAvB;MACA,QAAQ,CAAC,MAAT,GAAkB,KAAK,CAAC,MAAxB;MACA,QAAQ,CAAC,KAAT,GAAiB,KAAK,CAAC,KAAvB;MACA,QAAQ,CAAC,QAAT,GAAoB,KAAK,CAAC,QAA1B;MACA,QAAQ,CAAC,gBAAT,GAA4B,KAAK,CAAC,gBAAlC;MACA,QAAQ,CAAC,YAAT,GAAwB,KAAK,CAAC,YAA9B;MACA,QAAQ,CAAC,gBAAT,GAAyB,+DAAO,KAAK,CAAC,gBAAb,CAAzB;MACA,QAAQ,CAAC,eAAT,GAA2B,KAAK,CAAC,eAAjC;IACD;;IACD,OAAO,QAAP;EACD,CAjBa;EAmBd;;;AAGG;;;EACI,mCAAP,UAAwB,QAAxB,EAAwD;IACtD,KAAK,eAAL,CAAqB,IAArB,CAA0B,QAA1B;EACD,CAFM;EAIP;;AAEG;;;EACI,oCAAP,UAAyB,QAAzB,EAAiD;IAC/C,KAAK,gBAAL,CAAsB,IAAtB,CAA2B,QAA3B;;IACA,OAAO,IAAP;EACD,CAHM;EAKP;;AAEG;;;EACI,0BAAP,UAAe,IAAf,EAAgC;IAC9B,KAAK,KAAL,GAAa,IAAI,IAAI,EAArB;;IACA,IAAI,KAAK,QAAT,EAAmB;MACjB,KAAK,QAAL,CAAc,MAAd,CAAqB;QAAE,IAAI;MAAN,CAArB;IACD;;IACD,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAPM;EASP;;AAEG;;;EACI,0BAAP;IACE,OAAO,KAAK,KAAZ;EACD,CAFM;EAIP;;AAEG;;;EACI,oCAAP;IACE,OAAO,KAAK,eAAZ;EACD,CAFM;EAIP;;AAEG;;;EACI,oCAAP,UAAyB,cAAzB,EAAwD;IACtD,KAAK,eAAL,GAAuB,cAAvB;IACA,OAAO,IAAP;EACD,CAHM;EAKP;;AAEG;;;EACI,0BAAP,UAAe,IAAf,EAAiD;IAC/C,KAAK,KAAL,GAAU,kIACL,KAAK,KADA,GAEL,IAFK,CAAV;;IAIA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAPM;EASP;;AAEG;;;EACI,yBAAP,UAAc,GAAd,EAA2B,KAA3B,EAA2C;;;IACzC,KAAK,KAAL,GAAU,kIAAQ,KAAK,KAAb,IAAkB,YAAG,GAAH,IAAS,KAAT,EAAc,EAAhC,EAAV;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAJM;EAMP;;AAEG;;;EACI,4BAAP,UAAiB,MAAjB,EAA+B;IAC7B,KAAK,MAAL,GAAW,kIACN,KAAK,MADC,GAEN,MAFM,CAAX;;IAIA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAPM;EASP;;AAEG;;;EACI,2BAAP,UAAgB,GAAhB,EAA6B,KAA7B,EAAyC;;;IACvC,KAAK,MAAL,GAAW,kIAAQ,KAAK,MAAb,IAAmB,YAAG,GAAH,IAAS,KAAT,EAAc,EAAjC,EAAX;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAJM;EAMP;;AAEG;;;EACI,iCAAP,UAAsB,WAAtB,EAA2C;IACzC,KAAK,YAAL,GAAoB,WAApB;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAJM;EAMP;;AAEG;;;EACI,2BAAP,UAAgB,KAAhB,EAA+B;IAC7B,KAAK,MAAL,GAAc,KAAd;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAJM;EAMP;;AAEG;;;EACI,qCAAP,UAA0B,IAA1B,EAAuC;IACrC,KAAK,gBAAL,GAAwB,IAAxB;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAJM;EAMP;;;AAGG;;;EACI,iCAAP,UAAsB,IAAtB,EAAmC;IACjC,OAAO,KAAK,kBAAL,CAAwB,IAAxB,CAAP;EACD,CAFM;EAIP;;AAEG;;;EACI,6BAAP,UAAkB,GAAlB,EAA+B,OAA/B,EAAsD;;;IACpD,IAAI,OAAO,KAAK,IAAhB,EAAsB;MACpB;MACA,OAAO,KAAK,SAAL,CAAe,GAAf,CAAP;IACD,CAHD,MAGO;MACL,KAAK,SAAL,GAAc,kIAAQ,KAAK,SAAb,IAAsB,YAAG,GAAH,IAAS,OAAT,EAAgB,EAAtC,EAAd;IACD;;IAED,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAVM;EAYP;;AAEG;;;EACI,0BAAP,UAAe,IAAf,EAA0B;IACxB,KAAK,KAAL,GAAa,IAAb;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAJM;EAMP;;AAEG;;;EACI,0BAAP;IACE,OAAO,KAAK,KAAZ;EACD,CAFM;EAIP;;AAEG;;;EACI,iCAAP;IACE;IACA;IACA,IAAM,IAAI,GAAG,KAAK,OAAL,EAAb;IACA,OAAO,IAAI,IAAI,IAAI,CAAC,WAApB;EACD,CALM;EAOP;;AAEG;;;EACI,6BAAP,UAAkB,OAAlB,EAAmC;IACjC,IAAI,CAAC,OAAL,EAAc;MACZ,OAAO,KAAK,QAAZ;IACD,CAFD,MAEO;MACL,KAAK,QAAL,GAAgB,OAAhB;IACD;;IACD,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CARM;EAUP;;AAEG;;;EACI,6BAAP;IACE,OAAO,KAAK,QAAZ;EACD,CAFM;EAIP;;AAEG;;;EACI,yBAAP,UAAc,cAAd,EAA6C;IAC3C,IAAI,CAAC,cAAL,EAAqB;MACnB,OAAO,IAAP;IACD;;IAED,IAAI,OAAO,cAAP,KAA0B,UAA9B,EAA0C;MACxC,IAAM,YAAY,GAAI,cAAqC,CAAC,IAAD,CAA3D;MACA,OAAO,YAAY,YAAY,KAAxB,GAAgC,YAAhC,GAA+C,IAAtD;IACD;;IAED,IAAI,cAAc,YAAY,KAA9B,EAAqC;MACnC,KAAK,KAAL,GAAU,kIAAQ,KAAK,KAAb,GAAuB,cAAc,CAAC,KAAtC,CAAV;MACA,KAAK,MAAL,GAAW,kIAAQ,KAAK,MAAb,GAAwB,cAAc,CAAC,MAAvC,CAAX;MACA,KAAK,SAAL,GAAc,kIAAQ,KAAK,SAAb,GAA2B,cAAc,CAAC,SAA1C,CAAd;;MACA,IAAI,cAAc,CAAC,KAAf,IAAwB,MAAM,CAAC,IAAP,CAAY,cAAc,CAAC,KAA3B,EAAkC,MAA9D,EAAsE;QACpE,KAAK,KAAL,GAAa,cAAc,CAAC,KAA5B;MACD;;MACD,IAAI,cAAc,CAAC,MAAnB,EAA2B;QACzB,KAAK,MAAL,GAAc,cAAc,CAAC,MAA7B;MACD;;MACD,IAAI,cAAc,CAAC,YAAnB,EAAiC;QAC/B,KAAK,YAAL,GAAoB,cAAc,CAAC,YAAnC;MACD;;MACD,IAAI,cAAc,CAAC,eAAnB,EAAoC;QAClC,KAAK,eAAL,GAAuB,cAAc,CAAC,eAAtC;MACD;IACF,CAhBD,MAgBO,IAAI,2EAAa,CAAC,cAAD,CAAjB,EAAmC;MACxC;MACA,cAAc,GAAG,cAAjB;MACA,KAAK,KAAL,GAAU,kIAAQ,KAAK,KAAb,GAAuB,cAAc,CAAC,IAAtC,CAAV;MACA,KAAK,MAAL,GAAW,kIAAQ,KAAK,MAAb,GAAwB,cAAc,CAAC,KAAvC,CAAX;MACA,KAAK,SAAL,GAAc,kIAAQ,KAAK,SAAb,GAA2B,cAAc,CAAC,QAA1C,CAAd;;MACA,IAAI,cAAc,CAAC,IAAnB,EAAyB;QACvB,KAAK,KAAL,GAAa,cAAc,CAAC,IAA5B;MACD;;MACD,IAAI,cAAc,CAAC,KAAnB,EAA0B;QACxB,KAAK,MAAL,GAAc,cAAc,CAAC,KAA7B;MACD;;MACD,IAAI,cAAc,CAAC,WAAnB,EAAgC;QAC9B,KAAK,YAAL,GAAoB,cAAc,CAAC,WAAnC;MACD;;MACD,IAAI,cAAc,CAAC,cAAnB,EAAmC;QACjC,KAAK,eAAL,GAAuB,cAAc,CAAC,cAAtC;MACD;IACF;;IAED,OAAO,IAAP;EACD,CA/CM;EAiDP;;AAEG;;;EACI,wBAAP;IACE,KAAK,YAAL,GAAoB,EAApB;IACA,KAAK,KAAL,GAAa,EAAb;IACA,KAAK,MAAL,GAAc,EAAd;IACA,KAAK,KAAL,GAAa,EAAb;IACA,KAAK,SAAL,GAAiB,EAAjB;IACA,KAAK,MAAL,GAAc,SAAd;IACA,KAAK,gBAAL,GAAwB,SAAxB;IACA,KAAK,YAAL,GAAoB,SAApB;IACA,KAAK,eAAL,GAAuB,SAAvB;IACA,KAAK,KAAL,GAAa,SAAb;IACA,KAAK,QAAL,GAAgB,SAAhB;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAdM;EAgBP;;AAEG;;;EACI,gCAAP,UAAqB,UAArB,EAA6C,cAA7C,EAAoE;IAClE,IAAM,SAAS,GAAG,OAAO,cAAP,KAA0B,QAA1B,GAAqC,IAAI,CAAC,GAAL,CAAS,cAAT,EAAyB,eAAzB,CAArC,GAAiF,eAAnG,CADkE,CAGlE;;IACA,IAAI,SAAS,IAAI,CAAjB,EAAoB;MAClB,OAAO,IAAP;IACD;;IAED,IAAM,gBAAgB;MACpB,SAAS,EAAE,oFAAsB;IADb,GAEjB,UAFiB,CAAtB;;IAIA,KAAK,YAAL,GAAoB,+DAAI,KAAK,YAAT,EAAqB,CAAE,gBAAF,CAArB,EAAyC,KAAzC,CAA+C,CAAC,SAAhD,CAApB;;IACA,KAAK,qBAAL;;IAEA,OAAO,IAAP;EACD,CAhBM;EAkBP;;AAEG;;;EACI,mCAAP;IACE,KAAK,YAAL,GAAoB,EAApB;;IACA,KAAK,qBAAL;;IACA,OAAO,IAAP;EACD,CAJM;EAMP;;;;;;;AAOG;;;EACI,+BAAP,UAAoB,KAApB,EAAkC,IAAlC,EAAkD;IAChD,IAAI,KAAK,MAAL,IAAe,MAAM,CAAC,IAAP,CAAY,KAAK,MAAjB,EAAyB,MAA5C,EAAoD;MAClD,KAAK,CAAC,KAAN,GAAW,kIAAQ,KAAK,MAAb,GAAwB,KAAK,CAAC,KAA9B,CAAX;IACD;;IACD,IAAI,KAAK,KAAL,IAAc,MAAM,CAAC,IAAP,CAAY,KAAK,KAAjB,EAAwB,MAA1C,EAAkD;MAChD,KAAK,CAAC,IAAN,GAAU,kIAAQ,KAAK,KAAb,GAAuB,KAAK,CAAC,IAA7B,CAAV;IACD;;IACD,IAAI,KAAK,KAAL,IAAc,MAAM,CAAC,IAAP,CAAY,KAAK,KAAjB,EAAwB,MAA1C,EAAkD;MAChD,KAAK,CAAC,IAAN,GAAU,kIAAQ,KAAK,KAAb,GAAuB,KAAK,CAAC,IAA7B,CAAV;IACD;;IACD,IAAI,KAAK,SAAL,IAAkB,MAAM,CAAC,IAAP,CAAY,KAAK,SAAjB,EAA4B,MAAlD,EAA0D;MACxD,KAAK,CAAC,QAAN,GAAc,kIAAQ,KAAK,SAAb,GAA2B,KAAK,CAAC,QAAjC,CAAd;IACD;;IACD,IAAI,KAAK,MAAT,EAAiB;MACf,KAAK,CAAC,KAAN,GAAc,KAAK,MAAnB;IACD;;IACD,IAAI,KAAK,gBAAT,EAA2B;MACzB,KAAK,CAAC,WAAN,GAAoB,KAAK,gBAAzB;IACD,CAlB+C,CAmBhD;IACA;IACA;;;IACA,IAAI,KAAK,KAAT,EAAgB;MACd,KAAK,CAAC,QAAN,GAAc;QAAK,KAAK,EAAE,KAAK,KAAL,CAAW,eAAX;MAAZ,GAA6C,KAAK,CAAC,QAAnD,CAAd;MACA,IAAM,eAAe,GAAG,KAAK,KAAL,CAAW,WAAX,IAA0B,KAAK,KAAL,CAAW,WAAX,CAAuB,IAAzE;;MACA,IAAI,eAAJ,EAAqB;QACnB,KAAK,CAAC,IAAN,GAAU;UAAK,WAAW,EAAE;QAAlB,GAAsC,KAAK,CAAC,IAA5C,CAAV;MACD;IACF;;IAED,KAAK,iBAAL,CAAuB,KAAvB;;IAEA,KAAK,CAAC,WAAN,GAAiB,+DAAQ,KAAK,CAAC,WAAN,IAAqB,EAA7B,EAAqC,KAAK,YAA1C,CAAjB;IACA,KAAK,CAAC,WAAN,GAAoB,KAAK,CAAC,WAAN,CAAkB,MAAlB,GAA2B,CAA3B,GAA+B,KAAK,CAAC,WAArC,GAAmD,SAAvE;IAEA,KAAK,CAAC,qBAAN,GAA8B,KAAK,sBAAnC;IAEA,OAAO,KAAK,sBAAL,CAA2B,+DAAK,wBAAwB,EAA7B,EAAoC,KAAK,gBAAzC,CAA3B,EAAuF,KAAvF,EAA8F,IAA9F,CAAP;EACD,CAtCM;EAwCP;;AAEG;;;EACI,2CAAP,UAAgC,OAAhC,EAAmE;IACjE,KAAK,sBAAL,GAA2B,kIAAQ,KAAK,sBAAb,GAAwC,OAAxC,CAA3B;IAEA,OAAO,IAAP;EACD,CAJM;EAMP;;AAEG;;;EACO,yCAAV,UACE,UADF,EAEE,KAFF,EAGE,IAHF,EAIE,KAJF,EAImB;IAJnB;;IAIE;MAAA;IAAiB;;IAEjB,OAAO,IAAI,iEAAJ,CAA8B,UAAC,OAAD,EAAU,MAAV,EAAgB;MACnD,IAAM,SAAS,GAAG,UAAU,CAAC,KAAD,CAA5B;;MACA,IAAI,KAAK,KAAK,IAAV,IAAkB,OAAO,SAAP,KAAqB,UAA3C,EAAuD;QACrD,OAAO,CAAC,KAAD,CAAP;MACD,CAFD,MAEO;QACL,IAAM,MAAM,GAAG,SAAS,oEAAM,KAAN,GAAe,IAAf,CAAxB;;QACA,IAAI,wEAAU,CAAC,MAAD,CAAd,EAAwB;UACtB,KAAK,MAAM,CACR,IADE,CACG,iBAAK;YAAI,YAAI,CAAC,sBAAL,CAA4B,UAA5B,EAAwC,KAAxC,EAA+C,IAA/C,EAAqD,KAAK,GAAG,CAA7D,EAAgE,IAAhE;UAA6E,CADzF,EAEF,IAFE,CAEG,IAFH,EAES,MAFT,CAAL;QAGD,CAJD,MAIO;UACL,KAAK,KAAI,CAAC,sBAAL,CAA4B,UAA5B,EAAwC,MAAxC,EAAgD,IAAhD,EAAsD,KAAK,GAAG,CAA9D,EACF,IADE,CACG,OADH,EAEF,IAFE,CAEG,IAFH,EAES,MAFT,CAAL;QAGD;MACF;IACF,CAhBM,CAAP;EAiBD,CAvBS;EAyBV;;AAEG;;;EACO,wCAAV;IAAA,kBACE;IACA;IACA;;;IACA,IAAI,CAAC,KAAK,mBAAV,EAA+B;MAC7B,KAAK,mBAAL,GAA2B,IAA3B;;MACA,KAAK,eAAL,CAAqB,OAArB,CAA6B,oBAAQ;QACnC,QAAQ,CAAC,KAAD,CAAR;MACD,CAFD;;MAGA,KAAK,mBAAL,GAA2B,KAA3B;IACD;EACF,CAXS;EAaV;;;AAGG;;;EACK,oCAAR,UAA0B,KAA1B,EAAsC;IACpC;IACA,KAAK,CAAC,WAAN,GAAoB,KAAK,CAAC,WAAN,GAChB,KAAK,CAAC,OAAN,CAAc,KAAK,CAAC,WAApB,IACE,KAAK,CAAC,WADR,GAEE,CAAC,KAAK,CAAC,WAAP,CAHc,GAIhB,EAJJ,CAFoC,CAQpC;;IACA,IAAI,KAAK,YAAT,EAAuB;MACrB,KAAK,CAAC,WAAN,GAAoB,KAAK,CAAC,WAAN,CAAkB,MAAlB,CAAyB,KAAK,YAA9B,CAApB;IACD,CAXmC,CAapC;;;IACA,IAAI,KAAK,CAAC,WAAN,IAAqB,CAAC,KAAK,CAAC,WAAN,CAAkB,MAA5C,EAAoD;MAClD,OAAO,KAAK,CAAC,WAAb;IACD;EACF,CAjBO;;EAkBV;AAAC,CApeD;;;AAseA;;AAEG;;AACH,SAAS,wBAAT,GAAiC;EAC/B,OAAO,gFAAkB,CAAmB,uBAAnB,EAA4C;IAAM;EAAE,CAApD,CAAzB;AACD;AAED;;;AAGG;;;AACG,SAAU,uBAAV,CAAkC,QAAlC,EAA0D;EAC9D,wBAAwB,GAAG,IAA3B,CAAgC,QAAhC;AACD,C;;;;;;;;ACphBD;AAAA;AAAA;AAEA;;AACA;AAAA;AAAA;EAAA,0BAiBC;EAhBC;;AAEG;;;EACI,oCAAP,UAAiB,CAAjB,EAAyB;IACvB,OAAO,iFAAmB,CAAC;MACzB,MAAM,EAAE,qEADiB;MAEzB,MAAM,EAAE;IAFiB,CAAD,CAA1B;EAID,CALM;EAOP;;AAEG;;;EACI,gCAAP,UAAa,CAAb,EAAuB;IACrB,OAAO,iFAAmB,CAAC,IAAD,CAA1B;EACD,CAFM;;EAGT;AAAC,CAjBD;;;;;;;;;;ACJA;AAAO,IAAM,WAAW,GAAG,QAApB,C;;;;;;;;ACCP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcO,IAAM,wBAAwB,GAAG,OAAjC;AAEA,IAAM,8BAA8B,GAAG,aAAvC;AAEA,IAAM,6BAA6B,GAAG,YAAtC;AAEA,IAAM,0BAA0B,GAAG,SAAnC;AAuDA,IAAM,6BAA6B,GAAG,EAAtC;AAEP;;;;;AAKG;;AACG,SAAU,eAAV,CACJ,OADI,EAEJ,WAFI,EAGJ,MAHI,EAG6G;EAAjH;IAAA,SAA2C,+EAAiB,CAAC,OAAO,CAAC,UAAR,IAAsB,6BAAvB,CAA5D;EAAiH;;EAEjH,IAAI,UAAU,GAAe,EAA7B;;EAEA,IAAM,KAAK,GAAG,SAAR,KAAQ,CAAC,OAAD,EAAiB;IAA2B,aAAM,CAAC,KAAP;EAAqB,CAA/E;;EAEA,SAAS,IAAT,CAAc,QAAd,EAAgC;IAC9B,IAAM,WAAW,GAAG,6EAAe,CAAC,QAAD,CAAnC;IACA,IAAM,QAAQ,GAAG,WAAW,KAAK,OAAhB,GAA0B,OAA1B,GAAqC,WAAtD;IACA,IAAM,OAAO,GAAqB;MAChC,QAAQ,UADwB;MAEhC,IAAI,EAAE,+EAAiB,CAAC,QAAD;IAFS,CAAlC,CAH8B,CAQ9B;;IACA,IAAI,2EAAa,CAAC,UAAD,EAAa,QAAb,CAAjB,EAAyC;MACvC,OAAO,iFAAmB,CAAC;QACzB,MAAM,EAAE,YADiB;QAEzB,MAAM,EAAE,kBAAkB,CAAC,UAAD,EAAa,QAAb;MAFD,CAAD,CAA1B;IAID;;IAED,IAAM,WAAW,GAAG,SAAd,WAAc;MAClB,kBAAW,CAAC,OAAD,CAAX,CAAqB,IAArB,CAA0B,UAAC,EAAD,EAAsC;YAAnC,c;YAAM,oB;YAAS,kB;YAAQ,0B;QAClD,IAAM,MAAM,GAAG,qFAAuB,CAAC,UAAD,CAAtC;;QACA,IAAI,OAAJ,EAAa;UACX,UAAU,GAAG,8EAAgB,CAAC,UAAD,EAAa,OAAb,CAA7B;QACD;;QACD,IAAI,MAAM,KAAK,SAAf,EAA0B;UACxB,OAAO,iFAAmB,CAAC;YAAE,MAAM,QAAR;YAAU,MAAM;UAAhB,CAAD,CAA1B;QACD;;QACD,OAAO,iFAAmB,CAAC;UACzB,MAAM,QADmB;UAEzB,MAAM,EACJ,MAAM,IACN,IADA,KAEC,MAAM,KAAK,YAAX,GAA0B,kBAAkB,CAAC,UAAD,EAAa,QAAb,CAA5C,GAAqE,yBAFtE;QAHuB,CAAD,CAA1B;MAOD,CAfD;IAeE,CAhBJ;;IAkBA,OAAO,MAAM,CAAC,GAAP,CAAW,WAAX,CAAP;EACD;;EAED,OAAO;IACL,IAAI,MADC;IAEL,KAAK;EAFA,CAAP;AAID;;AAED,SAAS,kBAAT,CAA4B,UAA5B,EAAoD,QAApD,EAA+E;EAC7E,OAAO,cAAY,QAAZ,GAAoB,gCAApB,GAAqD,IAAI,IAAJ,CAC1D,2EAAa,CAAC,UAAD,EAAa,QAAb,CAD6C,EAE1D,WAF0D,EAA5D;AAGD,C;;;;;;;;AC5ID;AAAA;AAAA;AAAA;AAAA;AAEA;AAEA;AAKA;;;;;;AAMG;;AACG,SAAU,WAAV,CAA2D,WAA3D,EAA2F,OAA3F,EAAqG;EACzG,IAAI,OAAO,CAAC,KAAR,KAAkB,IAAtB,EAA4B;IAC1B,IAAI,6DAAJ,EAAoB;MAClB,4DAAM,CAAC,MAAP;IACD,CAFD,MAEO;MACL;MACA;MACA,OAAO,CAAC,IAAR,CAAa,8EAAb;IACD;EACF;;EACD,IAAM,GAAG,GAAG,yEAAa,EAAzB;EACA,IAAM,KAAK,GAAG,GAAG,CAAC,QAAJ,EAAd;;EACA,IAAI,KAAJ,EAAW;IACT,KAAK,CAAC,MAAN,CAAa,OAAO,CAAC,YAArB;EACD;;EACD,IAAM,MAAM,GAAG,IAAI,WAAJ,CAAgB,OAAhB,CAAf;EACA,GAAG,CAAC,UAAJ,CAAe,MAAf;AACD,C;;;;;;;;;;;;;;;;;AChCD;AAEA;AACA;AACA;AAEA;AAmDA;;;AAGG;;AACH;AAAA;AAAA;EAUE;EACA,qBAAmB,OAAnB,EAA6B;IAC3B,KAAK,QAAL,GAAgB,OAAhB;;IACA,IAAI,CAAC,KAAK,QAAL,CAAc,GAAnB,EAAwB;MACtB,6DAAc,IAAI,4DAAM,CAAC,IAAP,CAAY,gDAAZ,CAAlB;IACD;;IACD,KAAK,UAAL,GAAkB,KAAK,eAAL,EAAlB;EACD;EAED;;AAEG;EACH;;;EACO,2CAAP,UAA0B,UAA1B,EAA2C,KAA3C,EAA4D;IAC1D,MAAM,IAAI,iEAAJ,CAAgB,sDAAhB,CAAN;EACD,CAFM;EAIP;;AAEG;;;EACI,yCAAP,UAAwB,QAAxB,EAA0C,MAA1C,EAA6D,KAA7D,EAA8E;IAC5E,MAAM,IAAI,iEAAJ,CAAgB,oDAAhB,CAAN;EACD,CAFM;EAIP;;AAEG;;;EACI,kCAAP,UAAiB,KAAjB,EAA6B;IAC3B;IACA,IACE,KAAK,aAAL,IACA,KAAK,QAAL,CAAc,GADd,IAEA,KAAK,QAAL,CAAc,YAFd,IAGA,KAAK,QAAL,CAAc,YAAd,CAA2B,YAJ7B,EAKE;MACA,IAAM,GAAG,GAAG,mEAAc,CAAC,KAAK,QAAL,CAAc,GAAf,EAAoB,KAAK,QAAL,CAAc,SAAlC,EAA6C,KAAK,QAAL,CAAc,MAA3D,CAA1B;MACA,IAAM,GAAG,GAAG,4EAAmB,CAAC,KAAD,EAAQ,GAAR,CAA/B;MACA,KAAK,KAAK,aAAL,CAAmB,IAAnB,CAAwB,GAAxB,EAA6B,IAA7B,CAAkC,IAAlC,EAAwC,kBAAM;QACjD,6DAAc,IAAI,4DAAM,CAAC,KAAP,CAAa,4BAAb,EAA2C,MAA3C,CAAlB;MACD,CAFI,CAAL;IAGD,CAXD,MAWO;MACL,KAAK,KAAK,UAAL,CAAgB,SAAhB,CAA0B,KAA1B,EAAiC,IAAjC,CAAsC,IAAtC,EAA4C,kBAAM;QACrD,6DAAc,IAAI,4DAAM,CAAC,KAAP,CAAa,4BAAb,EAA2C,MAA3C,CAAlB;MACD,CAFI,CAAL;IAGD;EACF,CAlBM;EAoBP;;AAEG;;;EACI,oCAAP,UAAmB,OAAnB,EAAmC;IACjC,IAAI,CAAC,KAAK,UAAL,CAAgB,WAArB,EAAkC;MAChC,6DAAc,IAAI,4DAAM,CAAC,IAAP,CAAY,yEAAZ,CAAlB;MACA;IACD,CAJgC,CAMjC;;;IACA,IACE,KAAK,aAAL,IACA,KAAK,QAAL,CAAc,GADd,IAEA,KAAK,QAAL,CAAc,YAFd,IAGA,KAAK,QAAL,CAAc,YAAd,CAA2B,YAJ7B,EAKE;MACA,IAAM,GAAG,GAAG,mEAAc,CAAC,KAAK,QAAL,CAAc,GAAf,EAAoB,KAAK,QAAL,CAAc,SAAlC,EAA6C,KAAK,QAAL,CAAc,MAA3D,CAA1B;;MACM;MAAA,IAAC,WAAD;;MACN,KAAK,KAAK,aAAL,CAAmB,IAAnB,CAAwB,GAAxB,EAA6B,IAA7B,CAAkC,IAAlC,EAAwC,kBAAM;QACjD,6DAAc,IAAI,4DAAM,CAAC,KAAP,CAAa,8BAAb,EAA6C,MAA7C,CAAlB;MACD,CAFI,CAAL;IAGD,CAXD,MAWO;MACL,KAAK,KAAK,UAAL,CAAgB,WAAhB,CAA4B,OAA5B,EAAqC,IAArC,CAA0C,IAA1C,EAAgD,kBAAM;QACzD,6DAAc,IAAI,4DAAM,CAAC,KAAP,CAAa,8BAAb,EAA6C,MAA7C,CAAlB;MACD,CAFI,CAAL;IAGD;EACF,CAvBM;EAyBP;;AAEG;;;EACI,qCAAP;IACE,OAAO,KAAK,UAAZ;EACD,CAFM;EAIP;;AAEG;;;EACO,wCAAV;IACE,OAAO,IAAI,sEAAJ,EAAP;EACD,CAFS;;EAGZ;AAAC,CAlGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DA;AAEA;AAEA;AAEO,IAAM,qBAAqB,GAAa,EAAxC;AAOP;;AAEG;;AACH,SAAS,gBAAT,CAA0B,YAA1B,EAAqD;EACnD,OAAO,YAAY,CAAC,MAAb,CAAoB,UAAC,GAAD,EAAM,YAAN,EAAkB;IAC3C,IAAI,GAAG,CAAC,KAAJ,CAAU,0BAAc;MAAI,mBAAY,CAAC,IAAb,KAAsB,cAAc,CAApC;IAAyC,CAArE,CAAJ,EAA4E;MAC1E,GAAG,CAAC,IAAJ,CAAS,YAAT;IACD;;IACD,OAAO,GAAP;EACD,CALM,EAKJ,EALI,CAAP;AAMD;AAED;;;AACM,SAAU,sBAAV,CAAiC,OAAjC,EAAiD;EACrD,IAAM,mBAAmB,GAAI,OAAO,CAAC,mBAAR,IAA2B,sCAAQ,OAAO,CAAC,mBAAhB,CAA5B,IAAqE,EAAjG;EACA,IAAM,gBAAgB,GAAG,OAAO,CAAC,YAAjC;;EAEA,IAAI,YAAY,yCAAsB,gBAAgB,CAAC,mBAAD,CAAtC,CAAhB;;EAEA,IAAI,KAAK,CAAC,OAAN,CAAc,gBAAd,CAAJ,EAAqC;IACnC;IACA,YAAY,yCACP,YAAY,CAAC,MAAb,CAAoB,wBAAY;MACjC,uBAAgB,CAAC,KAAjB,CAAuB,2BAAe;QAAI,sBAAe,CAAC,IAAhB,KAAyB,YAAY,CAArC;MAA0C,CAApF;IAAqF,CADpF,CADO,EAKP,gBAAgB,CAAC,gBAAD,CALT,CAAZ;EAOD,CATD,MASO,IAAI,OAAO,gBAAP,KAA4B,UAAhC,EAA4C;IACjD,YAAY,GAAG,gBAAgB,CAAC,YAAD,CAA/B;IACA,YAAY,GAAG,KAAK,CAAC,OAAN,CAAc,YAAd,IAA8B,YAA9B,GAA6C,CAAC,YAAD,CAA5D;EACD,CAlBoD,CAoBrD;;;EACA,IAAM,iBAAiB,GAAG,YAAY,CAAC,GAAb,CAAiB,aAAC;IAAI,QAAC,CAAD;EAAM,CAA5B,CAA1B;EACA,IAAM,eAAe,GAAG,OAAxB;;EACA,IAAI,iBAAiB,CAAC,OAAlB,CAA0B,eAA1B,MAA+C,CAAC,CAApD,EAAuD;IACrD,YAAY,CAAC,IAAb,CAAiB,KAAjB,eAAY,sCAAS,YAAY,CAAC,MAAb,CAAoB,iBAAiB,CAAC,OAAlB,CAA0B,eAA1B,CAApB,EAAgE,CAAhE,CAAT,CAAZ;EACD;;EAED,OAAO,YAAP;AACD;AAED;;AACM,SAAU,gBAAV,CAA2B,WAA3B,EAAmD;EACvD,IAAI,qBAAqB,CAAC,OAAtB,CAA8B,WAAW,CAAC,IAA1C,MAAoD,CAAC,CAAzD,EAA4D;IAC1D;EACD;;EACD,WAAW,CAAC,SAAZ,CAAsB,4CAAtB,EAA+C,4BAA/C;EACA,qBAAqB,CAAC,IAAtB,CAA2B,WAAW,CAAC,IAAvC;EACA,+BAAc,IAAI,wBAAM,CAAC,GAAP,CAAW,4BAA0B,WAAW,CAAC,IAAjD,CAAlB;AACD;AAED;;;;;AAKG;;AACG,SAAU,iBAAV,CAA+C,OAA/C,EAAyD;EAC7D,IAAM,YAAY,GAAqB,EAAvC;EACA,sBAAsB,CAAC,OAAD,CAAtB,CAAgC,OAAhC,CAAwC,uBAAW;IACjD,YAAY,CAAC,WAAW,CAAC,IAAb,CAAZ,GAAiC,WAAjC;IACA,gBAAgB,CAAC,WAAD,CAAhB;EACD,CAHD,EAF6D,CAM7D;EACA;EACA;;EACA,kDAAwB,CAAC,YAAD,EAAe,aAAf,EAA8B,IAA9B,CAAxB;EACA,OAAO,YAAP;AACD,C;;;ACnFD;;AACA;AAYA;AAkBA;AACA;AAEA,IAAM,kBAAkB,GAAG,6DAA3B;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;;AACH;AAAA;AAAA;EAoBE;;;;;AAKG;EACH,oBAAsB,YAAtB,EAAwD,OAAxD,EAAkE;IAZlE;IACU,qBAAkC,EAAlC;IAEV;;IACU,sBAAyB,CAAzB;IASR,KAAK,QAAL,GAAgB,IAAI,YAAJ,CAAiB,OAAjB,CAAhB;IACA,KAAK,QAAL,GAAgB,OAAhB;;IAEA,IAAI,OAAO,CAAC,GAAZ,EAAiB;MACf,KAAK,IAAL,GAAY,8BAAO,CAAC,OAAO,CAAC,GAAT,CAAnB;IACD;EACF;EAED;;AAEG;EACH;;;EACO,wCAAP,UAAwB,SAAxB,EAAwC,IAAxC,EAA0D,KAA1D,EAAuE;IAAvE,iBAAuE,CACrE;;;IACA,IAAI,+CAAuB,CAAC,SAAD,CAA3B,EAAwC;MACtC,+BAAc,IAAI,wBAAM,CAAC,GAAP,CAAW,kBAAX,CAAlB;MACA;IACD;;IAED,IAAI,OAAO,GAAuB,IAAI,IAAI,IAAI,CAAC,QAA/C;;IAEA,KAAK,QAAL,CACE,KAAK,WAAL,GACG,kBADH,CACsB,SADtB,EACiC,IADjC,EAEG,IAFH,CAEQ,iBAAK;MAAI,YAAI,CAAC,aAAL,CAAmB,KAAnB,EAA0B,IAA1B;IAAsC,CAFvD,EAGG,IAHH,CAGQ,kBAAM;MACV,OAAO,GAAG,MAAV;IACD,CALH,CADF;;IASA,OAAO,OAAP;EACD,CAnBM;EAqBP;;AAEG;;;EACI,sCAAP,UAAsB,OAAtB,EAAuC,KAAvC,EAAyD,IAAzD,EAA2E,KAA3E,EAAwF;IAAxF;;IACE,IAAI,OAAO,GAAuB,IAAI,IAAI,IAAI,CAAC,QAA/C;IAEA,IAAM,aAAa,GAAG,iCAAW,CAAC,OAAD,CAAX,GAClB,KAAK,WAAL,GAAmB,gBAAnB,CAAoC,MAAM,CAAC,OAAD,CAA1C,EAAqD,KAArD,EAA4D,IAA5D,CADkB,GAElB,KAAK,WAAL,GAAmB,kBAAnB,CAAsC,OAAtC,EAA+C,IAA/C,CAFJ;;IAIA,KAAK,QAAL,CACE,aAAa,CACV,IADH,CACQ,iBAAK;MAAI,YAAI,CAAC,aAAL,CAAmB,KAAnB,EAA0B,IAA1B;IAAsC,CADvD,EAEG,IAFH,CAEQ,kBAAM;MACV,OAAO,GAAG,MAAV;IACD,CAJH,CADF;;IAQA,OAAO,OAAP;EACD,CAhBM;EAkBP;;AAEG;;;EACI,oCAAP,UAAoB,KAApB,EAAkC,IAAlC,EAAoD,KAApD,EAAiE;IAC/D;IACA,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAb,IAAkC,+CAAuB,CAAC,IAAI,CAAC,iBAAN,CAA7D,EAAuF;MACrF,+BAAc,IAAI,wBAAM,CAAC,GAAP,CAAW,kBAAX,CAAlB;MACA;IACD;;IAED,IAAI,OAAO,GAAuB,IAAI,IAAI,IAAI,CAAC,QAA/C;;IAEA,KAAK,QAAL,CACE,KAAK,aAAL,CAAmB,KAAnB,EAA0B,IAA1B,EAAgC,KAAhC,EAAuC,IAAvC,CAA4C,kBAAM;MAChD,OAAO,GAAG,MAAV;IACD,CAFD,CADF;;IAMA,OAAO,OAAP;EACD,CAhBM;EAkBP;;AAEG;;;EACI,sCAAP,UAAsB,OAAtB,EAAsC;IACpC,IAAI,CAAC,KAAK,UAAL,EAAL,EAAwB;MACtB,+BAAc,IAAI,wBAAM,CAAC,IAAP,CAAY,4CAAZ,CAAlB;MACA;IACD;;IAED,IAAI,EAAE,OAAO,OAAO,CAAC,OAAf,KAA2B,QAA7B,CAAJ,EAA4C;MAC1C,+BAAc,IAAI,wBAAM,CAAC,IAAP,CAAY,4DAAZ,CAAlB;IACD,CAFD,MAEO;MACL,KAAK,YAAL,CAAkB,OAAlB,EADK,CAEL;;;MACA,OAAO,CAAC,MAAR,CAAe;QAAE,IAAI,EAAE;MAAR,CAAf;IACD;EACF,CAbM;EAeP;;AAEG;;;EACI,8BAAP;IACE,OAAO,KAAK,IAAZ;EACD,CAFM;EAIP;;AAEG;;;EACI,kCAAP;IACE,OAAO,KAAK,QAAZ;EACD,CAFM;EAIP;;AAEG;;;EACI,oCAAP;IACE,OAAO,KAAK,WAAL,GAAmB,YAAnB,EAAP;EACD,CAFM;EAIP;;AAEG;;;EACI,6BAAP,UAAa,OAAb,EAA6B;IAA7B;;IACE,OAAO,KAAK,uBAAL,CAA6B,OAA7B,EAAsC,IAAtC,CAA2C,0BAAc;MAC9D,OAAO,KAAI,CAAC,YAAL,GACJ,KADI,CACE,OADF,EAEJ,IAFI,CAEC,4BAAgB;QAAI,qBAAc,IAAd;MAAkC,CAFvD,CAAP;IAGD,CAJM,CAAP;EAKD,CANM;EAQP;;AAEG;;;EACI,6BAAP,UAAa,OAAb,EAA6B;IAA7B;;IACE,OAAO,KAAK,KAAL,CAAW,OAAX,EAAoB,IAApB,CAAyB,kBAAM;MACpC,KAAI,CAAC,UAAL,GAAkB,OAAlB,GAA4B,KAA5B;MACA,OAAO,MAAP;IACD,CAHM,CAAP;EAID,CALM;EAOP;;AAEG;;;EACI,yCAAP;IACE,IAAI,KAAK,UAAL,MAAqB,CAAC,KAAK,aAAL,CAAmB,WAA7C,EAA0D;MACxD,KAAK,aAAL,GAAqB,iBAAiB,CAAC,KAAK,QAAN,CAAtC;IACD;EACF,CAJM;EAMP;;AAEG;;;EACI,sCAAP,UAA6C,WAA7C,EAA6E;IAC3E,IAAI;MACF,OAAQ,KAAK,aAAL,CAAmB,WAAW,CAAC,EAA/B,KAA4C,IAApD;IACD,CAFD,CAEE,OAAO,GAAP,EAAY;MACZ,+BAAc,IAAI,wBAAM,CAAC,IAAP,CAAY,iCAA+B,WAAW,CAAC,EAA3C,GAA6C,0BAAzD,CAAlB;MACA,OAAO,IAAP;IACD;EACF,CAPM;EASP;;;EACU,+CAAV,UAAkC,OAAlC,EAAoD,KAApD,EAAgE;;;IAC9D,IAAI,OAAO,GAAG,KAAd;IACA,IAAI,OAAO,GAAG,KAAd;IACA,IAAM,UAAU,GAAG,KAAK,CAAC,SAAN,IAAmB,KAAK,CAAC,SAAN,CAAgB,MAAtD;;IAEA,IAAI,UAAJ,EAAgB;MACd,OAAO,GAAG,IAAV;;;QAEA,KAAiB,sEAAU,oCAA3B,EAA2B,oBAA3B,EAA2B,oCAA3B,EAA6B;UAAxB,IAAM,EAAE,uBAAR;UACH,IAAM,SAAS,GAAG,EAAE,CAAC,SAArB;;UACA,IAAI,SAAS,IAAI,SAAS,CAAC,OAAV,KAAsB,KAAvC,EAA8C;YAC5C,OAAO,GAAG,IAAV;YACA;UACD;QACF;;;;;;;;;;;;IACF,CAf6D,CAiB9D;IACA;IACA;;;IACA,IAAM,kBAAkB,GAAG,OAAO,CAAC,MAAR,KAAmB,IAA9C;IACA,IAAM,mBAAmB,GAAI,kBAAkB,IAAI,OAAO,CAAC,MAAR,KAAmB,CAA1C,IAAiD,kBAAkB,IAAI,OAAnG;;IAEA,IAAI,mBAAJ,EAAyB;MACvB,OAAO,CAAC,MAAR,CAAc,gFACR,OAAO,IAAI;QAAE,MAAM,EAAE;MAAV,CADH,GACyB;QACrC,MAAM,EAAE,OAAO,CAAC,MAAR,IAAkB,MAAM,CAAC,OAAO,IAAI,OAAZ;MADK,CADzB,CAAd;MAIA,KAAK,cAAL,CAAoB,OAApB;IACD;EACF,CA9BS;EAgCV;;;EACU,oCAAV,UAAuB,OAAvB,EAAuC;IACrC,KAAK,WAAL,GAAmB,WAAnB,CAA+B,OAA/B;EACD,CAFS;EAIV;;;;;;;;;AASG;;;EACO,+CAAV,UAAkC,OAAlC,EAAkD;IAAlD;;IACE,OAAO,IAAI,kCAAJ,CAAgB,mBAAO;MAC5B,IAAI,MAAM,GAAW,CAArB;MACA,IAAM,IAAI,GAAW,CAArB;MAEA,IAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,IAAI,KAAI,CAAC,cAAL,IAAuB,CAA3B,EAA8B;UAC5B,aAAa,CAAC,QAAD,CAAb;UACA,OAAO,CAAC,IAAD,CAAP;QACD,CAHD,MAGO;UACL,MAAM,IAAI,IAAV;;UACA,IAAI,OAAO,IAAI,MAAM,IAAI,OAAzB,EAAkC;YAChC,aAAa,CAAC,QAAD,CAAb;YACA,OAAO,CAAC,KAAD,CAAP;UACD;QACF;MACF,CAX2B,EAWzB,IAXyB,CAA5B;IAYD,CAhBM,CAAP;EAiBD,CAlBS;EAoBV;;;EACU,mCAAV;IACE,OAAO,KAAK,QAAZ;EACD,CAFS;EAIV;;;EACU,kCAAV;IACE,OAAO,KAAK,UAAL,GAAkB,OAAlB,KAA8B,KAA9B,IAAuC,KAAK,IAAL,KAAc,SAA5D;EACD,CAFS;EAIV;;;;;;;;;;;;;AAaG;;;EACO,qCAAV,UAAwB,KAAxB,EAAsC,KAAtC,EAAqD,IAArD,EAAqE;IAArE;;IACQ;IAAA,IAAE,sBAAF;IAAA,IAAE,uCAAF;IAAA,IAAsB,2BAAtB;IAAA,IAAsB,+CAAtB;;IACN,IAAM,QAAQ,mFACT,KADS,GACJ;MACR,QAAQ,EAAE,KAAK,CAAC,QAAN,KAAmB,IAAI,IAAI,IAAI,CAAC,QAAb,GAAwB,IAAI,CAAC,QAA7B,GAAwC,6BAAK,EAAhE,CADF;MAER,SAAS,EAAE,KAAK,CAAC,SAAN,IAAmB,8CAAsB;IAF5C,CADI,CAAd;;IAMA,KAAK,mBAAL,CAAyB,QAAzB;;IACA,KAAK,0BAAL,CAAgC,QAAhC,EATmE,CAWnE;IACA;;;IACA,IAAI,UAAU,GAAG,KAAjB;;IACA,IAAI,IAAI,IAAI,IAAI,CAAC,cAAjB,EAAiC;MAC/B,UAAU,GAAG,0BAAK,CAAC,KAAN,CAAY,UAAZ,EAAwB,MAAxB,CAA+B,IAAI,CAAC,cAApC,CAAb;IACD,CAhBkE,CAkBnE;;;IACA,IAAI,MAAM,GAAG,kDAAmB,CAAe,QAAf,CAAhC,CAnBmE,CAqBnE;IACA;;IACA,IAAI,UAAJ,EAAgB;MACd;MACA,MAAM,GAAG,UAAU,CAAC,YAAX,CAAwB,QAAxB,EAAkC,IAAlC,CAAT;IACD;;IAED,OAAO,MAAM,CAAC,IAAP,CAAY,eAAG;MACpB,IAAI,GAAJ,EAAS;QACP;QACA;QACA,GAAG,CAAC,qBAAJ,GAAyB,gFACpB,GAAG,CAAC,qBADgB,GACK;UAC5B,cAAc,EAAK,sCAAS,CAAC,cAAD,CAAT,GAAyB,IAAzB,GAA8B,OAAO,cAArC,GAAmD;QAD1C,CADL,CAAzB;MAID;;MACD,IAAI,OAAO,cAAP,KAA0B,QAA1B,IAAsC,cAAc,GAAG,CAA3D,EAA8D;QAC5D,OAAO,KAAI,CAAC,eAAL,CAAqB,GAArB,EAA0B,cAA1B,EAA0C,mBAA1C,CAAP;MACD;;MACD,OAAO,GAAP;IACD,CAbM,CAAP;EAcD,CA1CS;EA4CV;;;;;;;;;AASG;;;EACO,uCAAV,UAA0B,KAA1B,EAA+C,KAA/C,EAA8D,UAA9D,EAAgF;IAC9E,IAAI,CAAC,KAAL,EAAY;MACV,OAAO,IAAP;IACD;;IAED,IAAM,UAAU,qMACX,KADW,GAEV,KAAK,CAAC,WAAN,IAAqB;MACvB,WAAW,EAAE,KAAK,CAAC,WAAN,CAAkB,GAAlB,CAAsB,aAAC;QAAI,uFACnC,CADmC,GAElC,CAAC,CAAC,IAAF,IAAU;UACZ,IAAI,EAAE,sCAAS,CAAC,CAAC,CAAC,IAAH,EAAS,KAAT,EAAgB,UAAhB;QADH,CAFwB;MAKtC,CALW;IADU,CAFX,GAUV,KAAK,CAAC,IAAN,IAAc;MAChB,IAAI,EAAE,sCAAS,CAAC,KAAK,CAAC,IAAP,EAAa,KAAb,EAAoB,UAApB;IADC,CAVJ,GAaV,KAAK,CAAC,QAAN,IAAkB;MACpB,QAAQ,EAAE,sCAAS,CAAC,KAAK,CAAC,QAAP,EAAiB,KAAjB,EAAwB,UAAxB;IADC,CAbR,GAgBV,KAAK,CAAC,KAAN,IAAe;MACjB,KAAK,EAAE,sCAAS,CAAC,KAAK,CAAC,KAAP,EAAc,KAAd,EAAqB,UAArB;IADC,CAhBL,CAAhB,CAL8E,CAyB9E;IACA;IACA;IACA;IACA;IACA;IACA;;;IACA,IAAI,KAAK,CAAC,QAAN,IAAkB,KAAK,CAAC,QAAN,CAAe,KAArC,EAA4C;MAC1C;MACA,UAAU,CAAC,QAAX,CAAoB,KAApB,GAA4B,KAAK,CAAC,QAAN,CAAe,KAA3C;IACD;;IAED,UAAU,CAAC,qBAAX,GAAgC,gFAAQ,UAAU,CAAC,qBAAnB,GAAwC;MAAE,oBAAoB,EAAE;IAAxB,CAAxC,CAAhC;IAEA,OAAO,UAAP;EACD,CAxCS;EA0CV;;;;;AAKG;;;EACO,2CAAV,UAA8B,KAA9B,EAA0C;IACxC,IAAM,OAAO,GAAG,KAAK,UAAL,EAAhB;IACQ;IAAA,IAAa,yBAAb;IAAA,IAAsB,mBAAtB;IAAA,IAA4B,2BAA5B;IAAA,IAA4B,yCAA5B;;IAER,IAAI,EAAE,iBAAiB,KAAnB,CAAJ,EAA+B;MAC7B,KAAK,CAAC,WAAN,GAAoB,iBAAiB,OAAjB,GAA2B,WAA3B,GAAyC,YAA7D;IACD;;IAED,IAAI,KAAK,CAAC,OAAN,KAAkB,SAAlB,IAA+B,OAAO,KAAK,SAA/C,EAA0D;MACxD,KAAK,CAAC,OAAN,GAAgB,OAAhB;IACD;;IAED,IAAI,KAAK,CAAC,IAAN,KAAe,SAAf,IAA4B,IAAI,KAAK,SAAzC,EAAoD;MAClD,KAAK,CAAC,IAAN,GAAa,IAAb;IACD;;IAED,IAAI,KAAK,CAAC,OAAV,EAAmB;MACjB,KAAK,CAAC,OAAN,GAAgB,kCAAQ,CAAC,KAAK,CAAC,OAAP,EAAgB,cAAhB,CAAxB;IACD;;IAED,IAAM,SAAS,GAAG,KAAK,CAAC,SAAN,IAAmB,KAAK,CAAC,SAAN,CAAgB,MAAnC,IAA6C,KAAK,CAAC,SAAN,CAAgB,MAAhB,CAAuB,CAAvB,CAA/D;;IACA,IAAI,SAAS,IAAI,SAAS,CAAC,KAA3B,EAAkC;MAChC,SAAS,CAAC,KAAV,GAAkB,kCAAQ,CAAC,SAAS,CAAC,KAAX,EAAkB,cAAlB,CAA1B;IACD;;IAED,IAAM,OAAO,GAAG,KAAK,CAAC,OAAtB;;IACA,IAAI,OAAO,IAAI,OAAO,CAAC,GAAvB,EAA4B;MAC1B,OAAO,CAAC,GAAR,GAAc,kCAAQ,CAAC,OAAO,CAAC,GAAT,EAAc,cAAd,CAAtB;IACD;EACF,CA7BS;EA+BV;;;AAGG;;;EACO,kDAAV,UAAqC,KAArC,EAAiD;IAC/C,IAAM,iBAAiB,GAAG,MAAM,CAAC,IAAP,CAAY,KAAK,aAAjB,CAA1B;;IACA,IAAI,iBAAiB,CAAC,MAAlB,GAA2B,CAA/B,EAAkC;MAChC,KAAK,CAAC,GAAN,GAAY,KAAK,CAAC,GAAN,IAAa,EAAzB;MACA,KAAK,CAAC,GAAN,CAAU,YAAV,GAAsB,sCAAQ,KAAK,CAAC,GAAN,CAAU,YAAV,IAA0B,EAAlC,EAA0C,iBAA1C,CAAtB;IACD;EACF,CANS;EAQV;;;AAGG;;;EACO,kCAAV,UAAqB,KAArB,EAAiC;IAC/B,KAAK,WAAL,GAAmB,SAAnB,CAA6B,KAA7B;EACD,CAFS;EAIV;;;;;AAKG;;;EACO,qCAAV,UAAwB,KAAxB,EAAsC,IAAtC,EAAwD,KAAxD,EAAqE;IACnE,OAAO,KAAK,aAAL,CAAmB,KAAnB,EAA0B,IAA1B,EAAgC,KAAhC,EAAuC,IAAvC,CACL,sBAAU;MACR,OAAO,UAAU,CAAC,QAAlB;IACD,CAHI,EAIL,kBAAM;MACJ,+BAAc,IAAI,wBAAM,CAAC,KAAP,CAAa,MAAb,CAAlB;MACA,OAAO,SAAP;IACD,CAPI,CAAP;EASD,CAVS;EAYV;;;;;;;;;;;;AAYG;;;EACO,qCAAV,UAAwB,KAAxB,EAAsC,IAAtC,EAAwD,KAAxD,EAAqE;IAArE,iBAAqE,CACnE;;;IACM;IAAA,IAAE,0BAAF;IAAA,IAAc,0BAAd;;IACN,IAAM,SAAS,GAAG,KAAK,YAAL,EAAlB;;IAKA,SAAS,eAAT,CAAyB,OAAzB,EAA4D,QAA5D,EAA8F;MAC5F,IAAI,SAAS,CAAC,eAAd,EAA+B;QAC7B,SAAS,CAAC,eAAV,CAA0B,OAA1B,EAAmC,QAAnC;MACD;IACF;;IAED,IAAI,CAAC,KAAK,UAAL,EAAL,EAAwB;MACtB,OAAO,kDAAmB,CAAC,IAAI,4BAAJ,CAAgB,0CAAhB,CAAD,CAA1B;IACD;;IAED,IAAM,aAAa,GAAG,KAAK,CAAC,IAAN,KAAe,aAArC,CAlBmE,CAmBnE;IACA;IACA;;IACA,IAAI,CAAC,aAAD,IAAkB,OAAO,UAAP,KAAsB,QAAxC,IAAoD,IAAI,CAAC,MAAL,KAAgB,UAAxE,EAAoF;MAClF,eAAe,CAAC,aAAD,EAAgB,OAAhB,CAAf;MACA,OAAO,kDAAmB,CACxB,IAAI,4BAAJ,CACE,sFAAoF,UAApF,GAA8F,GADhG,CADwB,CAA1B;IAKD;;IAED,OAAO,KAAK,aAAL,CAAmB,KAAnB,EAA0B,KAA1B,EAAiC,IAAjC,EACJ,IADI,CACC,oBAAQ;MACZ,IAAI,QAAQ,KAAK,IAAjB,EAAuB;QACrB,eAAe,CAAC,iBAAD,EAAoB,KAAK,CAAC,IAAN,IAAc,OAAlC,CAAf;QACA,MAAM,IAAI,4BAAJ,CAAgB,wDAAhB,CAAN;MACD;;MAED,IAAM,mBAAmB,GAAG,IAAI,IAAI,IAAI,CAAC,IAAb,IAAsB,IAAI,CAAC,IAAL,CAAsC,UAAtC,KAAqD,IAAvG;;MACA,IAAI,mBAAmB,IAAI,aAAvB,IAAwC,CAAC,UAA7C,EAAyD;QACvD,OAAO,QAAP;MACD;;MAED,IAAM,gBAAgB,GAAG,UAAU,CAAC,QAAD,EAAW,IAAX,CAAnC;MACA,OAAO,mBAAmB,CAAC,gBAAD,CAA1B;IACD,CAdI,EAeJ,IAfI,CAeC,0BAAc;MAClB,IAAI,cAAc,KAAK,IAAvB,EAA6B;QAC3B,eAAe,CAAC,aAAD,EAAgB,KAAK,CAAC,IAAN,IAAc,OAA9B,CAAf;QACA,MAAM,IAAI,4BAAJ,CAAgB,oDAAhB,CAAN;MACD;;MAED,IAAM,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,UAAf,IAA6B,KAAK,CAAC,UAAN,EAA7C;;MACA,IAAI,CAAC,aAAD,IAAkB,OAAtB,EAA+B;QAC7B,KAAI,CAAC,uBAAL,CAA6B,OAA7B,EAAsC,cAAtC;MACD;;MAED,KAAI,CAAC,UAAL,CAAgB,cAAhB;;MACA,OAAO,cAAP;IACD,CA5BI,EA6BJ,IA7BI,CA6BC,IA7BD,EA6BO,kBAAM;MAChB,IAAI,MAAM,YAAY,4BAAtB,EAAmC;QACjC,MAAM,MAAN;MACD;;MAED,KAAI,CAAC,gBAAL,CAAsB,MAAtB,EAA8B;QAC5B,IAAI,EAAE;UACJ,UAAU,EAAE;QADR,CADsB;QAI5B,iBAAiB,EAAE;MAJS,CAA9B;;MAMA,MAAM,IAAI,4BAAJ,CACJ,gIAA8H,MAD1H,CAAN;IAGD,CA3CI,CAAP;EA4CD,CA3ES;EA6EV;;AAEG;;;EACO,gCAAV,UAAsB,OAAtB,EAA6C;IAA7C;;IACE,KAAK,cAAL,IAAuB,CAAvB;IACA,KAAK,OAAO,CAAC,IAAR,CACH,iBAAK;MACH,KAAI,CAAC,cAAL,IAAuB,CAAvB;MACA,OAAO,KAAP;IACD,CAJE,EAKH,kBAAM;MACJ,KAAI,CAAC,cAAL,IAAuB,CAAvB;MACA,OAAO,MAAP;IACD,CARE,CAAL;EAUD,CAZS;;EAaZ;AAAC,CAxiBD;;;AA0iBA;;AAEG;;AACH,SAAS,mBAAT,CAA6B,EAA7B,EAAyE;EACvE,IAAM,OAAO,GAAG,4DAAhB;;EACA,IAAI,gCAAU,CAAC,EAAD,CAAd,EAAoB;IAClB,OAAO,EAAE,CAAC,IAAH,CACL,iBAAK;MACH,IAAI,EAAE,mCAAa,CAAC,KAAD,CAAb,IAAwB,KAAK,KAAK,IAApC,CAAJ,EAA+C;QAC7C,MAAM,IAAI,4BAAJ,CAAgB,OAAhB,CAAN;MACD;;MACD,OAAO,KAAP;IACD,CANI,EAOL,aAAC;MACC,MAAM,IAAI,4BAAJ,CAAgB,8BAA4B,CAA5C,CAAN;IACD,CATI,CAAP;EAWD,CAZD,MAYO,IAAI,EAAE,mCAAa,CAAC,EAAD,CAAb,IAAqB,EAAE,KAAK,IAA9B,CAAJ,EAAyC;IAC9C,MAAM,IAAI,4BAAJ,CAAgB,OAAhB,CAAN;EACD;;EACD,OAAO,EAAP;AACD,C;;;;;;;;ACloBD;AAAA;AAAA;AAAA;AAAA;AAEA;;AAEG;;AACH;AAAA;AAAA;EAeE,iBAAmB,OAAnB,EAAuE;IAbhE,cAAiB,CAAjB;IAEA,WAAc,mEAAK,EAAnB;IAIA,gBAAoB,CAApB;IACA,cAAwB,IAAxB;IAGA,YAAgB,IAAhB;IACA,sBAA0B,KAA1B,CAEgE,CACrE;;IACA,IAAM,YAAY,GAAG,gFAAkB,EAAvC;IACA,KAAK,SAAL,GAAiB,YAAjB;IACA,KAAK,OAAL,GAAe,YAAf;;IACA,IAAI,OAAJ,EAAa;MACX,KAAK,MAAL,CAAY,OAAZ;IACD;EACF;EAED;EACA;;;EACO,2BAAP,UAAc,OAAd,EAA0C;IAA5B;MAAA;IAA4B;;IACxC,IAAI,OAAO,CAAC,IAAZ,EAAkB;MAChB,IAAI,CAAC,KAAK,SAAN,IAAmB,OAAO,CAAC,IAAR,CAAa,UAApC,EAAgD;QAC9C,KAAK,SAAL,GAAiB,OAAO,CAAC,IAAR,CAAa,UAA9B;MACD;;MAED,IAAI,CAAC,KAAK,GAAN,IAAa,CAAC,OAAO,CAAC,GAA1B,EAA+B;QAC7B,KAAK,GAAL,GAAW,OAAO,CAAC,IAAR,CAAa,EAAb,IAAmB,OAAO,CAAC,IAAR,CAAa,KAAhC,IAAyC,OAAO,CAAC,IAAR,CAAa,QAAjE;MACD;IACF;;IAED,KAAK,SAAL,GAAiB,OAAO,CAAC,SAAR,IAAqB,gFAAkB,EAAxD;;IACA,IAAI,OAAO,CAAC,cAAZ,EAA4B;MAC1B,KAAK,cAAL,GAAsB,OAAO,CAAC,cAA9B;IACD;;IACD,IAAI,OAAO,CAAC,GAAZ,EAAiB;MACf;MACA,KAAK,GAAL,GAAW,OAAO,CAAC,GAAR,CAAY,MAAZ,KAAuB,EAAvB,GAA4B,OAAO,CAAC,GAApC,GAA0C,mEAAK,EAA1D;IACD;;IACD,IAAI,OAAO,CAAC,IAAR,KAAiB,SAArB,EAAgC;MAC9B,KAAK,IAAL,GAAY,OAAO,CAAC,IAApB;IACD;;IACD,IAAI,CAAC,KAAK,GAAN,IAAa,OAAO,CAAC,GAAzB,EAA8B;MAC5B,KAAK,GAAL,GAAW,KAAG,OAAO,CAAC,GAAtB;IACD;;IACD,IAAI,OAAO,OAAO,CAAC,OAAf,KAA2B,QAA/B,EAAyC;MACvC,KAAK,OAAL,GAAe,OAAO,CAAC,OAAvB;IACD;;IACD,IAAI,KAAK,cAAT,EAAyB;MACvB,KAAK,QAAL,GAAgB,SAAhB;IACD,CAFD,MAEO,IAAI,OAAO,OAAO,CAAC,QAAf,KAA4B,QAAhC,EAA0C;MAC/C,KAAK,QAAL,GAAgB,OAAO,CAAC,QAAxB;IACD,CAFM,MAEA;MACL,IAAM,QAAQ,GAAG,KAAK,SAAL,GAAiB,KAAK,OAAvC;MACA,KAAK,QAAL,GAAgB,QAAQ,IAAI,CAAZ,GAAgB,QAAhB,GAA2B,CAA3C;IACD;;IACD,IAAI,OAAO,CAAC,OAAZ,EAAqB;MACnB,KAAK,OAAL,GAAe,OAAO,CAAC,OAAvB;IACD;;IACD,IAAI,OAAO,CAAC,WAAZ,EAAyB;MACvB,KAAK,WAAL,GAAmB,OAAO,CAAC,WAA3B;IACD;;IACD,IAAI,CAAC,KAAK,SAAN,IAAmB,OAAO,CAAC,SAA/B,EAA0C;MACxC,KAAK,SAAL,GAAiB,OAAO,CAAC,SAAzB;IACD;;IACD,IAAI,CAAC,KAAK,SAAN,IAAmB,OAAO,CAAC,SAA/B,EAA0C;MACxC,KAAK,SAAL,GAAiB,OAAO,CAAC,SAAzB;IACD;;IACD,IAAI,OAAO,OAAO,CAAC,MAAf,KAA0B,QAA9B,EAAwC;MACtC,KAAK,MAAL,GAAc,OAAO,CAAC,MAAtB;IACD;;IACD,IAAI,OAAO,CAAC,MAAZ,EAAoB;MAClB,KAAK,MAAL,GAAc,OAAO,CAAC,MAAtB;IACD;EACF,CAtDM;EAwDP;;;EACO,0BAAP,UAAa,MAAb,EAAkD;IAChD,IAAI,MAAJ,EAAY;MACV,KAAK,MAAL,CAAY;QAAE,MAAM;MAAR,CAAZ;IACD,CAFD,MAEO,IAAI,KAAK,MAAL,KAAgB,IAApB,EAA0B;MAC/B,KAAK,MAAL,CAAY;QAAE,MAAM,EAAE;MAAV,CAAZ;IACD,CAFM,MAEA;MACL,KAAK,MAAL;IACD;EACF,CARM;EAUP;;;EACO,2BAAP;IAgBE,OAAO,+EAAiB,CAAC;MACvB,GAAG,EAAE,KAAG,KAAK,GADU;MAEvB,IAAI,EAAE,KAAK,IAFY;MAGvB;MACA,OAAO,EAAE,IAAI,IAAJ,CAAS,KAAK,OAAL,GAAe,IAAxB,EAA8B,WAA9B,EAJc;MAKvB,SAAS,EAAE,IAAI,IAAJ,CAAS,KAAK,SAAL,GAAiB,IAA1B,EAAgC,WAAhC,EALY;MAMvB,MAAM,EAAE,KAAK,MANU;MAOvB,MAAM,EAAE,KAAK,MAPU;MAQvB,GAAG,EAAE,OAAO,KAAK,GAAZ,KAAoB,QAApB,IAAgC,OAAO,KAAK,GAAZ,KAAoB,QAApD,GAA+D,KAAG,KAAK,GAAvE,GAA+E,SAR7D;MASvB,QAAQ,EAAE,KAAK,QATQ;MAUvB,KAAK,EAAE;QACL,OAAO,EAAE,KAAK,OADT;QAEL,WAAW,EAAE,KAAK,WAFb;QAGL,UAAU,EAAE,KAAK,SAHZ;QAIL,UAAU,EAAE,KAAK;MAJZ;IAVgB,CAAD,CAAxB;EAiBD,CAjCM;;EAkCT;AAAC,CAjID;;;;;;;;;;ACNA;AAAA;;;;;;;;;;;;AAYG;;AAIH;AACO,IAAM,cAAc,GAAG,OAAO,gBAAP,KAA4B,WAA5B,GAA0C,IAA1C,GAAiD,gBAAxE,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAjBP;;;;;;;;;;;;AAYG;;AAIH;AACO,IAAM,cAAc,GAAG,OAAO,gBAAP,KAA4B,WAA5B,GAA0C,IAA1C,GAAiD,gBAAxE,C;;;;;;;;;ACKP;AAUA;AACA;AACA;AAEA;;;;;;;AAOG;;AACI,IAAM,WAAW,GAAG,CAApB;AAEP;;;AAGG;;AACH,IAAM,mBAAmB,GAAG,GAA5B;AA2CA;;AAEG;;AACH;AAAA;AAAA;EAOE;;;;;;;AAOG;EACH,aAAmB,MAAnB,EAAoC,KAApC,EAAiF,QAAjF,EAA+G;IAA3E;MAAA,YAAmB,0BAAnB;IAA0B;;IAAmB;MAAA;IAA8B;;IAA9B;IAdjF;;IACiB,cAAkB,CAAC,EAAD,CAAlB;IAcf,KAAK,WAAL,GAAmB,KAAnB,GAA2B,KAA3B;;IACA,IAAI,MAAJ,EAAY;MACV,KAAK,UAAL,CAAgB,MAAhB;IACD;EACF;EAED;;AAEG;;;EACI,4BAAP,UAAmB,OAAnB,EAAkC;IAChC,OAAO,KAAK,QAAL,GAAgB,OAAvB;EACD,CAFM;EAIP;;AAEG;;;EACI,2BAAP,UAAkB,MAAlB,EAAiC;IAC/B,IAAM,GAAG,GAAG,KAAK,WAAL,EAAZ;IACA,GAAG,CAAC,MAAJ,GAAa,MAAb;;IACA,IAAI,MAAM,IAAI,MAAM,CAAC,iBAArB,EAAwC;MACtC,MAAM,CAAC,iBAAP;IACD;EACF,CANM;EAQP;;AAEG;;;EACI,0BAAP;IACE;IACA,IAAM,KAAK,GAAG,0BAAK,CAAC,KAAN,CAAY,KAAK,QAAL,EAAZ,CAAd;IACA,KAAK,QAAL,GAAgB,IAAhB,CAAqB;MACnB,MAAM,EAAE,KAAK,SAAL,EADW;MAEnB,KAAK;IAFc,CAArB;IAIA,OAAO,KAAP;EACD,CARM;EAUP;;AAEG;;;EACI,yBAAP;IACE,IAAI,KAAK,QAAL,GAAgB,MAAhB,IAA0B,CAA9B,EAAiC,OAAO,KAAP;IACjC,OAAO,CAAC,CAAC,KAAK,QAAL,GAAgB,GAAhB,EAAT;EACD,CAHM;EAKP;;AAEG;;;EACI,0BAAP,UAAiB,QAAjB,EAAiD;IAC/C,IAAM,KAAK,GAAG,KAAK,SAAL,EAAd;;IACA,IAAI;MACF,QAAQ,CAAC,KAAD,CAAR;IACD,CAFD,SAEU;MACR,KAAK,QAAL;IACD;EACF,CAPM;EASP;;AAEG;;;EACI,0BAAP;IACE,OAAO,KAAK,WAAL,GAAmB,MAA1B;EACD,CAFM;EAIP;;;EACO,yBAAP;IACE,OAAO,KAAK,WAAL,GAAmB,KAA1B;EACD,CAFM;EAIP;;;EACO,yBAAP;IACE,OAAO,KAAK,MAAZ;EACD,CAFM;EAIP;;;EACO,4BAAP;IACE,OAAO,KAAK,MAAL,CAAY,KAAK,MAAL,CAAY,MAAZ,GAAqB,CAAjC,CAAP;EACD,CAFM;EAIP;;AAEG;EACH;;;EACO,iCAAP,UAAwB,SAAxB,EAAwC,IAAxC,EAAwD;IACtD,IAAM,OAAO,GAAI,KAAK,YAAL,GAAoB,IAAI,IAAI,IAAI,CAAC,QAAb,GAAwB,IAAI,CAAC,QAA7B,GAAwC,6BAAK,EAAlF;IACA,IAAI,SAAS,GAAG,IAAhB,CAFsD,CAItD;IACA;IACA;IACA;;IACA,IAAI,CAAC,IAAL,EAAW;MACT,IAAI,kBAAkB,SAAtB;;MACA,IAAI;QACF,MAAM,IAAI,KAAJ,CAAU,2BAAV,CAAN;MACD,CAFD,CAEE,OAAO,SAAP,EAAkB;QAClB,kBAAkB,GAAG,SAArB;MACD;;MACD,SAAS,GAAG;QACV,iBAAiB,EAAE,SADT;QAEV,kBAAkB;MAFR,CAAZ;IAID;;IAED,KAAK,aAAL,CAAmB,kBAAnB,EAAuC,SAAvC,EAAgD,gFAC3C,SAD2C,GAClC;MACZ,QAAQ,EAAE;IADE,CADkC,CAAhD;;IAIA,OAAO,OAAP;EACD,CA1BM;EA4BP;;AAEG;;;EACI,+BAAP,UAAsB,OAAtB,EAAuC,KAAvC,EAAyD,IAAzD,EAAyE;IACvE,IAAM,OAAO,GAAI,KAAK,YAAL,GAAoB,IAAI,IAAI,IAAI,CAAC,QAAb,GAAwB,IAAI,CAAC,QAA7B,GAAwC,6BAAK,EAAlF;IACA,IAAI,SAAS,GAAG,IAAhB,CAFuE,CAIvE;IACA;IACA;IACA;;IACA,IAAI,CAAC,IAAL,EAAW;MACT,IAAI,kBAAkB,SAAtB;;MACA,IAAI;QACF,MAAM,IAAI,KAAJ,CAAU,OAAV,CAAN;MACD,CAFD,CAEE,OAAO,SAAP,EAAkB;QAClB,kBAAkB,GAAG,SAArB;MACD;;MACD,SAAS,GAAG;QACV,iBAAiB,EAAE,OADT;QAEV,kBAAkB;MAFR,CAAZ;IAID;;IAED,KAAK,aAAL,CAAmB,gBAAnB,EAAqC,OAArC,EAA8C,KAA9C,EAAmD,gFAC9C,SAD8C,GACrC;MACZ,QAAQ,EAAE;IADE,CADqC,CAAnD;;IAIA,OAAO,OAAP;EACD,CA1BM;EA4BP;;AAEG;;;EACI,6BAAP,UAAoB,KAApB,EAAkC,IAAlC,EAAkD;IAChD,IAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,QAAb,GAAwB,IAAI,CAAC,QAA7B,GAAwC,6BAAK,EAA7D;;IACA,IAAI,KAAK,CAAC,IAAN,KAAe,aAAnB,EAAkC;MAChC,KAAK,YAAL,GAAoB,OAApB;IACD;;IAED,KAAK,aAAL,CAAmB,cAAnB,EAAmC,KAAnC,EAAwC,gFACnC,IADmC,GAC/B;MACP,QAAQ,EAAE;IADH,CAD+B,CAAxC;;IAIA,OAAO,OAAP;EACD,CAXM;EAaP;;AAEG;;;EACI,4BAAP;IACE,OAAO,KAAK,YAAZ;EACD,CAFM;EAIP;;AAEG;;;EACI,8BAAP,UAAqB,UAArB,EAA6C,IAA7C,EAAkE;IAC1D;IAAA,IAAE,gBAAF;IAAA,IAAS,kBAAT;;IAEN,IAAI,CAAC,KAAD,IAAU,CAAC,MAAf,EAAuB,OAHyC,CAKhE;;IACM;IAAA,IAAE,wBAAF;IAAA,IAAE,4CAAF;IAAA,IAA2B,sBAA3B;IAAA,IAA2B,yDAA3B;;IAGN,IAAI,cAAc,IAAI,CAAtB,EAAyB;IAEzB,IAAM,SAAS,GAAG,8CAAsB,EAAxC;;IACA,IAAM,gBAAgB;MAAK,SAAS;IAAd,GAAmB,UAAnB,CAAtB;;IACA,IAAM,eAAe,GAAG,gBAAgB,GACnC,wCAAc,CAAC;MAAM,uBAAgB,CAAC,gBAAD,EAAhB,IAAgB,CAAhB;IAAwC,CAA/C,CADqB,GAEpC,gBAFJ;IAIA,IAAI,eAAe,KAAK,IAAxB,EAA8B;IAE9B,KAAK,CAAC,aAAN,CAAoB,eAApB,EAAqC,cAArC;EACD,CApBM;EAsBP;;AAEG;;;EACI,wBAAP,UAAe,IAAf,EAAgC;IAC9B,IAAM,KAAK,GAAG,KAAK,QAAL,EAAd;IACA,IAAI,KAAJ,EAAW,KAAK,CAAC,OAAN,CAAc,IAAd;EACZ,CAHM;EAKP;;AAEG;;;EACI,wBAAP,UAAe,IAAf,EAAiD;IAC/C,IAAM,KAAK,GAAG,KAAK,QAAL,EAAd;IACA,IAAI,KAAJ,EAAW,KAAK,CAAC,OAAN,CAAc,IAAd;EACZ,CAHM;EAKP;;AAEG;;;EACI,0BAAP,UAAiB,MAAjB,EAA+B;IAC7B,IAAM,KAAK,GAAG,KAAK,QAAL,EAAd;IACA,IAAI,KAAJ,EAAW,KAAK,CAAC,SAAN,CAAgB,MAAhB;EACZ,CAHM;EAKP;;AAEG;;;EACI,uBAAP,UAAc,GAAd,EAA2B,KAA3B,EAA2C;IACzC,IAAM,KAAK,GAAG,KAAK,QAAL,EAAd;IACA,IAAI,KAAJ,EAAW,KAAK,CAAC,MAAN,CAAa,GAAb,EAAkB,KAAlB;EACZ,CAHM;EAKP;;AAEG;;;EACI,yBAAP,UAAgB,GAAhB,EAA6B,KAA7B,EAAyC;IACvC,IAAM,KAAK,GAAG,KAAK,QAAL,EAAd;IACA,IAAI,KAAJ,EAAW,KAAK,CAAC,QAAN,CAAe,GAAf,EAAoB,KAApB;EACZ,CAHM;EAKP;;AAEG;EACH;;;EACO,2BAAP,UAAkB,IAAlB,EAAgC,OAAhC,EAAsE;IACpE,IAAM,KAAK,GAAG,KAAK,QAAL,EAAd;IACA,IAAI,KAAJ,EAAW,KAAK,CAAC,UAAN,CAAiB,IAAjB,EAAuB,OAAvB;EACZ,CAHM;EAKP;;AAEG;;;EACI,+BAAP,UAAsB,QAAtB,EAAsD;IAC9C;IAAA,IAAE,gBAAF;IAAA,IAAS,kBAAT;;IACN,IAAI,KAAK,IAAI,MAAb,EAAqB;MACnB,QAAQ,CAAC,KAAD,CAAR;IACD;EACF,CALM;EAOP;;AAEG;;;EACI,oBAAP,UAAW,QAAX,EAAuC;IACrC,IAAM,MAAM,GAAG,QAAQ,CAAC,IAAD,CAAvB;;IACA,IAAI;MACF,QAAQ,CAAC,IAAD,CAAR;IACD,CAFD,SAEU;MACR,QAAQ,CAAC,MAAD,CAAR;IACD;EACF,CAPM;EASP;;AAEG;;;EACI,+BAAP,UAA6C,WAA7C,EAA6E;IAC3E,IAAM,MAAM,GAAG,KAAK,SAAL,EAAf;IACA,IAAI,CAAC,MAAL,EAAa,OAAO,IAAP;;IACb,IAAI;MACF,OAAO,MAAM,CAAC,cAAP,CAAsB,WAAtB,CAAP;IACD,CAFD,CAEE,OAAO,GAAP,EAAY;MACZ,cAAc,IAAI,wBAAM,CAAC,IAAP,CAAY,iCAA+B,WAAW,CAAC,EAA3C,GAA6C,uBAAzD,CAAlB;MACA,OAAO,IAAP;IACD;EACF,CATM;EAWP;;AAEG;;;EACI,0BAAP,UAAiB,OAAjB,EAAqC;IACnC,OAAO,KAAK,oBAAL,CAA0B,WAA1B,EAAuC,OAAvC,CAAP;EACD,CAFM;EAIP;;AAEG;;;EACI,iCAAP,UAAwB,OAAxB,EAAqD,qBAArD,EAAkG;IAChG,OAAO,KAAK,oBAAL,CAA0B,kBAA1B,EAA8C,OAA9C,EAAuD,qBAAvD,CAAP;EACD,CAFM;EAIP;;AAEG;;;EACI,6BAAP;IACE,OAAO,KAAK,oBAAL,CAAqD,cAArD,CAAP;EACD,CAFM;EAIP;;AAEG;;;EACI,+BAAP,UAAsB,UAAtB,EAAiD;IAA3B;MAAA;IAA2B,EAC/C;;;IACA,IAAI,UAAJ,EAAgB;MACd,OAAO,KAAK,UAAL,EAAP;IACD,CAJ8C,CAM/C;;;IACA,KAAK,kBAAL;EACD,CARM;EAUP;;AAEG;;;EACI,2BAAP;IACE,IAAM,KAAK,GAAG,KAAK,WAAL,EAAd;IACA,IAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,KAA7B;IACA,IAAM,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,UAAN,EAAzB;;IACA,IAAI,OAAJ,EAAa;MACX,OAAO,CAAC,KAAR;IACD;;IACD,KAAK,kBAAL,GAPF,CASE;;;IACA,IAAI,KAAJ,EAAW;MACT,KAAK,CAAC,UAAN;IACD;EACF,CAbM;EAeP;;AAEG;;;EACI,6BAAP,UAAoB,OAApB,EAA4C;IACpC;IAAA,IAAE,gBAAF;IAAA,IAAS,kBAAT;;IACA;IAAA,IAAE,oBAAF;IAAA,IAAW,4BAAX,CAFoC,CAI1C;;;IACA,IAAM,MAAM,GAAG,6CAAe,EAA9B;IACQ;IAER,IAAM,OAAO,GAAG,IAAI,8BAAJ,CAAW;MACzB,OAAO,SADkB;MAEzB,WAAW;IAFc,GAGrB,KAAK,IAAI;MAAE,IAAI,EAAE,KAAK,CAAC,OAAN;IAAR,CAHY,GAIrB,SAAS,IAAI;MAAE,SAAS;IAAX,CAJQ,GAKtB,OALsB,CAAX,CAAhB;;IAQA,IAAI,KAAJ,EAAW;MACT;MACA,IAAM,cAAc,GAAG,KAAK,CAAC,UAAN,IAAoB,KAAK,CAAC,UAAN,EAA3C;;MACA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAf,KAA0B,IAAhD,EAAsD;QACpD,cAAc,CAAC,MAAf,CAAsB;UAAE,MAAM,EAAE;QAAV,CAAtB;MACD;;MACD,KAAK,UAAL,GANS,CAQT;;MACA,KAAK,CAAC,UAAN,CAAiB,OAAjB;IACD;;IAED,OAAO,OAAP;EACD,CA7BM;EA+BP;;AAEG;;;EACK,mCAAR;IACQ;IAAA,IAAE,gBAAF;IAAA,IAAS,kBAAT;;IACN,IAAI,CAAC,KAAL,EAAY;IAEZ,IAAM,OAAO,GAAG,KAAK,CAAC,UAAN,IAAoB,KAAK,CAAC,UAAN,EAApC;;IACA,IAAI,OAAJ,EAAa;MACX,IAAI,MAAM,IAAI,MAAM,CAAC,cAArB,EAAqC;QACnC,MAAM,CAAC,cAAP,CAAsB,OAAtB;MACD;IACF;EACF,CAVO;EAYR;;;;;AAKG;EACH;;;EACQ,8BAAR,UAA8C,MAA9C,EAAuD;;;IAAE;;SAAA,U,EAAA,qB,EAAA,I,EAAc;MAAd;;;IACjD;IAAA,IAAE,gBAAF;IAAA,IAAS,kBAAT;;IACN,IAAI,MAAM,IAAI,MAAM,CAAC,MAAD,CAApB,EAA8B;MAC5B;MACA,MAAC,MAAD,EAAgB,MAAhB,EAAuB,KAAvB,CAAuB,EAAvB,EAAuB,sCAAI,IAAJ,EAAQ,CAAE,KAAF,CAAR,CAAvB;IACD;EACF,CANO;EAQR;;AAEG;EACH;EACA;;;EACQ,qCAAR,UAAgC,MAAhC,EAA8C;IAAE;;SAAA,U,EAAA,qB,EAAA,I,EAAc;MAAd;;;IAC9C,IAAM,OAAO,GAAG,cAAc,EAA9B;IACA,IAAM,MAAM,GAAG,OAAO,CAAC,UAAvB;;IACA,IAAI,MAAM,IAAI,MAAM,CAAC,UAAjB,IAA+B,OAAO,MAAM,CAAC,UAAP,CAAkB,MAAlB,CAAP,KAAqC,UAAxE,EAAoF;MAClF,OAAO,MAAM,CAAC,UAAP,CAAkB,MAAlB,EAA0B,KAA1B,CAAgC,IAAhC,EAAsC,IAAtC,CAAP;IACD;;IACD,cAAc,IAAI,wBAAM,CAAC,IAAP,CAAY,sBAAoB,MAApB,GAA0B,oCAAtC,CAAlB;EACD,CAPO;;EAQV;AAAC,CApaD;;;AAsaA;;;;;;AAMI;;AACE,SAAU,cAAV,GAAwB;EAC5B,IAAM,OAAO,GAAG,6CAAe,EAA/B;EACA,OAAO,CAAC,UAAR,GAAqB,OAAO,CAAC,UAAR,IAAsB;IACzC,UAAU,EAAE,EAD6B;IAEzC,GAAG,EAAE;EAFoC,CAA3C;EAIA,OAAO,OAAP;AACD;AAED;;;;AAIG;;AACG,SAAU,QAAV,CAAmB,GAAnB,EAA2B;EAC/B,IAAM,QAAQ,GAAG,cAAc,EAA/B;EACA,IAAM,MAAM,GAAG,iBAAiB,CAAC,QAAD,CAAhC;EACA,eAAe,CAAC,QAAD,EAAW,GAAX,CAAf;EACA,OAAO,MAAP;AACD;AAED;;;;;;AAMG;;AACG,SAAU,aAAV,GAAuB;EAC3B;EACA,IAAM,QAAQ,GAAG,cAAc,EAA/B,CAF2B,CAI3B;;EACA,IAAI,CAAC,eAAe,CAAC,QAAD,CAAhB,IAA8B,iBAAiB,CAAC,QAAD,CAAjB,CAA4B,WAA5B,CAAwC,WAAxC,CAAlC,EAAwF;IACtF,eAAe,CAAC,QAAD,EAAW,IAAI,OAAJ,EAAX,CAAf;EACD,CAP0B,CAS3B;;;EACA,IAAI,iCAAS,EAAb,EAAiB;IACf,OAAO,sBAAsB,CAAC,QAAD,CAA7B;EACD,CAZ0B,CAa3B;;;EACA,OAAO,iBAAiB,CAAC,QAAD,CAAxB;AACD;AAED;;;;AAIG;AACH;;AACM,SAAU,eAAV,GAAyB;EAC7B,cAAc,IAAI,wBAAM,CAAC,IAAP,CAAY,mFAAZ,CAAlB;;EAEA,IAAM,MAAM,GAAG,cAAc,GAAG,UAAhC;;EAEA,OAAO,MAAM,IAAI,MAAM,CAAC,UAAjB,IAA+B,MAAM,CAAC,UAAP,CAAkB,MAAjD,IAA2D,MAAM,CAAC,UAAP,CAAkB,MAAlB,CAAyB,MAA3F;AACD;AAED;;;AAGG;;AACH,SAAS,sBAAT,CAAgC,QAAhC,EAAiD;EAC/C,IAAI;IACF,IAAM,MAAM,GAAG,cAAc,GAAG,UAAhC;;IACA,IAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,UAAjB,IAA+B,MAAM,CAAC,UAAP,CAAkB,MAAjD,IAA2D,MAAM,CAAC,UAAP,CAAkB,MAAlB,CAAyB,MAAzG,CAFE,CAIF;;IACA,IAAI,CAAC,YAAL,EAAmB;MACjB,OAAO,iBAAiB,CAAC,QAAD,CAAxB;IACD,CAPC,CASF;;;IACA,IAAI,CAAC,eAAe,CAAC,YAAD,CAAhB,IAAkC,iBAAiB,CAAC,YAAD,CAAjB,CAAgC,WAAhC,CAA4C,WAA5C,CAAtC,EAAgG;MAC9F,IAAM,mBAAmB,GAAG,iBAAiB,CAAC,QAAD,CAAjB,CAA4B,WAA5B,EAA5B;MACA,eAAe,CAAC,YAAD,EAAe,IAAI,OAAJ,CAAQ,mBAAmB,CAAC,MAA5B,EAAoC,0BAAK,CAAC,KAAN,CAAY,mBAAmB,CAAC,KAAhC,CAApC,CAAf,CAAf;IACD,CAbC,CAeF;;;IACA,OAAO,iBAAiB,CAAC,YAAD,CAAxB;EACD,CAjBD,CAiBE,OAAO,GAAP,EAAY;IACZ;IACA,OAAO,iBAAiB,CAAC,QAAD,CAAxB;EACD;AACF;AAED;;;AAGG;;;AACH,SAAS,eAAT,CAAyB,OAAzB,EAAyC;EACvC,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,UAAnB,IAAiC,OAAO,CAAC,UAAR,CAAmB,GAAtD,CAAR;AACD;AAED;;;;;AAKG;;;AACG,SAAU,iBAAV,CAA4B,OAA5B,EAA4C;EAChD,OAAO,gDAAkB,CAAM,KAAN,EAAa;IAAM;EAAS,CAA5B,EAA8B,OAA9B,CAAzB;AACD;AAED;;;;;AAKG;;AACG,SAAU,eAAV,CAA0B,OAA1B,EAA4C,GAA5C,EAAoD;EACxD,IAAI,CAAC,OAAL,EAAc,OAAO,KAAP;;EACd,IAAM,UAAU,GAAI,OAAO,CAAC,UAAR,GAAqB,OAAO,CAAC,UAAR,IAAsB,EAA/D;;EACA,UAAU,CAAC,GAAX,GAAiB,GAAjB;EACA,OAAO,IAAP;AACD,C;;;;;;;;;;;;;;;;;;;;;;;;;AZjoBD;AAeA;;;;AAIG;AACH;;AACA,SAAS,SAAT,CAAsB,MAAtB,EAAoC;EAAE;;OAAA,U,EAAA,qB,EAAA,I,EAAc;IAAd;;;EACpC,IAAM,GAAG,GAAG,yEAAa,EAAzB;;EACA,IAAI,GAAG,IAAI,GAAG,CAAC,MAAD,CAAd,EAAqC;IACnC;IACA,OAAQ,GAAG,CAAC,MAAD,CAAH,CAAwB,KAAxB,MAAG,+DAAiC,IAAjC,CAAH,CAAR;EACD;;EACD,MAAM,IAAI,KAAJ,CAAU,uBAAqB,MAArB,GAA2B,sDAArC,CAAN;AACD;AAED;;;;;AAKG;AACH;;;AACM,SAAU,gBAAV,CAA2B,SAA3B,EAA2C,cAA3C,EAA0E;EAC9E,IAAM,kBAAkB,GAAG,IAAI,KAAJ,CAAU,2BAAV,CAA3B;EAEA,OAAO,SAAS,CAAC,kBAAD,EAAqB,SAArB,EAAgC;IAC9C,cAAc,gBADgC;IAE9C,iBAAiB,EAAE,SAF2B;IAG9C,kBAAkB;EAH4B,CAAhC,CAAhB;AAKD;AAED;;;;;;AAMG;;AACG,SAAU,cAAV,CAAyB,OAAzB,EAA0C,cAA1C,EAAoF;EACxF,IAAM,kBAAkB,GAAG,IAAI,KAAJ,CAAU,OAAV,CAA3B,CADwF,CAGxF;EACA;;EACA,IAAM,KAAK,GAAG,OAAO,cAAP,KAA0B,QAA1B,GAAqC,cAArC,GAAsD,SAApE;EACA,IAAM,OAAO,GAAG,OAAO,cAAP,KAA0B,QAA1B,GAAqC;IAAE,cAAc;EAAhB,CAArC,GAA0D,SAA1E;EAEA,OAAO,SAAS,CAAC,gBAAD,EAAmB,OAAnB,EAA4B,KAA5B,EAAiC;IAC/C,iBAAiB,EAAE,OAD4B;IAE/C,kBAAkB;EAF6B,GAG5C,OAH4C,CAAjC,CAAhB;AAKD;AAED;;;;;AAKG;;AACG,SAAU,YAAV,CAAuB,KAAvB,EAAmC;EACvC,OAAO,SAAS,CAAC,cAAD,EAAiB,KAAjB,CAAhB;AACD;AAED;;;AAGG;;AACG,SAAU,cAAV,CAAyB,QAAzB,EAAyD;EAC7D,SAAS,CAAO,gBAAP,EAAyB,QAAzB,CAAT;AACD;AAED;;;;;;;AAOG;;AACG,SAAU,aAAV,CAAwB,UAAxB,EAA8C;EAClD,SAAS,CAAO,eAAP,EAAwB,UAAxB,CAAT;AACD;AAED;;;;AAIG;AACH;;AACM,SAAU,UAAV,CAAqB,IAArB,EAAmC,OAAnC,EAAyE;EAC7E,SAAS,CAAO,YAAP,EAAqB,IAArB,EAA2B,OAA3B,CAAT;AACD;AAED;;;AAGG;;AACG,SAAU,SAAV,CAAoB,MAApB,EAAkC;EACtC,SAAS,CAAO,WAAP,EAAoB,MAApB,CAAT;AACD;AAED;;;AAGG;;AACG,SAAU,OAAV,CAAkB,IAAlB,EAAoD;EACxD,SAAS,CAAO,SAAP,EAAkB,IAAlB,CAAT;AACD;AAED;;;;AAIG;;AACG,SAAU,QAAV,CAAmB,GAAnB,EAAgC,KAAhC,EAA4C;EAChD,SAAS,CAAO,UAAP,EAAmB,GAAnB,EAAwB,KAAxB,CAAT;AACD;AAED;;;;;;;AAOG;;AACG,SAAU,MAAV,CAAiB,GAAjB,EAA8B,KAA9B,EAA8C;EAClD,SAAS,CAAO,QAAP,EAAiB,GAAjB,EAAsB,KAAtB,CAAT;AACD;AAED;;;;AAIG;;AACG,SAAU,OAAV,CAAkB,IAAlB,EAAmC;EACvC,SAAS,CAAO,SAAP,EAAkB,IAAlB,CAAT;AACD;AAED;;;;;;;;;;;;AAYG;;AACG,SAAU,SAAV,CAAoB,QAApB,EAAoD;EACxD,SAAS,CAAO,WAAP,EAAoB,QAApB,CAAT;AACD;AAED;;;;;;;;;AASG;AACH;;AACM,SAAU,aAAV,CAAwB,MAAxB,EAAsC;EAAE;;OAAA,U,EAAA,qB,EAAA,I,EAAc;IAAd;;;EAC5C,SAAS,MAAT,CAAS,MAAT,EAAS,gEAAO,eAAP,EAAwB,MAAxB,GAAmC,IAAnC,CAAT;AACD;AAED;;;;;;;;;;;;;;;;AAgBG;;AACG,SAAU,gBAAV,CACJ,OADI,EAEJ,qBAFI,EAEyC;EAE7C,OAAO,SAAS,CAAC,kBAAD,EAAmB,mEAAO,OAAP,CAAnB,EAAqC,qBAArC,CAAhB;AACD,C;;;;;;;;AahND;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,IAAM,kBAAkB,GAAG,GAA3B;AAgBA;;;;;;AAMI;;AACJ;AAAA;AAAA;EAaE;EACA,aAAmB,GAAnB,EAAiC,QAAjC,EAA6D,MAA7D,EAA4E;IAA3C;MAAA;IAA0B;;IACzD,KAAK,GAAL,GAAW,GAAX;IACA,KAAK,UAAL,GAAkB,qEAAO,CAAC,GAAD,CAAzB;IACA,KAAK,QAAL,GAAgB,QAAhB;IACA,KAAK,OAAL,GAAe,MAAf;EACD;EAED;;;EACO,uBAAP;IACE,OAAO,KAAK,UAAZ;EACD,CAFM;EAIP;;;EACO,8BAAP;IACE,OAAO,CAAC,CAAC,KAAK,OAAd;EACD,CAFM;EAIP;;;EACO,mCAAP;IACE,OAAO,kBAAkB,CAAC,KAAK,UAAN,CAAzB;EACD,CAFM;EAIP;;;EACO,iCAAP;IACE,OAAO,gBAAgB,CAAC,KAAK,UAAN,CAAvB;EACD,CAFM;EAIP;;;;AAIG;;;EACI,mDAAP;IACE,OAAO,kCAAkC,CAAC,KAAK,UAAN,CAAzC;EACD,CAFM;EAIP;;;;AAIG;;;EACI,sDAAP;IACE,OAAO,qCAAqC,CAAC,KAAK,UAAN,EAAkB,KAAK,OAAvB,CAA5C;EACD,CAFM;;EAGT;AAAC,CA1DD;;;AA4DA;;AACM,SAAU,cAAV,CAAyB,GAAzB,EAAuC,QAAvC,EAA+D,MAA/D,EAA8E;EAClF,OAAO;IACL,OAAO,EAAE,GADJ;IAEL,QAAQ,EAAE,QAAQ,IAAI,EAFjB;IAGL,GAAG,EAAE,qEAAO,CAAC,GAAD,CAHP;IAIL,MAAM;EAJD,CAAP;AAMD;AAED;;AACA,SAAS,kBAAT,CAA4B,GAA5B,EAA8C;EAC5C,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAJ,GAAkB,GAAG,CAAC,QAAJ,GAAY,GAA9B,GAAoC,EAArD;EACA,IAAM,IAAI,GAAG,GAAG,CAAC,IAAJ,GAAW,MAAI,GAAG,CAAC,IAAnB,GAA4B,EAAzC;EACA,OAAU,QAAQ,OAAR,GAAa,GAAG,CAAC,IAAjB,GAAwB,IAAxB,IAA+B,GAAG,CAAC,IAAJ,GAAW,MAAI,GAAG,CAAC,IAAnB,GAA4B,EAA3D,IAA6D,OAAvE;AACD;AAED;;;AACA,SAAS,kBAAT,CAA4B,GAA5B,EAAgD,MAAhD,EAA4E;EAC1E,OAAO,KAAG,kBAAkB,CAAC,GAAD,CAArB,GAA6B,GAAG,CAAC,SAAjC,GAA0C,GAA1C,GAA8C,MAA9C,GAAoD,GAA3D;AACD;AAED;;;AACA,SAAS,YAAT,CAAsB,GAAtB,EAAwC;EACtC,OAAO,uEAAS,CAAC;IACf;IACA;IACA,UAAU,EAAE,GAAG,CAAC,SAHD;IAIf,cAAc,EAAE;EAJD,CAAD,CAAhB;AAMD;AAED;;;AACA,SAAS,gBAAT,CAA0B,GAA1B,EAA4C;EAC1C,OAAO,kBAAkB,CAAC,GAAD,EAAM,OAAN,CAAzB;AACD;AAED;;;;AAIG;;;AACG,SAAU,kCAAV,CAA6C,GAA7C,EAA+D;EACnE,OAAU,gBAAgB,CAAC,GAAD,CAAhB,GAAqB,GAArB,GAAyB,YAAY,CAAC,GAAD,CAA/C;AACD;AAED;;AACA,SAAS,oBAAT,CAA8B,GAA9B,EAAgD;EAC9C,OAAO,kBAAkB,CAAC,GAAD,EAAM,UAAN,CAAzB;AACD;AAED;;;;AAIG;;;AACG,SAAU,qCAAV,CAAgD,GAAhD,EAAoE,MAApE,EAAmF;EACvF,OAAO,MAAM,GAAG,MAAH,GAAe,oBAAoB,CAAC,GAAD,CAApB,GAAyB,GAAzB,GAA6B,YAAY,CAAC,GAAD,CAArE;AACD;AAED;;;AAGG;;AACG,SAAU,iBAAV,CACJ,GADI,EAEJ,UAFI,EAGJ,aAHI,EAGiB;EAErB;EACA,IAAM,MAAM,GAAG,CAAC,2BAAyB,kBAA1B,CAAf;EACA,MAAM,CAAC,IAAP,CAAY,mBAAiB,UAAjB,GAA2B,GAA3B,GAA+B,aAA3C;EACA,MAAM,CAAC,IAAP,CAAY,gBAAc,GAAG,CAAC,SAA9B;;EACA,IAAI,GAAG,CAAC,IAAR,EAAc;IACZ,MAAM,CAAC,IAAP,CAAY,mBAAiB,GAAG,CAAC,IAAjC;EACD;;EACD,OAAO;IACL,gBAAgB,kBADX;IAEL,iBAAiB,MAAM,CAAC,IAAP,CAAY,IAAZ;EAFZ,CAAP;AAID;AAED;;AACM,SAAU,uBAAV,CACJ,OADI,EAEJ,aAFI,EAMH;EAED,IAAM,GAAG,GAAG,qEAAO,CAAC,OAAD,CAAnB;EACA,IAAM,QAAQ,GAAM,kBAAkB,CAAC,GAAD,CAAlB,GAAuB,mBAA3C;EAEA,IAAI,cAAc,GAAG,SAAO,yEAAW,CAAC,GAAD,CAAvC;;EACA,KAAK,IAAM,GAAX,IAAkB,aAAlB,EAAiC;IAC/B,IAAI,GAAG,KAAK,KAAZ,EAAmB;MACjB;IACD;;IAED,IAAI,GAAG,KAAK,MAAZ,EAAoB;MAClB,IAAI,CAAC,aAAa,CAAC,IAAnB,EAAyB;QACvB;MACD;;MACD,IAAI,aAAa,CAAC,IAAd,CAAmB,IAAvB,EAA6B;QAC3B,cAAc,IAAI,WAAS,kBAAkB,CAAC,aAAa,CAAC,IAAd,CAAmB,IAApB,CAA7C;MACD;;MACD,IAAI,aAAa,CAAC,IAAd,CAAmB,KAAvB,EAA8B;QAC5B,cAAc,IAAI,YAAU,kBAAkB,CAAC,aAAa,CAAC,IAAd,CAAmB,KAApB,CAA9C;MACD;IACF,CAVD,MAUO;MACL,cAAc,IAAI,MAAI,kBAAkB,CAAC,GAAD,CAAtB,GAA2B,GAA3B,GAA+B,kBAAkB,CAAC,aAAa,CAAC,GAAD,CAAd,CAAnE;IACD;EACF;;EAED,OAAU,QAAQ,MAAR,GAAY,cAAtB;AACD,C","file":"static/js/vendors~main~1f821954.ddb00f11.chunk.js","sourcesContent":["import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n\n /** @deprecated use {@link InboundFiltersOptions.allowUrls} instead. */\n whitelistUrls: Array;\n /** @deprecated use {@link InboundFiltersOptions.denyUrls} instead. */\n blacklistUrls: Array;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n });\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(internalOptions.whitelistUrls || []),\n ...(internalOptions.allowUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.whitelistUrls || []),\n ...(clientOptions.allowUrls || []),\n ],\n denyUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(internalOptions.blacklistUrls || []),\n ...(internalOptions.denyUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.blacklistUrls || []),\n ...(clientOptions.denyUrls || []),\n ],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n IS_DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n IS_DEBUG_BUILD && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n if (event.stacktrace) {\n return _getLastValidUrl(event.stacktrace.frames);\n }\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n IS_DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","export { FunctionToString } from './functiontostring';\nexport { InboundFilters } from './inboundfilters';\n","import { getCurrentHub, Hub, Scope } from '@sentry/hub';\nimport {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n Extra,\n Extras,\n Primitive,\n Severity,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\n\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub(method: string, ...args: any[]): T {\n const hub = getCurrentHub();\n if (hub && hub[method as keyof Hub]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (hub[method as keyof Hub] as any)(...args);\n }\n throw new Error(`No hub defined or ${method} was not found on the hub, please open a bug report.`);\n}\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): string {\n const syntheticException = new Error('Sentry syntheticException');\n\n return callOnHub('captureException', exception, {\n captureContext,\n originalException: exception,\n syntheticException,\n });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | Severity): string {\n const syntheticException = new Error(message);\n\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException,\n ...context,\n });\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event): string {\n return callOnHub('captureEvent', event);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): void {\n callOnHub('configureScope', callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n callOnHub('addBreadcrumb', breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): void {\n callOnHub('setContext', name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): void {\n callOnHub('setExtras', extras);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n callOnHub('setTags', tags);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): void {\n callOnHub('setExtra', key, extra);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): void {\n callOnHub('setTag', key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): void {\n callOnHub('setUser', user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): void {\n callOnHub('withScope', callback);\n}\n\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method: string, ...args: any[]): void {\n callOnHub('_invokeClient', method, ...args);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n return callOnHub('startTransaction', { ...context }, customSamplingContext);\n}\n","import {\n Event,\n EventEnvelope,\n EventItem,\n SdkInfo,\n SentryRequest,\n SentryRequestType,\n Session,\n SessionAggregates,\n SessionEnvelope,\n SessionItem,\n} from '@sentry/types';\nimport { createEnvelope, dsnToString, normalize, serializeEnvelope } from '@sentry/utils';\n\nimport { APIDetails, getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth } from './api';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api: APIDetails): SdkInfo | undefined {\n if (!api.metadata || !api.metadata.sdk) {\n return;\n }\n const { name, version } = api.metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n api: APIDetails,\n): [SessionEnvelope, SentryRequestType] {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n\n // I know this is hacky but we don't want to add `sessions` to request type since it's never rate limited\n const type = 'aggregates' in session ? ('sessions' as SentryRequestType) : 'session';\n\n // TODO (v7) Have to cast type because envelope items do not accept a `SentryRequestType`\n const envelopeItem = [{ type } as { type: 'session' | 'sessions' }, session] as SessionItem;\n const envelope = createEnvelope(envelopeHeaders, [envelopeItem]);\n\n return [envelope, type];\n}\n\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session: Session | SessionAggregates, api: APIDetails): SentryRequest {\n const [envelope, type] = createSessionEnvelope(session, api);\n return {\n body: serializeEnvelope(envelope),\n type,\n url: getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel),\n };\n}\n\n/**\n * Create an Envelope from an event. Note that this is duplicated from below,\n * but on purpose as this will be refactored in v7.\n */\nexport function createEventEnvelope(event: Event, api: APIDetails): EventEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n\n const envelopeHeaders = {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n const eventItem: EventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event: Event, api: APIDetails): SentryRequest {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const eventType = event.type || 'event';\n const useEnvelope = eventType === 'transaction' || !!api.tunnel;\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n\n let body;\n try {\n // 99.9% of events should get through just fine - no change in behavior for them\n body = JSON.stringify(event);\n } catch (err) {\n // Record data about the error without replacing original event data, then force renormalization\n event.tags.JSONStringifyError = true;\n event.extra.JSONStringifyError = err;\n try {\n body = JSON.stringify(normalize(event));\n } catch (newErr) {\n // At this point even renormalization hasn't worked, meaning something about the event data has gone very wrong.\n // Time to cut our losses and record only the new error. With luck, even in the problematic cases we're trying to\n // debug with this hack, we won't ever land here.\n const innerErr = newErr as Error;\n body = JSON.stringify({\n message: 'JSON.stringify error after renormalization',\n // setting `extra: { innerErr }` here for some reason results in an empty object, so unpack manually\n extra: { message: innerErr.message, stack: innerErr.stack },\n });\n }\n }\n\n const req: SentryRequest = {\n // this is the relevant line of code before the hack was added, to make it easy to undo said hack once we've solved\n // the mystery\n // body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n body,\n type: eventType,\n url: useEnvelope\n ? getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel)\n : getStoreEndpointWithUrlEncodedAuth(api.dsn),\n };\n\n // https://develop.sentry.dev/sdk/envelopes/\n\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n const envelopeHeaders = {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n const eventItem: EventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n req.body,\n ];\n const envelope = createEnvelope(envelopeHeaders, [eventItem]);\n req.body = serializeEnvelope(envelope);\n }\n\n return req;\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalSingleton, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import { Event, Response, Transport } from '@sentry/types';\nimport { resolvedSyncPromise } from '@sentry/utils';\n\n/** Noop transport */\nexport class NoopTransport implements Transport {\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n return resolvedSyncPromise({\n reason: 'NoopTransport: Event has been skipped because no Dsn is configured.',\n status: 'skipped',\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(_?: number): PromiseLike {\n return resolvedSyncPromise(true);\n }\n}\n","export const SDK_VERSION = '6.19.7';\n","import { Envelope, EventStatus } from '@sentry/types';\nimport {\n disabledUntil,\n eventStatusFromHttpCode,\n getEnvelopeType,\n isRateLimited,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n rejectedSyncPromise,\n resolvedSyncPromise,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const ERROR_TRANSPORT_CATEGORY = 'error';\n\nexport const TRANSACTION_TRANSPORT_CATEGORY = 'transaction';\n\nexport const ATTACHMENT_TRANSPORT_CATEGORY = 'attachment';\n\nexport const SESSION_TRANSPORT_CATEGORY = 'session';\n\ntype TransportCategory =\n | typeof ERROR_TRANSPORT_CATEGORY\n | typeof TRANSACTION_TRANSPORT_CATEGORY\n | typeof ATTACHMENT_TRANSPORT_CATEGORY\n | typeof SESSION_TRANSPORT_CATEGORY;\n\nexport type TransportRequest = {\n body: string;\n category: TransportCategory;\n};\n\nexport type TransportMakeRequestResponse = {\n body?: string;\n headers?: {\n [key: string]: string | null;\n 'x-sentry-rate-limits': string | null;\n 'retry-after': string | null;\n };\n reason?: string;\n statusCode: number;\n};\n\nexport type TransportResponse = {\n status: EventStatus;\n reason?: string;\n};\n\ninterface InternalBaseTransportOptions {\n bufferSize?: number;\n}\n\nexport interface BaseTransportOptions extends InternalBaseTransportOptions {\n // url to send the event\n // transport does not care about dsn specific - client should take care of\n // parsing and figuring that out\n url: string;\n}\n\n// TODO: Move into Browser Transport\nexport interface BrowserTransportOptions extends BaseTransportOptions {\n // options to pass into fetch request\n fetchParams: Record;\n headers?: Record;\n sendClientReports?: boolean;\n}\n\nexport interface NewTransport {\n send(request: Envelope): PromiseLike;\n flush(timeout?: number): PromiseLike;\n}\n\nexport type TransportRequestExecutor = (request: TransportRequest) => PromiseLike;\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates a `NewTransport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): NewTransport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const envCategory = getEnvelopeType(envelope);\n const category = envCategory === 'event' ? 'error' : (envCategory as TransportCategory);\n const request: TransportRequest = {\n category,\n body: serializeEnvelope(envelope),\n };\n\n // Don't add to buffer if transport is already rate-limited\n if (isRateLimited(rateLimits, category)) {\n return rejectedSyncPromise({\n status: 'rate_limit',\n reason: getRateLimitReason(rateLimits, category),\n });\n }\n\n const requestTask = (): PromiseLike =>\n makeRequest(request).then(({ body, headers, reason, statusCode }): PromiseLike => {\n const status = eventStatusFromHttpCode(statusCode);\n if (headers) {\n rateLimits = updateRateLimits(rateLimits, headers);\n }\n if (status === 'success') {\n return resolvedSyncPromise({ status, reason });\n }\n return rejectedSyncPromise({\n status,\n reason:\n reason ||\n body ||\n (status === 'rate_limit' ? getRateLimitReason(rateLimits, category) : 'Unknown transport error'),\n });\n });\n\n return buffer.add(requestTask);\n }\n\n return {\n send,\n flush,\n };\n}\n\nfunction getRateLimitReason(rateLimits: RateLimits, category: TransportCategory): string {\n return `Too many ${category} requests, backing off until: ${new Date(\n disabledUntil(rateLimits, category),\n ).toISOString()}`;\n}\n","import { getCurrentHub } from '@sentry/hub';\nimport { Client, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass: ClientClass, options: O): void {\n if (options.debug === true) {\n if (IS_DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","import { Event, EventHint, Options, Session, Severity, Transport } from '@sentry/types';\nimport { logger, SentryError } from '@sentry/utils';\n\nimport { initAPIDetails } from './api';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { createEventEnvelope, createSessionEnvelope } from './request';\nimport { NewTransport } from './transports/base';\nimport { NoopTransport } from './transports/noop';\n\n/**\n * Internal platform-dependent Sentry SDK Backend.\n *\n * While {@link Client} contains business logic specific to an SDK, the\n * Backend offers platform specific implementations for low-level operations.\n * These are persisting and loading information, sending events, and hooking\n * into the environment.\n *\n * Backends receive a handle to the Client in their constructor. When a\n * Backend automatically generates events, it must pass them to\n * the Client for validation and processing first.\n *\n * Usually, the Client will be of corresponding type, e.g. NodeBackend\n * receives NodeClient. However, higher-level SDKs can choose to instantiate\n * multiple Backends and delegate tasks between them. In this case, an event\n * generated by one backend might very well be sent by another one.\n *\n * The client also provides access to options via {@link Client.getOptions}.\n * @hidden\n */\nexport interface Backend {\n /** Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n eventFromException(exception: any, hint?: EventHint): PromiseLike;\n\n /** Creates an {@link Event} from primitive inputs to `captureMessage`. */\n eventFromMessage(message: string, level?: Severity, hint?: EventHint): PromiseLike;\n\n /** Submits the event to Sentry */\n sendEvent(event: Event): void;\n\n /** Submits the session to Sentry */\n sendSession(session: Session): void;\n\n /**\n * Returns the transport that is used by the backend.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n *\n * @returns The transport.\n */\n getTransport(): Transport;\n}\n\n/**\n * A class object that can instantiate Backend objects.\n * @hidden\n */\nexport type BackendClass = new (options: O) => B;\n\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nexport abstract class BaseBackend implements Backend {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** Cached transport used internally. */\n protected _transport: Transport;\n\n /** New v7 Transport that is initialized alongside the old one */\n protected _newTransport?: NewTransport;\n\n /** Creates a new backend instance. */\n public constructor(options: O) {\n this._options = options;\n if (!this._options.dsn) {\n IS_DEBUG_BUILD && logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public eventFromException(_exception: any, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromException` method');\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n // TODO(v7): Remove the if-else\n if (\n this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport\n ) {\n const api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n const env = createEventEnvelope(event, api);\n void this._newTransport.send(env).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n } else {\n void this._transport.sendEvent(event).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): void {\n if (!this._transport.sendSession) {\n IS_DEBUG_BUILD && logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n return;\n }\n\n // TODO(v7): Remove the if-else\n if (\n this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport\n ) {\n const api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n const [env] = createSessionEnvelope(session, api);\n void this._newTransport.send(env).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n } else {\n void this._transport.sendSession(session).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._transport;\n }\n\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n protected _setupTransport(): Transport {\n return new NoopTransport();\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n} & { initialized?: boolean };\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] as Integration[]);\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n\n let integrations: Integration[] = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/** Setup given integration */\nexport function setupIntegration(integration: Integration): void {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n IS_DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options: O): IntegrationIndex {\n const integrations: IntegrationIndex = {};\n getIntegrationsToSetup(options).forEach(integration => {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n // set the `initialized` flag so we don't run through the process again unecessarily; use `Object.defineProperty`\n // because by default it creates a property which is nonenumerable, which we want since `initialized` shouldn't be\n // considered a member of the index the way the actual integrations are\n addNonEnumerableProperty(integrations, 'initialized', true);\n return integrations;\n}\n","/* eslint-disable max-lines */\nimport { Scope, Session } from '@sentry/hub';\nimport {\n Client,\n DsnComponents,\n Event,\n EventHint,\n Integration,\n IntegrationClass,\n Options,\n Severity,\n Transport,\n} from '@sentry/types';\nimport {\n checkOrSetAlreadyCaught,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { Backend, BackendClass } from './basebackend';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * The backend used to physically interact in the environment. Usually, this\n * will correspond to the client. When composing SDKs, however, the Backend\n * from the root SDK will be used.\n */\n protected readonly _backend: B;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n /** Array of used integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n protected constructor(backendClass: BackendClass, options: O) {\n this._backend = new backendClass(options);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._getBackend()\n .eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n IS_DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this._sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n session.update({ init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._getBackend().getTransport();\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return this.getTransport()\n .close(timeout)\n .then(transportFlushed => clientFinished && transportFlushed);\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrations.initialized) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n session.update({\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /** Deliver captured session to Sentry */\n protected _sendSession(session: Session): void {\n this._getBackend().sendSession(session);\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Returns the current backend. */\n protected _getBackend(): B {\n return this._backend;\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (evt) {\n // TODO this is more of the hack trying to solve https://github.com/getsentry/sentry-javascript/issues/2809\n // it is only attached as extra data to the event if the event somehow skips being normalized\n evt.sdkProcessingMetadata = {\n ...evt.sdkProcessingMetadata,\n normalizeDepth: `${normalize(normalizeDepth)} (${typeof normalizeDepth})`,\n };\n }\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n\n normalized.sdkProcessingMetadata = { ...normalized.sdkProcessingMetadata, baseClientNormalized: true };\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n protected _sendEvent(event: Event): void {\n this._getBackend().sendEvent(event);\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n IS_DEBUG_BUILD && logger.error(reason);\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeSend, sampleRate } = this.getOptions();\n const transport = this.getTransport();\n\n type RecordLostEvent = NonNullable;\n type RecordLostEventParams = Parameters;\n\n function recordLostEvent(outcome: RecordLostEventParams[0], category: RecordLostEventParams[1]): void {\n if (transport.recordLostEvent) {\n transport.recordLostEvent(outcome, category);\n }\n }\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n const isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n recordLostEvent('sample_rate', 'event');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, scope, hint)\n .then(prepared => {\n if (prepared === null) {\n recordLostEvent('event_processor', event.type || 'event');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n const isInternalException = hint && hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n recordLostEvent('before_send', event.type || 'event');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n const session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike | Event | null): PromiseLike | Event | null {\n const nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n","import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n public userAgent?: string;\n public errors: number = 0;\n public release?: string;\n public sid: string = uuid4();\n public did?: string;\n public timestamp: number;\n public started: number;\n public duration?: number = 0;\n public status: SessionStatus = 'ok';\n public environment?: string;\n public ipAddress?: string;\n public init: boolean = true;\n public ignoreDuration: boolean = false;\n\n public constructor(context?: Omit) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n this.timestamp = startingTime;\n this.started = startingTime;\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n public update(context: SessionContext = {}): void {\n if (context.user) {\n if (!this.ipAddress && context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!this.did && !context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || timestampInSeconds();\n if (context.ignoreDuration) {\n this.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (!this.did && context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (this.ignoreDuration) {\n this.duration = undefined;\n } else if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n const duration = this.timestamp - this.started;\n this.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (!this.ipAddress && context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (!this.userAgent && context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n }\n\n /** JSDoc */\n public close(status?: Exclude): void {\n if (status) {\n this.update({ status });\n } else if (this.status === 'ok') {\n this.update({ status: 'exited' });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n public toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration?: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n } {\n return dropUndefinedKeys({\n sid: `${this.sid}`,\n init: this.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(this.started * 1000).toISOString(),\n timestamp: new Date(this.timestamp * 1000).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n duration: this.duration,\n attrs: {\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n },\n });\n }\n}\n","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n SessionContext,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalObject,\n getGlobalSingleton,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Scope } from './scope';\nimport { Session } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @hidden\n * @deprecated Can be removed once `Hub.getActiveDomain` is removed.\n */\nexport interface DomainAsCarrier extends Carrier {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n members: { [key: string]: any }[];\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(context: SpanContext): Span {\n return this._callExtensionMethod('startSpan', context);\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n session.close();\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n currentSession.update({ status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _invokeClient(method: M, ...args: any[]): void {\n const { scope, client } = this.getStackTop();\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (client as any)[method](...args, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n IS_DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n IS_DEBUG_BUILD && logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n\n const sentry = getMainCarrier().__SENTRY__;\n\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","import { DsnComponents, DsnLike, SdkMetadata } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/**\n * Stores details about a Sentry SDK\n */\nexport interface APIDetails {\n /** The DSN as passed to Sentry.init() */\n initDsn: DsnLike;\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n metadata: SdkMetadata;\n /** The internally used Dsn object. */\n readonly dsn: DsnComponents;\n /** The envelope tunnel to use. */\n readonly tunnel?: string;\n}\n\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n *\n * @deprecated Please use APIDetails\n **/\nexport class API {\n /** The DSN as passed to Sentry.init() */\n public dsn: DsnLike;\n\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n public metadata: SdkMetadata;\n\n /** The internally used Dsn object. */\n private readonly _dsnObject: DsnComponents;\n\n /** The envelope tunnel to use. */\n private readonly _tunnel?: string;\n\n /** Create a new instance of API */\n public constructor(dsn: DsnLike, metadata: SdkMetadata = {}, tunnel?: string) {\n this.dsn = dsn;\n this._dsnObject = makeDsn(dsn);\n this.metadata = metadata;\n this._tunnel = tunnel;\n }\n\n /** Returns the Dsn object. */\n public getDsn(): DsnComponents {\n return this._dsnObject;\n }\n\n /** Does this transport force envelopes? */\n public forceEnvelope(): boolean {\n return !!this._tunnel;\n }\n\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n public getBaseApiEndpoint(): string {\n return getBaseApiEndpoint(this._dsnObject);\n }\n\n /** Returns the store endpoint URL. */\n public getStoreEndpoint(): string {\n return getStoreEndpoint(this._dsnObject);\n }\n\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getStoreEndpointWithUrlEncodedAuth(): string {\n return getStoreEndpointWithUrlEncodedAuth(this._dsnObject);\n }\n\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getEnvelopeEndpointWithUrlEncodedAuth(): string {\n return getEnvelopeEndpointWithUrlEncodedAuth(this._dsnObject, this._tunnel);\n }\n}\n\n/** Initializes API Details */\nexport function initAPIDetails(dsn: DsnLike, metadata?: SdkMetadata, tunnel?: string): APIDetails {\n return {\n initDsn: dsn,\n metadata: metadata || {},\n dsn: makeDsn(dsn),\n tunnel,\n } as APIDetails;\n}\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents, target: 'store' | 'envelope'): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/${target}/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n\n/** Returns the store endpoint URL. */\nfunction getStoreEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'store');\n}\n\n/**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getStoreEndpointWithUrlEncodedAuth(dsn: DsnComponents): string {\n return `${getStoreEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/** Returns the envelope endpoint URL. */\nfunction _getEnvelopeEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'envelope');\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string): string {\n return tunnel ? tunnel : `${_getEnvelopeEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\nexport function getRequestHeaders(\n dsn: DsnComponents,\n clientName: string,\n clientVersion: string,\n): { [key: string]: string } {\n // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n const header = [`Sentry sentry_version=${SENTRY_API_VERSION}`];\n header.push(`sentry_client=${clientName}/${clientVersion}`);\n header.push(`sentry_key=${dsn.publicKey}`);\n if (dsn.pass) {\n header.push(`sentry_secret=${dsn.pass}`);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions += `&name=${encodeURIComponent(dialogOptions.user.name)}`;\n }\n if (dialogOptions.user.email) {\n encodedOptions += `&email=${encodeURIComponent(dialogOptions.user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n"],"sourceRoot":""}