UNPKG

927 kBSource Map (JSON)View Raw
1{"version":3,"file":"redoc.browser.lib.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAe,MAAID,IAEnBD,EAAY,MAAIC,GACjB,CATD,CASGK,MAAM,WACT,wFCPIC,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACL,EAAOM,GAAI,myDAAoyD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,gjBAAgjB,eAAiB,CAAC,8pFAA8pF,WAAa,MAEnrK,oCCCAN,EAAOD,QAAU,SAAUQ,GACzB,IAAIC,EAAO,GAuDX,OArDAA,EAAKC,SAAW,WACd,OAAON,KAAKO,KAAI,SAAUC,GACxB,IAAIC,EAAUL,EAAuBI,GAErC,OAAIA,EAAK,GACA,UAAUE,OAAOF,EAAK,GAAI,MAAME,OAAOD,EAAS,KAGlDA,CACT,IAAGE,KAAK,GACV,EAIAN,EAAKO,EAAI,SAAUC,EAASC,EAAYC,GACf,iBAAZF,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAG7B,IAAIG,EAAyB,CAAC,EAE9B,GAAID,EACF,IAAK,IAAIH,EAAI,EAAGA,EAAIZ,KAAKiB,OAAQL,IAAK,CAEpC,IAAIT,EAAKH,KAAKY,GAAG,GAEP,MAANT,IACFa,EAAuBb,IAAM,EAEjC,CAGF,IAAK,IAAIe,EAAK,EAAGA,EAAKL,EAAQI,OAAQC,IAAM,CAC1C,IAAIV,EAAO,GAAGE,OAAOG,EAAQK,IAEzBH,GAAUC,EAAuBR,EAAK,MAKtCM,IACGN,EAAK,GAGRA,EAAK,GAAK,GAAGE,OAAOI,EAAY,SAASJ,OAAOF,EAAK,IAFrDA,EAAK,GAAKM,GAMdT,EAAKH,KAAKM,GACZ,CACF,EAEOH,CACT,+BCzDA,SAASc,EAAkBC,EAAKC,IAAkB,MAAPA,GAAeA,EAAMD,EAAIH,UAAQI,EAAMD,EAAIH,QAAQ,IAAK,IAAIL,EAAI,EAAGU,EAAO,IAAIC,MAAMF,GAAMT,EAAIS,EAAKT,IAAOU,EAAKV,GAAKQ,EAAIR,GAAM,OAAOU,CAAM,CAMtLzB,EAAOD,QAAU,SAAgCY,GAC/C,IAbsBY,EAAKR,EAavBY,GAbuBZ,EAaM,EAHnC,SAAyBQ,GAAO,GAAIG,MAAME,QAAQL,GAAM,OAAOA,CAAK,CAV3BM,CAAjBN,EAaKZ,IAL7B,SAA+BY,EAAKR,GAAK,IAAIM,EAAKE,IAA0B,oBAAXO,QAA0BP,EAAIO,OAAOC,WAAaR,EAAI,eAAgB,GAAU,MAANF,EAAJ,CAAwB,IAAkDW,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKf,EAAKA,EAAGgB,KAAKd,KAAQY,GAAMH,EAAKX,EAAGiB,QAAQC,QAAoBL,EAAK7B,KAAK2B,EAAGQ,QAAYzB,GAAKmB,EAAKd,SAAWL,GAA3DoB,GAAK,GAA0M,CAAtI,MAAOM,GAAOL,GAAK,EAAMH,EAAKQ,CAAK,CAAE,QAAU,IAAWN,GAAsB,MAAhBd,EAAW,QAAWA,EAAW,QAAmC,CAA5B,QAAU,GAAIe,EAAI,MAAMH,CAAI,CAAE,CAAE,OAAOC,CAAjV,CAAuV,CARnbQ,CAAsBnB,EAAKR,IAI5F,SAAqC4B,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOrB,EAAkBqB,EAAGC,GAAS,IAAIC,EAAIC,OAAOC,UAAUtC,SAAS4B,KAAKM,GAAGK,MAAM,GAAI,GAAiE,MAAnD,WAANH,GAAkBF,EAAEM,cAAaJ,EAAIF,EAAEM,YAAYC,MAAgB,QAANL,GAAqB,QAANA,EAAoBnB,MAAMyB,KAAKR,GAAc,cAANE,GAAqB,2CAA2CO,KAAKP,GAAWvB,EAAkBqB,EAAGC,QAAzG,CAA7O,CAA+V,CAJ7TS,CAA4B9B,EAAKR,IAEnI,WAA8B,MAAM,IAAIuC,UAAU,4IAA8I,CAFvDC,IAcnI3C,EAAUe,EAAM,GAChB6B,EAAa7B,EAAM,GAEvB,GAAoB,mBAAT8B,KAAqB,CAE9B,IAAIC,EAASD,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUN,MACzDO,EAAO,+DAA+DlD,OAAO6C,GAC7EM,EAAgB,OAAOnD,OAAOkD,EAAM,OACpCE,EAAaT,EAAWU,QAAQxD,KAAI,SAAUyD,GAChD,MAAO,iBAAiBtD,OAAO2C,EAAWY,YAAc,IAAIvD,OAAOsD,EAAQ,MAC7E,IACA,MAAO,CAACvD,GAASC,OAAOoD,GAAYpD,OAAO,CAACmD,IAAgBlD,KAAK,KACnE,CAEA,MAAO,CAACF,GAASE,KAAK,KACxB,kBC/BAd,EAAOD,QAAU,CAAC,qECAlB,IAAI,EAA+BsE,QAAQ,mNCI5B,MAAMC,EAArB,cACE,KAAAC,IAAkBA,EAClB,KAAAhC,KAAOA,EACP,KAAAiC,OAAwBA,EACxB,KAAAC,KAAOA,EACP,KAAAC,KAAOA,EACP,KAAAC,QAAUA,EACV,KAAAC,eAAiBA,CAAA,EAGnB,IAIIC,EAEAC,EAEAC,EARAC,EAAe,GAUnB,SAASC,IACPJ,EAAU,IAAI,UACdA,EAAQK,MAAM,SACdL,EAAQK,MAAM,eACdL,EAAQM,IAAI,OAEZN,EAAQO,SAASb,IAAI,UAAc,iBAAqB,WAExDQ,EAAQ,IAAIM,SAAQC,IAClBR,EAAeQ,CAAO,GAAP,CAWZ,SAASf,EAAOgB,EAAeC,EAAqBC,GACzD,MAAMN,EAAMH,EAAM3E,KAAKoF,GAAQ,EACzB9E,EAAO,CAAE4E,MAAOA,EAAMG,cAAeF,YAAaA,EAAYE,cAAeP,OACnFN,EAAQN,IAAI5D,EAAA,CAGP,aAAsB,gCAC3BmE,EAAaD,EAAQc,QAAA,IAGhB,aAAsB,gCAC3B,MAAO,CACLX,QACAD,aAAcA,GAAOa,SAAA,IAIlB,WAA8BC,EAAcC,GAAoB,gCACrE,IAEE,GADAC,cAAcF,IACTG,KAAKF,GACR,MAAM,IAAIG,MAAM,4BAGlBvB,EAAKsB,KAAKF,GAEwC,CAFxC,MACHI,GACPC,QAAQC,MAAM,gCAAkCF,EAAEG,QAAA,KAI/C,WAAoBC,GAAY,gCACrCtB,EAAQsB,EAAMtB,MACdF,EAAa,aAAgBwB,EAAMvB,OAAA,IAG9B,aAAyB,gCAC9BC,EAAQ,GACRC,GAAA,IAGK,WACLsB,EACAC,EAAQ,GAC4B,gCACpC,GAAwB,IAApBD,EAAEE,OAAOrF,OACX,MAAO,GAGT,IAAIsF,SAAuB3B,GAAO4B,OAAMC,IACtCL,EAAEE,OACCf,cACAmB,MAAM,OACNC,SAAQC,IACP,GAAoB,IAAhBA,EAAK3F,OAAc,OACvB,MAAM4F,EA3DK,CAAAD,IACjB,MAAME,EAAQ,UAAa,IAAI,QAAWF,EAAM,CAAC,IACjD,MAAO,IAAM,UAAaE,GAAS,KAyDjBC,CAAWH,GACvBH,EAAEG,KAAKC,EAAK,CAAC,EAAE,GAAH,IAQlB,OAJIR,EAAQ,IACVE,EAAgBA,EAAc1D,MAAM,EAAGwD,IAGlCE,EAAchG,KAAIyG,IAAQ,CAAE1B,KAAMT,EAAMmC,EAAIhC,KAAMiC,MAAOD,EAAIC,SAAA,IA3FtE,sBAA2B,MAqB3BnC,sCCnCA,MAAMoC,EAAM,EAAQ,KAEdC,EAAS,GAAYC,oBACvB,CAAEC,IAAK,GAAIC,OAAQ,GAAIC,MAAO,GAAIC,OAAQ,IAC1C,CAAEH,IAAK,QAAYC,OAAQ,UAAcC,MAAO,QAAYC,OAAQ,QAcxE,SAASC,EAAWC,EAAMC,GACtB,SAASC,EAAQF,EAAMC,GACnB,OAAOT,EAAIvD,UAAU+D,KAAUR,EAAIvD,UAAUhB,OAAOkF,OAAO,CAAC,EAAGH,EAAMC,GACzE,CACA,OAAOC,EAAQF,EAAMC,IAASC,EAAQD,EAAMD,EAChD,CAoFA,SAASI,EAASC,GAEd,IAAIC,GADJD,EAAIA,EAAEE,QAAQ,KAAK,UACAvB,MAAM,KAEzB,OADAsB,EAAW,GAAKA,EAAW,GAAGC,QAAQ,2BAA4B,KAC3DD,EAAWrH,KAAK,IAC3B,CAjDAuH,OAAOtF,UAAUuF,YAAc,WAC3B,OAAOnI,KAAKuF,cAAc0C,QAAQ,iBAAiB,SAAUG,EAAOC,GAChE,OAAOA,EAAOC,aAClB,GACJ,EAmDAzI,EAAOD,QAAU,CAEbuH,OAAQA,EACRoB,WAnHJ,SAAoBlG,EAAOuC,EAAOiB,GAC9B,OAAOA,EAAK2C,QAAQnG,KAAWuC,CACnC,EAkHI6D,cAhHJ,SAAuBC,GACnB,OAAO,IAAKC,IAAID,GAAQE,OAASF,EAAMzH,MAC3C,EA+GI4H,QA7GJ,SAAiBH,GACb,OAAO,IAAKC,IAAID,GAAQE,MAAQ,CACpC,EA4GIE,cAxFJ,SAAuB1H,GACnB,OAAQA,EAAIH,SAZhB,SAAuBG,GACnB,IAAI2H,EAAS,GACb,IAAK,IAAIC,KAAa5H,EACP2H,EAAOE,MAAK,SAASlD,EAAEnF,EAAEsI,GAChC,OAAOzB,EAAW1B,EAAEiD,EACxB,KACWD,EAAO7I,KAAK8I,GAE3B,OAAOD,CACX,CAG2BI,CAAc/H,GAAKH,MAC9C,EAuFImI,UArFJ,SAAmBhI,GACf,OAAOA,EAAI6H,MAAK,SAASlD,EAAEnF,EAAEsI,GACzB,OAAO9H,EAAIoH,QAAQzC,GAAGnF,CAC1B,GACJ,EAkFIyI,KA3EJ,SAActB,GACV,IACIuB,EADAD,EAAO,EAEX,GAAiB,IAAbtB,EAAE9G,OAAc,OAAOoI,EAC3B,IAAK,IAAIzI,EAAI,EAAGA,EAAImH,EAAE9G,OAAQL,IAC5B0I,EAAQvB,EAAEwB,WAAW3I,GACrByI,GAAUA,GAAQ,GAAKA,EAAQC,EAC/BD,GAAQ,EAEV,OAAOA,CACX,EAkEIG,wBA1D4B,CAC5B,SACA,UACA,UACA,mBACA,mBACA,YACA,YACA,aACA,WACA,WACA,cACA,gBACA,gBACA,uBACA,UACA,OACA,WA0CAC,gBAvCoB,CACpB,QACA,WACA,WACA,eAoCAC,YAjCgB,CAChB,MACA,OACA,MACA,SACA,QACA,OACA,UACA,SA0BA5B,SAAUA,EACV6B,YAjBJ,SAAqB5B,GACjB,OAAOD,EAASC,EAAErB,MAAM,KAAK/F,KAAK,KACtC,qCCpHA,MAAMiJ,EAAK,EAAQ,IACblE,EAAO,EAAQ,KACfmE,EAAM,EAAQ,KAEdC,EAAQ,EAAQ,KAChBC,EAAO,EAAQ,IAEfC,EAAO,WACPC,EAAU,eACVC,EAAQ,aACRC,EAAQ,mBACRC,EAAQ,aACRC,EAAS,EAAQ,KA0BvB,SAASC,EAAmBC,EAAKC,EAASC,EAAKC,EAAYC,EAAMC,GAE7D,IAAIC,EAAcD,EAAQE,aAAaL,EAAIC,GAAYK,MAAM,GAEzDC,EAAUnB,EAAIoB,MAAMN,GACpBO,EAAO,CAAC,EACRC,EAAU,EACd,KAAOA,GACHA,EAAU,EACVlB,EAAQM,EAAK,CAACa,mBAAkB,IAAO,SAAUb,EAAKc,EAAKlF,GACvD,GAAIiE,EAAMG,EAAKc,GACX,GAAId,EAAIc,GAAKC,WAAW,KACpB,GAAKJ,EAAKX,EAAIc,KAAUd,EAAIgB,QAwBxB,IAAKhB,EAAIgB,OAAQ,CACb,IAAIC,GAAUX,EAAY,IAAIK,EAAKX,EAAIc,KAAO3E,MAAM,OAAO/F,KAAK,KAChEwF,EAAMsF,OAAOtF,EAAMuF,MAAQ,CAAEC,KAAMH,EAAQ,SAAUjB,EAAIc,GAAME,QAAQ,GACnEX,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAK,iBAAiBL,GACrDL,GACJ,MA7BgC,CAChC,IAAIW,EAAS5B,EAAMF,EAAKQ,EAASD,EAAIc,KAQrC,GAPIT,EAAQgB,QAAQ,GAAG5F,QAAQ6F,OAAiB,IAAXC,EAAmBzB,EAAOlD,OAAOE,IAAMgD,EAAOlD,OAAOI,OAAO,sBAAuBgD,EAAIc,GAAMhB,EAAOlD,OAAOK,SAOjI,IAAXsE,GAEA,GADA3F,EAAMsF,OAAOtF,EAAMuF,MAAQ,CAAC,EACxBd,EAAQmB,MAAO,CACf,IAAIC,EAAK,IAAIlG,MAAM,mCAAmCyE,EAAIc,IAC1D,IAAIT,EAAQqB,QACP,MAAMD,EADUpB,EAAQqB,QAAQC,OAAOF,EAEhD,OAGAb,IACAhF,EAAMsF,OAAOtF,EAAMuF,MAAQI,EAC3BZ,EAAKX,EAAIc,IAAQlF,EAAMT,KAAKuC,QAAQ,UAAU,GAEtD,MAeC,GAAI+C,EAAQmB,SAAU,CACvB,IAAIX,EAAS3B,EAAI1E,QAAQwF,EAAKJ,EAAIc,IAAM/K,WACpCsK,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAKxB,EAAOlD,OAAOG,OAAO,6BAA6BiD,EAAIc,GAAK,KAAKG,EAAOnB,EAAOlD,OAAOK,QACzH+C,EAAI,UAAYA,EAAIc,GAChBT,EAAQE,aAAaP,EAAIc,MACpBT,EAAQE,aAAaU,KACtBZ,EAAQE,aAAaU,GAAUZ,EAAQE,aAAaP,EAAIc,KAE5DT,EAAQE,aAAaU,GAAQY,OAASxB,EAAQE,aAAaP,EAAIc,IAAMe,QAEzE7B,EAAIc,GAAOG,CACf,MACK,IAAKjB,EAAI,UAAW,CACrB,IAAIiB,EAAS3B,EAAI1E,QAAQwF,EAAKJ,EAAIc,IAAM/K,WACpC8L,GAAS,EACTxB,EAAQE,aAAaP,EAAIc,MACzBe,EAASxB,EAAQE,aAAaP,EAAIc,IAAMe,QAEvCA,IACGxB,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAKxB,EAAOlD,OAAOG,OAAO,yBAAyBiD,EAAIc,GAAK,KAAKG,EAAOnB,EAAOlD,OAAOK,QACrH+C,EAAI,UAAYA,EAAIc,GACpBd,EAAIc,GAAOG,EAEnB,CAER,IAUJ,OAPAvB,EAAQM,EAAI,CAAC,GAAE,SAASA,EAAIc,EAAIlF,GACxBiE,EAAMG,EAAKc,SACe,IAAfd,EAAIgB,eAA+BhB,EAAIgB,MAE1D,IAEIX,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAK,gCAC7BtB,CACX,CAEA,SAAS8B,EAAWzI,EAAMgH,GACtB,IAAKA,EAAQ0B,UAAY1B,EAAQ0B,QAAQrL,OAAQ,OAAO2C,EACxD,IAAK,IAAI2I,KAAU3B,EAAQ0B,QACvB1I,EAAO2I,EAAO3I,EAAMgH,GAExB,OAAOhH,CACX,CAQA,SAAS4I,EAAgB9M,EAAM+M,EAAS7B,EAAS8B,GAC7C,IAAIC,EAAI9C,EAAIoB,MAAML,EAAQ5G,QACtB2G,EAAOC,EAAQ5G,OAAO0C,MAAM,MAAM/F,KAAK,KAAK+F,MAAM,KAC5CiE,EAAKiC,OACLjC,EAAKiC,MACf,IAAIC,EAAW,GACXC,EAAeL,EAAQ/F,MAAM,KAC7BoG,EAAa7L,OAAS,IACtB4L,EAAW,IAAMC,EAAa,GAC9BL,EAAUK,EAAa,IAE3BnC,EAAOA,EAAKhK,KAAK,KAEjB,IACIoM,GApBcC,EAmBTnD,EAAIoB,MAAMwB,GACqBN,SApBfc,EAoByBN,EAAER,SAnBhDa,GAASA,EAAM/L,OAAS,EAAU+L,EAClCC,GAAUA,EAAOhM,OAAS,EAAUgM,EACjC,SAHX,IAAsBD,EAAOC,EAsBzB,IAAInB,EAQJ,GANIA,EADsB,UAAtBiB,EACSrH,EAAKP,QAAQwF,EAAOA,EAAO,IAAM,GAAI8B,GAGrC5C,EAAI1E,QAAQwF,EAAOA,EAAO,IAAM,GAAI8B,GAG7C7B,EAAQsC,MAAMpB,GAAS,CACnBlB,EAAQgB,SAAS5F,QAAQ6F,KAAK,SAAUC,EAAQe,GAKpD,IAAIrC,EAAUN,EAAMU,EAAQsC,MAAMpB,IAC9BlI,EAAOgH,EAAQuC,YAAc3C,EACjC,GAAIqC,IACAjJ,EAAOoG,EAAKpG,EAAMiJ,IACL,IAATjJ,IACAA,EAAO,CAAC,EACJgH,EAAQmB,QAAO,CACf,IAAIC,EAAK,IAAIlG,MAAM,iCAAiCgG,EAAOe,GAC3D,IAAIjC,EAAQqB,QACP,MAAMD,EADUpB,EAAQqB,QAAQC,OAAOF,EAEhD,CAMR,OAHApI,EAAO0G,EAAmB1G,EAAM4G,EAASiC,EAASI,EAAUf,EAAQlB,GACpEhH,EAAOyI,EAAWzI,EAAMgH,GACxB8B,EAASxC,EAAMtG,GAAOkI,EAAQlB,GACvB1F,QAAQC,QAAQvB,EAC3B,CAIA,GAFIgH,EAAQgB,SAAS5F,QAAQ6F,KAAK,MAAOC,EAAQe,GAE7CjC,EAAQwC,UAAYxC,EAAQwC,SAASL,GACrC,OAAOnC,EAAQwC,SAASL,GAAmBpC,EAAM8B,EAASI,EAAUjC,GAC/DyC,MAAK,SAAUzJ,GAKZ,OAJAgH,EAAQuC,YAAcvJ,EACtBA,EAAOyI,EAAWzI,EAAMgH,GACxBA,EAAQsC,MAAMpB,GAAUlI,EACxB8I,EAAS9I,EAAMkI,EAAQlB,GAChBhH,CACX,IACC0J,OAAM,SAAStB,GAEZ,MADIpB,EAAQgB,SAAS5F,QAAQ6F,KAAKG,GAC5BA,CACV,IAEH,GAAIe,GAAqBA,EAAkBzB,WAAW,QAAS,CAChE,MAAMiC,EAAe5K,OAAOkF,OAAO,CAAC,EAAG+C,EAAQ2C,aAAc,CAAEC,MAAO5C,EAAQ4C,QAC9E,OAAO5C,EAAQd,MAAMgC,EAAQyB,GACxBF,MAAK,SAAUrG,GACZ,GAAmB,MAAfA,EAAIyG,OAAgB,CACtB,GAAI7C,EAAQ8C,eAGV,OAFI9C,EAAQgB,SAAS5F,QAAQ6F,KAAK,SAASY,GAC3C7B,EAAQE,aAAa2B,GAASL,QAAS,EAChC,YAAYK,EAAQ,KAG3B,MAAM,IAAI3G,MAAM,wBAAwBkB,EAAIyG,WAAW3B,IAE3D,CACA,OAAO9E,EAAI2G,MACf,IACCN,MAAK,SAAUzJ,GACZ,IACI,IAAI4G,EAAUT,EAAKkB,MAAMrH,EAAM,CAAEgK,OAAO,OAAQC,cAAc,IAI9D,GAHAjK,EAAOgH,EAAQuC,YAAc3C,EAC7BI,EAAQsC,MAAMpB,GAAU5B,EAAMtG,GAE1BiJ,IAEa,KADbjJ,EAAOoG,EAAKpG,EAAMiJ,MAEdjJ,EAAO,CAAC,EACJgH,EAAQmB,OAAO,CACf,IAAIC,EAAK,IAAIlG,MAAM,iCAAiCgG,EAAOe,GAC3D,IAAIjC,EAAQqB,QACP,MAAMD,EADUpB,EAAQqB,QAAQC,OAAOF,EAEhD,CAIRpI,EAAOyI,EADPzI,EAAO0G,EAAmB1G,EAAM4G,EAASiC,EAASI,EAAUf,EAAQlB,GAC5CA,EAM5B,CAJA,MAAOoB,GAEH,GADIpB,EAAQgB,SAAS5F,QAAQ6F,KAAKG,IAC9BpB,EAAQqB,UAAWrB,EAAQmB,MAC1B,MAAMC,EAD2BpB,EAAQqB,QAAQC,OAAOF,EAEjE,CAEA,OADAU,EAAS9I,EAAMkI,EAAQlB,GAChBhH,CACX,IACC0J,OAAM,SAAUhL,GAGb,GAFIsI,EAAQgB,SAAS5F,QAAQ6F,KAAKvJ,GAClCsI,EAAQsC,MAAMpB,GAAU,CAAC,GACrBlB,EAAQqB,UAAWrB,EAAQmB,MAC1B,MAAMzJ,EAD2BsI,EAAQqB,QAAQC,OAAO5J,EAEjE,GACR,CACK,CACD,MAAMwL,EAAM,YAAYrB,EAAQ,KAChC,OA/OR,SAAuBsB,EAAUC,EAAUpD,EAAS6B,EAASqB,GACzD,OAAO,IAAI5I,SAAQ,SAAUC,EAAS+G,GAClCtC,EAAGqE,SAASF,EAAUC,GAAU,SAAU1L,EAAKsB,GACvCtB,EACIsI,EAAQ8C,gBAAkBI,GACtBlD,EAAQgB,SAAS5F,QAAQ6F,KAAK,SAASY,GAC3C7B,EAAQE,aAAa2B,GAASL,QAAS,EACvCjH,EAAQ2I,IAGR5B,EAAO5J,GAIX6C,EAAQvB,EAEhB,GACJ,GACJ,CA6NesK,CAAcpC,EAAQlB,EAAQoD,UAAY,OAAQpD,EAAS6B,EAASqB,GACtET,MAAK,SAAUzJ,GACZ,IACI,IAAI4G,EAAUT,EAAKkB,MAAMrH,EAAM,CAAEgK,OAAO,OAAQC,cAAc,IAM9D,GALAjK,EAAOgH,EAAQuC,YAAc3C,EAI7BI,EAAQsC,MAAMpB,GAAU5B,EAAMtG,GAC1BiJ,IAEa,KADbjJ,EAAOoG,EAAKpG,EAAMiJ,MAEdjJ,EAAO,CAAC,EACJgH,EAAQmB,OAAO,CACf,IAAIC,EAAK,IAAIlG,MAAM,+BAA+BgG,EAAOe,GACzD,IAAIjC,EAAQqB,QACP,MAAMD,EADUpB,EAAQqB,QAAQC,OAAOF,EAEhD,CAIRpI,EAAOyI,EADPzI,EAAO0G,EAAmB1G,EAAM4G,EAASiC,EAASI,EAAUf,EAAQlB,GAC5CA,EAM5B,CAJA,MAAOoB,GAEH,GADIpB,EAAQgB,SAAS5F,QAAQ6F,KAAKG,IAC9BpB,EAAQqB,UAAWrB,EAAQmB,MAC1B,MAAMC,EAD2BpB,EAAQqB,QAAQC,OAAOF,EAEjE,CAEA,OADAU,EAAS9I,EAAMkI,EAAQlB,GAChBhH,CACX,IACC0J,OAAM,SAAShL,GAEZ,GADIsI,EAAQgB,SAAS5F,QAAQ6F,KAAKvJ,IAC9BsI,EAAQqB,UAAWrB,EAAQmB,MAC1B,MAAMzJ,EAD2BsI,EAAQqB,QAAQC,OAAO5J,EAEjE,GACR,CACJ,CAiEA,SAAS6L,EAAiBvD,GACtB,OAAO,IAAI1F,SAAQ,SAAU8B,EAAKoH,IAhEtC,SAA0BxD,GACtB,OAAO,IAAI1F,SAAQ,SAAU8B,EAAKoH,GAE9B,SAASC,EAAM9D,EAAIc,EAAIlF,GACnB,GAAIoE,EAAIc,IAAQjB,EAAMG,EAAIc,GAAK,QAAS,CACpC,IAAIM,EAAOpB,EAAIc,GAAKM,KACpB,IAAKA,EAAKL,WAAW,KAAM,CAEvB,IAAIgD,EAAS,GAEb,IAAKC,EAAK5C,GAAO,CACb,IAAI6C,EAAY7L,OAAO8L,KAAKF,GAAMtF,MAAK,SAASlD,EAAEnF,EAAEsI,GAChD,OAAOyC,EAAKL,WAAWvF,EAAE,IAC7B,IACIyI,IACI5D,EAAQgB,SAAS5F,QAAQ6F,KAAK,+BAA+B2C,GACjEF,EAAS,KAAK3C,EAAKjF,MAAM,KAAK,IAAI,IAAIuB,QAAQuG,EAAU9H,MAAM,KAAK,IAAI,IACvE4H,EAASA,EAAO5H,MAAM,cAAc/F,KAAK,IACzCgL,EAAO6C,EAEf,CAKA,GAHKD,EAAK5C,KACN4C,EAAK5C,GAAQ,CAAE+C,UAAU,EAAO3D,MAAO,GAAI4D,OAAO,CAAC,EAAGtJ,YAAakF,EAAIc,GAAKhG,cAE5EkJ,EAAK5C,GAAM+C,SAEX,GAAIH,EAAK5C,GAAMS,aAGV,GAAIxB,EAAQgE,YAAa,CAC1B,IAAIpD,EAAS+C,EAAK5C,GAAMkD,WACpBjE,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAK,gBAAiBF,EAAMH,GAC3DjB,EAAIc,GAAK,UAAYM,EACrBpB,EAAIc,GAAKM,KAAOH,EAAO8C,CAC3B,MAEI/D,EAAIc,GAAOnB,EAAMqE,EAAK5C,GAAM/H,WAIhC2K,EAAK5C,GAAMZ,MAAM7K,KAAKiG,EAAMT,MAC5B6I,EAAK5C,GAAMgD,OAAOxI,EAAMT,MAAQ4I,CAExC,CACJ,CACJ,CAEA,IAAIC,EAAO3D,EAAQE,aAEnB,GAAKF,EAAQkE,SAASC,MAAM,GAAOnE,EAAQ5G,SAAW4G,EAAQkE,SAASnE,KAEnE,OAAO3D,EAAIuH,GAGftE,EAAQW,EAAQoE,QAAQC,YAAa,CAAC7D,mBAAmB,EAAM1F,KAAM,iBAAkB2I,GACvFpE,EAAQW,EAAQoE,QAAQhH,WAAY,CAACoD,mBAAmB,EAAM1F,KAAM,gBAAiB2I,GACrFpE,EAAQW,EAAQoE,QAAS,CAAC5D,mBAAmB,GAAOiD,GAEpDrH,EAAIuH,EACR,GACJ,EAKQW,CAAiBtE,GAChByC,MAAK,SAAUkB,GACZ,IAAK,IAAIvJ,KAAOuJ,EAEZ,IAAKA,EAAKvJ,GAAK0J,SAAU,CACrB,IAAIK,EAAQnE,EAAQkE,SAASC,MACzBA,EAAM,GAAGA,IACbnE,EAAQkE,SAASK,QAAQJ,GAAO7O,MAAK,WACjC,OAAOsM,EAAgB5B,EAAQoE,QAAShK,EAAK4F,GAAS,SAAUhH,EAAMI,EAAQ4G,GAC1E,IAAK2D,EAAKvJ,GAAK0J,SAAU,CACrB,IAAIU,EAAW,CAAC,EAChBA,EAAS5E,QAAU+D,EAAKvJ,GACxBoK,EAASzD,KAAO3G,EAChBoK,EAASC,SAAWnF,EAAMtG,GAC1BwL,EAASE,QAAU1L,EACnBwL,EAASpL,OAASA,EAClB4G,EAAQ2E,UAAUrP,KAAKkP,GACvBb,EAAKvJ,GAAK0J,UAAW,CACzB,CAEA,IAAIc,EAAe7M,OAAOkF,OAAO,CAAC,EAAG+C,EAAS,CAAE5G,OAAQ,GACpD8K,SAAU,CAACK,QAASvE,EAAQkE,SAASK,QACrCJ,MAAOnE,EAAQkE,SAASK,QAAQlO,OAAO,EAAG0J,KAAMC,EAAQkE,SAASnE,QACjEC,EAAQ6E,OAASlB,EAAKvJ,GAAKK,cAAgBzB,EAAKyB,aAC/B,iBAATzB,IACRA,EAAKyB,YAAckJ,EAAKvJ,GAAKK,aAEjCkJ,EAAKvJ,GAAKpB,KAAOA,EAGjB,IAAI8L,GA1XhBtO,EA0XkCmN,EAAKvJ,GAAK+F,MAzXjD,IAAK,IAAIpC,IAAIvH,KADxB,IAAgBA,EA2XYsO,EAAWA,EAASC,MAAK,SAASzG,EAAE0G,GAChC,MAAMC,EAAS3G,EAAEoC,WAAW,kBAAoBpC,EAAEoC,WAAW,kBACvDwE,EAASF,EAAEtE,WAAW,kBAAoBsE,EAAEtE,WAAW,kBAC7D,OAAIuE,IAAUC,GAAe,EACzBA,IAAUD,EAAc,EACrB,CACX,IAEA,IAAK,IAAIE,KAAOL,EAEZ,GAAInB,EAAKvJ,GAAK6J,YAAekB,IAAQxB,EAAKvJ,GAAK6J,YAAgBkB,EAAIvH,QAAQ,kBAAkB,EACrFoC,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAK,8BAA+BkE,GACnE/F,EAAKY,EAAQoE,QAASe,EAAK,CAAEpE,KAAM4C,EAAKvJ,GAAK6J,WAAWN,EAAKvJ,GAAK2J,OAAOoB,GAAM,SAAU/K,EAAIuJ,EAAKvJ,GAAK2J,OAAOoB,SAE7G,CACGxB,EAAKvJ,GAAK6J,WACNjE,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAK,gCAGpC0C,EAAKvJ,GAAK6J,WAAakB,EACnBnF,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAK,oCAAqCkE,IAE7E,IAAIC,EAAQ9F,EAAMtG,GAClBoG,EAAKY,EAAQoE,QAASe,EAAKC,EAC/B,CAEiE,IAAjEpF,EAAQkE,SAASK,QAAQK,EAAaV,SAASC,OAAO9N,QAEtD2J,EAAQkE,SAASK,QAAQK,EAAaV,SAASC,OAAO7O,MAAK,WAAc,OAAOiO,EAAiBqB,EAAc,GAEvH,GACJ,GACJ,CAER,IACClC,OAAM,SAAStB,GACRpB,EAAQgB,SAAS5F,QAAQ6F,KAAKG,GAClCoC,EAAIpC,EACR,IAEA,IAAIjD,EAAS,CAAC6B,QAAQA,GACtB7B,EAAOoG,QAAUvE,EAAQkE,SAASK,QAAQvE,EAAQkE,SAASC,OAC3D/H,EAAI+B,EACR,GACJ,CAMA,SAASkH,EAAerF,EAAS5D,EAAKoH,GAClCxD,EAAQkE,SAASK,QAAQjP,KAAK,IAC9BiO,EAAiBvD,GACZyC,MAAK,SAAUzJ,GAPTsM,SAQItM,EAAKuL,QAPpBe,EAAMC,QAAO,CAAClE,EAASmE,IACnBnE,EAAQoB,MAAKtE,GAAUqH,IAAO/C,KAAK9L,MAAMqB,UAAUlC,OAAO2P,KAAKtH,OAAW7D,QAAQC,QAAQ,MAOjFkI,MAAK,WACF,GAAIzC,EAAQkE,SAASC,OAAOnE,EAAQkE,SAASK,QAAQlO,OAEjD,OADA+E,QAAQ6F,KAAK,uCACN7E,GAAI,GAEX4D,EAAQkE,SAASC,QACbnE,EAAQkE,SAASK,QAAQvE,EAAQkE,SAASC,OAAO9N,OACjDqP,YAAW,WACPL,EAAerM,EAAKgH,QAAS5D,EAAKoH,EACtC,GAAG,IAGCxD,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAKxB,EAAOlD,OAAOG,OAAO,gCAAgC+C,EAAOlD,OAAOK,QACnGoD,EAAQ2F,kBACJ3F,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAKxB,EAAOlD,OAAOG,OAAO,gCAAgC+C,EAAOlD,OAAOK,QACvGoD,EAAQoE,QAAU7E,EAAMS,EAAQoE,QAAQpE,EAAQyE,SAAS,CAACzD,QAAQhB,EAAQgB,QAAQ,IAC9EhB,EAAQgB,QAAQ,GAAG5F,QAAQ6F,KAAKxB,EAAOlD,OAAOG,OAAO,gCAAgC+C,EAAOlD,OAAOK,SAE3GyC,EAAQW,EAAQoE,QAAQ,CAAC,GAAE,SAASzE,EAAIc,EAAIlF,GACpCiE,EAAMG,EAAKc,KACNT,EAAQ4F,qBAAqBjG,EAAI,UAE9C,IACAvD,EAAI4D,GAGhB,IACC0C,OAAM,SAAUtB,GACTpB,EAAQgB,SAAS5F,QAAQ6F,KAAKG,GAClCoC,EAAIpC,EACR,GACR,IACCsB,OAAM,SAAStB,GACRpB,EAAQgB,SAAS5F,QAAQ6F,KAAKG,GAClCoC,EAAIpC,EACR,GACR,CAEA,SAASyE,EAAa7F,GAIlB,GAHKA,EAAQsC,QAAOtC,EAAQsC,MAAQ,CAAC,GAChCtC,EAAQd,QAAOc,EAAQd,MAAQA,GAEhCc,EAAQ5G,OAAQ,CAChB,IAAI0M,EAAS7G,EAAIoB,MAAML,EAAQ5G,UAC1B0M,EAAOvE,UAAYuE,EAAOvE,SAASlL,QAAU,KAC9C2J,EAAQ5G,OAAS0B,EAAKP,QAAQyF,EAAQ5G,QAE9C,CAEA4G,EAAQ2E,UAAY,GACpB3E,EAAQE,aAAe,CAAC,EACxBF,EAAQgE,aAAc,EACtBhE,EAAQkE,SAAW,CAAC,EACpBlE,EAAQkE,SAASC,MAAQ,EACzBnE,EAAQkE,SAASnE,KAAOC,EAAQ5G,OAChC4G,EAAQkE,SAASK,QAAU,CAAC,GAChC,CAwBAtP,EAAOD,QAAU,CACb+Q,gBAtBJ,SAAyB/F,GAErB,OADA6F,EAAa7F,GACN,IAAI1F,SAAQ,SAAU8B,EAAKoH,GAC1BxD,EAAQzF,QACR8K,EAAerF,EAAS5D,EAAKoH,GAE7BpH,EAAI4D,EACZ,GACJ,EAeIzF,QAbJ,SAAiB6J,EAAQhL,EAAO4G,GAM5B,OALKA,IAASA,EAAU,CAAC,GACzBA,EAAQoE,QAAUA,EAClBpE,EAAQ5G,OAASA,EACjB4G,EAAQzF,SAAU,EAClBsL,EAAa7F,GACN,IAAI1F,SAAQ,SAAU8B,EAAKoH,GAC9B6B,EAAerF,EAAS5D,EAAKoH,EACjC,GACJ,iCCpgBA,SAASwC,IACL,MAAO,CAAE7B,MAAO,EAAG7D,KAAM,IAAI2F,QAAWC,KAAK,EAAMC,SAAS,EAAOC,kBAAkB,EACzF,CA0GAnR,EAAOD,QAAU,CACbgR,gBAAiBA,EACjBK,WAlGJ,SAASA,EAAWrD,EAAQnC,EAAQtF,EAAOuG,GAGvC,QAD2B,IAAhBvG,EAAM4I,QAAuB5I,EAAQyK,KAC5C,MAAChD,EAAqD,OAAOA,EACjE,QAA2B,IAAhBA,EAAOjC,KAAsB,CACpC,IAAIuF,EAAO,CAACvF,KAAKiC,EAAOjC,MAKxB,OAJIxF,EAAM6K,kBAAoBpD,EAAOvI,cACjC6L,EAAK7L,YAAcuI,EAAOvI,aAE9BqH,EAASwE,EAAKzF,EAAOtF,GACd+K,CACX,CAkBA,GAhBI/K,EAAM4K,UACFnD,EAAOuD,OAAS5P,MAAME,QAAQmM,EAAOuD,QAAkC,IAAxBvD,EAAOuD,MAAMlQ,eAC5D2M,EAASjL,OAAOkF,OAAO,CAAC,EAAE+F,EAAOuD,MAAM,GAAGvD,IAC5BuD,MAEdvD,EAAOwD,OAAS7P,MAAME,QAAQmM,EAAOwD,QAAkC,IAAxBxD,EAAOwD,MAAMnQ,eAC5D2M,EAASjL,OAAOkF,OAAO,CAAC,EAAE+F,EAAOwD,MAAM,GAAGxD,IAC5BwD,MAEdxD,EAAOyD,OAAS9P,MAAME,QAAQmM,EAAOyD,QAAkC,IAAxBzD,EAAOyD,MAAMpQ,eAC5D2M,EAASjL,OAAOkF,OAAO,CAAC,EAAE+F,EAAOyD,MAAM,GAAGzD,IAC5ByD,OAItB3E,EAASkB,EAAOnC,EAAOtF,GACnBA,EAAM+E,KAAKoG,IAAI1D,GACf,OAAOA,EAuBX,GApBuB,iBAAXA,GAAoC,OAAXA,GAAkBzH,EAAM+E,KAAKqG,IAAI3D,GAAO,GAC7EzH,EAAM2K,KAAM,EACZ3K,EAAM4I,aAEsB,IAAjBnB,EAAO4D,QACdrL,EAAMsL,SAAW,QACjBR,EAAWrD,EAAO4D,MAAM5D,EAAOzH,EAAMuG,IAErCkB,EAAO8D,iBAC+B,iBAA3B9D,EAAO8D,kBACdvL,EAAMsL,SAAW,kBACjBR,EAAWrD,EAAO8D,gBAAgB9D,EAAOzH,EAAMuG,IAGnDkB,EAAO+D,sBACoC,iBAAhC/D,EAAO+D,uBACdxL,EAAMsL,SAAW,uBACjBR,EAAWrD,EAAO+D,qBAAqB/D,EAAOzH,EAAMuG,IAGxDkB,EAAOgE,WACP,IAAK,IAAIC,KAAQjE,EAAOgE,WAAY,CAChC,IAAIE,EAAYlE,EAAOgE,WAAWC,GAClC1L,EAAMsL,SAAW,cAAcI,EAC/BZ,EAAWa,EAAUlE,EAAOzH,EAAMuG,EACtC,CAEJ,GAAIkB,EAAOmE,kBACP,IAAK,IAAIF,KAAQjE,EAAOmE,kBAAmB,CACvC,IAAID,EAAYlE,EAAOmE,kBAAkBF,GACzC1L,EAAMsL,SAAW,qBAAqBI,EACtCZ,EAAWa,EAAUlE,EAAOzH,EAAMuG,EACtC,CAEJ,GAAIkB,EAAOuD,MACP,IAAK,IAAIvM,KAASgJ,EAAOuD,MAAO,CAC5B,IAAIW,EAAYlE,EAAOuD,MAAMvM,GAC7BuB,EAAMsL,SAAW,SAAS7M,EAC1BqM,EAAWa,EAAUlE,EAAOzH,EAAMuG,EACtC,CAEJ,GAAIkB,EAAOwD,MACP,IAAK,IAAIxM,KAASgJ,EAAOwD,MAAO,CAC5B,IAAIU,EAAYlE,EAAOwD,MAAMxM,GAC7BuB,EAAMsL,SAAW,SAAS7M,EAC1BqM,EAAWa,EAAUlE,EAAOzH,EAAMuG,EACtC,CAEJ,GAAIkB,EAAOyD,MACP,IAAK,IAAIzM,KAASgJ,EAAOyD,MAAO,CAC5B,IAAIS,EAAYlE,EAAOyD,MAAMzM,GAC7BuB,EAAMsL,SAAW,SAAS7M,EAC1BqM,EAAWa,EAAUlE,EAAOzH,EAAMuG,EACtC,CAOJ,OALIkB,EAAOoE,MACP7L,EAAMsL,SAAW,MACjBR,EAAWrD,EAAOoE,IAAIpE,EAAOzH,EAAMuG,IAEvCvG,EAAM4I,QACCnB,CACX,iCC5FA,SAASqE,EAAWvM,GAClB,GAAoB,iBAATA,EACT,MAAM,IAAIvC,UAAU,mCAAqCO,KAAKC,UAAU+B,GAE5E,CAGA,SAASwM,EAAqBxM,EAAMyM,GAMlC,IALA,IAIIC,EAJApL,EAAM,GACNqL,EAAoB,EACpBC,GAAa,EACbC,EAAO,EAEF3R,EAAI,EAAGA,GAAK8E,EAAKzE,SAAUL,EAAG,CACrC,GAAIA,EAAI8E,EAAKzE,OACXmR,EAAO1M,EAAK6D,WAAW3I,OACpB,IAAa,KAATwR,EACP,MAEAA,EAAO,EAAQ,CACjB,GAAa,KAATA,EAAmB,CACrB,GAAIE,IAAc1R,EAAI,GAAc,IAAT2R,QAEpB,GAAID,IAAc1R,EAAI,GAAc,IAAT2R,EAAY,CAC5C,GAAIvL,EAAI/F,OAAS,GAA2B,IAAtBoR,GAA8D,KAAnCrL,EAAIuC,WAAWvC,EAAI/F,OAAS,IAAsD,KAAnC+F,EAAIuC,WAAWvC,EAAI/F,OAAS,GAC1H,GAAI+F,EAAI/F,OAAS,EAAG,CAClB,IAAIuR,EAAiBxL,EAAIyL,YAAY,KACrC,GAAID,IAAmBxL,EAAI/F,OAAS,EAAG,EACb,IAApBuR,GACFxL,EAAM,GACNqL,EAAoB,GAGpBA,GADArL,EAAMA,EAAInE,MAAM,EAAG2P,IACKvR,OAAS,EAAI+F,EAAIyL,YAAY,KAEvDH,EAAY1R,EACZ2R,EAAO,EACP,QACF,CACF,MAAO,GAAmB,IAAfvL,EAAI/F,QAA+B,IAAf+F,EAAI/F,OAAc,CAC/C+F,EAAM,GACNqL,EAAoB,EACpBC,EAAY1R,EACZ2R,EAAO,EACP,QACF,CAEEJ,IACEnL,EAAI/F,OAAS,EACf+F,GAAO,MAEPA,EAAM,KACRqL,EAAoB,EAExB,MACMrL,EAAI/F,OAAS,EACf+F,GAAO,IAAMtB,EAAK7C,MAAMyP,EAAY,EAAG1R,GAEvCoG,EAAMtB,EAAK7C,MAAMyP,EAAY,EAAG1R,GAClCyR,EAAoBzR,EAAI0R,EAAY,EAEtCA,EAAY1R,EACZ2R,EAAO,CACT,MAAoB,KAATH,IAA+B,IAAVG,IAC5BA,EAEFA,GAAQ,CAEZ,CACA,OAAOvL,CACT,CAcA,IAAI0L,EAAQ,CAEVvN,QAAS,WAKP,IAJA,IAEIwN,EAFAC,EAAe,GACfC,GAAmB,EAGdjS,EAAIkS,UAAU7R,OAAS,EAAGL,IAAM,IAAMiS,EAAkBjS,IAAK,CACpE,IAAI8E,EACA9E,GAAK,EACP8E,EAAOoN,UAAUlS,SAELmS,IAARJ,IACFA,EAAMK,QAAQL,OAChBjN,EAAOiN,GAGTV,EAAWvM,GAGS,IAAhBA,EAAKzE,SAIT2R,EAAelN,EAAO,IAAMkN,EAC5BC,EAA0C,KAAvBnN,EAAK6D,WAAW,GACrC,CAQA,OAFAqJ,EAAeV,EAAqBU,GAAeC,GAE/CA,EACED,EAAa3R,OAAS,EACjB,IAAM2R,EAEN,IACAA,EAAa3R,OAAS,EACxB2R,EAEA,GAEX,EAEAK,UAAW,SAAmBvN,GAG5B,GAFAuM,EAAWvM,GAES,IAAhBA,EAAKzE,OAAc,MAAO,IAE9B,IAAIiS,EAAoC,KAAvBxN,EAAK6D,WAAW,GAC7B4J,EAAyD,KAArCzN,EAAK6D,WAAW7D,EAAKzE,OAAS,GAQtD,OAHoB,KAFpByE,EAAOwM,EAAqBxM,GAAOwN,IAE1BjS,QAAiBiS,IAAYxN,EAAO,KACzCA,EAAKzE,OAAS,GAAKkS,IAAmBzN,GAAQ,KAE9CwN,EAAmB,IAAMxN,EACtBA,CACT,EAEAwN,WAAY,SAAoBxN,GAE9B,OADAuM,EAAWvM,GACJA,EAAKzE,OAAS,GAA4B,KAAvByE,EAAK6D,WAAW,EAC5C,EAEA5I,KAAM,WACJ,GAAyB,IAArBmS,UAAU7R,OACZ,MAAO,IAET,IADA,IAAImS,EACKxS,EAAI,EAAGA,EAAIkS,UAAU7R,SAAUL,EAAG,CACzC,IAAIyS,EAAMP,UAAUlS,GACpBqR,EAAWoB,GACPA,EAAIpS,OAAS,SACA8R,IAAXK,EACFA,EAASC,EAETD,GAAU,IAAMC,EAEtB,CACA,YAAeN,IAAXK,EACK,IACFV,EAAMO,UAAUG,EACzB,EAEAE,SAAU,SAAkBtQ,EAAMuQ,GAIhC,GAHAtB,EAAWjP,GACXiP,EAAWsB,GAEPvQ,IAASuQ,EAAI,MAAO,GAKxB,IAHAvQ,EAAO0P,EAAMvN,QAAQnC,OACrBuQ,EAAKb,EAAMvN,QAAQoO,IAEF,MAAO,GAIxB,IADA,IAAIC,EAAY,EACTA,EAAYxQ,EAAK/B,QACa,KAA/B+B,EAAKuG,WAAWiK,KADYA,GASlC,IALA,IAAIC,EAAUzQ,EAAK/B,OACfyS,EAAUD,EAAUD,EAGpBG,EAAU,EACPA,EAAUJ,EAAGtS,QACa,KAA3BsS,EAAGhK,WAAWoK,KADUA,GAW9B,IAPA,IACIC,EADQL,EAAGtS,OACK0S,EAGhB1S,EAASyS,EAAUE,EAAQF,EAAUE,EACrCC,GAAiB,EACjBjT,EAAI,EACDA,GAAKK,IAAUL,EAAG,CACvB,GAAIA,IAAMK,EAAQ,CAChB,GAAI2S,EAAQ3S,EAAQ,CAClB,GAAmC,KAA/BsS,EAAGhK,WAAWoK,EAAU/S,GAG1B,OAAO2S,EAAG1Q,MAAM8Q,EAAU/S,EAAI,GACzB,GAAU,IAANA,EAGT,OAAO2S,EAAG1Q,MAAM8Q,EAAU/S,EAE9B,MAAW8S,EAAUzS,IACoB,KAAnC+B,EAAKuG,WAAWiK,EAAY5S,GAG9BiT,EAAgBjT,EACD,IAANA,IAGTiT,EAAgB,IAGpB,KACF,CACA,IAAIC,EAAW9Q,EAAKuG,WAAWiK,EAAY5S,GAE3C,GAAIkT,IADSP,EAAGhK,WAAWoK,EAAU/S,GAEnC,MACoB,KAAbkT,IACPD,EAAgBjT,EACpB,CAEA,IAAImT,EAAM,GAGV,IAAKnT,EAAI4S,EAAYK,EAAgB,EAAGjT,GAAK6S,IAAW7S,EAClDA,IAAM6S,GAAkC,KAAvBzQ,EAAKuG,WAAW3I,KAChB,IAAfmT,EAAI9S,OACN8S,GAAO,KAEPA,GAAO,OAMb,OAAIA,EAAI9S,OAAS,EACR8S,EAAMR,EAAG1Q,MAAM8Q,EAAUE,IAEhCF,GAAWE,EACoB,KAA3BN,EAAGhK,WAAWoK,MACdA,EACGJ,EAAG1Q,MAAM8Q,GAEpB,EAEAK,UAAW,SAAmBtO,GAC5B,OAAOA,CACT,EAEAuO,QAAS,SAAiBvO,GAExB,GADAuM,EAAWvM,GACS,IAAhBA,EAAKzE,OAAc,MAAO,IAK9B,IAJA,IAAImR,EAAO1M,EAAK6D,WAAW,GACvB2K,EAAmB,KAAT9B,EACV+B,GAAO,EACPC,GAAe,EACVxT,EAAI8E,EAAKzE,OAAS,EAAGL,GAAK,IAAKA,EAEtC,GAAa,MADbwR,EAAO1M,EAAK6D,WAAW3I,KAEnB,IAAKwT,EAAc,CACjBD,EAAMvT,EACN,KACF,OAGFwT,GAAe,EAInB,OAAa,IAATD,EAAmBD,EAAU,IAAM,IACnCA,GAAmB,IAARC,EAAkB,KAC1BzO,EAAK7C,MAAM,EAAGsR,EACvB,EAEAE,SAAU,SAAkB3O,EAAM4O,GAChC,QAAYvB,IAARuB,GAAoC,iBAARA,EAAkB,MAAM,IAAInR,UAAU,mCACtE8O,EAAWvM,GAEX,IAGI9E,EAHA2T,EAAQ,EACRJ,GAAO,EACPC,GAAe,EAGnB,QAAYrB,IAARuB,GAAqBA,EAAIrT,OAAS,GAAKqT,EAAIrT,QAAUyE,EAAKzE,OAAQ,CACpE,GAAIqT,EAAIrT,SAAWyE,EAAKzE,QAAUqT,IAAQ5O,EAAM,MAAO,GACvD,IAAI8O,EAASF,EAAIrT,OAAS,EACtBwT,GAAoB,EACxB,IAAK7T,EAAI8E,EAAKzE,OAAS,EAAGL,GAAK,IAAKA,EAAG,CACrC,IAAIwR,EAAO1M,EAAK6D,WAAW3I,GAC3B,GAAa,KAATwR,GAGA,IAAKgC,EAAc,CACjBG,EAAQ3T,EAAI,EACZ,KACF,OAEwB,IAAtB6T,IAGFL,GAAe,EACfK,EAAmB7T,EAAI,GAErB4T,GAAU,IAERpC,IAASkC,EAAI/K,WAAWiL,IACR,KAAZA,IAGJL,EAAMvT,IAKR4T,GAAU,EACVL,EAAMM,GAId,CAGA,OADIF,IAAUJ,EAAKA,EAAMM,GAAmC,IAATN,IAAYA,EAAMzO,EAAKzE,QACnEyE,EAAK7C,MAAM0R,EAAOJ,EAC3B,CACE,IAAKvT,EAAI8E,EAAKzE,OAAS,EAAGL,GAAK,IAAKA,EAClC,GAA2B,KAAvB8E,EAAK6D,WAAW3I,IAGhB,IAAKwT,EAAc,CACjBG,EAAQ3T,EAAI,EACZ,KACF,OACkB,IAATuT,IAGXC,GAAe,EACfD,EAAMvT,EAAI,GAId,OAAa,IAATuT,EAAmB,GAChBzO,EAAK7C,MAAM0R,EAAOJ,EAE7B,EAEAO,QAAS,SAAiBhP,GACxBuM,EAAWvM,GAQX,IAPA,IAAIiP,GAAY,EACZC,EAAY,EACZT,GAAO,EACPC,GAAe,EAGfS,EAAc,EACTjU,EAAI8E,EAAKzE,OAAS,EAAGL,GAAK,IAAKA,EAAG,CACzC,IAAIwR,EAAO1M,EAAK6D,WAAW3I,GAC3B,GAAa,KAATwR,GASS,IAAT+B,IAGFC,GAAe,EACfD,EAAMvT,EAAI,GAEC,KAATwR,GAEkB,IAAduC,EACFA,EAAW/T,EACY,IAAhBiU,IACPA,EAAc,IACK,IAAdF,IAGTE,GAAe,QArBb,IAAKT,EAAc,CACjBQ,EAAYhU,EAAI,EAChB,KACF,CAoBN,CAEA,OAAkB,IAAd+T,IAA4B,IAATR,GAEH,IAAhBU,GAEgB,IAAhBA,GAAqBF,IAAaR,EAAM,GAAKQ,IAAaC,EAAY,EACjE,GAEFlP,EAAK7C,MAAM8R,EAAUR,EAC9B,EAEAW,OAAQ,SAAgBC,GACtB,GAAmB,OAAfA,GAA6C,iBAAfA,EAChC,MAAM,IAAI5R,UAAU,0EAA4E4R,GAElG,OAvVJ,SAAiBC,EAAKD,GACpB,IAAIE,EAAMF,EAAWE,KAAOF,EAAWrV,KACnCiL,EAAOoK,EAAWpK,OAASoK,EAAWhS,MAAQ,KAAOgS,EAAWT,KAAO,IAC3E,OAAKW,EAGDA,IAAQF,EAAWrV,KACduV,EAAMtK,EAERsK,EA8UU,IA9UEtK,EALVA,CAMX,CA6UWuK,CAAQ,EAAKH,EACtB,EAEA9J,MAAO,SAAevF,GACpBuM,EAAWvM,GAEX,IAAIyP,EAAM,CAAEzV,KAAM,GAAIuV,IAAK,GAAItK,KAAM,GAAI2J,IAAK,GAAIvR,KAAM,IACxD,GAAoB,IAAhB2C,EAAKzE,OAAc,OAAOkU,EAC9B,IAEIZ,EAFAnC,EAAO1M,EAAK6D,WAAW,GACvB2J,EAAsB,KAATd,EAEbc,GACFiC,EAAIzV,KAAO,IACX6U,EAAQ,GAERA,EAAQ,EAaV,IAXA,IAAII,GAAY,EACZC,EAAY,EACZT,GAAO,EACPC,GAAe,EACfxT,EAAI8E,EAAKzE,OAAS,EAIlB4T,EAAc,EAGXjU,GAAK2T,IAAS3T,EAEnB,GAAa,MADbwR,EAAO1M,EAAK6D,WAAW3I,KAUV,IAATuT,IAGFC,GAAe,EACfD,EAAMvT,EAAI,GAEC,KAATwR,GAEkB,IAAduC,EAAiBA,EAAW/T,EAA2B,IAAhBiU,IAAmBA,EAAc,IACrD,IAAdF,IAGXE,GAAe,QAlBb,IAAKT,EAAc,CACjBQ,EAAYhU,EAAI,EAChB,KACF,CAwCN,OArBkB,IAAd+T,IAA4B,IAATR,GAEP,IAAhBU,GAEgB,IAAhBA,GAAqBF,IAAaR,EAAM,GAAKQ,IAAaC,EAAY,GACvD,IAATT,IACiCgB,EAAIxK,KAAOwK,EAAIpS,KAAhC,IAAd6R,GAAmB1B,EAAkCxN,EAAK7C,MAAM,EAAGsR,GAAgCzO,EAAK7C,MAAM+R,EAAWT,KAG7G,IAAdS,GAAmB1B,GACrBiC,EAAIpS,KAAO2C,EAAK7C,MAAM,EAAG8R,GACzBQ,EAAIxK,KAAOjF,EAAK7C,MAAM,EAAGsR,KAEzBgB,EAAIpS,KAAO2C,EAAK7C,MAAM+R,EAAWD,GACjCQ,EAAIxK,KAAOjF,EAAK7C,MAAM+R,EAAWT,IAEnCgB,EAAIb,IAAM5O,EAAK7C,MAAM8R,EAAUR,IAG7BS,EAAY,EAAGO,EAAIF,IAAMvP,EAAK7C,MAAM,EAAG+R,EAAY,GAAY1B,IAAYiC,EAAIF,IAAM,KAElFE,CACT,EAEAH,IAAK,IACLI,UAAW,IACXC,MAAO,KACP3C,MAAO,MAGTA,EAAMA,MAAQA,EAEd7S,EAAOD,QAAU8S,gCCnbjB7S,EAAOD,QAAU,CACb0V,IAjFJ,SAAa/K,GACT,OAAOA,CACX,EAgFIL,MAzEJ,SAAeK,GACX,OAAO7G,KAAKuH,MAAMvH,KAAKC,UAAU4G,GACrC,EAwEIgL,aAjEJ,SAAsBhL,GAClB,IAAIxB,EAAS,CAAC,EACd,IAAK,IAAIyM,KAAKjL,EACNA,EAAIkL,eAAeD,KACnBzM,EAAOyM,GAAKjL,EAAIiL,IAGxB,OAAOzM,CACX,EA0DI2M,UAnDJ,SAASA,EAAUnL,GACf,IAAIxB,EAASxH,MAAME,QAAQ8I,GAAO,GAAK,CAAC,EACxC,IAAK,IAAIiL,KAAKjL,GACNA,EAAIkL,eAAeD,IAAMjU,MAAME,QAAQ8I,MACvCxB,EAAOyM,GAAwB,iBAAXjL,EAAIiL,GAAmBE,EAAUnL,EAAIiL,IAAMjL,EAAIiL,IAG3E,OAAOzM,CACX,EA4CI4M,UArCJ,SAAmBpL,GACf,OAAO5H,OAAOkF,OAAO,CAAC,EAAE0C,EAC5B,EAoCIqL,cA9BJ,SAASA,EAAcrL,EAAKlB,GAGxB,GAFKA,IAAMA,EAAO,IAAIwH,SAElBlO,OAAO4H,KAASA,GAAOA,aAAesL,SAAU,OAAOtL,EAC3D,GAAIlB,EAAKiI,IAAI/G,GAAM,OAAOlB,EAAKyM,IAAIvL,GACnC,IACI,IAAIxB,EAAS,IAAIwB,EAAIzH,WAGzB,CAFE,MAAMiD,GACJgD,EAASpG,OAAOoT,OAAOpT,OAAOqT,eAAezL,GACjD,CAWA,OAFAlB,EAAKkI,IAAIhH,EAAKxB,GAEPpG,OAAOkF,OAAOkB,KAAWpG,OAAO8L,KAAKlE,GAAKhK,KAC7C8K,IAAO,CAAG,CAACA,GAAMuK,EAAcrL,EAAIc,GAAMhC,OACjD,qCCzFA,MAAMY,EAAU,eACVC,EAAQ,oBACRF,EAAO,WACPI,EAAQ,aAgGdvK,EAAOD,QAAU,CACbqW,YAtEJ,SAASA,EAAYzT,EAAEyM,EAAYrE,GAC1BA,IAASA,EAAU,CAAC,GACpBA,EAAQsC,QAAOtC,EAAQsC,MAAQ,CAAC,GAChCtC,EAAQzE,QAAOyE,EAAQzE,MAAQ,CAAC,GACrCyE,EAAQzE,MAAMiF,mBAAoB,EAElCR,EAAQmE,MAASnE,EAAQmE,MAAQnE,EAAQmE,MAAM,EAAI,EACnD,IAAIxE,EAAOK,EAAQmE,MAAQ,EAAIvM,EAAI0H,EAAM1H,GACrC0T,EAAY,CAAEtS,KAAM2G,GACpB4L,EAAQvL,EAAQmE,MAAQ,EAAIE,EAAc/E,EAAM+E,GAE/CrE,EAAQwL,SAAQxL,EAAQwL,OAAS7L,GAEtC,IAAI8L,EAtCQ,SAAUzL,GACtB,OAAIA,GAAWA,EAAQgB,QACZ,CACHC,KAAM,WACF,IAAIyK,EAAO/U,MAAMqB,UAAUC,MAAMX,KAAK4Q,WACtC9M,QAAQ6F,KAAK0K,MAAMvQ,QAASsQ,EAChC,GAIG,CACHzK,KAAM,WAEN,EAGZ,CAsBiB2K,CAAU5L,GAEnBO,EAAU,EACd,KAAOA,EAAU,GACbA,EAAU,EACdlB,EAAQiM,EAAUtL,EAAQzE,OAAM,SAASoE,EAAIc,EAAIlF,GAC7C,GAAIiE,EAAMG,EAAIc,GAAM,CAChB,IAAIM,EAAOpB,EAAIc,GAEf,GADAF,IACKP,EAAQsC,MAAMvB,GAmBd,CACD,IAAI8K,EAAQ7L,EAAQsC,MAAMvB,GAC1B,GAAI8K,EAAM/H,SAEN2H,EAAOxK,KAAK,qBAAqBF,EAAK8K,EAAM/Q,MAC5CS,EAAMsF,OAAOtF,EAAMuF,MAAQ+K,EAAM7S,KAC5BgH,EAAY,MAA0C,iBAA7BzE,EAAMsF,OAAOtF,EAAMuF,QAAqBvF,EAAMsF,OAAOtF,EAAMuF,MAAMd,EAAQe,MAAQA,OAE9G,IAAIA,IAAS8K,EAAM/Q,KAEpB,MAAM,IAAII,MAAM,mBAAmB2Q,EAAM/Q,QAIzC2Q,EAAOxK,KAAK,kBACZ1F,EAAMsF,OAAOtF,EAAMuF,MAAQ1B,EAAKyM,EAAMzS,OAAOyS,EAAM/Q,OAClB,IAA7BS,EAAMsF,OAAOtF,EAAMuF,QACnBvF,EAAMsF,OAAOtF,EAAMuF,MAAQ1B,EAAKyM,EAAMzS,OAAOyS,EAAMpL,MAElDT,EAAY,MAA0C,iBAA7BzE,EAAMsF,OAAOtF,EAAMuF,QAAqBvF,EAAMsF,OAAOb,EAAQe,MAAQA,EACvG,CACJ,KAxC0B,CACtB,IAAI8K,EAAQ,CAAC,EACbA,EAAM/Q,KAAOS,EAAMT,KAAKgB,MAAM,SAAS,GACvC+P,EAAMpL,IAAMM,EACZ0K,EAAOxK,KAAK,qBAAqBF,EAAK8K,EAAM/Q,MAC5C+Q,EAAMzS,OAASmS,EACfM,EAAM7S,KAAOoG,EAAKyM,EAAMzS,OAAOyS,EAAMpL,MAClB,IAAfoL,EAAM7S,OACN6S,EAAM7S,KAAOoG,EAAKY,EAAQwL,OAAOK,EAAMpL,KACvCoL,EAAMzS,OAAS4G,EAAQwL,SAER,IAAfK,EAAM7S,MACNyS,EAAOxK,KAAK,sBAAsB4K,EAAMpL,KAE5CT,EAAQsC,MAAMvB,GAAQ8K,EACtBA,EAAM7S,KAAOuC,EAAMsF,OAAOtF,EAAMuF,MAAQuK,EAAYjM,EAAKyM,EAAMzS,OAAOyS,EAAMpL,KAAKoL,EAAMzS,OAAO4G,GACzFA,EAAY,MAA0C,iBAA7BzE,EAAMsF,OAAOtF,EAAMuF,QAAqBvF,EAAMsF,OAAOtF,EAAMuF,MAAMd,EAAQe,MAAQA,GAC/G8K,EAAM/H,UAAW,CACrB,CAuBJ,CACJ,IAEA,OAAOwH,EAAUtS,IACrB,iCC7FA/D,EAAOD,QAAU,CACbwK,MALJ,SAAeG,EAAIc,GACf,MAAiB,SAARA,KAAsBd,GAA2B,iBAAbA,EAAIc,EACrD,gCCYA,SAASqL,EAAW3O,GAChB,OAAOA,EAAEE,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IACjD,CA0EApI,EAAOD,QAAU,CACboK,KA/DJ,SAAcO,EAAKsH,EAAM8E,GACrB,QAAmB,IAARpM,EAAqB,OAAO,EACvC,IAAKsH,GAAwB,iBAATA,GAA+B,MAATA,EAAe,YAA4B,IAAb8E,EAA2BA,EAAWpM,EAE9G,GAAIsH,EAAKrJ,QAAQ,MAAM,EAAG,CACtB,IAAIoO,EAAQ/E,EAAKnL,MAAM,KAEvB,GADUkQ,EAAM,GACP,OAAO,EAChB/E,EAAO+E,EAAM,GACb/E,EAAOgF,mBAAmBhF,EAAKhP,MAAM,GAAG6D,MAAM,KAAK/F,KAAK,KAC5D,CACIkR,EAAKvG,WAAW,OAAMuG,EAAOA,EAAKhP,MAAM,IAE5C,IAAImF,EAAa6J,EAAKnL,MAAM,KAC5B,IAAK,IAAI9F,EAAE,EAAEA,EAAEoH,EAAW/G,OAAOL,IAAK,CAClCoH,EAAWpH,GAAK8V,EAAW1O,EAAWpH,IAEtC,IAAIkW,OAAkC,IAAbH,GAA8B/V,GAAKoH,EAAW/G,OAAO,EAE1E2D,EAAQmS,SAAS/O,EAAWpH,GAAG,IAQnC,IAPKW,MAAME,QAAQ8I,IAAQyM,MAAMpS,IAAWA,EAAMtE,aAAe0H,EAAWpH,GACxEgE,EAASrD,MAAME,QAAQ8I,IAA0B,MAAlBvC,EAAWpH,IAAe,GAAK,EAG9DoH,EAAWpH,GAAMA,EAAI,EAAKoH,EAAWpH,EAAE,GAAK,IAGjC,GAAVgE,GAAiB2F,GAAOA,EAAIkL,eAAezN,EAAWpH,IACvD,GAAIgE,GAAS,EACLkS,IACAvM,EAAI3F,GAAS+R,GAEjBpM,EAAMA,EAAI3F,OAET,KAAe,IAAXA,EACL,OAAIkS,GACIvV,MAAME,QAAQ8I,IACdA,EAAIrK,KAAKyW,GAENA,QAEN,EAGDG,IACAvM,EAAIvC,EAAWpH,IAAM+V,GAEzBpM,EAAMA,EAAIvC,EAAWpH,GACzB,KAEC,CACD,QAAyB,IAAb+V,GAA6C,iBAARpM,GAC3ChJ,MAAME,QAAQ8I,GAIf,OAAO,EAHRA,EAAIvC,EAAWpH,IAAOkW,EAAaH,EAAiC,MAApB3O,EAAWpH,EAAE,IAAkC,MAApBoH,EAAWpH,EAAE,GAAc,GAAK,CAAC,EAC5G2J,EAAMA,EAAIvC,EAAWpH,GAG7B,CACJ,CACA,OAAO2J,CACX,EAII0M,SAvFJ,SAAkBlP,GACd,OAAOA,EAAEE,QAAQ,MAAO,MAAMA,QAAQ,MAAO,KACjD,EAsFIyO,WAAaA,qCC7FjB,MAAMO,EAAW,eAwDjBpX,EAAOD,QAAU,CACbqK,QAnCJ,SAASA,EAAQiN,EAAQ/Q,EAAOuG,GAK5B,GAJKvG,IAAOA,EAAQ,CAAC4I,MAAM,IACtB5I,EAAM4I,QACP5I,EAAQxD,OAAOkF,OAAO,CAAC,EAtBpB,CACHnC,KAAM,IACNqJ,MAAO,EACPrD,KAAM,GACND,OAAQ,CAAC,EACT0L,QAAS,CAAC,EACVjM,KAAM,IAAI2F,QACVuG,UAAU,EACVhM,mBAAmB,GAcqBjF,IAEtB,iBAAX+Q,EAAqB,OAChC,IAAIG,EAAQlR,EAAMT,KAClB,IAAK,IAAI2F,KAAO6L,EAAQ,CAQpB,GAPA/Q,EAAMkF,IAAMA,EACZlF,EAAMT,KAAOS,EAAMT,KAAO,IAAMjC,mBAAmBwT,EAAS5L,IAC5DlF,EAAMmR,aAAenR,EAAM+E,KAAK4K,IAAIoB,EAAO7L,IAC3ClF,EAAMiR,cAA0C,IAAvBjR,EAAMmR,aAC3BJ,EAAOzB,eAAepK,IACtBqB,EAASwK,EAAQ7L,EAAKlF,GAEE,iBAAhB+Q,EAAO7L,KAAwBlF,EAAMiR,SAAW,CACpDjR,EAAMiF,oBAAsB7J,MAAME,QAAQyV,EAAO7L,KAAyB,OAAhB6L,EAAO7L,IACjElF,EAAM+E,KAAKqG,IAAI2F,EAAO7L,GAAKlF,EAAMT,MAErC,IAAI6R,EAAW,CAAC,EAChBA,EAAS9L,OAASyL,EAClBK,EAAS7R,KAAOS,EAAMT,KACtB6R,EAASxI,MAAQ5I,EAAM4I,MAAQ5I,EAAM4I,MAAM,EAAI,EAC/CwI,EAAS7L,KAAOL,EAChBkM,EAASJ,QAAUhR,EAAMgR,QACzBI,EAASrM,KAAO/E,EAAM+E,KACtBqM,EAASH,UAAW,EACpBG,EAASnM,kBAAoBjF,EAAMiF,kBACnCnB,EAAQiN,EAAO7L,GAAMkM,EAAU7K,EACnC,CACAvG,EAAMT,KAAO2R,CACjB,CACJ,qKC7CIzM,EAAU,CAAC,EAEfA,EAAQ4M,kBAAoB,IAC5B5M,EAAQ6M,cAAgB,IAElB7M,EAAQ8M,OAAS,SAAc,KAAM,QAE3C9M,EAAQ+M,OAAS,IACjB/M,EAAQgN,mBAAqB,IAEhB,IAAI,IAAShN,GAKnB,UAAe,KAAW,WAAiB,gBAAiBmI,gCCxBnE,IAAI8E,EAAc,GAElB,SAASC,EAAqBC,GAG5B,IAFA,IAAIhP,GAAU,EAELnI,EAAI,EAAGA,EAAIiX,EAAY5W,OAAQL,IACtC,GAAIiX,EAAYjX,GAAGmX,aAAeA,EAAY,CAC5ChP,EAASnI,EACT,KACF,CAGF,OAAOmI,CACT,CAEA,SAASiP,EAAa3X,EAAMuK,GAI1B,IAHA,IAAIqN,EAAa,CAAC,EACdC,EAAc,GAETtX,EAAI,EAAGA,EAAIP,EAAKY,OAAQL,IAAK,CACpC,IAAIJ,EAAOH,EAAKO,GACZT,EAAKyK,EAAQD,KAAOnK,EAAK,GAAKoK,EAAQD,KAAOnK,EAAK,GAClD2X,EAAQF,EAAW9X,IAAO,EAC1B4X,EAAa,GAAGrX,OAAOP,EAAI,KAAKO,OAAOyX,GAC3CF,EAAW9X,GAAMgY,EAAQ,EACzB,IAAIC,EAAoBN,EAAqBC,GACzCxN,EAAM,CACR8N,IAAK7X,EAAK,GACV8X,MAAO9X,EAAK,GACZ+X,UAAW/X,EAAK,GAChBgY,SAAUhY,EAAK,GACfiY,MAAOjY,EAAK,IAGd,IAA2B,IAAvB4X,EACFP,EAAYO,GAAmBM,aAC/Bb,EAAYO,GAAmBO,QAAQpO,OAClC,CACL,IAAIoO,EAAUC,EAAgBrO,EAAKK,GACnCA,EAAQiO,QAAUjY,EAClBiX,EAAYiB,OAAOlY,EAAG,EAAG,CACvBmX,WAAYA,EACZY,QAASA,EACTD,WAAY,GAEhB,CAEAR,EAAYhY,KAAK6X,EACnB,CAEA,OAAOG,CACT,CAEA,SAASU,EAAgBrO,EAAKK,GAC5B,IAAImO,EAAMnO,EAAQ+M,OAAO/M,GAezB,OAdAmO,EAAIC,OAAOzO,GAEG,SAAiB0O,GAC7B,GAAIA,EAAQ,CACV,GAAIA,EAAOZ,MAAQ9N,EAAI8N,KAAOY,EAAOX,QAAU/N,EAAI+N,OAASW,EAAOV,YAAchO,EAAIgO,WAAaU,EAAOT,WAAajO,EAAIiO,UAAYS,EAAOR,QAAUlO,EAAIkO,MACzJ,OAGFM,EAAIC,OAAOzO,EAAM0O,EACnB,MACEF,EAAIG,QAER,CAGF,CAEArZ,EAAOD,QAAU,SAAUS,EAAMuK,GAG/B,IAAIuO,EAAkBnB,EADtB3X,EAAOA,GAAQ,GADfuK,EAAUA,GAAW,CAAC,GAGtB,OAAO,SAAgBwO,GACrBA,EAAUA,GAAW,GAErB,IAAK,IAAIxY,EAAI,EAAGA,EAAIuY,EAAgBlY,OAAQL,IAAK,CAC/C,IACIgE,EAAQkT,EADKqB,EAAgBvY,IAEjCiX,EAAYjT,GAAO8T,YACrB,CAIA,IAFA,IAAIW,EAAqBrB,EAAaoB,EAASxO,GAEtC1J,EAAK,EAAGA,EAAKiY,EAAgBlY,OAAQC,IAAM,CAClD,IAEIoY,EAASxB,EAFKqB,EAAgBjY,IAIK,IAAnC2W,EAAYyB,GAAQZ,aACtBb,EAAYyB,GAAQX,UAEpBd,EAAYiB,OAAOQ,EAAQ,GAE/B,CAEAH,EAAkBE,CACpB,CACF,gCCrGA,IAAIE,EAAO,CAAC,EAoCZ1Z,EAAOD,QAVP,SAA0B8X,EAAQ8B,GAChC,IAAI1N,EAxBN,SAAmBA,GACjB,QAA4B,IAAjByN,EAAKzN,GAAyB,CACvC,IAAI2N,EAAcC,SAASC,cAAc7N,GAEzC,GAAI8N,OAAOC,mBAAqBJ,aAAuBG,OAAOC,kBAC5D,IAGEJ,EAAcA,EAAYK,gBAAgBC,IAI5C,CAHE,MAAOhU,GAEP0T,EAAc,IAChB,CAGFF,EAAKzN,GAAU2N,CACjB,CAEA,OAAOF,EAAKzN,EACd,CAKekO,CAAUtC,GAEvB,IAAK5L,EACH,MAAM,IAAIhG,MAAM,2GAGlBgG,EAAOmO,YAAYT,EACrB,gCC1BA3Z,EAAOD,QAPP,SAA4BgL,GAC1B,IAAIsP,EAAUR,SAASS,cAAc,SAGrC,OAFAvP,EAAQ6M,cAAcyC,EAAStP,EAAQwP,YACvCxP,EAAQ8M,OAAOwC,EAAStP,EAAQA,SACzBsP,CACT,oCCGAra,EAAOD,QARP,SAAwCya,GACtC,IAAIC,EAAmD,KAEnDA,GACFD,EAAaE,aAAa,QAASD,EAEvC,gCC4DAza,EAAOD,QAZP,SAAgBgL,GACd,IAAIyP,EAAezP,EAAQgN,mBAAmBhN,GAC9C,MAAO,CACLoO,OAAQ,SAAgBzO,IAzD5B,SAAe8P,EAAczP,EAASL,GACpC,IAAI8N,EAAM,GAEN9N,EAAIiO,WACNH,GAAO,cAAc3X,OAAO6J,EAAIiO,SAAU,QAGxCjO,EAAI+N,QACND,GAAO,UAAU3X,OAAO6J,EAAI+N,MAAO,OAGrC,IAAIkC,OAAiC,IAAdjQ,EAAIkO,MAEvB+B,IACFnC,GAAO,SAAS3X,OAAO6J,EAAIkO,MAAMxX,OAAS,EAAI,IAAIP,OAAO6J,EAAIkO,OAAS,GAAI,OAG5EJ,GAAO9N,EAAI8N,IAEPmC,IACFnC,GAAO,KAGL9N,EAAI+N,QACND,GAAO,KAGL9N,EAAIiO,WACNH,GAAO,KAGT,IAAIE,EAAYhO,EAAIgO,UAEhBA,GAA6B,oBAATjV,OACtB+U,GAAO,uDAAuD3X,OAAO4C,KAAKE,SAASC,mBAAmBC,KAAKC,UAAU4U,MAAe,QAMtI3N,EAAQ4M,kBAAkBa,EAAKgC,EAAczP,EAAQA,QACvD,CAiBM2L,CAAM8D,EAAczP,EAASL,EAC/B,EACA2O,OAAQ,YAjBZ,SAA4BmB,GAE1B,GAAgC,OAA5BA,EAAaI,WACf,OAAO,EAGTJ,EAAaI,WAAWC,YAAYL,EACtC,CAWMM,CAAmBN,EACrB,EAEJ,gCCpDAxa,EAAOD,QAZP,SAA2ByY,EAAKgC,GAC9B,GAAIA,EAAaO,WACfP,EAAaO,WAAWC,QAAUxC,MAC7B,CACL,KAAOgC,EAAaS,YAClBT,EAAaK,YAAYL,EAAaS,YAGxCT,EAAaJ,YAAYP,SAASqB,eAAe1C,GACnD,CACF,oCCVA,MAAMzO,EAAK,EAAQ,IACbC,EAAM,EAAQ,KAGdmR,GAFU,EAAQ,KAEV,EAAQ,MAChBlR,EAAQ,EAAQ,KAChBC,EAAO,EAAQ,IAEfC,EAAO,EAAQ,IACfuG,EAAkBvG,EAAKA,KACvBI,EAAQ,aACRF,EAAQ,aACR+Q,EAAS,qBACThR,EAAU,eACV6E,EAAW,EAAQ,KACnBoM,EAAK,EAAQ,KACb7Q,EAAS,EAAQ,KAEjB8Q,EAAc,mBAEdC,EAAa,UAIbC,EAAgB,QACtB,IAAIC,EAEJ,MAAMC,UAAiBzV,MACrBhD,YAAYoD,GACVsV,MAAMtV,GACNlG,KAAK+C,KAAO,UACd,EAGF,SAAS0Y,EAAWvV,EAAS0E,GACzB,IAAItI,EAAM,IAAIiZ,EAASrV,GAEvB,GADA5D,EAAIsI,QAAUA,GACVA,EAAQqB,QAIR,MAAM3J,EAHNsI,EAAQqB,QAAQC,OAAO5J,EAK/B,CAEA,SAASoZ,EAAYxV,EAASgQ,EAAWtL,GACjCA,EAAQ+Q,SACRzF,EAAUtL,EAAQgR,cAAc,iBAAmB1V,EAGnDuV,EAAWvV,EAAS0E,EAE5B,CAqIA,SAASiR,EAAYjO,EAAOhD,GACxBsQ,EAAGjK,WAAWrD,EAAO,CAAC,EAAE,CAAC,GAAE,SAASA,EAAOnC,EAAOtF,IAnCtD,SAAkCyH,EAAOnC,GAsBrC,GArBImC,EAAO,eAAiBrM,MAAME,QAAQmM,EAAO,iBACxCA,EAAOkO,WAAUlO,EAAOkO,SAAW,IACxClO,EAAOkO,SAAWlO,EAAOkO,SAASpb,OAAOkN,EAAO,sBACzCA,EAAO,eAEdA,EAAO,aACPA,EAAOwD,MAAQxD,EAAO,kBACfA,EAAO,YAEdA,EAAO,aACPA,EAAOyD,MAAQzD,EAAO,kBACfA,EAAO,YAEdA,EAAO,WACPA,EAAOoE,IAAMpE,EAAO,gBACbA,EAAO,UAEkB,kBAAzBA,EAAO,gBACdA,EAAOmO,SAAWnO,EAAO,qBAClBA,EAAO,eAEwB,iBAA9BA,EAAO,oBAAuF,iBAA3CA,EAAO,mBAAmBoO,aAA4B,CACjHpO,EAAOqO,cAAgBrO,EAAO,0BACvBA,EAAO,mBACd,IAAK,IAAI6I,KAAS7I,EAAOqO,cAAcC,QAAS,CAC5C,IAAIC,EAAcvO,EAAOqO,cAAcC,QAAQzF,GAC3C0F,EAAY7Q,WAAW,oBACvBsC,EAAOqO,cAAcC,QAAQzF,GAAS0F,EAAYlU,QAAQ,iBAAiB,yBAEnF,CACJ,CACJ,CAIQmU,CAAyBxO,GArIjC,SAAwBA,EAAOnC,EAAOb,GAelC,GAdIgD,EAAOmO,UAAUnR,EAAQyR,UACzBzO,EAAOqO,eAAiD,iBAAzBrO,EAAOqO,gBACtCrO,EAAOqO,cAAgB,CAAED,aAAcpO,EAAOqO,gBAE9CrO,EAAO4D,OAASjQ,MAAME,QAAQmM,EAAO4D,SACT,IAAxB5D,EAAO4D,MAAMvQ,OACb2M,EAAO4D,MAAQ,CAAC,EAEa,IAAxB5D,EAAO4D,MAAMvQ,OAClB2M,EAAO4D,MAAQ5D,EAAO4D,MAAM,GAE3B5D,EAAO4D,MAAQ,CAAEJ,MAAOxD,EAAO4D,QAGpC5D,EAAO0O,MAAQ/a,MAAME,QAAQmM,EAAO0O,MACpC,GAAI1R,EAAQ6E,MAAO,CAEf,GADA7E,EAAQyR,UACmB,IAAvBzO,EAAO0O,KAAKrb,cACL2M,EAAO0O,SAEb,CACI1O,EAAOyD,QAAOzD,EAAOyD,MAAQ,IAClC,IAAK,IAAIiL,KAAQ1O,EAAO0O,KAAM,CAC1B,IAAIC,EAAY,CAAC,EACjB,GAAa,SAATD,EACA1O,EAAOmO,UAAW,MAEjB,CACDQ,EAAUD,KAAOA,EACjB,IAAK,IAAIzK,KAAQxH,EAAOZ,qBACO,IAAhBmE,EAAOiE,OACd0K,EAAU1K,GAAQjE,EAAOiE,UAClBjE,EAAOiE,GAG1B,CACI0K,EAAUD,MACV1O,EAAOyD,MAAMnR,KAAKqc,EAE1B,QACO3O,EAAO0O,KACc,IAAxB1O,EAAOyD,MAAMpQ,cACN2M,EAAOyD,MAETzD,EAAOyD,MAAMpQ,OAAS,IAC3B2M,EAAO0O,KAAO1O,EAAOyD,MAAM,GAAGiL,KAC1B3Z,OAAO8L,KAAKb,EAAOyD,MAAM,IAAIpQ,OAAS,GACtCya,EAAY,6BAA6B9N,EAAOhD,UAE7CgD,EAAOyD,MAEtB,CAEIzD,EAAO0O,MAAQ/a,MAAME,QAAQmM,EAAO0O,OAAgC,IAAvB1O,EAAO0O,KAAKrb,SACzD2M,EAAO0O,KAAO1O,EAAO0O,KAAK,GAElC,MAEIb,EAAW,+CAAgD7Q,GAI/DgD,EAAO0O,MAAwB,SAAhB1O,EAAO0O,cACf1O,EAAO0O,KACd1O,EAAOmO,UAAW,GAED,UAAhBnO,EAAO0O,MAAuB1O,EAAO4D,QACtC5D,EAAO4D,MAAQ,CAAC,GAEA,SAAhB5D,EAAO0O,OACP1O,EAAO0O,KAAO,SACd1O,EAAOkH,OAAS,UAEW,kBAApBlH,EAAOkO,WACVlO,EAAOkO,UAAYlO,EAAO7K,YACK,IAApB0I,EAAOqQ,WACdrQ,EAAOqQ,SAAW,IAElBva,MAAME,QAAQgK,EAAOqQ,WAAWrQ,EAAOqQ,SAAS5b,KAAK0N,EAAO7K,cAE7D6K,EAAOkO,UAOdlO,EAAO4O,KAAuC,iBAAzB5O,EAAO4O,IAAIC,YAC3B7O,EAAO4O,IAAIC,kBAAkB7O,EAAO4O,IAAIC,gBAEX,IAA3B7O,EAAO8O,kBAChB9R,EAAQyR,iBACDzO,EAAO8O,gBAEpB,CAuCQC,CAAe/O,EAAOnC,EAAOb,EACjC,GACJ,CAYA,SAASgS,EAAUrS,EAAKc,EAAKlF,GACzB,IAAIyE,EAAUzE,EAAMgR,QAAQvM,QAC5B,GAAIR,EAAMG,EAAIc,GAAM,CAChB,GAAId,EAAIc,GAAKC,WAAW,uBAGnB,GAAiB,eAAbf,EAAIc,UAEFd,EAAIc,GACXlF,EAAMsF,OAAOtF,EAAMuF,MAAQxB,EAAMU,EAAQoE,QAAQ6N,eAEhD,GAAiB,eAAbtS,EAAIc,UAEFd,EAAIc,GACXlF,EAAMsF,OAAOtF,EAAMuF,MAAQxB,EAAMU,EAAQoE,QAAQ8N,eAEhD,GAAIvS,EAAIc,GAAKC,WAAW,kBAAmB,CAE5C,IAAImD,EAAOlE,EAAIc,GAAKpD,QAAQ,iBAAkB,IAAIvB,MAAM,KACxD,MAAM1B,EAAMgF,EAAK0M,WAAWjI,EAAK,IAEjC,IAAIsO,EAASzB,EAAe0B,QAAQnG,mBAAmB7R,IACnD+X,EACAtO,EAAK,GAAKsO,EAGVrB,EAAY,+BAA+BnR,EAAIc,GAAKd,EAAIK,GAE5DL,EAAIc,GAAO,wBAA0BoD,EAAK9N,KAAK,IACnD,MACK,GAAI4J,EAAIc,GAAKC,WAAW,iBAEzBf,EAAIc,GAAO,2BAA6BhB,EAAOvC,SAASyC,EAAIc,GAAKpD,QAAQ,gBAAiB,UAEzF,GAAIsC,EAAIc,GAAKC,WAAW,gBAEzBf,EAAIc,GAAO,0BAA4BhB,EAAOvC,SAASyC,EAAIc,GAAKpD,QAAQ,eAAgB,UAEvF,GAAIsC,EAAIc,GAAKC,WAAW,KAAM,CAE/B,IAAIQ,EAAS5B,EAAMF,EAAKA,KAAKY,EAAQoE,QAAQzE,EAAIc,KACjD,IAAe,IAAXS,EAAkB4P,EAAY,yBAAyBnR,EAAIc,GAAKd,EAAIK,QACnE,GAAIA,EAAQqS,OAAO1S,EAAIc,IACxBd,EAAIc,GAAOT,EAAQqS,OAAO1S,EAAIc,QAE7B,CAED,IAAI6R,EAAS3S,EAAIc,GACjB6R,EAASA,EAAOjV,QAAQ,uBAAuB,IAC/CiV,EAASA,EAAOjV,QAAQ,yBAAyB,IACjDiV,EAASA,EAAOjV,QAAQ,0BAA0B,IAClDiV,EAASA,EAAOjV,QAAQ,uBAAuB,IAC/C,IAAIqU,EAAO,UACPa,EAAcD,EAAOzK,YAAY,WAcrC,GAbA6J,EAAQY,EAAO1U,QAAQ,aAAa2U,EAAe,UAC7CD,EAAO1U,QAAQ,eAAe2U,EAAe,YAC7CD,EAAO1U,QAAQ,YAAY2U,EAAe,WAC1CD,EAAO1U,QAAQ,OAAO2U,EAAe,aACrCD,EAAO1U,QAAQ,gBAAgB2U,EAAe,aAAe,UAKtD,YAATb,GACAT,EAAY/P,EAAOlB,GAGT,cAAT0R,GAAmC,eAATA,EAAwB,CACnD,IAAIc,EAASd,EAAKe,OAAO,EAAEf,EAAKrb,OAAO,GACvB,cAAXmc,GAA2BtR,EAAO/I,MAAS+I,EAAO/I,OAASsH,EAAOvC,SAASgE,EAAO/I,QACnFqa,EAAS3Z,mBAAmBqI,EAAO/I,OAGvC,IAAIua,EAAS,EAMb,IALI/S,EAAI,YAlFpBvF,GAFsBA,EAqFwBuF,EAAI,WApF9C/B,QAAQ,MAAM,EACZxD,EAAI0B,MAAM,KAAK,GAAGA,MAAM,KAAKkG,MAG7B5H,EAAI0B,MAAM,KAAKkG,MAAMlG,MAAM,KAAK,GAgFtB0W,EA9Eb3Z,mBAAmB4G,EAAOvC,SAAS9C,IA+EtBsY,EAAS,IAGNtT,EAAKA,KAAKY,EAAQoE,QAAQ,gBAAgBsN,EAAK,IAAIc,EAAOE,IAC7DA,EAAqB,KAAXA,EAAgB,IAAMA,EAGpC,IAAI9R,EAAS,gBAAgB8Q,EAAK,IAAIc,EAAOE,EACzCC,EAAY,GAEH,aAATjB,IACAxQ,EAAS,CAAEzJ,MAAOyJ,GAClByR,EAAY,UAGhBvT,EAAKA,KAAKY,EAAQoE,QAAQxD,EAAOM,GACjClB,EAAQqS,OAAO1S,EAAIc,IAAQG,EAAO+R,EAClChT,EAAIc,GAAOG,EAAO+R,CACtB,CACJ,CACJ,CAIA,UAFOhT,EAAI,UAEP5H,OAAO8L,KAAKlE,GAAKtJ,OAAS,EAAG,CAC7B,MAAMuc,EAASjT,EAAIc,GACboS,EAAWtX,EAAMT,KAAK8C,QAAQ,YAAc,EACtB,aAAxBoC,EAAQ8S,cAGHD,GAAqC,UAAxB7S,EAAQ8S,oBACnBnT,EAAIoB,KACXxF,EAAMsF,OAAOtF,EAAMuF,MAAQ,CAAEyF,MAAO,CAAE,CAAExF,KAAM6R,GAAUjT,KAGxDpE,EAAMsF,OAAOtF,EAAMuF,MAAQ,CAAEC,KAAM6R,GAE3C,CAEJ,CA7HJ,IAA8BxY,EA8H1B,GAAa,eAARqG,GAA8C,iBAAbd,EAAIc,IAAuBd,EAAIc,GAAKC,WAAW,MAAQ,CACzF,IAAImD,EAAOlE,EAAIc,GAAKpD,QAAQ,iBAAkB,IAAIA,QAAQ,wBAAwB,IAAIvB,MAAM,KACxFqW,EAASzB,EAAe0B,QAAQnG,mBAAmBpI,EAAK,KACxDsO,EACAtO,EAAK,GAAKsO,EAGVrB,EAAY,+BAA+BnR,EAAIc,GAAKd,EAAIK,GAE5DL,EAAIc,GAAO,wBAA0BoD,EAAK9N,KAAK,IACnD,CACJ,CAYA,SAASgd,EAAgBC,GACrB,IAAK,IAAI7V,KAAK6V,EACV,IAAK,IAAIC,KAAKD,EAAe7V,GAAI,CAC7B,IAAI+V,EAAQzT,EAAOvC,SAAS+V,GACxBA,IAAMC,IACNF,EAAe7V,GAAG+V,GAASF,EAAe7V,GAAG8V,UACtCD,EAAe7V,GAAG8V,GAEjC,CAER,CAEA,SAASE,EAAsBC,EAAQpT,GAKnC,GAJoB,UAAhBoT,EAAO1B,OACP0B,EAAO1B,KAAO,OACd0B,EAAOA,OAAS,SAEA,WAAhBA,EAAO1B,KAAmB,CAC1B,IAAI2B,EAAO,CAAC,EACRC,EAAWF,EAAOC,KACF,gBAAhBD,EAAOC,OAAwBC,EAAW,qBAC1B,eAAhBF,EAAOC,OAAuBC,EAAW,0BACN,IAA5BF,EAAOG,mBAAkCF,EAAKE,iBAAmBH,EAAOG,iBAAiBzX,MAAM,KAAK,GAAGJ,QAAU,KAC7F,iBAApB0X,EAAOI,WAAuBH,EAAKG,SAAWJ,EAAOI,SAAS1X,MAAM,KAAK,GAAGJ,QAAU,KACjG2X,EAAKI,OAASL,EAAOK,QAAU,CAAC,EAChCL,EAAOM,MAAQ,CAAC,EAChBN,EAAOM,MAAMJ,GAAYD,SAClBD,EAAOC,YACPD,EAAOG,wBACPH,EAAOI,gBACPJ,EAAOK,YACa,IAAhBL,EAAOjb,OACV6H,EAAQ6E,OACR7E,EAAQyR,iBACD2B,EAAOjb,MAGd0Y,EAAW,mEAAoE7Q,GAG3F,CACJ,CAEA,SAAS2T,EAAelc,GACpB,OAAQA,IAAUA,EAAM,eAC5B,CAEA,SAASmc,EAAcC,EAAQ7T,GAC3B,GAAI6T,EAAO9S,KACP8S,EAAO9S,KAAO8S,EAAO9S,KAAK1D,QAAQ,eAAgB,+BAEjD,CACGwW,EAAOnC,OAASmC,EAAO7Q,SACvB6Q,EAAO7Q,OAAS,CAAC,GAEjB6Q,EAAOnC,OAAMmC,EAAO7Q,OAAO0O,KAAOmC,EAAOnC,MACzCmC,EAAOjN,OAA+B,UAAtBiN,EAAOjN,MAAM8K,OACzBmC,EAAOjN,MAAMkN,mBAAqBD,EAAOC,kBACzChD,EAAY,6CAA8C+C,EAAQ7T,UAE/D6T,EAAOjN,MAAMkN,kBAEJ,UAAhBD,EAAOnC,MACyB,QAA5BmC,EAAOC,iBACPhD,EAAY,0DAA2D+C,EAAQ7T,GAE9C,UAA5B6T,EAAOC,iBACZhD,EAAY,4DAA6D+C,EAAQ7T,GAEhD,UAA5B6T,EAAOC,iBACZD,EAAOE,SAAU,EAEgB,QAA5BF,EAAOC,kBACZhD,EAAY,8CAA+C+C,EAAQ7T,GACnE6T,EAAO,sBAAwB,OAG/BA,EAAOjF,MAAQ,gBAEZiF,EAAOC,kBAETD,EAAOC,mBACR9T,EAAQ6E,OACR7E,EAAQyR,iBACDoC,EAAOC,kBAGdjD,EAAW,uEAAwE7Q,WAGpF6T,EAAOnC,KACd,IAAK,IAAIzK,KAAQxH,EAAOb,6BACQ,IAAjBiV,EAAO5M,KACd4M,EAAO7Q,OAAOiE,GAAQ4M,EAAO5M,UACtB4M,EAAO5M,IAGtB,IAAK,IAAIA,KAAQxH,EAAOZ,qBACQ,IAAjBgV,EAAO5M,KACd4M,EAAO7Q,OAAOiE,GAAQ4M,EAAO5M,UACtB4M,EAAO5M,GAG1B,CACJ,CAEA,SAAS+M,EAAYC,EAAOjU,GACxB,GAAIiU,EAAMlT,KAAKnD,QAAQ,kBAAoB,EAAG,CAC1C,IAAIsW,EAAgBD,EAAMlT,KAAKjF,MAAM,iBACrCmY,EAAMlT,KAAOmT,EAAc,GAAK,2BAA6BzU,EAAOvC,SAASgX,EAAc,GAC/F,CACID,EAAMlT,KAAKnD,QAAQ,mBAAqB,GACxCkT,EAAY,+BAAgCmD,EAAOjU,EAE3D,CAkBA,SAASmU,EAAiBF,EAAOG,EAAItZ,EAAMuZ,EAAQra,EAAOoK,EAASpE,GAC/D,IAEIsU,EAFAnW,EAAS,CAAC,EACVoW,GAAsB,EAG1B,GAAIH,GAAMA,EAAGnC,UAAoC,iBAAhBmC,EAAGnC,SAAwB,CACxD,IAAIjS,EAAQ6E,MAKR,OAAOgM,EAAW,kDAAmD7Q,GAJrEA,EAAQyR,UACR2C,EAAGnC,SAAW,CAACmC,EAAGnC,SAK1B,CACKtb,MAAME,QAAQuN,EAAQ6N,kBAAkB7N,EAAQ6N,SACrD,IAAIA,IAAamC,EAAKA,EAAGnC,SAAW,OAAU7N,EAAQ6N,UAAY,IAAKtQ,OAAOlC,EAAO9B,YAErF,GAAIsW,GAASA,EAAMlT,MAA+B,iBAAfkT,EAAMlT,KAAoB,CAEzDiT,EAAYC,EAAOjU,GACnB,IAAImF,EAAM8G,mBAAmBgI,EAAMlT,KAAK1D,QAAQ,2BAA4B,KACxEmX,GAAQ,EACRtT,EAASkD,EAAQhH,WAAWqX,WAAWtP,GAW3C,GATOjE,IAAYA,EAAO,kBAAqB+S,EAAMlT,KAAKL,WAAW,QAEjEuT,EAAM,iBAAkB,EACxBO,GAAQ,GAMRA,EAAO,CACP,IAAIpa,EAAM6Z,EAAMlT,KACZ2T,EAAW/O,EAAgBvB,EAAS6P,EAAMlT,OACzC2T,GAAYta,EAAIsG,WAAW,MAC5BoQ,EAAY,+BAAiC1W,EAAK6Z,EAAOjU,GAGrD0U,IAAUT,EAAQS,EAE9B,CACJ,CAEA,GAAIT,IAAUA,EAAM9b,MAAQ8b,EAAMU,IAAK,CAEE,kBAA1BV,EAAM,kBACbA,EAAMW,WAAaX,EAAM,uBAClBA,EAAM,sBAGiB,IAAvBA,EAAM,eACbA,EAAMY,QAAUZ,EAAM,oBACfA,EAAM,cAGC,SAAbA,EAAMU,IAAoBV,EAAMvC,OAC7B1R,EAAQ6E,OACR7E,EAAQyR,UACRwC,EAAMvC,KAAO,UAGbb,EAAW,kEAAmE7Q,IAGlFiU,EAAMvC,MAA8B,iBAAfuC,EAAMvC,MAAqBuC,EAAMvC,KAAK3Q,OAE3DkT,EAAMvC,KAAO/L,EAAgBvB,EAAS6P,EAAMvC,KAAK3Q,OAElC,SAAfkT,EAAMvC,OACNuC,EAAM,sBAAwBA,EAAMvC,KACpC4C,EAAeL,EAAMvC,MAErBuC,EAAMxZ,aAA4C,iBAAtBwZ,EAAMxZ,aAA4BwZ,EAAMxZ,YAAYsG,OAEhFkT,EAAMxZ,YAAckL,EAAgBvB,EAAS6P,EAAMxZ,YAAYsG,OAEzC,OAAtBkT,EAAMxZ,oBAA6BwZ,EAAMxZ,YAE7C,IAAIqa,EAAsBb,EAAMH,iBA+ChC,GA9CoB,UAAfG,EAAMvC,MAAsBoD,IAC7BA,EAAsB,OAEtBA,IACmB,UAAfb,EAAMvC,OACF1R,EAAQ6E,OACR7E,EAAQyR,iBACDwC,EAAMH,kBAGbjD,EAAW,sEAAuE7Q,IAG7D,QAAxB8U,GAAiD,UAAbb,EAAMU,IAAiC,WAAbV,EAAMU,KACrEV,EAAMrF,MAAQ,OACdqF,EAAMF,SAAU,GAES,QAAxBe,GAAiD,SAAbb,EAAMU,IAAgC,WAAbV,EAAMU,KACpEV,EAAMrF,MAAQ,UAEU,QAAxBkG,IACiB,UAAbb,EAAMU,GACNV,EAAMrF,MAAQ,iBAGdkC,EAAY,6EAA8EmD,EAAOjU,IAG7E,UAAxB8U,IACiB,UAAbb,EAAMU,GACNV,EAAMrF,MAAQ,gBAGdkC,EAAY,+EAAgFmD,EAAOjU,IAG/E,UAAxB8U,IACAb,EAAMF,SAAU,GAEQ,QAAxBe,IACAhE,EAAY,8CAA+CmD,EAAOjU,GAClEiU,EAAM,sBAAwB,cAE3BA,EAAMH,kBAGbG,EAAMvC,MAAwB,SAAfuC,EAAMvC,MAAkC,aAAbuC,EAAMU,GAChD,GAAIV,EAAMrN,OAASqN,EAAMjR,OACrB8N,EAAY,uCAAwCmD,EAAOjU,OAE1D,CACGiU,EAAMjR,QAAQhD,EAAQyR,UACpBwC,EAAMjR,QAAoC,iBAAjBiR,EAAMjR,SAAsBiR,EAAMjR,OAAS,CAAC,GAC3EiR,EAAMjR,OAAO0O,KAAOuC,EAAMvC,KACtBuC,EAAMrN,QACNqN,EAAMjR,OAAO4D,MAAQqN,EAAMrN,aACpBqN,EAAMrN,MACbvH,EAAQ4U,EAAMjR,OAAO4D,MAAO,MAAM,SAAUjH,EAAKc,EAAKlF,GACrC,qBAARkF,GAAoD,iBAAbd,EAAIc,KACxCqU,GAAuBnV,EAAIc,KAASqU,GACpChE,EAAY,6CAA8CmD,EAAOjU,UAE9DL,EAAIc,GAInB,KAEJ,IAAK,IAAIwG,KAAQxH,EAAOb,6BACO,IAAhBqV,EAAMhN,KAAuBgN,EAAMjR,OAAOiE,GAAQgN,EAAMhN,WAC5DgN,EAAMhN,EAErB,CAGAgN,EAAMjR,QACNiO,EAAYgD,EAAMjR,OAAOhD,GAGzBiU,EAAM,2BACW,UAAbA,EAAMU,KACNV,EAAMc,eAAgB,SACfd,EAAM,0BAGzB,CAEA,GAAIA,GAAsB,aAAbA,EAAMU,GAAmB,CAElCJ,GAAsB,EACtBpW,EAAOtI,QAAU,CAAC,EAClB,IAAImf,EAAc,oCAMlB,GALK/C,EAAe,QAAMA,EAASrU,QAAQ,wBAA0B,IACjEoX,EAAc,uBAGlB7W,EAAOtI,QAAQmf,GAAe,CAAC,EAC3Bf,EAAMjR,OACN7E,EAAOtI,QAAQmf,GAAahS,OAASiR,EAAMjR,OACvCiR,EAAMjR,OAAOjC,OACb5C,EAAO,cAAgB8N,mBAAmBgI,EAAMjR,OAAOjC,KAAK1D,QAAQ,wBAAyB,UAGhG,CACDc,EAAOtI,QAAQmf,GAAahS,OAAS,CAAC,EACtC7E,EAAOtI,QAAQmf,GAAahS,OAAO0O,KAAO,SAC1CvT,EAAOtI,QAAQmf,GAAahS,OAAOgE,WAAa,CAAC,EACjD7I,EAAOtI,QAAQmf,GAAahS,OAAOgE,WAAWiN,EAAM9b,MAAQ,CAAC,EAC7D,IAAI6K,EAAS7E,EAAOtI,QAAQmf,GAAahS,OACrC9B,EAAS/C,EAAOtI,QAAQmf,GAAahS,OAAOgE,WAAWiN,EAAM9b,MAC7D8b,EAAMxZ,cAAayG,EAAOzG,YAAcwZ,EAAMxZ,aAC9CwZ,EAAMY,UAAS3T,EAAO2T,QAAUZ,EAAMY,SACtCZ,EAAMvC,OAAMxQ,EAAOwQ,KAAOuC,EAAMvC,MAEpC,IAAK,IAAIzK,KAAQxH,EAAOb,6BACO,IAAhBqV,EAAMhN,KAAuB/F,EAAO+F,GAAQgN,EAAMhN,KAE1C,IAAnBgN,EAAM/C,WACDlO,EAAOkO,WAAUlO,EAAOkO,SAAW,IACxClO,EAAOkO,SAAS5b,KAAK2e,EAAM9b,MAC3BgG,EAAO+S,UAAW,QAEO,IAAlB+C,EAAMgB,UAAyB/T,EAAO+T,QAAUhB,EAAMgB,SAC7D/T,EAAO8F,aAAY9F,EAAO8F,WAAaiN,EAAMjN,YAC7CiN,EAAM1N,QAAOrF,EAAOqF,MAAQ0N,EAAM1N,OAClB,UAAf0N,EAAMvC,MAAsBuC,EAAW,QACxC/S,EAAO0F,MAAQqN,EAAMrN,MACjB1F,EAAO0F,MAAMkN,yBAAyB5S,EAAO0F,MAAMkN,kBAErC,SAAjBQ,GAA6D,SAAhCL,EAAM,wBACpC/S,EAAOwQ,KAAO,SACdxQ,EAAOgJ,OAAS,UAIpBgL,EAAejB,EAAO/S,EAC1B,CACJ,MACS+S,GAAyB,SAAfA,EAAMvC,OAEjBuC,EAAM/C,WAAU/S,EAAO+S,SAAW+C,EAAM/C,UAC5C/S,EAAOtI,QAAU,CAAC,EAClBsI,EAAOtI,QAAQ,4BAA8B,CAAC,EAC9CsI,EAAOtI,QAAQ,4BAA4BmN,OAAS,CAAC,EACrD7E,EAAOtI,QAAQ,4BAA4BmN,OAAO0O,KAAO,SACzDvT,EAAOtI,QAAQ,4BAA4BmN,OAAOkH,OAAS,SAC3DgL,EAAejB,EAAO9V,IAE1B,GAAI8V,GAAsB,SAAbA,EAAMU,GAAe,CAC9BxW,EAAOtI,QAAU,CAAC,EACdoe,EAAM9b,OAAMgG,EAAO,eAAiBiW,GAAMA,EAAGe,YAAc1V,EAAOV,YAAYqV,EAAGe,aAAe,KAAO,IAAMlB,EAAM9b,MAAMoF,eACzH0W,EAAMxZ,cAAa0D,EAAO1D,YAAcwZ,EAAMxZ,aAC9CwZ,EAAM/C,WAAU/S,EAAO+S,SAAW+C,EAAM/C,UAGxCkD,GAAMpU,EAAQoV,QAAUnB,EAAM9b,OAC9Bic,EAAGpU,EAAQoV,QAAUnB,EAAM9b,MAE3B8b,EAAMjR,QAAUiR,EAAMjR,OAAOjC,KAC7B5C,EAAO,cAAgB8N,mBAAmBgI,EAAMjR,OAAOjC,KAAK1D,QAAQ,wBAAyB,KAExF4W,EAAMjR,QAAiC,UAAtBiR,EAAMjR,OAAO0O,MAAqBuC,EAAMjR,OAAO4D,OAASqN,EAAMjR,OAAO4D,MAAM7F,OACjG5C,EAAO,cAAgB8N,mBAAmBgI,EAAMjR,OAAO4D,MAAM7F,KAAK1D,QAAQ,wBAAyB,KAAO,SAGzG4U,EAAS5b,QACV4b,EAAS3c,KAAK,oBAGlB,IAAK,IAAI+f,KAAYpD,EACjB9T,EAAOtI,QAAQwf,GAAY,CAAC,EAC5BlX,EAAOtI,QAAQwf,GAAUrS,OAAS1D,EAAM2U,EAAMjR,QAAU,CAAC,GACzDiO,EAAY9S,EAAOtI,QAAQwf,GAAUrS,OAAOhD,GAIhDkV,EAAejB,EAAO9V,EAC1B,CAkDA,GAhDIpG,OAAO8L,KAAK1F,GAAQ9H,OAAS,IAC7B4d,EAAM,iBAAkB,EAEpBG,KACIA,EAAGkB,aAAef,GAClBH,EAAGkB,YAAY,qBAAsB,EAGrCxE,EAAY,cAFDsD,EAAGe,aAAenb,GAEK,8BAA+Boa,EAAIpU,KAGhEoU,EAAGkB,cACLlB,EAAKtZ,EAAKuZ,GAhS7B,SAA2BD,EAAGpU,GAC1B,IAAIuV,EAAQ,CAAC,EACb,IAAK,IAAI9U,KAAO1I,OAAO8L,KAAKuQ,GACxBmB,EAAM9U,GAAO2T,EAAG3T,GACJ,eAARA,IACA8U,EAAMD,YAAc,CAAC,EACjBtV,EAAQoV,SAAQG,EAAMvV,EAAQoV,QAAU,KAIpD,OADAG,EAAMD,YAAc,CAAC,EACdC,CACX,CAqRuCC,CAAkBpB,EAAGpU,IAEvCoU,EAAGkB,YAAYzf,SAAWue,EAAGkB,YAAYzf,QAAQ,wBAC9Cue,EAAGkB,YAAYzf,QAAQ,uBAA6B,QAAMue,EAAGkB,YAAYzf,QAAQ,uBAAuBmN,OAAiB,YAAM7E,EAAOtI,QAAQ,wBAA4BsI,EAAOtI,QAAQ,uBAA6B,QAAMsI,EAAOtI,QAAQ,uBAAuBmN,OAAiB,YACvRoR,EAAGkB,YAAYzf,QAAQ,uBAAuBmN,OAAOgE,WACjDjP,OAAOkF,OAAOmX,EAAGkB,YAAYzf,QAAQ,uBAAuBmN,OAAOgE,WAAY7I,EAAOtI,QAAQ,uBAAuBmN,OAAOgE,YAChIoN,EAAGkB,YAAYzf,QAAQ,uBAAuBmN,OAAOkO,UAAYkD,EAAGkB,YAAYzf,QAAQ,uBAAuBmN,OAAOkO,UAAY,IAAIpb,OAAOqI,EAAOtI,QAAQ,uBAAuBmN,OAAOkO,UAAU,IAC/LkD,EAAGkB,YAAYzf,QAAQ,uBAAuBmN,OAAOkO,SAAS7a,eACxD+d,EAAGkB,YAAYzf,QAAQ,uBAAuBmN,OAAOkO,UAG1DkD,EAAGkB,YAAYzf,SAAWue,EAAGkB,YAAYzf,QAAQ,sCAAwCue,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,QAAUoR,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,OAAOgE,YACrO7I,EAAOtI,QAAQ,sCAAwCsI,EAAOtI,QAAQ,qCAAqCmN,QAAU7E,EAAOtI,QAAQ,qCAAqCmN,OAAOgE,YACnLoN,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,OAAOgE,WAC/DjP,OAAOkF,OAAOmX,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,OAAOgE,WAAY7I,EAAOtI,QAAQ,qCAAqCmN,OAAOgE,YAC5JoN,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,OAAOkO,UAAYkD,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,OAAOkO,UAAY,IAAIpb,OAAOqI,EAAOtI,QAAQ,qCAAqCmN,OAAOkO,UAAU,IACzOkD,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,OAAOkO,SAAS7a,eACtE+d,EAAGkB,YAAYzf,QAAQ,qCAAqCmN,OAAOkO,WAI9EkD,EAAGkB,YAAcvd,OAAOkF,OAAOmX,EAAGkB,YAAanX,GAC1CiW,EAAGkB,YAAY,gBACZlB,EAAGkB,YAAYtS,QAAUoR,EAAGkB,YAAYtS,OAAOjC,KAC/CqT,EAAGkB,YAAY,cAAgBrJ,mBAAmBmI,EAAGkB,YAAYtS,OAAOjC,KAAK1D,QAAQ,wBAAyB,KAAKvB,MAAM,KAAK/F,KAAK,IAE9Hqe,EAAGe,cACRf,EAAGkB,YAAY,cAAgB7V,EAAOV,YAAYqV,EAAGe,kBASzElB,IAAUA,EAAM,gBAAiB,QAC1BA,EAAMvC,KACb,IAAK,IAAIzK,KAAQxH,EAAOb,+BACbqV,EAAMhN,GAGC,SAAbgN,EAAMU,SAA8C,IAAnBV,EAAM/C,WAAiD,IAAnB+C,EAAM/C,WACxElR,EAAQ6E,OACR7E,EAAQyR,UACRwC,EAAM/C,UAAW,GAGjBL,EAAW,sDAAsDoD,EAAM9b,KAAK,OAAO6B,EAAM,IAAKgG,GAG1G,CAEA,OAAOoU,CACX,CAEA,SAASc,EAAerV,EAAK4V,GACzB,IAAK,IAAIxO,KAAQpH,EACToH,EAAKvG,WAAW,QAAUuG,EAAKvG,WAAW,WAC1C+U,EAAIxO,GAAQpH,EAAIoH,GAG5B,CAEA,SAASyO,EAAgBC,EAAUxd,EAAMic,EAAIhQ,EAASpE,GAClD,IAAK2V,EAAU,OAAO,EACtB,GAAIA,EAAS5U,MAAkC,iBAAlB4U,EAAS5U,KAC9B4U,EAAS5U,KAAKnD,QAAQ,mBAAqB,EAE3CkT,EAAY,gCAAkC6E,EAAS5U,KAAM4U,EAAU3V,GAGnE2V,EAAS5U,KAAKL,WAAW,kBACzBiV,EAAS5U,KAAO,0BAA4BtB,EAAOvC,SAAS+O,mBAAmB0J,EAAS5U,KAAK1D,QAAQ,eAAgB,WAI5H,CAaD,SAZqC,IAAzBsY,EAASlb,aAA0D,OAAzBkb,EAASlb,aAC7B,KAAzBkb,EAASlb,aAAuBuF,EAAQ6E,SACzC7E,EAAQ6E,MACiB,iBAAb8Q,GAA4Bhf,MAAME,QAAQ8e,KAClD3V,EAAQyR,UACRkE,EAASlb,YAAe8V,EAAYoF,IAAa,IAIrD9E,EAAW,gDAAiD7Q,SAGrC,IAApB2V,EAAS3S,OAAwB,CAQxC,GANAiO,EAAY0E,EAAS3S,OAAOhD,GAExB2V,EAAS3S,OAAOjC,MAAyC,iBAAzB4U,EAAS3S,OAAOjC,MAAsB4U,EAAS3S,OAAOjC,KAAKL,WAAW,kBACtGiV,EAAS3S,OAAOjC,KAAO,0BAA4BtB,EAAOvC,SAAS+O,mBAAmB0J,EAAS3S,OAAOjC,KAAK1D,QAAQ,eAAgB,OAGnI+W,GAAMA,EAAGlC,UAAoC,iBAAhBkC,EAAGlC,SAAwB,CACxD,IAAIlS,EAAQ6E,MAKR,OAAOgM,EAAW,kDAAmD7Q,GAJrEA,EAAQyR,UACR2C,EAAGlC,SAAW,CAACkC,EAAGlC,SAK1B,CACI9N,EAAQ8N,WAAavb,MAAME,QAAQuN,EAAQ8N,kBAAkB9N,EAAQ8N,SAEzE,IAAIA,IAAakC,EAAKA,EAAGlC,SAAW,OAAU9N,EAAQ8N,UAAY,IAAKvQ,OAAOlC,EAAO9B,YAChFuU,EAAS7b,QAAQ6b,EAAS5c,KAAK,OAEpCqgB,EAAS9f,QAAU,CAAC,EACpB,IAAK,IAAIwf,KAAYnD,EAAU,CAG3B,GAFAyD,EAAS9f,QAAQwf,GAAY,CAAC,EAC9BM,EAAS9f,QAAQwf,GAAUrS,OAAS1D,EAAMqW,EAAS3S,QAC/C2S,EAASC,UAAYD,EAASC,SAASP,GAAW,CAClD,IAAIR,EAAU,CAAC,EACfA,EAAQpd,MAAQke,EAASC,SAASP,GAClCM,EAAS9f,QAAQwf,GAAUO,SAAW,CAAC,EACvCD,EAAS9f,QAAQwf,GAAUO,SAASD,SAAWd,SACxCc,EAASC,SAASP,EAC7B,CAC+C,SAA3CM,EAAS9f,QAAQwf,GAAUrS,OAAO0O,OAClCiE,EAAS9f,QAAQwf,GAAUrS,OAAS,CAAE0O,KAAM,SAAUxH,OAAQ,UAEtE,QACOyL,EAAS3S,MACpB,CAEA,IAAK,IAAIqS,KAAYM,EAASC,SACrBD,EAAS9f,UAAS8f,EAAS9f,QAAU,CAAC,GACtC8f,EAAS9f,QAAQwf,KAAWM,EAAS9f,QAAQwf,GAAY,CAAC,GAC/DM,EAAS9f,QAAQwf,GAAUO,SAAW,CAAC,EACvCD,EAAS9f,QAAQwf,GAAUO,SAASD,SAAW,CAAC,EAChDA,EAAS9f,QAAQwf,GAAUO,SAASD,SAASle,MAAQke,EAASC,SAASP,GAI3E,UAFOM,EAASC,SAEZD,EAASE,QACT,IAAK,IAAIC,KAAKH,EAASE,QACK,gBAApBC,EAAEnb,cACEqF,EAAQ6E,OACR7E,EAAQyR,iBACDkE,EAASE,QAAQC,IAGxBjF,EAAW,kDAAmD7Q,GAIlE4T,EAAc+B,EAASE,QAAQC,GAAI9V,EAInD,CACJ,CAEA,SAAS+V,EAAazK,EAAW0K,EAAehW,EAASiW,EAAkB7R,GACvE,IAAK,IAAIwG,KAAKU,EAAW,CACrB,IAAIxQ,EAAOwQ,EAAUV,GAEjB9P,GAASA,EAAK,YAA2C,iBAApBA,EAAK,aAC1CA,EAAKob,MAAQpb,EAAK,kBACXA,EAAK,YAEZA,GAASA,EAAK,cAA+C,iBAAtBA,EAAK,eAC5CA,EAAKqb,QAAUrb,EAAK,oBACbA,EAAK,cAEZA,GAASA,EAAK,kBAAuD,iBAA1BA,EAAK,mBAChDA,EAAKL,YAAcK,EAAK,wBACjBA,EAAK,kBAEZA,GAASA,EAAK,cAAkBnE,MAAME,QAAQiE,EAAK,gBACnDA,EAAKsb,QAAUtb,EAAK,oBACbA,EAAK,cAEhB,IAAK,IAAIuZ,KAAUvZ,EACf,GAAK2E,EAAOX,YAAYlB,QAAQyW,IAAW,GAAkB,mCAAXA,EAA8C,CAC5F,IAAID,EAAKtZ,EAAKuZ,GAEd,GAAID,GAAMA,EAAGK,YAAc9d,MAAME,QAAQud,EAAGK,YAAa,CACrD,GAAI3Z,EAAK2Z,WACL,IAAK,IAAIR,KAASnZ,EAAK2Z,WACO,iBAAfR,EAAMlT,OACbiT,EAAYC,EAAOjU,GACnBiU,EAAQtO,EAAgBvB,EAAS6P,EAAMlT,OAE/BqT,EAAGK,WAAWpW,MAAK,SAAUlD,EAAGnF,EAAGsI,GAC3C,OAASnD,EAAEhD,OAAS8b,EAAM9b,MAAUgD,EAAEwZ,KAAOV,EAAMU,EACvD,KAE6B,aAAbV,EAAMU,IAAoC,SAAbV,EAAMU,IAAkC,SAAfV,EAAMvC,OACxE0C,EAAKD,EAAiBF,EAAOG,EAAItZ,EAAMuZ,EAAQzJ,EAAGxG,EAASpE,GACvDA,EAAQoV,QAAiC,KAAvBhB,EAAGpU,EAAQoV,gBACtBhB,EAAGpU,EAAQoV,SAKlC,IAAK,IAAInB,KAASG,EAAGK,WACjBL,EAAKD,EAAiBF,EAAOG,EAAItZ,EAAMuZ,EAAQA,EAAS,IAAMzJ,EAAGxG,EAASpE,GAE1EA,EAAQoV,QAAiC,KAAvBhB,EAAGpU,EAAQoV,gBACtBhB,EAAGpU,EAAQoV,QAEjBpV,EAAQqW,OACLjC,EAAGK,aAAYL,EAAGK,WAAaL,EAAGK,WAAW9S,OAAOgS,GAEhE,CAOA,GALIS,GAAMA,EAAGkC,UAAUvD,EAAgBqB,EAAGkC,UAKxB,iBAAPlC,EAAiB,CACxB,IAAKA,EAAGmC,UAAW,CACf,IAAIC,EAAc,CAClBA,YAA0B,oBAC1BpC,EAAGmC,UAAY,CAAEtB,QAASuB,EAC9B,CACA,IAAK,IAAIC,KAAKrC,EAAGmC,UAEbb,EADetB,EAAGmC,UAAUE,GACFA,EAAGrC,EAAIhQ,EAASpE,EAElD,CAEA,GAAIoU,GAAOA,EAAG,cAAkBzd,MAAME,QAAQud,EAAG,cAC7CA,EAAGgC,QAAUhC,EAAG,oBACTA,EAAG,kBACP,GAAIA,GAAMA,EAAGsC,SAAWtC,EAAGsC,QAAQrgB,OACtC,IAAK,IAAI+c,KAAUgB,EAAGsC,QAClB,KAAMtS,EAAQsS,SAAatS,EAAQsS,QAAQ9Y,QAAQwV,GAAU,KACpDgB,EAAGgC,UACJhC,EAAGgC,QAAU,IAEbzf,MAAME,QAAQuN,EAAQgS,UACtB,IAAK,IAAIO,KAAUvS,EAAQgS,QAAS,CAChC,IAAIQ,EAAYtX,EAAMqX,GAClBE,EAAY5X,EAAIoB,MAAMuW,EAAU3X,KACpC4X,EAAUtV,SAAW6R,EACrBwD,EAAU3X,IAAM4X,EAAU3M,SAC1BkK,EAAGgC,QAAQ9gB,KAAKshB,EACpB,CAUhB,GAJI5W,EAAQqW,QACRjC,EAAG,kBAAoBA,EAAGnC,UAAY,GACtCmC,EAAG,kBAAoBA,EAAGlC,UAAY,IAEtCkC,EAAI,CAKJ,UAJOA,EAAGnC,gBACHmC,EAAGlC,gBACHkC,EAAGsC,QAENtC,EAAG,iBAAkB,CACrB,IAAK,IAAIjZ,KAAKiZ,EAAG,iBAAkB,CAC/B,IAAIS,EAAUT,EAAG,iBAAiBjZ,GAC9B2b,EAAKrX,EAAOV,YAAY5D,GAC5B,GAAI0Z,EAAQJ,WACR,IAAK,IAAI7J,KAAKiK,EAAQJ,WAAY,CAC9B,IAAIhd,EAAQod,EAAQJ,WAAW7J,GAC/B,IAAK,IAAIqJ,KAAUG,EAAGK,YAAY,IAAI3e,OAAOgF,EAAK2Z,YAAY,IACtDR,EAAMlT,OACNkT,EAAQ7U,EAAKA,KAAKgF,EAAQ6P,EAAMlT,OAE/BkT,EAAM9b,OAASyS,GAAQqJ,EAAMY,UACzBZ,EAAM2B,WACP3B,EAAM2B,SAAW,CAAC,GAEtB3B,EAAM2B,SAASza,GAAK,CAAC1D,MAAOA,GAGxC,CAEJ,GAAIod,EAAQ0B,UACR,IAAK,IAAIE,KAAK5B,EAAQ0B,UAAW,CAC7B,GAAI1B,EAAQ0B,UAAUE,GAAGZ,QACrB,IAAK,IAAIC,KAAKjB,EAAQ0B,UAAUE,GAAGZ,QAAS,CACxC,IAAIpe,EAAQod,EAAQ0B,UAAUE,GAAGZ,QAAQC,GACzC,IAAK,IAAIiB,KAAM3C,EAAGmC,UAAUE,GAAGZ,QACvBkB,IAAOjB,IACM1B,EAAGmC,UAAUE,GAAGZ,QAAQkB,GAC9BlC,QAAUpd,EAG7B,CAEJ,GAAIod,EAAQ0B,UAAUE,GAAGO,OACrB5S,EAAQhH,WAAWwY,SAASkB,GAAM,CAAErf,MAAO6H,EAAMuV,EAAQ0B,UAAUE,GAAGO,OAClE5C,EAAGmC,UAAUE,IAAMrC,EAAGmC,UAAUE,GAAG5gB,SACnC,IAAK,IAAIohB,KAAM7C,EAAGmC,UAAUE,GAAG5gB,QAAS,CACpC,IAAImf,EAAcZ,EAAGmC,UAAUE,GAAG5gB,QAAQohB,GACrCjC,EAAYY,WACbZ,EAAYY,SAAW,CAAC,GAE5BZ,EAAYY,SAASza,GAAK,CAAE4F,KAAM,yBAAyB+V,EAC/D,CAIZ,CAER,QACO1C,EAAG,gBACd,CAGA,GADIA,EAAGK,YAAuC,IAAzBL,EAAGK,WAAWpe,eAAqB+d,EAAGK,WACvDL,EAAGkB,YAAa,CAChB,IAAI4B,EAAuB9C,EAAGe,YAAc1V,EAAOV,YAAYqV,EAAGe,aAAe1V,EAAOV,YAAYsV,EAASzJ,GAAGrN,cAC5G4Z,EAAS1X,EAAOvC,SAASkX,EAAGkB,YAAY,eAAiB4B,GAAwB,WAC9E9C,EAAGkB,YAAY,cACtB,IAAI8B,EAAQte,KAAKC,UAAUqb,EAAGkB,aAC1B+B,EAAS5X,EAAOhB,KAAK2Y,GACzB,IAAKnB,EAAiBoB,GAAS,CAC3B,IAAIxL,EAAQ,CAAC,EACbA,EAAM1T,KAAOgf,EACbtL,EAAMmL,KAAO5C,EAAGkB,YAChBzJ,EAAMlI,KAAO,GACbsS,EAAiBoB,GAAUxL,CAC/B,CACA,IAAI1G,EAAM,KAAK6Q,EAAc,IAAInd,mBAAmBuG,EAAKiN,SAASzB,IAAI,IAAIyJ,EAAO,eACjF4B,EAAiBoB,GAAQ1T,KAAKrO,KAAK6P,EACvC,CACJ,CAEJ,CAEJ,GAAIrK,GAAQA,EAAK2Z,WAAY,CACzB,IAAK,IAAI6C,KAAMxc,EAAK2Z,WAEhBN,EADYrZ,EAAK2Z,WAAW6C,GACJ,KAAMxc,EAAM,KAAM8P,EAAGxG,EAASpE,IAErDA,EAAQqW,OAAS1f,MAAME,QAAQiE,EAAK2Z,cACrC3Z,EAAK2Z,WAAa3Z,EAAK2Z,WAAW9S,OAAOgS,GAEjD,CACJ,CACJ,CAgLA,SAAS4D,EAAwBZ,GAC7B,OAAKA,GAAWA,EAAO1X,KAA8B,iBAAf0X,EAAO1X,KAC7C0X,EAAO1X,IAAM0X,EAAO1X,IAAInD,MAAM,MAAM/F,KAAK,KACzC4gB,EAAO1X,IAAM0X,EAAO1X,IAAInD,MAAM,MAAM/F,KAAK,KACzC4gB,EAAO1X,IAAI5B,QAAQ,cAAc,SAAUG,EAAOC,GACzCkZ,EAAOa,YACRb,EAAOa,UAAY,CAAC,GAExBb,EAAOa,UAAU/Z,GAAU,CAAEwX,QAAS,UAC1C,IACO0B,GATgEA,CAU3E,CAEA,SAASc,EAAQrT,EAASpE,EAASsB,GAC/B,QAA6B,IAAjB8C,EAAQsT,MAA2C,OAAjBtT,EAAQsT,KAAgB,CAClE,IAAI1X,EAAQ6E,MAKR,OAAOvD,EAAO,IAAIqP,EAAS,yCAJ3B3Q,EAAQyR,UACRrN,EAAQsT,KAAO,CAAEC,QAAS,GAAInd,MAAO,GAK7C,CACA,GAA6B,iBAAjB4J,EAAQsT,MAAuB/gB,MAAME,QAAQuN,EAAQsT,MAC7D,OAAOpW,EAAO,IAAIqP,EAAS,2BAE/B,QAAmC,IAAvBvM,EAAQsT,KAAKld,OAAkD,OAAvB4J,EAAQsT,KAAKld,MAAiB,CAC9E,IAAIwF,EAAQ6E,MAKR,OAAOvD,EAAO,IAAIqP,EAAS,0CAJ3B3Q,EAAQyR,UACRrN,EAAQsT,KAAKld,MAAQ,EAK7B,CACA,QAAqC,IAAzB4J,EAAQsT,KAAKC,SAAsD,OAAzBvT,EAAQsT,KAAKC,QAAmB,CAClF,IAAI3X,EAAQ6E,MAKR,OAAOvD,EAAO,IAAIqP,EAAS,4CAJ3B3Q,EAAQyR,UACRrN,EAAQsT,KAAKC,QAAU,EAK/B,CACA,GAAoC,iBAAzBvT,EAAQsT,KAAKC,QAAsB,CAC1C,IAAI3X,EAAQ6E,MAKR,OAAOvD,EAAO,IAAIqP,EAAS,8CAJ3B3Q,EAAQyR,UACRrN,EAAQsT,KAAKC,QAAUvT,EAAQsT,KAAKC,QAAQjiB,UAKpD,CACA,QAAiC,IAAtB0O,EAAQsT,KAAKE,KAAsB,CAC1C,IAAI5X,EAAQ6E,MAKP,OAAOvD,EAAO,IAAIqP,EAAS,mDAJ5B3Q,EAAQyR,UACRrN,EAAQsT,KAAK,UAAYtT,EAAQsT,KAAKE,YAC/BxT,EAAQsT,KAAKE,IAG5B,CACA,QAA2C,IAAhCxT,EAAQsT,KAAKG,eAAgC,CACpD,GAAoC,OAAhCzT,EAAQsT,KAAKG,eAAyB,CACtC,IAAI7X,EAAQ6E,MAKR,OAAOvD,EAAO,IAAIqP,EAAS,mDAJ3B3Q,EAAQyR,UACRrN,EAAQsT,KAAKG,eAAiB,EAKtC,CACA,IACY,IAAIC,IAAI1T,EAAQsT,KAAKG,eAQjC,CANA,MAAOzW,GACH,IAAIpB,EAAQ6E,MAIP,OAAOvD,EAAO,IAAIqP,EAAS,kDAH5B3Q,EAAQyR,iBACDrN,EAAQsT,KAAKG,cAG5B,CACJ,CACJ,CAEA,SAASE,EAAS3T,EAASpE,EAASsB,GAChC,QAA6B,IAAlB8C,EAAQjE,MAAuB,CACtC,IAAIH,EAAQ6E,MAKR,OAAOvD,EAAO,IAAIqP,EAAS,0CAJ3B3Q,EAAQyR,UACRrN,EAAQjE,MAAQ,CAAC,CAKzB,CACJ,CAqBA,SAAS6X,EAAWC,EAASjY,EAAS8B,GAClC,OAAOsO,EAAMtO,EAAU,IAAIxH,SAAQ,SAAUC,EAAS+G,GAiBlD,GAhBK2W,IAASA,EAAU,CAAC,GACzBjY,EAAQyE,SAAWwT,EACdjY,EAAQ+C,OAAM/C,EAAQ+C,KAAO5D,EAAKpG,UAAUkf,IACjDjY,EAAQ2E,UAAY,GACpB3E,EAAQE,aAAe,CAAC,EACxBF,EAAQgE,aAAc,EACtBhE,EAAQ4F,cAAe,EACvB5F,EAAQqB,QAAU,CAAC,EACnBrB,EAAQqB,QAAQ9G,QAAUA,EAC1ByF,EAAQqB,QAAQC,OAASA,EACzBtB,EAAQyR,QAAU,EACbzR,EAAQsC,QAAOtC,EAAQsC,MAAQ,CAAC,GACjCtC,EAAQ5G,SAAQ4G,EAAQsC,MAAMtC,EAAQ5G,QAAU4G,EAAQyE,UAjCpE,SAAgC9E,EAAKK,GACjC,MAAMM,EAAO,IAAI4X,QACjB7Y,EAAQM,EAAK,CAACa,mBAAkB,IAAO,SAAUb,EAAKc,EAAKlF,GAC9B,iBAAboE,EAAIc,IAAoC,OAAbd,EAAIc,KACnCH,EAAKoG,IAAI/G,EAAIc,IACTT,EAAQmY,QACRxY,EAAIc,GAAOnB,EAAMK,EAAIc,IAGrBoQ,EAAW,+BAA+BtV,EAAMT,KAAMkF,GAI1DM,EAAK9G,IAAImG,EAAIc,IAGzB,GACJ,CAkBQ2X,CAAuBH,EAASjY,GAE5BiY,EAAQ7T,SAAuC,iBAApB6T,EAAQ7T,SAAyB6T,EAAQ7T,QAAQ1D,WAAW,MAkBvF,OAjBAV,EAAQoE,QAAUiM,EAAO4H,GACzBR,EAAQzX,EAAQoE,QAASpE,EAASsB,GAClCyW,EAAS/X,EAAQoE,QAASpE,EAASsB,QAEnC4C,EAAS6B,gBAAgB/F,GACxByC,MAAK,WACF,OAAIzC,EAAQqY,OACD9d,EAAQyF,EAAQoE,SAGhB7J,EAAQyF,EAEvB,IACC0C,OAAM,SAAStB,GACZhG,QAAQ6F,KAAKG,GACbE,EAAOF,EACX,IAIJ,IAAM6W,EAAQA,SAAgC,OAAnBA,EAAQA,QAC/B,OAAO3W,EAAO,IAAIqP,EAAS,yCAA2CsH,EAAQ7T,QAAU6T,EAAQ7T,QAAU6T,EAAQA,WAGtH,IAAI7T,EAAUpE,EAAQoE,QAAU,CAAC,EAGjC,GAFAA,EAAQA,QAA4C,iBAA1BpE,EAAQyQ,eAA8BzQ,EAAQyQ,cAAc/P,WAAW,MAASV,EAAQyQ,cAAgBA,EAE9HzQ,EAAQsY,OAAQ,CACXlU,EAAQ,cACTA,EAAQ,YAAc,IAE1B,IAAIkU,EAAS,CAAC,EACdA,EAAOrZ,IAAMe,EAAQ5G,QAAQ4G,EAAQsY,OACrCA,EAAOpO,OAAS,UAChBoO,EAAOX,QAAUM,EAAQA,QACzBK,EAAOC,UAAY,CAAC,EACpBD,EAAOC,UAAUtZ,IAAM,qCACvBqZ,EAAOC,UAAUZ,QAAUnH,EAC3BpM,EAAQ,YAAY9O,KAAKgjB,EAC7B,CASA,GANAlU,EAAUrM,OAAOkF,OAAOmH,EAASiM,EAAO4H,WACjC7T,EAAQ6T,QACf5Y,EAAQ+E,EAAS,CAAC,GAAG,SAASzE,EAAKc,EAAKlF,GAClB,OAAboE,EAAIc,KAAoBA,EAAIC,WAAW,OAAkB,YAARD,GAAsBlF,EAAMT,KAAK8C,QAAQ,YAAc,UAAW+B,EAAIc,EAChI,IAEIwX,EAAQO,KACR,IAAK,IAAIrb,KAAMxG,MAAME,QAAQohB,EAAQvB,SAAWuB,EAAQvB,QAAU,CAAC,IAAM,CACrE,IAAIC,EAAS,CAAC,EACV8B,GAAYR,EAAQQ,UAAY,IAAIpb,QAAQ,MAAO,IACvDsZ,EAAO1X,KAAO9B,EAAIA,EAAE,IAAM,IAAM,KAAO8a,EAAQO,KAAOC,EACtDlB,EAAwBZ,GACnBvS,EAAQgS,UAAShS,EAAQgS,QAAU,IACxChS,EAAQgS,QAAQ9gB,KAAKqhB,EACzB,MAEC,GAAIsB,EAAQQ,SAAU,CACvB,IAAI9B,EAAS,CAAC,EACdA,EAAO1X,IAAMgZ,EAAQQ,SACrBlB,EAAwBZ,GACnBvS,EAAQgS,UAAShS,EAAQgS,QAAU,IACxChS,EAAQgS,QAAQ9gB,KAAKqhB,EACzB,CAWA,UAVOvS,EAAQoU,YACRpU,EAAQqU,SAEXrU,EAAQ,cAAgBzN,MAAME,QAAQuN,EAAQ,gBAC9CA,EAAQgS,QAAUhS,EAAQ,oBACnBA,EAAQ,cAKf6T,EAAQ,2BAA4B,CACpC,IAAIS,EAAWT,EAAQ,2BACnBtB,EAAS,CAAC,EACdA,EAAO1X,IAAMyZ,EAASC,cAAgBV,EAAQQ,SAAWR,EAAQQ,SAAW,IAC5E9B,EAAOa,UAAY,CAAC,EACpB,MAAMoB,EAAajC,EAAO1X,IAAIzB,MAAM,YACpC,IAAK,IAAIqb,KAAOH,EAASjE,WAAY,CACjC,IAAIR,EAAQyE,EAASjE,WAAWoE,GAC5B5E,EAAMlT,OACNkT,EAAQ3U,EAAMqG,EAAgBvB,EAAS6P,EAAMlT,QAE5C8X,EAAInY,WAAW,eACTuT,EAAM/C,gBACN+C,EAAMvC,YACNuC,EAAMU,QACgB,IAAlBV,EAAMgB,UACThB,EAAM6E,KACN7E,EAAMgB,QAAUhB,EAAM6E,KAAK,GAG3B7E,EAAMgB,QAAU,QAGnBhB,EAAM9b,OACT8b,EAAM9b,KAAOygB,EAAWC,GAAKxb,QAAQ,IAAI,IAAIA,QAAQ,IAAI,KAE3DsZ,EAAOa,UAAUvD,EAAM9b,MAAQ8b,SACxBA,EAAM9b,KAErB,CACKiM,EAAQgS,UAAShS,EAAQgS,QAAU,KACP,IAA7BsC,EAASK,gBAET3U,EAAQgS,QAAQ9gB,KAAKqhB,GAGrBsB,EAAQvB,QAAQ3a,SAASqX,IACrBhP,EAAQgS,QAAQ9gB,KACZyC,OAAOkF,OAAO,CAAC,EAAG0Z,EAAQ,CAAE1X,IAAKmU,EAAS,MAAQuD,EAAO1X,MAC7D,WAGDmF,EAAQ,0BACnB,CAEAqT,EAAQrT,EAASpE,EAASsB,GAC1ByW,EAAS3T,EAASpE,EAASsB,GAEK,iBAArB8C,EAAQ6N,WACf7N,EAAQ6N,SAAW,CAAC7N,EAAQ6N,WAEA,iBAArB7N,EAAQ8N,WACf9N,EAAQ8N,SAAW,CAAC9N,EAAQ8N,WAGhC9N,EAAQhH,WAAa,CAAC,EAClBgH,EAAQ,iBACRA,EAAQhH,WAAW4b,UAAY5U,EAAQ,sBAChCA,EAAQ,gBAEnBA,EAAQhH,WAAWwY,SAAW,CAAC,EAC/BxR,EAAQhH,WAAWyY,QAAU,CAAC,EAC1BzR,EAAQ,aACRA,EAAQhH,WAAW6b,MAAQ7U,EAAQ,kBAC5BA,EAAQ,YAEnBA,EAAQhH,WAAWqX,WAAarQ,EAAQqQ,YAAc,CAAC,EACvDrQ,EAAQhH,WAAWmZ,UAAYnS,EAAQmS,WAAa,CAAC,EACrDnS,EAAQhH,WAAW8b,cAAgB,CAAC,EACpC9U,EAAQhH,WAAW+b,gBAAkB/U,EAAQgV,qBAAuB,CAAC,EACrEhV,EAAQhH,WAAWgV,QAAUhO,EAAQC,aAAe,CAAC,SAC9CD,EAAQC,mBACRD,EAAQmS,iBACRnS,EAAQqQ,kBACRrQ,EAAQgV,oBAEflV,EAAS6B,gBAAgB/F,GACxByC,MAAK,YA5cd,SAAc2B,EAASpE,GAEnB,IAAIiW,EAAmB,CAAC,EACxBvF,EAAiB,CAAE0B,QAAS,CAAC,GAEzBhO,EAAQkS,UAAUvD,EAAgB3O,EAAQkS,UAE9C,IAAK,IAAInZ,KAAKiH,EAAQhH,WAAW+b,gBAAiB,CAC9C,IAAIjG,EAAQzT,EAAOvC,SAASC,GACxBA,IAAM+V,IACF9O,EAAQhH,WAAW+b,gBAAgBjG,IACnCrC,EAAW,2CAA6CqC,EAAOlT,GAEnEoE,EAAQhH,WAAW+b,gBAAgBjG,GAAS9O,EAAQhH,WAAW+b,gBAAgBhc,UACxEiH,EAAQhH,WAAW+b,gBAAgBhc,IAE9CgW,EAAsB/O,EAAQhH,WAAW+b,gBAAgBjG,GAAQlT,EACrE,CAEA,IAAK,IAAI7C,KAAKiH,EAAQhH,WAAWgV,QAAS,CACtC,IAAIc,EAAQzT,EAAOV,YAAY5B,GAC3BuV,EAAS,GACb,GAAIvV,IAAM+V,EAAO,CACb,KAAO9O,EAAQhH,WAAWgV,QAAQc,EAAQR,IAEtCA,EAAUA,IAAWA,EAAS,EAElCtO,EAAQhH,WAAWgV,QAAQc,EAAQR,GAAUtO,EAAQhH,WAAWgV,QAAQjV,UACjEiH,EAAQhH,WAAWgV,QAAQjV,EACtC,CACAuT,EAAe0B,QAAQjV,GAAK+V,EAAQR,EACpCzB,EAAY7M,EAAQhH,WAAWgV,QAAQc,EAAMR,GAAQ1S,EACzD,CAGAA,EAAQqS,OAAS,CAAC,EAClBhT,EAAQ+E,EAAS,CAAEmI,QAAS,CAAEvM,QAASA,IAAagS,GAvxBxD,SAAoB5N,EAASpE,GACzB,IAAK,IAAI5F,KAAO4F,EAAQqS,OACpBjT,EAAKA,KAAKgF,EAAQhK,EAAI,CAAE2G,KAAMf,EAAQqS,OAAOjY,IAErD,CAoxBIif,CAAWjV,EAAQpE,GAEnB,IAAK,IAAI4K,KAAKxG,EAAQhH,WAAWqX,WAAY,CACzC,IAAIvB,EAAQzT,EAAOvC,SAAS0N,GACxBA,IAAMsI,IACF9O,EAAQhH,WAAWqX,WAAWvB,IAC9BrC,EAAW,sCAAwCqC,EAAOlT,GAE9DoE,EAAQhH,WAAWqX,WAAWvB,GAAS9O,EAAQhH,WAAWqX,WAAW7J,UAC9DxG,EAAQhH,WAAWqX,WAAW7J,IAGzCuJ,EADY/P,EAAQhH,WAAWqX,WAAWvB,GAClB,KAAM,KAAM,KAAMA,EAAO9O,EAASpE,EAC9D,CAEA,IAAK,IAAIyW,KAAKrS,EAAQhH,WAAWmZ,UAAW,CACxC,IAAIrD,EAAQzT,EAAOvC,SAASuZ,GACxBA,IAAMvD,IACF9O,EAAQhH,WAAWmZ,UAAUrD,IAC7BrC,EAAW,qCAAuCqC,EAAOlT,GAE7DoE,EAAQhH,WAAWmZ,UAAUrD,GAAS9O,EAAQhH,WAAWmZ,UAAUE,UAC5DrS,EAAQhH,WAAWmZ,UAAUE,IAExC,IAAId,EAAWvR,EAAQhH,WAAWmZ,UAAUrD,GAE5C,GADAwC,EAAgBC,EAAUzC,EAAO,KAAM9O,EAASpE,GAC5C2V,EAASE,QACT,IAAK,IAAIC,KAAKH,EAASE,QACK,gBAApBC,EAAEnb,cACEqF,EAAQ6E,OACR7E,EAAQyR,iBACDkE,EAASE,QAAQC,IAGxBjF,EAAW,kDAAmD7Q,GAIlE4T,EAAc+B,EAASE,QAAQC,GAAI9V,EAInD,CAEA,IAAK,IAAIyW,KAAKrS,EAAQhH,WAAW8b,cAAe,CAC5C,IAAII,EAAKlV,EAAQhH,WAAW8b,cAAczC,GACtCW,EAAQte,KAAKC,UAAUugB,GACvBjC,EAAS5X,EAAOhB,KAAK2Y,GACrBvL,EAAQ,CAAC,EACbA,EAAM1T,KAAOse,EACb5K,EAAMmL,KAAOsC,EACbzN,EAAMlI,KAAO,GACbsS,EAAiBoB,GAAUxL,CAC/B,CAOA,GALAkK,EAAa3R,EAAQjE,MAAO,QAASH,EAASiW,EAAkB7R,GAC5DA,EAAQ,eACR2R,EAAa3R,EAAQ,cAAe,aAAcpE,EAASiW,EAAkB7R,IAG5EpE,EAAQqW,MACT,IAAK,IAAIzL,KAAKxG,EAAQhH,WAAWqX,WACjBrQ,EAAQhH,WAAWqX,WAAW7J,GAChC,wBACCxG,EAAQhH,WAAWqX,WAAW7J,GAK7C5K,EAAQqW,QACRjS,EAAQ,kBAAoBA,EAAQ6N,UAAY,GAChD7N,EAAQ,kBAAoBA,EAAQ8N,UAAY,WAE7C9N,EAAQ6N,gBACR7N,EAAQ8N,gBACR9N,EAAQsS,QAEf,IAAI6C,EAAmB,GAIvB,GAFAnV,EAAQhH,WAAW8b,cAAgB,CAAC,GAE/BlZ,EAAQ2F,gBAAiB,CAC1B,IAAI6T,EAAU,EACd,IAAK,IAAIre,KAAK8a,EAAkB,CAC5B,IAAIpK,EAAQoK,EAAiB9a,GAC7B,GAAI0Q,EAAMlI,KAAKtN,OAAS,EAAG,CAEvB,IAAIqc,EAAS,GAMb,IALK7G,EAAM1T,OACP0T,EAAM1T,KAAO,cAEbua,EAAS8G,KAEND,EAAiB3b,QAAQiO,EAAM1T,KAAOua,IAAW,GAEpDA,EAAUA,IAAWA,EAAS,EAElC7G,EAAM1T,KAAO0T,EAAM1T,KAAOua,EAC1B6G,EAAiBjkB,KAAKuW,EAAM1T,MAC5BiM,EAAQhH,WAAW8b,cAAcrN,EAAM1T,MAAQmH,EAAMuM,EAAMmL,MAC3D,IAAK,IAAIP,KAAK5K,EAAMlI,KAAM,CACtB,IAAIvJ,EAAM,CAAC,EACXA,EAAI2G,KAAO,8BAAgC8K,EAAM1T,KACjDiH,EAAKA,KAAKgF,EAAQyH,EAAMlI,KAAK8S,GAAGrc,EACpC,CACJ,CACJ,CACJ,CAEIgK,EAAQhH,WAAWmZ,WAAkE,IAArDxe,OAAO8L,KAAKO,EAAQhH,WAAWmZ,WAAWlgB,eACnE+N,EAAQhH,WAAWmZ,UAE1BnS,EAAQhH,WAAWqX,YAAoE,IAAtD1c,OAAO8L,KAAKO,EAAQhH,WAAWqX,YAAYpe,eACrE+N,EAAQhH,WAAWqX,WAE1BrQ,EAAQhH,WAAWwY,UAAgE,IAApD7d,OAAO8L,KAAKO,EAAQhH,WAAWwY,UAAUvf,eACjE+N,EAAQhH,WAAWwY,SAE1BxR,EAAQhH,WAAW8b,eAA0E,IAAzDnhB,OAAO8L,KAAKO,EAAQhH,WAAW8b,eAAe7iB,eAC3E+N,EAAQhH,WAAW8b,cAE1B9U,EAAQhH,WAAW+b,iBAA8E,IAA3DphB,OAAO8L,KAAKO,EAAQhH,WAAW+b,iBAAiB9iB,eAC/E+N,EAAQhH,WAAW+b,gBAE1B/U,EAAQhH,WAAWyY,SAA8D,IAAnD9d,OAAO8L,KAAKO,EAAQhH,WAAWyY,SAASxf,eAC/D+N,EAAQhH,WAAWyY,QAE1BzR,EAAQhH,WAAWgV,SAA8D,IAAnDra,OAAO8L,KAAKO,EAAQhH,WAAWgV,SAAS/b,eAC/D+N,EAAQhH,WAAWgV,QAE1BhO,EAAQhH,YAAyD,IAA3CrF,OAAO8L,KAAKO,EAAQhH,YAAY/G,eAC/C+N,EAAQhH,UAIvB,EAiSYqc,CAAKzZ,EAAQoE,QAASpE,GAClBA,EAAQqY,OACR9d,EAAQyF,EAAQoE,SAGhB7J,EAAQyF,EAEhB,IACC0C,OAAM,SAAStB,GACZhG,QAAQ6F,KAAKG,GACbE,EAAOF,EACX,GAEJ,IACJ,CAEA,SAASsY,EAAWC,EAAK3Z,EAAS8B,GAC9B,OAAOsO,EAAMtO,EAAU,IAAIxH,SAAQ,SAAUC,EAAS+G,GAClD,IAAI3B,EAAM,KACNtE,EAAQ,KACZ,IACIsE,EAAM7G,KAAKuH,MAAMsZ,GACjB3Z,EAAQ+C,KAAOjK,KAAKC,UAAU4G,EAAI,KAAK,EAY3C,CAVA,MAAOyB,GACH/F,EAAQ+F,EACR,IACIzB,EAAMR,EAAKkB,MAAMsZ,EAAK,CAAE3W,OAAQ,OAAQC,cAAc,IACtDjD,EAAQ4Z,YAAa,EACrB5Z,EAAQ+C,KAAO4W,CAInB,CAFA,MAAOvY,GACH/F,EAAQ+F,CACZ,CACJ,CACIzB,EACAqY,EAAWrY,EAAKK,GACfyC,MAAKzC,GAAWzF,EAAQyF,KACxB0C,OAAMtB,GAAME,EAAOF,KAGpBE,EAAO,IAAIqP,EAAStV,EAAQA,EAAMC,QAAU,0BAEpD,IACJ,CA0DArG,EAAOD,QAAU,CACb2b,SAAUA,EACVF,cAAeA,EACfoJ,QAAS7B,EACTA,WAAYA,EACZ8B,WA7DJ,SAAoB7a,EAAKe,EAAS8B,GAC9B,OAAOsO,EAAMtO,EAAU,IAAIxH,SAAQ,SAAUC,EAAS+G,GAClDtB,EAAQsY,QAAS,EACZtY,EAAQ5G,SACT4G,EAAQ5G,OAAS6F,GAEjBe,EAAQgB,SACR5F,QAAQ6F,KAAK,OAAShC,GAErBe,EAAQd,QACXc,EAAQd,MAAQA,GAElB,MAAMyD,EAAe5K,OAAOkF,OAAO,CAAC,EAAG+C,EAAQ2C,aAAc,CAACC,MAAM5C,EAAQ4C,QAC5E5C,EAAQd,MAAMD,EAAK0D,GAAcF,MAAK,SAAUrG,GAC5C,GAAmB,MAAfA,EAAIyG,OAAgB,MAAM,IAAI8N,EAAS,wBAAwBvU,EAAIyG,WAAW5D,KAClF,OAAO7C,EAAI2G,MACf,IAAGN,MAAK,SAAUuU,GACd0C,EAAW1C,EAAMhX,GAChByC,MAAKzC,GAAWzF,EAAQyF,KACxB0C,OAAMtB,GAAME,EAAOF,IACxB,IAAGsB,OAAM,SAAUhL,GACf4J,EAAO5J,EACX,GACJ,IACJ,EAsCIgiB,WAAYA,EACZK,YArCJ,SAAqB5W,EAAUnD,EAAS8B,GACpC,OAAOsO,EAAMtO,EAAU,IAAIxH,SAAQ,SAAUC,EAAS+G,GAClDtC,EAAGqE,SAASF,EAAUnD,EAAQoD,UAAY,QAAQ,SAAU1L,EAAKyF,GACzDzF,EACA4J,EAAO5J,IAGPsI,EAAQga,WAAa7W,EACrBuW,EAAWvc,EAAG6C,GACbyC,MAAKzC,GAAWzF,EAAQyF,KACxB0C,OAAMtB,GAAME,EAAOF,KAE5B,GACJ,IACJ,EAwBI6Y,cAtBJ,SAAuBC,EAAUla,EAAS8B,GACtC,OAAOsO,EAAMtO,EAAU,IAAIxH,SAAQ,SAAUC,EAAS+G,GAClD,IAAItI,EAAO,GACXkhB,EAASC,GAAG,QAAQ,SAAUC,GAC1BphB,GAAQohB,CACZ,IACCD,GAAG,OAAO,WACPT,EAAW1gB,EAAMgH,GAChByC,MAAKzC,GAAWzF,EAAQyF,KACxB0C,OAAMtB,GAAME,EAAOF,IACxB,GACJ,IACJ,qCCpnDA,MAAMiZ,EAAO,EAAQ,KAarBplB,EAAOD,QAAU,CACbub,YAAaxY,OAAOkF,OAAO,CAAC,EAZnB,CACT,QAAW,mBACX,MAAO,gBACP,IAAO,cACP,MAAO,aACP,MAAO,cACP,MAAO,eACP,MAAO,eACP,MAAO,mBAI4Bod,EAAKC,oCCfxC,IAAIC,EAAa,EAAQ,KACrBC,EAAU,CAAC,MAAM,OAAO,OAAO,iBAAiB,OAAO,UAAU,SAAS,UAC9EvlB,EAAOD,QAAU,WAChB,IAAIylB,EAAI,IAAIlhB,OAAOue,IAAI4C,gBAAgB,IAAIC,KAAK,CAAC,on+BAAio/B,CAAExiB,KAAM,yBAG1r/B,OAFAoiB,EAAWE,EAAGD,GAEPC,CACR,mBCmCJxlB,EAAOD,QA3CP,SAAoB4lB,EAAQJ,GAC1B,IAAIK,EAAI,EACJ7B,EAAY,CAAC,EACjB4B,EAAOE,iBAAiB,WAAW,SAAU3f,GAC3C,IAAI4f,EAAI5f,EAAEnC,KACV,GAAe,QAAX+hB,EAAErJ,KAEN,GAAIqJ,EAAExlB,GAAI,CACR,IAAIylB,EAAIhC,EAAU+B,EAAExlB,IAEhBylB,WACKhC,EAAU+B,EAAExlB,IAEfwlB,EAAE1f,MACJ2f,EAAE,GAAGjjB,OAAOkF,OAAO/B,MAAM6f,EAAE1f,MAAMC,SAAUyf,EAAE1f,QAE7C2f,EAAE,GAAGD,EAAE5c,QAGb,KAAO,CACL,IAAI8c,EAAMnM,SAASoM,YAAY,SAC/BD,EAAIE,UAAUJ,EAAE1G,QAAQ,GAAO,GAC/B4G,EAAIjiB,KAAO+hB,EAAEK,OACbR,EAAOS,cAAcJ,EACvB,CACF,IACAT,EAAQze,SAAQ,SAAUsY,GACxBuG,EAAOvG,GAAU,WACf,IAAIiH,EAAapT,UACjB,OAAO,IAAI5N,SAAQ,SAAUgE,EAAG0G,GAC9B,IAAIzP,IAAOslB,EACX7B,EAAUzjB,GAAM,CAAC+I,EAAG0G,GACpB4V,EAAOW,YAAY,CACjB7J,KAAM,MACNnc,GAAIA,EACJ8e,OAAQA,EACR+G,OAAQ,GAAGnjB,MAAMX,KAAKgkB,IAE1B,GACF,CACF,GACF,gCCzCArmB,EAAOD,QAAUsE,QAAQ,+CCAzBrE,EAAOD,QAAUsE,QAAQ,qDCAzBrE,EAAOD,QAAUsE,QAAQ,2CCAzBrE,EAAOD,QAAUsE,QAAQ,sCCAzBrE,EAAOD,aAAUmT,0ECCbqT,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBvT,IAAjBwT,EACH,OAAOA,EAAa3mB,QAGrB,IAAIC,EAASumB,EAAyBE,GAAY,CACjDnmB,GAAImmB,EAEJ1mB,QAAS,CAAC,GAOX,OAHA4mB,EAAoBF,GAAUzmB,EAAQA,EAAOD,QAASymB,GAG/CxmB,EAAOD,OACf,CCrBAymB,EAAoB3jB,EAAI,SAAS7C,GAChC,IAAI4mB,EAAS5mB,GAAUA,EAAO6mB,WAC7B,WAAa,OAAO7mB,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAwmB,EAAoBV,EAAEc,EAAQ,CAAEvd,EAAGud,IAC5BA,CACR,ECNAJ,EAAoBV,EAAI,SAAS/lB,EAAS+mB,GACzC,IAAI,IAAItb,KAAOsb,EACXN,EAAoB7jB,EAAEmkB,EAAYtb,KAASgb,EAAoB7jB,EAAE5C,EAASyL,IAC5E1I,OAAOikB,eAAehnB,EAASyL,EAAK,CAAEwb,YAAY,EAAM/Q,IAAK6Q,EAAWtb,IAG3E,ECPAgb,EAAoBS,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO/mB,MAAQ,IAAI6V,SAAS,cAAb,EAGhB,CAFE,MAAO9P,GACR,GAAsB,iBAAX6T,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxByM,EAAoB7jB,EAAI,SAAS+H,EAAKsH,GAAQ,OAAOlP,OAAOC,UAAU6S,eAAevT,KAAKqI,EAAKsH,EAAO,ECCtGwU,EAAoBhF,EAAI,SAASzhB,GACX,oBAAX+B,QAA0BA,OAAOqlB,aAC1CrkB,OAAOikB,eAAehnB,EAAS+B,OAAOqlB,YAAa,CAAE3kB,MAAO,WAE7DM,OAAOikB,eAAehnB,EAAS,aAAc,CAAEyC,OAAO,GACvD,ECNAgkB,EAAoBY,QAAKlU,+kNCAzB,IAAI,EAA+B7O,QAAQ,SCAvC,EAA+BA,QAAQ,YCE3C,MAAMgjB,EAA+B,CACnCC,QAAS,CACPC,KAAM,EACNC,kBAAmB,EAAGF,aAA6B,EAAfA,EAAQC,KAC5CE,gBAAiB,EAAGH,aAA6B,EAAfA,EAAQC,MAE5CG,YAAa,CACXC,MAAO,QACPC,OAAQ,QACRC,MAAO,UAETC,OAAQ,CACNC,YAAa,GACbC,QAAS,CACPxD,KAAM,UACNyD,MAAO,EAAGH,aAAa,IAAAI,SAAQJ,EAAOC,YAAaD,EAAOE,QAAQxD,MAClE2D,KAAM,EAAGL,aAAa,IAAAM,QAAON,EAAOC,YAAaD,EAAOE,QAAQxD,MAChE6D,aAAc,EAAGP,aAAa,IAAAQ,eAAcR,EAAOE,QAAQxD,OAE7D+D,QAAS,CACP/D,KAAM,UACNyD,MAAO,EAAGH,aAAa,IAAAI,SAA6B,EAArBJ,EAAOC,YAAiBD,EAAOS,QAAQ/D,MACtE2D,KAAM,EAAGL,aAAa,IAAAM,QAAON,EAAOC,YAAaD,EAAOS,QAAQ/D,MAChE6D,aAAc,EAAGP,aAAa,IAAAQ,eAAcR,EAAOS,QAAQ/D,OAE7DgE,QAAS,CACPhE,KAAM,UACNyD,MAAO,EAAGH,aAAa,IAAAI,SAAQJ,EAAOC,YAAaD,EAAOU,QAAQhE,MAClE2D,KAAM,EAAGL,aAAa,IAAAM,QAAON,EAAOC,YAAaD,EAAOU,QAAQhE,MAChE6D,aAAc,WAEhBjiB,MAAO,CACLoe,KAAM,UACNyD,MAAO,EAAGH,aAAa,IAAAI,SAAQJ,EAAOC,YAAaD,EAAO1hB,MAAMoe,MAChE2D,KAAM,EAAGL,aAAa,IAAAM,QAAON,EAAOC,YAAaD,EAAO1hB,MAAMoe,MAC9D6D,aAAc,EAAGP,aAAa,IAAAQ,eAAcR,EAAO1hB,MAAMoe,OAE3DiE,KAAM,CACJ,GAAI,UACJ,IAAK,WAEP3a,KAAM,CACJka,QAAS,UACTU,UAAW,EAAGZ,aAAa,IAAAI,SAAQJ,EAAOC,YAAaD,EAAOha,KAAKka,UAErEW,OAAQ,CACNR,KAAM,mBACNF,MAAO,WAET3G,UAAW,CACTiH,QAAS,CACPK,MAAO,EAAGd,YAAaA,EAAOS,QAAQ/D,KACtCqE,gBAAiB,EAAGf,aAAa,IAAAgB,gBAAe,IAAMhB,EAAOS,QAAQ/D,MACrEuE,aAAc,EAAGjB,YAAaA,EAAOxG,UAAUiH,QAAQK,OAEzDxiB,MAAO,CACLwiB,MAAO,EAAGd,YAAaA,EAAO1hB,MAAMoe,KACpCqE,gBAAiB,EAAGf,aAAa,IAAAgB,gBAAe,IAAMhB,EAAO1hB,MAAMoe,MACnEuE,aAAc,EAAGjB,YAAaA,EAAOxG,UAAUlb,MAAMwiB,OAEvDI,SAAU,CACRJ,MAAO,EAAGd,YAAaA,EAAOU,QAAQhE,KACtCqE,gBAAiB,EAAGf,aAAa,IAAAgB,gBAAe,GAAKhB,EAAOxG,UAAU0H,SAASJ,OAC/EG,aAAc,EAAGjB,YAAaA,EAAOxG,UAAU0H,SAASJ,OAE1DnG,KAAM,CACJmG,MAAO,UACPC,gBAAiB,EAAGf,aAAa,IAAAgB,gBAAe,GAAKhB,EAAOxG,UAAUmB,KAAKmG,OAC3EG,aAAc,EAAGjB,YAAaA,EAAOxG,UAAUmB,KAAKmG,QAGxDxD,KAAM,CACJnP,IAAK,UACLgT,KAAM,UACNC,IAAK,UACLne,QAAS,UACT6E,MAAO,UACPuZ,OAAQ,UACRC,MAAO,UACPC,KAAM,UACNnP,KAAM,YAGVnM,OAAQ,CACNub,WAAYC,IACV,IAAArB,SACEqB,EAAMzB,OAAOC,aACb,IAAAyB,YAAWD,EAAMzB,OAAOC,YAAawB,EAAMzB,OAAOE,QAAQxD,OAE9DiF,oBAAqB,MACrBC,cAAeH,GAASA,EAAMzB,OAAOha,KAAK4a,UAC1CiB,eAAgBJ,GAASA,EAAMxb,OAAO2b,cACtCE,kBAAmBL,GAASA,EAAMzB,OAAO1hB,MAAMoe,KAC/CqF,eAAgB,QAChBC,eAAgB,MAChBC,iBAAkB,UAClBC,MAAO,CACLjhB,KAAM,QACN6f,MAAOW,GAASA,EAAMzB,OAAOha,KAAK4a,YAGtCuB,WAAY,CACVC,SAAU,OACVC,WAAY,QACZC,kBAAmB,MACnBC,eAAgB,MAChBC,gBAAiB,MACjBC,WAAY,qBACZC,UAAW,cACXC,eAAe,EACfC,SAAU,CACRH,WAAY,yBACZI,WAAY,MACZR,WAAY,SAEd5X,KAAM,CACJ2X,SAAU,OACVK,WAAY,qBACZJ,WAAY,EAAGF,gBAAiBA,EAAWE,WAC3CQ,WAAY,EAAGV,gBAAiBA,EAAWG,kBAC3CxB,MAAO,UACPC,gBAAiB,yBACjB+B,MAAM,GAER5G,MAAO,CACL4E,MAAO,EAAGd,YAAaA,EAAOE,QAAQxD,KACtCqG,QAAS,EAAGZ,gBAAiBA,EAAWjG,MAAM4E,MAC9CkC,MAAO,EAAGb,iBAAiB,IAAA/B,SAAQ,GAAK+B,EAAWjG,MAAM4E,OACzDmC,eAAgB,OAChBC,oBAAqB,SAGzBC,QAAS,CACPC,MAAO,QACPrC,gBAAiB,UACjBsC,UAAW,UACXC,gBAAiB7B,GACfA,EAAM0B,QAAQE,YAAc9D,EAAa4D,QAASE,UAC9C5B,EAAM0B,QAAQE,UACd5B,EAAMzB,OAAOE,QAAQxD,KAC3B6G,WAAY,CACVC,sBAAuB/B,IAAS,IAAAnB,QAAO,GAAKmB,EAAM0B,QAAQpC,iBAC1DuC,gBAAiB7B,GAASA,EAAM0B,QAAQG,gBACxCG,cAAe,aAEjBC,YAAa,CACXF,sBAAuB/B,IAAS,IAAAnB,QAAO,IAAMmB,EAAM0B,QAAQpC,iBAC3DuC,gBAAiB7B,GAASA,EAAM0B,QAAQG,gBACxCG,cAAe,QAEjBvB,MAAO,CACLjhB,KAAM,QACN6f,MAAOW,GAASA,EAAM0B,QAAQE,YAGlCxI,KAAM,CACJ8I,UAAW,EAAGR,aAAcA,EAAQC,MACpCQ,SAAU,EAAGT,aAAcA,EAAQC,MACnCS,OAAQ,OAEVC,WAAY,CACV/C,gBAAiB,UACjBqC,MAAO,MACPC,UAAW,UACXhK,QAAS,CACP0K,QAAS,CACPhD,gBAAiB,UACjBsC,UAAW,WAEbnhB,IAAK,CACH6e,gBAAiB,UAIvBiD,UAAW,CACTjD,gBAAiB,EAAG+C,iBAAiB,IAAAxD,QAAO,GAAKwD,EAAW/C,kBAE9DkD,IAAK,CACHlD,gBAAiB,UACjBD,MAAO,YAIX,QCzLO,MAAMoD,EAA+B,oBAAXjS,QAA0B,gBAAiBA,OAErE,SAASD,EAAcmS,GAC5B,MAAwB,oBAAbpS,SACFA,SAASC,cAAcmS,GAEzB,KAQF,SAASC,EAASC,GACvB,OAAOA,EACJtlB,MAAM,WACNnG,KAAIykB,GACIA,EAAM1e,SAEdiG,QAAO0f,GACCA,EAAahrB,OAAS,IAE9BN,KAAK,KAQH,SAASurB,EAAuBC,EAAiBC,GAAiB,GACvE,MAAM3gB,EAAS0gB,EAAG1R,WAClB,IAAKhP,EACH,OAEF,MAAM4gB,EAAsBzS,OAAO0S,iBAAiB7gB,OAAQ,GACtD8gB,EAAuBxV,SAC3BsV,EAAoBG,iBAAiB,oBACrC,IAEIC,EAAwB1V,SAC5BsV,EAAoBG,iBAAiB,qBACrC,IAEIE,EAAUP,EAAGQ,UAAYlhB,EAAOkhB,UAAYlhB,EAAOmhB,UACnDC,EACJV,EAAGQ,UAAYlhB,EAAOkhB,UAAYR,EAAGW,aAAeP,EACpD9gB,EAAOmhB,UAAYnhB,EAAOqhB,aACtBC,EAAWZ,EAAGa,WAAavhB,EAAOuhB,WAAavhB,EAAOwhB,WACtDC,EACJf,EAAGa,WAAavhB,EAAOuhB,WAAab,EAAGgB,YAAcV,EACrDhhB,EAAOwhB,WAAaxhB,EAAO0hB,YACvBC,EAAeV,IAAYG,GAE5BH,GAAWG,IAAeT,IAC7B3gB,EAAOmhB,UACLT,EAAGQ,UACHlhB,EAAOkhB,UACPlhB,EAAOqhB,aAAe,EACtBP,EACAJ,EAAGW,aAAe,IAGjBC,GAAYG,IAAcd,IAC7B3gB,EAAOwhB,WACLd,EAAGa,WACHvhB,EAAOuhB,WACPvhB,EAAO0hB,YAAc,EACrBV,EACAN,EAAGgB,YAAc,IAGhBT,GAAWG,GAAcE,GAAYG,KAAed,GACvDD,EAAGkB,eAAeD,EAAA,CC1EtB,IAAI,EAA+BlpB,QAAQ,oBCKpC,SAASopB,EAAkB5kB,EAAY6kB,GAC5C,MAAMvmB,EAAW,GACjB,QAASpG,EAAI,EAAGA,EAAI8H,EAAMzH,OAAS,EAAGL,IACpCoG,EAAI9G,KAAKqtB,EAAS7kB,EAAM9H,IAAI,IAK9B,OAHqB,IAAjB8H,EAAMzH,QACR+F,EAAI9G,KAAKqtB,EAAS7kB,EAAMA,EAAMzH,OAAS,IAAI,IAEtC+F,CAAA,CAWF,SAASwmB,EACdtW,EACAqW,GAEA,MAAMvmB,EAA4B,CAAC,EACnC,UAAWqE,KAAO6L,EACZA,EAAOzB,eAAepK,KACxBrE,EAAIqE,GAAOkiB,EAASrW,EAAO7L,GAAMA,EAAK6L,IAG1C,OAAOlQ,CAAA,CAQF,SAASymB,EACdC,EACA7b,GAEA,MAAM7K,EAAW,GACX2mB,EAAWnc,IACf,UAAWhR,KAAQgR,EACjBxK,EAAI9G,KAAKM,GACLA,EAAKqR,IACP8b,EAAQntB,EAAKqR,GAAA,EAKnB,OADA8b,EAAQD,GACD1mB,CAAA,CAGF,SAAS4mB,EAAmBloB,GACjC,OAAIA,EAAKmoB,SAAS,KACTnoB,EAAKooB,UAAU,EAAGpoB,EAAKzE,OAAS,GAElCyE,CAAA,CAGF,SAASqoB,EAAUrrB,GACxB,OAAQsU,MAAMgX,WAAWtrB,KAAOurB,SAASvrB,EAAA,CAGpC,SAASwrB,EAAkBC,EAAYC,EAAiB3tB,GAE7D,MAAM4tB,EAAY,IAAIC,OAAO,eAAeF,WAAkB,KACxDG,EAAe,IAAID,OAAO,gBAAgBF,mCAA0C,KAC1F,GAAIC,EAAUprB,KAAKkrB,GACjB,OAAOA,EAAGlmB,QAAQsmB,EAAc,SAAS9tB,SACpC,CAEL,MAAM+tB,EAAY,KAAPL,GAAaA,EAAGN,SAAS,QAAU,GAAKM,EAAGN,SAAS,MAAQ,KAAO,OAC9E,MAAO,GAAGM,IAAKK,MAAOJ,QAAc3tB,GAAA,EAKjC,MAAMguB,EAAe,CAAC3iB,KAAgB/H,KAC3C,IAAKA,EAAQ9C,OACX,OAAO6K,EAET,MAAM9H,EAASD,EAAQ2qB,QACvB,YAAe,IAAX1qB,EACK8H,GAGL6iB,EAAiB7iB,IAAW6iB,EAAiB3qB,IAC/CrB,OAAO8L,KAAKzK,GAAQ2C,SAAS0E,IACvBsjB,EAAiB3qB,EAAOqH,KACrBS,EAAOT,KACVS,EAAOT,GAAO,CAAC,GAEjBojB,EAAa3iB,EAAOT,GAAMrH,EAAOqH,KAEjCS,EAAOT,GAAOrH,EAAOqH,EAAA,IAKpBojB,EAAa3iB,KAAW/H,GAAQ,EAG5B6qB,EAAYpuB,GACP,OAATA,GAAiC,iBAATA,EAG3BmuB,EAAoBnuB,GACjBouB,EAASpuB,KAAUiB,EAAQjB,GAQ7B,SAASquB,EAAYxsB,GAC1B,OACE,IAAQA,IACRA,EACG/B,WACAiF,cACA0C,QAAQ,OAAQ,KAChBA,QAAQ,KAAM,SACdA,QAAQ,QAAS,KACjBA,QAAQ,MAAO,IACfA,QAAQ,MAAO,IAIf,SAAS6mB,EAAcjlB,GAC5B,MAAO,gCAAgC5G,KAAK4G,EAAA,CAOvC,SAASklB,EAAWllB,EAAa0J,GACtC,IAAIvM,EACJ,GAAIuM,EAAGjI,WAAW,MAChB,IACEtE,EAAM,GAAG,IAAI0b,IAAI7Y,GAAKsC,UAAY,WAAWoH,GAE9B,CAF8B,MACvC,GACNvM,EAAM,SAASuM,GAAA,SAERub,EAAcvb,GACvBvM,EAAMuM,OAAA,GACIA,EAAGjI,WAAW,KAGxB,IACE,MAAM0jB,EAAS,IAAItM,IAAI7Y,GACvBmlB,EAAOC,SAAW1b,EAClBvM,EAAMgoB,EAAOE,IAEP,CAFO,MACP,GACNloB,EAAMuM,CAAA,MAPRvM,EAAM4mB,EAAmB/jB,GAAO,IAAM0J,EAUxC,OAAOqa,EAAmB5mB,EAAA,CAGrB,SAASmoB,EAAY1N,GAC1B,IACE,OAAO2N,EAAS3N,GAAWwN,QAGpB,CAHoB,MACpBlpB,GAEP,OAAO0b,CAAA,EAIJ,SAAS4N,EAAS1hB,GACvB,OAAOA,EAAK2hB,OAAO,GAAGhnB,cAAgBqF,EAAK9K,MAAM,GAG5C,SAAS0sB,EAAyB9N,GACvC,IACE,MAAM5X,EAAMulB,EAAS3N,GAGrB,OAFA5X,EAAIxF,OAAS,GACbwF,EAAIR,KAAO,GACJQ,EAAIvJ,UAGJ,CAHI,MACJyF,GAEP,OAAO0b,CAAA,EAIX,SAAS2N,EAASvlB,GAChB,MAAmB,oBAAR6Y,IAEF,IAAK,YAAoB7Y,GAEzB,IAAI6Y,IAAI7Y,EAAA,CAIZ,SAAS2lB,EAAoBjL,GAClC,OAAOA,EAAItc,QAAQ,SAAU,QAGxB,SAASwnB,EAAkBlL,GAChC,OAAOA,EACJtc,QAAQ,aAAa,CAACynB,EAAItd,IAASlK,OAAOynB,aAAa5Y,SAAS3E,EAAM,OACtEnK,QAAQ,SAAU,KAClBA,QAAQ,UAAW,KAGjB,SAASxG,EAAQY,GACtB,OAAOd,MAAME,QAAQY,EAAA,CAGhB,SAASutB,EAAUvtB,GACxB,MAAwB,kBAAVA,CAAU,CCxN1B,MAAMwtB,EAAuB,CAC3BnM,KAAM,OACNoM,gBAAiB,QACjBC,UAAW,QACXlQ,QAAS,UACTL,WAAY,aACZC,QAAS,UACTe,SAAU,WACVwP,UAAW,YACXC,QAAS,YACTC,QAAS,QACTC,MAAO,QACPC,eAAgB,mBAChBC,SAAU,WACVC,sBAAuB,iCACvBnP,UAAW,YACXoP,kBAAmB,qBACnBC,eAAgB,kBAChBC,gBAAiB,oBAOZ,SAASC,EAAErlB,EAAyBslB,GACzC,MAAMC,EAAQf,EAAOxkB,GACrB,YAAY,IAARslB,EACKC,EAAMD,GAERC,CAAA,CCwFF,IAAKC,EAAL,CAAK,IACV,cAAc,eACd,WAAW,YACX,SAAS,UAHC,GAAL,CAAKA,GAAA,0YC5DL,SAASC,EAAkBC,EAAwBC,GACxD,YAAY,IAARD,EACKC,IAAgB,EAEN,iBAARD,EACM,UAARA,EAEFA,CAAA,CAGT,SAASE,EAAiB5uB,GACxB,MAAqB,iBAAVA,EACF0U,SAAS1U,EAAO,IAGJ,iBAAVA,EACFA,OADT,CACS,CAUJ,MAAM6uB,EAAuB,gCACF7uB,GAC9B,GAAc,QAAVA,EACF,MAAO,MAET,GAAqB,iBAAVA,EAAoB,CAC7B,MAAM2E,EAAM,CAAC,EAIb,OAHA3E,EAAMqE,MAAM,KAAKC,SAAQyL,IACvBpL,EAAIoL,EAAK9L,SAAU,CAAI,IAElBU,CAAA,CAMT,YALqB,IAAV3E,GACT2D,QAAQ6F,KACN,wDAAwDxJ,qBAAyBA,KAG9E,CAAC,CAAD,8BAGoBA,GAC3B,QAASA,CAAA,+BAGmBA,GAE5B,GAAqB,iBAAVA,IAAuB0rB,EAAU1rB,GAAQ,CAClD,MAAM8pB,EAAKxS,EAActX,GACpB8pB,GACHnmB,QAAQ6F,KACN,wFAGJ,MAAMslB,EAAUhF,GAAMA,EAAGiF,wBAAwBD,QAAW,EAC5D,MAAO,IAAMA,CAAA,OACa,iBAAV9uB,GAAsB0rB,EAAU1rB,GACzC,IAAwB,iBAAVA,EAAqBA,EAAQ2rB,WAAW3rB,GACnC,mBAAVA,EACT,KACL,MAAM2E,EAAM3E,IAMZ,MALmB,iBAAR2E,GACThB,QAAQ6F,KACN,0DAA0D7E,qBAAuBA,KAG9EA,CAAG,QAEO,IAAV3E,GACT2D,QAAQ6F,KACN,oFAIG,IAAM,kCAGgBxJ,GAC7B,QAAqB,IAAVA,EACT,OAAO,EAET,GAAc,KAAVA,EACF,OAAO,EAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGT,OAAQA,GAAA,IACD,OACH,OAAO,MACJ,QACH,OAAO,UAEP,OAAOA,EAAMqE,MAAM,KAAKnG,KAAI+T,GAAOA,EAAIhO,SAAA,8BAIhBjE,GAC3B,MAAM2uB,EAAeH,EAAiBQ,YACtC,GAAqB,iBAAVhvB,EACT,OAAO2uB,EAGT,OAAQ3uB,GAAA,KACD2uB,EACH,OAAO3uB,EAAA,KACJwuB,EAAiBS,SACpB,OAAOT,EAAiBS,SAAA,KACrBT,EAAiBU,OACpB,OAAOV,EAAiBU,OAAA,QAExB,OAAOP,EAAA,kCAIoB3uB,GAC/B,MAAqB,iBAAVA,EACFmvB,KAAKC,IAAI,EAAGpvB,GAGA,iBAAVA,GACF4rB,SAAS5rB,GAAS0U,SAAS1U,EAAO,IAGpC,wCAGqCqvB,GAC5C,MAAc,QAAVA,EACK,IAEJ1a,MAAM2a,OAAOD,IAGX,EAFEF,KAAKI,KAAKD,OAAOD,GAEnB,iDAIPrvB,GAEA,OAAK2U,MAAM2a,OAAOtvB,IAIX,GAHEmvB,KAAKC,IAAI,EAAGE,OAAOtvB,GAGrB,CAmDTS,YAAY+uB,EAAsBC,EAA4B,CAAC,GArQjE,cAuQI,MAAMC,GADNF,EAAM,OAAKC,GAAaD,IACPzI,OAASyI,EAAIzI,MAAM4I,qBFhPTC,GEmPtB,SAAAJ,EAAIzI,YAAJ,IAAmB8I,SAAS,SAAAL,EAAIzI,YAAJ,IAAW0B,WAC1C9kB,QAAQ6F,KAAK,2DACbgmB,EAAIzI,MAAO0B,QAAW+G,EAAIzI,MAAc8I,OAGrC,SAAAL,EAAIzI,YAAJ,IAAmB+I,eAAe,SAAAN,EAAIzI,YAAJ,IAAWuC,aAChD3lB,QAAQ6F,KAAK,mEACbgmB,EAAIzI,MAAOuC,UAAakG,EAAIzI,MAAc+I,YAG5CnyB,KAAKopB,MNzFF,SAAsBA,GAC3B,MAAMgJ,EAAiB,CAAC,EACxB,IAAIhO,EAAU,EACd,MAAMiO,EAAW,CAAC9nB,EAAK7E,KACrB/C,OAAO8L,KAAKlE,GAAK5D,SAAQkX,IACvB,MAAMyU,GAAe5sB,EAAOA,EAAO,IAAM,IAAMmY,EACzCkT,EAAMxmB,EAAIsT,GACG,mBAARkT,EACTpuB,OAAOikB,eAAerc,EAAKsT,EAAG,CAC5B/H,MACE,IAAKsc,EAAeE,GAAc,CAEhC,GADAlO,IACIA,EAAU,IACZ,MAAM,IAAIte,MACR,kDAAkDwsB,MAAgBvB,EAAIzwB,cAI1E8xB,EAAeE,GAAevB,EAAI3H,EAAA,CAEpC,OAAOgJ,EAAeE,EAAA,EAExBzL,YAAY,IAEU,iBAARkK,GAChBsB,EAAStB,EAAKuB,EAAA,KAMpB,OADAD,EAASjJ,EAAO,IACT1lB,KAAKuH,MAAMvH,KAAKC,UAAUylB,GAAA,CM0DlBmJ,CACX9D,EAAa,CAAC,EAAU,KAAc,KAAKoD,EAAIzI,aAAT,CAAgB4I,oBAAgB,QAGxEhyB,KAAKopB,MAAM4I,eAAiBD,EFjQDE,EEoQZJ,EAAIhC,OFnQrBltB,OAAOkF,OAAOgoB,EAAQoC,GEqQpBjyB,KAAKwyB,cAAgBtB,EAAuBuB,uBAAuBZ,EAAIW,eACvExyB,KAAK0yB,aAAexB,EAAuByB,sBAAsBd,EAAIa,cACrE1yB,KAAK4yB,gBAAkB1B,EAAuB2B,yBAAyBhB,EAAIe,iBAC3E5yB,KAAK8yB,mBAAqBhC,EAAkBe,EAAIiB,oBAChD9yB,KAAK+yB,wBAA0BjC,EAAkBe,EAAIkB,yBACrD/yB,KAAKgzB,6BAA+BlC,EAAkBe,EAAImB,8BAC1DhzB,KAAKizB,6BAA+BnC,EAAkBe,EAAIoB,8BAC1DjzB,KAAKkzB,uBAAyBpC,EAAkBe,EAAIqB,wBACpDlzB,KAAKmzB,iBAAmBrC,EAAkBe,EAAIsB,kBAC9CnzB,KAAKozB,kBAAoBtC,EAAkBe,EAAIuB,mBAC/CpzB,KAAKqzB,cAAgBvC,EAAkBe,EAAIwB,eAC3CrzB,KAAKszB,mBAAqBxC,EAAkBe,EAAIyB,oBAChDtzB,KAAKuzB,iBAAmB1B,EAAI0B,iBAC5BvzB,KAAKwzB,sBAAwB3B,EAAI2B,sBACjCxzB,KAAKyzB,cAAgB3C,EAAkBe,EAAI4B,eAC3CzzB,KAAK0zB,sBAAwB5C,EAAkBe,EAAI6B,uBACnD1zB,KAAK2zB,eAAiBzC,EAAuB0C,wBAAwB/B,EAAI8B,gBACzE3zB,KAAK6zB,aAAe3C,EAAuB4C,sBAAsBjC,EAAIgC,cACrE7zB,KAAK+zB,2BAA6BjD,EAAkBe,EAAIkC,4BACxD/zB,KAAKg0B,WAAalD,EAAkBe,EAAImC,YAAY,GACpDh0B,KAAKi0B,sBAAwB/C,EAAuBgD,+BAClDrC,EAAIoC,uBAENj0B,KAAKm0B,eAAiBrD,EAAkBe,EAAIsC,gBAC5Cn0B,KAAKo0B,iBAAmBtD,EAAkBe,EAAIuC,kBAC9Cp0B,KAAKq0B,qBAAuBvD,EAAkBe,EAAIwC,sBAClDr0B,KAAKs0B,iBAAmBpD,EAAuBqD,0BAA0B1C,EAAIyC,kBAC7Et0B,KAAKw0B,wBAA0B1D,EAAkBe,EAAI2C,yBACrDx0B,KAAKy0B,qBAzOT,SAA+BpyB,EAAqC2uB,EAAe,GACjF,MAAc,QAAV3uB,EAAwBqyB,IAErBzD,EAAiB5uB,IAAU2uB,CAAA,CAsOJ2D,CAAsB9C,EAAI4C,sBACtDz0B,KAAK40B,yBAA2B9D,EAAkBe,EAAI+C,0BACtD50B,KAAK60B,uBAAyB/D,EAAkBe,EAAIgD,wBACpD70B,KAAK80B,oBAAsBhE,EAAkBe,EAAIiD,qBAEjD90B,KAAK+0B,8BAAgCjE,EAAkBe,EAAIkD,+BAE3D/0B,KAAKg1B,oBAAsBnD,EAAImD,qBAAuB,CAAC,EAEvDh1B,KAAKi1B,6BAA+BnE,EAAkBe,EAAIoD,8BAC1Dj1B,KAAKk1B,uBAAyBjE,EAAiBY,EAAIqD,wBACnD,MAAMC,EAAqB1zB,EAAQowB,EAAIsD,oBACnCtD,EAAIsD,mBACJ,SAAAtD,EAAIsD,yBAAJ,IAAwBzuB,MAAM,KAAKnG,KAAIwH,GAAKA,EAAEzB,SAClDtG,KAAKm1B,mBAAqB,IAAIxsB,IAAIwsB,GAClCn1B,KAAKo1B,kBAAoBtE,EAAkBe,EAAIuD,mBAC/Cp1B,KAAKq1B,gCACHnE,EAAuBoE,yCACrBzD,EAAIwD,iCAERr1B,KAAKsa,MAAQuX,EAAIvX,MACjBta,KAAKu1B,QAAUzE,EAAkBe,EAAI0D,SACrCv1B,KAAKw1B,+BAAiCvE,EAAiBY,EAAI2D,iCAAmC,EAC9Fx1B,KAAKy1B,gBAAkB3E,EAAkBe,EAAI4D,gBAAA,EChVjD,IAAI,EAA+BvxB,QAAQ,8BCM3C,MACE2b,QAAS6V,EAAM,IACfrd,EAAG,kBACHsd,EAAiB,UACjBC,EAAS,cACTC,GACE,EAESvd,EAAQ,CACnBwd,SAAQ,CAACC,EAAYC,EAAiBC,IAC7B,IAAI3f,IAAS+B,CAAG;eACZ2d,EAAQ,UAAY,6BAA6BE,GACtDA,EAAM9M,MAAM7B,YAAYwO,OAAgBE,GAAS;UAChD5d,KAAe/B;;MAKxB6f,YAAYJ,GACH,IAAIzf,IAAS+B,CAAG;2BACA6d,GAASA,EAAM9M,MAAM7B,YAAYwO;UACjD1d,KAAe/B;;MAKxB8f,QAAO,CAACC,EAAiBC,IAChB,IAAIhgB,IAAS+B,CAAG;2BACA6d,GACjBA,EAAM9M,MAAM7B,YAAY8O,uBAAqCH,GAC7DA,EAAM9M,MAAM7B,YAAY+O;UACvBje,KAAe/B;;OAO1B,SAEO,SAAS0b,GAAeuE,GAC7B,OAAOL,IACL,GAAKA,EAAM9M,MAAM4I,eAGjB,OAAOkE,EAAM9M,MAAM4I,eAAeuE,EAAYL,EAAM,CAAN,CChDlD,MAAMM,GAAe,MAAU;;;EAKxB,MAAMC,WAAsB,YAIjC3zB,YAAYozB,GACV1a,MAAM0a,GACNl2B,KAAKmG,MAAQ,CAAEF,WAAO,GAGxBywB,kBAAkBzwB,GAEhB,OADAjG,KAAK22B,SAAS,CAAE1wB,WACT,EAGT2wB,SACE,OAAI52B,KAAKmG,MAAMF,MAEX,gBAACuwB,GAAD,KACE,gBAAC,KAAD,KAAI,2BACJ,gBAAC,QAAD,KAAO,IAAEx2B,KAAKmG,MAAMF,MAAMC,QAAQ,KAClC,gBAAC,IAAD,KACE,gBAAC,UAAD,KACE,gBAAC,UAAD,KAAS,eACT,gBAAC,MAAD,KAAMlG,KAAKmG,MAAMF,MAAM4wB,SAG3B,gBAAC,QAAD,KAAO,mBAAiB,SAA0B,IAAC,gBAAC,KAAD,MACnD,gBAAC,QAAD,KAAO,YAAU,YAIhB,gBAAC,WAAD,KAAiB,gBAAoB72B,KAAKk2B,MAAMY,UAAA,ECpC3D,MAaMC,GAASnB,CAAS;;;;;;EAQXoB,GAAU,IArBLd,GAChB,gBAAC,MAAD,CAAKe,UAAWf,EAAMe,UAAW1U,QAAQ,MAAMwI,MAAM,MAAMmM,OAAO,MAAMC,QAAQ,eAC9E,gBAAC,OAAD,CAAMxR,EAAE,0LACR,gBAAC,OAAD,CAAMA,EAAE,0LACR,gBAAC,OAAD,CAAMA,EAAE,0LACR,gBAAC,OAAD,CAAMA,EAAE,0LACR,gBAAC,OAAD,CAAMA,EAAE,6LACR,gBAAC,OAAD,CAAMA,EAAE,wLACR,gBAAC,OAAD,CAAMA,EAAE,0LACR,gBAAC,OAAD,CAAMA,EAAE,2LAY2B;kBACrBoR;;;;;;;;YAQNb,GAASA,EAAMzN;;EC5BrB2O,GAAiB,MAAU;;;;;;WAMtBlB,GAASA,EAAMzN;EAOnB,MAAM4O,WAAgB,gBAC3BT,SACE,OACE,gBAAC,MAAD,CAAKpd,MAAO,CAAE8d,UAAW,WACvB,gBAACF,GAAD,CAAgB3O,MAAOzoB,KAAKk2B,MAAMzN,OAAO,eACzC,gBAACuO,GAAD,CAASvO,MAAOzoB,KAAKk2B,MAAMzN,QAAA,ECvBnC,IAAI,GAA+BvkB,QAAQ,cCIpC,MAAMqzB,GAAiB,gBAAoB,IAAIrG,EAAuB,CAAC,IACjEsG,GAAkBD,GAAeE,SACjCC,GAAkBH,GAAeI,SCN9C,IAAI,GAA+BzzB,QAAQ,QCAvC,GAA+BA,QAAQ,oCCAvC,GAA+BA,QAAQ,qDCcpC,YAAiC0zB,GAAwD,iCAC9F,MAAMC,EAAS,IAAI,GAAAC,OAAO,CAAC,GACrBC,EAAa,CACjBF,SACAltB,KAAMkhB,EAAajS,OAAOoe,SAAS9I,KAAOlc,QAAQL,OAGhDkZ,IACFgM,EAAO1yB,QAAQ8f,KAAKgT,YAAc,EAAAnR,EAAOhd,OAGZ,iBAApB8tB,GAAoD,OAApBA,EACzCG,EAAW,IAAS,CAClB/zB,OAAQ,CAAEk0B,YAAa,IACvBC,OAAQP,GAGVG,EAAW,IAASH,EAGtB,MACEQ,QAAQ,OAAED,UACF,KAAAC,QAAOL,GACjB,YAA0B,IAAnBI,EAAOtV,QAAwBwV,GAAuBF,GAAUA,CAAA,mLAvBuB,yBAuBvB,CAGlE,SAASE,GAAuBC,GAErC,OADAtyB,QAAQ6F,KAAK,qEACN,IAAI3G,SAAqB,CAACC,EAAS+G,KACxC,KAAA0W,YAAW0V,EAAM,CAAE7oB,OAAO,EAAMkM,UAAU,EAAMhO,KAAM,KAAMoV,SAAS,IAAQ,CAACzgB,EAAK0E,KAEjF,GAAI1E,EACF,OAAO4J,EAAO5J,GAEhB6C,EAAQ6B,GAAQA,EAAIgI,QAAA,MChD1B,IAAI,GAA+B9K,QAAQ,SCAvC,GAA+BA,QAAQ,iBCAvC,GAA+BA,QAAQ,gBCG3C,MAAMq0B,GAAY,SAKX,MAAMC,GAAY,gBAUP/rB,EAASilB,EAAQ,GAC/B,MAAM+G,EAASD,GAAYvtB,MAAMwB,GACjC,OAAOgsB,EAAOA,EAAOx3B,OAASywB,EAAA,gBAYjBjlB,EAASilB,EAAQ,GAC9B,MAAM+G,EAASD,GAAYvtB,MAAMwB,GACjC,OAAO,WAAuBgsB,EAAO51B,MAAM,EAAG41B,EAAOx3B,OAASywB,GAAA,iBAWhD1uB,EAAMuQ,GACpB,MAAMmlB,EAAaF,GAAYvtB,MAAMjI,GAErC,OADiBw1B,GAAYvtB,MAAMsI,GACnB1Q,MAAM61B,EAAWz3B,OAAA,cAOtBwL,GACX,IAAIsD,EAAMtD,EAIV,MAHsB,MAAlBsD,EAAIuf,OAAO,KACbvf,EAAMA,EAAI+d,UAAU,IAEfyK,GAAUxoB,EAAA,aAUPpF,EAAM8tB,GAEhB,MACME,EADaH,GAAYvtB,MAAMN,GACRjK,OAAO+3B,GACpC,OAAO,WAAuBE,EAAA,YAGrBzhB,EAAgBzK,GACzB,OAAO,OAAmByK,EAAQzK,EAAA,gBAGrBgsB,GACb,OAAO,WAAuBA,EAAA,eAGlBhsB,GACZ,OAAO,UAAsBA,EAAA,EAGjC,SAAgC+rB,GAAYvtB,MAC5CtI,OAAOkF,OAAO2wB,GAAa,IAC3B,cC3FI,GAA+Bt0B,QAAQ,2bCoB3C,SAAS00B,GAAqBC,GAC5B,MAA6B,iBAAfA,GAA2B,QAAQ51B,KAAK41B,EAAA,CAGjD,SAASC,GAAaD,GAC3B,MAAsB,YAAfA,GAA4B9K,EAAU8K,IAAeD,GAAqBC,EAAA,CAG5E,SAASE,GAAkBF,EAA6BG,GAAiB,GAC9E,GAAmB,YAAfH,EACF,OAAOG,EAAiB,QAAU,UAGpC,IAAI5mB,EAA6B,iBAAfymB,EAA0B9hB,SAAS8hB,EAAY,IAAMA,EAKvE,GAJID,GAAqBC,KACvBzmB,GAAQ,KAGNA,EAAO,KAAOA,EAAO,IACvB,MAAM,IAAItM,MAAM,qBAElB,IAAIkB,EAAM,UAQV,OAPIoL,GAAQ,KAAOA,EAAO,IACxBpL,EAAM,WACGoL,GAAQ,IACjBpL,EAAM,QACGoL,EAAO,MAChBpL,EAAM,QAEDA,CAAA,CAGT,MAAMiyB,GAAiB,CACrBnjB,KAAK,EACLgT,MAAM,EACNC,KAAK,EACLhP,MAAM,EACNtK,OAAO,EACPuZ,QAAQ,EACRpe,SAAS,EACTe,MAAM,GAGD,SAASutB,GAAgB7tB,GAC9B,OAAOA,KAAO4tB,EAAA,CAGT,SAASE,GAAoBC,GAClC,OACEA,EAAUrY,SACVqY,EAAUrZ,aACTqZ,EAAU/zB,aAAe+zB,EAAU/zB,YAAYyoB,UAAU,EAAG,KAC7DsL,EAAUC,UACV,eAIJ,MAAMC,GAAqB,CACzBC,WAAY,SACZC,QAAS,SACTC,iBAAkB,SAClBC,QAAS,SACTC,iBAAkB,SAElBC,UAAW,SACXC,UAAW,SACXC,QAAS,SACTC,gBAAiB,SACjBC,iBAAkB,SAElBxoB,MAAO,QACPyoB,SAAU,QACVC,SAAU,QACVC,YAAa,QAEbC,cAAe,SACfC,cAAe,SACfve,SAAU,SACVnK,qBAAsB,SACtB2oB,sBAAuB,SACvB1oB,WAAY,SACZG,kBAAmB,UAGd,SAASwoB,GAAW3sB,GACzB,QAAoB,IAAhBA,EAAO0O,OAAuB7a,EAAQmM,EAAO0O,MAC/C,OAAO1O,EAAO0O,KAEhB,MAAMke,EAAW73B,OAAO8L,KAAK6qB,IAC7B,UAAWmB,KAAWD,EAAU,CAC9B,MAAMle,EAAOgd,GAAmBmB,GAChC,QAAwB,IAApB7sB,EAAO6sB,GACT,OAAOne,CAAA,CAIX,MAAO,MAGF,SAASoe,GACd9sB,EACA0O,EAAsC1O,EAAO0O,MAE7C,GAAI1O,EAAO,kBACT,OAAO,EAGT,QAAqB,IAAjBA,EAAOyD,YAAwC,IAAjBzD,EAAOwD,MACvC,OAAO,EAGT,GAAKxD,EAAO+sB,IAAM/sB,EAAOP,MAAUO,EAAO+sB,IAAM/sB,EAAOgtB,KACrD,OAAO,EAGT,IAAIC,GAAc,EAClB,MAAMC,EAAcr5B,EAAQ6a,GAW5B,OATa,WAATA,GAAsBwe,IAAe,MAAAxe,OAAA,EAAAA,EAAMye,SAAS,cACtDF,OACwB,IAAtBjtB,EAAOgE,WACuC,IAA1CjP,OAAO8L,KAAKb,EAAOgE,YAAY3Q,YACC,IAAhC2M,EAAO+D,2BAC0B,IAAjC/D,EAAO0sB,4BACsB,IAA7B1sB,EAAOmE,oBAGXtQ,EAAQmM,EAAO4D,SAAU/P,EAAQmM,EAAOotB,oBAKzB,IAAjBptB,EAAO4D,QACNoe,EAAUhiB,EAAO4D,SACR,UAAT8K,GAAqBwe,IAAe,MAAAxe,OAAA,EAAAA,EAAMye,SAAS,aAEpDF,EAAcH,GAAgB9sB,EAAO4D,MAAO5D,EAAO4D,MAAM8K,OAGpDue,EAAA,CAGF,SAASI,GAAWrb,GACzB,OAAwC,IAAjCA,EAAYvb,OAAO,QAAa,CAGlC,SAAS62B,GAAiBtb,GAC/B,MAAuB,sCAAhBA,CAAgB,CAGzB,SAASub,GAAqBC,EAAeC,EAAmBjmB,GAC9D,OAAI3T,EAAQ25B,GACHA,EAAS76B,KAAI+6B,GAAKA,EAAEh7B,aAAYK,KAAKyU,GACf,iBAAbgmB,EACTz4B,OAAO8L,KAAK2sB,GAChB76B,KAAIsd,GAAK,GAAGA,IAAIzI,IAAYgmB,EAASvd,OACrCld,KAAKyU,GAEDimB,EAAY,IAAMD,EAAS96B,UAAA,CAItC,SAASi7B,GAAsBH,EAAeC,GAC5C,OAAI55B,EAAQ25B,IACVp1B,QAAQ6F,KAAK,oDAAsDuvB,EAAS96B,YACrE,IACsB,iBAAb86B,EACTz4B,OAAO8L,KAAK2sB,GAChB76B,KAAIsd,GAAK,GAAGwd,KAAaxd,MAAMud,EAASvd,OACxCld,KAAK,MAERqF,QAAQ6F,KAAK,yDAA2DuvB,EAAS96B,YAC1E,IAIX,SAASk7B,GAAmBz4B,EAAc4b,EAAkBtc,GAG1D,MAAMo5B,EAAW,uBACXne,EAASqB,EAAU,IAAM,GAE/B,OADiB,SAAkB,KAAK8c,IAAWne,MAEhDoe,OAAO,CAAE,CAACD,GAAWp5B,IACrByrB,UAAU,GACV7lB,QAAQ,wBAAyBlF,EAAA,CAO/B,SAAS44B,GACdxkB,EACAnJ,EAAiD,CAAC,GAElD,GAAIvM,EAAQ0V,GACV,MAAM,IAAIrR,MAAM,6BAA+BqR,EAAQ7W,YAEvD,OAAOqC,OAAO8L,KAAK0I,GAChB5W,KAAI86B,IACH,MAAMD,EAAWjkB,EAAQkkB,IACnB,MAAE7hB,EAAQ,eAAQmF,GAAU,GAAS3Q,EAASqtB,IAAc,CAAC,EACnE,OAAQ7hB,GAAA,IACD,OACH,OAAOgiB,GAAmBH,EAAW1c,EAASyc,GAAA,IAC3C,iBACH,OAAOD,GAAqBC,EAAUC,EAAW,WAC9C,gBACH,OAAOF,GAAqBC,EAAUC,EAAW,SAC9C,aACH,OAAOE,GAAsBH,EAAUC,GAAA,QAIvC,OADAr1B,QAAQ6F,KAAK,4CAA8C2N,GACpD,OAGZ7Y,KAAK,KAuGL,SAASi7B,GAAgCv5B,EAAYw5B,GAC1D,OAAIZ,GAAWY,GACNn4B,KAAKC,UAAUtB,IAEtB2D,QAAQ6F,KAAK,8BAA8BgwB,sBACpC,IAIJ,SAASC,GACdC,EACA15B,GAEA,MAAM,KAAEU,EAAI,MAAEyW,EAAK,QAAEmF,GAAU,EAAK,kBAAEqd,GAAsBD,EAE5D,GAAIC,EACF,OAAQD,EAAUxc,IAAA,IACX,WACA,SACH,OAAOqc,GAAgCv5B,EAAO25B,GAAA,IAC3C,aACA,QACH,MAAO,GAAGj5B,KAAQ64B,GAAgCv5B,EAAO25B,KAAA,QAGzD,OADAh2B,QAAQ6F,KAAK,kCAAoCkwB,EAAUxc,IACpD,GAIb,IAAK/F,EAEH,OADAxT,QAAQ6F,KAAK,oDAAoD9I,KAC1D,GAGT,OAAQg5B,EAAUxc,IAAA,IACX,OACH,OAvIN,SACExc,EACAyW,EACAmF,EACAtc,GAEA,MAAMib,EAASqB,EAAU,IAAM,GAC/B,IAAIvB,EAAS,GAEC,UAAV5D,EACF4D,EAAS,IACU,WAAV5D,IACT4D,EAAS,KAKX,MAAMqe,EAAW,uBAGjB,OAFiB,SAAkB,IAAIre,IAASqe,IAAWne,MAE3Coe,OAAO,CAAE,CAACD,GAAWp5B,IAAS4F,QAAQ,wBAAyBlF,EAAA,CAmHpEk5B,CAAuBl5B,EAAMyW,EAAOmF,EAAStc,GAAA,IACjD,QACH,OAlHN,SACEU,EACAyW,EACAmF,EACAtc,GAEA,OAAQmX,GAAA,IACD,OACH,OAAOgiB,GAAmBz4B,EAAM4b,EAAStc,GAAA,IACtC,iBACH,OAAKZ,EAAQY,GAITsc,EACK6c,GAAmBz4B,EAAM4b,EAAStc,GAGpC,GAAGU,KAAQV,EAAM1B,KAAK,UAP3BqF,QAAQ6F,KAAK,yDACN,IAMoB,IAC1B,gBACH,OAAKpK,EAAQY,GAITsc,EACK6c,GAAmBz4B,EAAM4b,EAAStc,GAGpC,GAAGU,KAAQV,EAAM1B,KAAK,QAP3BqF,QAAQ6F,KAAK,wDACN,IAMoB,IAC1B,aACH,OAAK8S,GAAWld,EAAQY,IAA2B,iBAAVA,GACvC2D,QAAQ6F,KAAK,yEACN,IAGF0vB,GAAsBl5B,EAAOU,GAAA,QAGpC,OADAiD,QAAQ6F,KAAK,+BAAiC2N,GACvC,IA4EA0iB,CAAwBn5B,EAAMyW,EAAOmF,EAAStc,GAAA,IAClD,SACH,OA1EN,SACEmX,EACAmF,EACAtc,GAEA,GACO,WADCmX,EAAA,CAEJ,MAAM8D,EAASqB,EAAU,IAAM,GAGzB5b,EAAO,uBACPo5B,EAAW,SAAkB,IAAIp5B,IAAOua,MAC9C,OAAOzG,mBAAmBslB,EAAST,OAAO,CAAE,CAAC34B,GAAOV,IAAS,CAG7D,OADA2D,QAAQ6F,KAAK,gCAAkC2N,GACxC,GA2DA4iB,CAAyB5iB,EAAOmF,EAAStc,GAAA,IAC7C,SACH,OAzDN,SACEU,EACAyW,EACAmF,EACAtc,GAEA,MACO,SADCmX,EAEGgiB,GAAmBz4B,EAAM4b,EAAStc,IAEzC2D,QAAQ6F,KAAK,gCAAkC2N,GACxC,IA8CA6iB,CAAyBt5B,EAAMyW,EAAOmF,EAAStc,GAAA,QAGtD,OADA2D,QAAQ6F,KAAK,kCAAoCkwB,EAAUxc,IACpD,IAIN,SAAS+c,GAAmBv3B,EAAmB0a,GACpD,OAAI1a,EAAMwa,GAED1I,mBAAmBilB,GAAwB/2B,EAAO0a,IAElDA,CAAA,CAIJ,SAAS8c,GAAa3c,GAC3B,OAAoC,IAAhCA,EAAYvb,OAAO,QACd,OAG2B,IAAhCub,EAAYvb,OAAO,QACd,OAG6B,IAAlCub,EAAYvb,OAAO,UACd,MAGF,QAGT,MAAMm4B,GAAwB,gDAEvB,SAASC,GAAkBhwB,GAChC,OAAO+vB,GAAsBv5B,KAAKwJ,GAAW,IAGxC,SAASiwB,GAAkBjwB,GAralC,MAsaE,MAAO1J,IAAQ,eAAA0J,OAAA,EAAAA,EAASrE,MAAMo0B,UAAf,IAAuCG,YAAa,GACnE,OAAO55B,CAAA,CAcT,SAAS65B,GACPv3B,EACAw3B,EACApL,GAEA,IAAIqL,EAiBJ,YAhBY,IAARD,QAA6B,IAARpL,EAErBqL,EADED,IAAQpL,EACI,KAAKoL,KAAOx3B,IAEZ,KAAKw3B,QAAUpL,OAASpsB,SAEvB,IAARosB,EACTqL,EAAc,MAAMrL,KAAOpsB,SACV,IAARw3B,IAEPC,EADU,IAARD,EACY,YAEA,MAAMA,KAAOx3B,KAIxBy3B,CAAA,CAGF,SAASC,GAAoBnvB,GA9cpC,QA+cE,MAAM8rB,EAC+B,iBAA5B9rB,EAAO+rB,iBACVnI,KAAKqL,IAAIjvB,EAAO+rB,iBAAkB,SAAA/rB,EAAO8rB,SAAP,EAAkBhF,KACpD9mB,EAAO8rB,QACPF,EAC+B,iBAA5B5rB,EAAO6rB,iBACVjI,KAAKC,IAAI7jB,EAAO6rB,iBAAkB,SAAA7rB,EAAO4rB,SAAP,GAAkB,KACpD5rB,EAAO4rB,QACPG,EAAsD,iBAA5B/rB,EAAO+rB,kBAAiC/rB,EAAO+rB,iBACzEF,EAAsD,iBAA5B7rB,EAAO6rB,kBAAiC7rB,EAAO6rB,iBAE/E,YAAgB,IAAZC,QAAqC,IAAZF,EACpB,GAAGG,EAAmB,KAAO,OAAOD,QAAcF,IACvDC,EAAmB,KAAO,YAEP,IAAZD,EACF,GAAGC,EAAmB,KAAO,QAAQD,SACvB,IAAZE,EACF,GAAGC,EAAmB,KAAO,QAAQD,SAFA,CAEA,CAIzC,SAASsD,GAAoBpvB,GAClC,MAAM5G,EAAgB,GAEhB81B,EAAcF,GAAwB,aAAchvB,EAAOisB,UAAWjsB,EAAOgsB,gBAC/D,IAAhBkD,GACF91B,EAAI9G,KAAK48B,GAGX,MAAMG,EAAaL,GAAwB,QAAShvB,EAAOssB,SAAUtsB,EAAOqsB,eACzD,IAAfgD,GACFj2B,EAAI9G,KAAK+8B,GAGX,MAAMC,EAAkBN,GACtB,aACAhvB,EAAOysB,cACPzsB,EAAOwsB,oBAEe,IAApB8C,GACFl2B,EAAI9G,KAAKg9B,GAGX,MAAMC,EAjFR,SAAsC5D,GACpC,QAAmB,IAAfA,EACF,OAEF,MAAM6D,EAAuB7D,EAAWj5B,SAAS,IACjD,MAAK,WAAW2C,KAAKm6B,GAGd,qBAAqBA,EAAqB12B,MAAM,KAAK,GAAGzF,SAFtD,eAAem8B,GAEuC,CAyElCC,CAA6BzvB,EAAO2rB,iBACpC,IAAzB4D,GACFn2B,EAAI9G,KAAKi9B,GAGX,MAAMG,EAAcP,GAAoBnvB,GASxC,YARoB,IAAhB0vB,GACFt2B,EAAI9G,KAAKo9B,GAGP1vB,EAAOusB,aACTnzB,EAAI9G,KAAK,UAGJ8G,CAAA,CAGF,SAASu2B,GAAeC,EAAsBC,EAAkB,IACrE,MAAMC,EAAiC,GACjCC,EAA8B,GAC9BC,EAAgC,GAYtC,OAVAJ,EAAO72B,SAAQ5B,IACTA,EAAM+W,SACR2hB,EAAM1C,SAASh2B,EAAMhC,MAAQ46B,EAAcz9B,KAAK6E,GAAS64B,EAAgB19B,KAAK6E,GAE9E24B,EAAiBx9B,KAAK6E,EAAA,IAI1B44B,EAAchuB,MAAK,CAACzG,EAAG0G,IAAM6tB,EAAMj1B,QAAQU,EAAEnG,MAAQ06B,EAAMj1B,QAAQoH,EAAE7M,QAE9D,IAAI46B,KAAkBC,KAAoBF,EAAA,CAG5C,SAASG,GACdL,EACA3e,GAEA,MAAO,IAAI2e,GAAQ7tB,MAAK,CAACzG,EAAG0G,IACnB1G,EAAE2V,GAAOif,cAAcluB,EAAEiP,KAAA,CAI7B,SAASkf,GACdC,EACAC,EAAkD,GAClDC,EAAuD,IAEvD,MAAMC,EAAsB,CAAC,EAY7B,OAXAD,EAAgBv3B,SAAQkY,MACnBnQ,SAAUmQ,GAAUmf,EAAOI,MAAMvf,IACpCsf,EAAoBtf,EAAM9b,KAAO,IAAM8b,EAAMU,KAAM,CAAI,KAIzD0e,EAAaA,EAAW1xB,QAAOsS,MAC1BnQ,SAAUmQ,GAAUmf,EAAOI,MAAMvf,KAC5Bsf,EAAoBtf,EAAM9b,KAAO,IAAM8b,EAAMU,QAGrC7e,OAAOw9B,EAAA,CAGpB,SAASG,GACdC,GAEA,MAAMC,EAAc,CAAC,EAYrB,OAXA57B,OAAO8L,KAAK6vB,GAAO33B,SAAQ5D,IACzB,MAAM84B,EAAOyC,EAAMv7B,GAEby7B,EAAqBz7B,EAAK2D,MAAM,KAAK,GAAGJ,OACzCi4B,EAAYC,GAIjBD,EAAYC,GAAsB,SAAKD,EAAYC,IAAwB3C,GAHzE0C,EAAYC,GAAsB3C,CAGuC,IAGtE0C,CAAA,CAGF,SAAStJ,GAA6BprB,EAAauY,EAAoB,CAAC,GAC7E,OAAOvY,EAAI5B,QACT,wBACA,CAACG,EAAOrF,IAAUqf,EAAUrf,IAASqf,EAAUrf,GAAM8c,SAAYzX,GAAA,CAI9D,SAASq2B,GACdC,EACA1d,GAEA,MAQMhW,OAAsB,IAAZ0zB,EAAwBnP,EARxB,MACd,IAAK1D,EACH,MAAO,GAET,MAAMqD,EAAOtV,OAAOoe,SAAS9I,KAC7B,OAAOA,EAAKrB,SAAS,UAAW,KAAA5Z,SAAQib,GAAQA,CAAI,EAGWyP,KAAa,KAAA1qB,SAAQyqB,GAetF,OAbuB,IAAnB1d,EAAQ/f,SAEV+f,EAAU,CACR,CACEnX,IAAK,OASJmX,EAAQzgB,KAAIghB,IACjB,OAAO,SACFA,GADE,CAEL1X,KAPkBA,EAOA0X,EAAO1X,IANpBklB,EAAW/jB,EAASnB,IAOzBxE,YAAakc,EAAOlc,aAAe,KARvC,IAAsBwE,CAQiB,IAKlC,MAAM+0B,GAAgC,sBAChCC,GAAoC,uBACpCC,GAA6B,mBAEnC,IAAIC,GAAkC,0BACtC,SAASC,GAAwB5hB,GACtC2hB,GAAkC3hB,CAAA,CAG7B,MAAM6hB,GAAkBC,IAC5B,CACClW,OAAQ,MACRpe,QAAS,QACTs0B,IAASA,GAEN,SAASC,GAAiB9zB,GAmB/B,OAAOA,IAlBiB,CACtB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,6BAA6B,EAC7B,UAAU,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,8BAA8B,EAC9B,yBAAyB,EAGb,CAGT,SAAS+zB,GACd70B,EACAopB,GAEA,OAAOhxB,OAAO8L,KAAKlE,GAChBgC,QAAOlB,IACiB,IAAnBsoB,EACKtoB,EAAIC,WAAW,QAAU6zB,GAAiB9zB,GAE5CA,EAAIC,WAAW,OAASqoB,EAAenrB,QAAQ6C,IAAQ,IAE/D8E,QAAO,CAACkvB,EAAKh0B,KACZg0B,EAAIh0B,GAAOd,EAAIc,GACRg0B,IACN,CAAC,EAAD,CAGA,SAASC,GAAcC,GAC5B,OAAOA,EACJ74B,MAAM,QACNnG,KAAI+b,GAAQA,EAAKrU,QAAQ,wDAAyD,WAClFtH,KAAK,QAGH,SAAS6+B,GACdld,GAEA,IAAImd,EAAend,EAAK7hB,QACxB,MAAMi/B,EAAYpd,EAAK,cACjBqd,EAAWrd,EAAK,aAEtB,GAAIod,EAAW,CACbD,EAAe,MAAKA,GACpB,UAAW5D,KAAQl5B,OAAO8L,KAAKixB,GAAY,CACzC,MAAMlf,EAAWkf,EAAU7D,GAC3B4D,EAAa5D,GAAQ,SAChB4D,EAAa5D,IADG,CAEnBrb,YAAA,UAGKmf,EAAU,CACnBF,EAAe,MAAKA,GACpB,UAAW5D,KAAQl5B,OAAO8L,KAAKkxB,GAAW,CACxC,MAAMlgB,EAAUkgB,EAAS9D,GACzB4D,EAAa5D,GAAQ,SAChB4D,EAAa5D,IADG,CAEnBpc,WAAA,EAKN,OAAOggB,CAAA,CChtBT,IAAI,GAA+Bv7B,QAAQ,WCARA,QAAQ,oCCARA,QAAQ,iCCARA,QAAQ,qCCARA,QAAQ,4CCARA,QAAQ,mCCARA,QAAQ,sCCARA,QAAQ,kCCARA,QAAQ,oCCARA,QAAQ,oCCARA,QAAQ,mCCARA,QAAQ,iDCARA,QAAQ,sCCARA,QAAQ,0CCARA,QAAQ,oCCARA,QAAQ,mCCARA,QAAQ,sCCARA,QAAQ,iCCARA,QAAQ,oCCARA,QAAQ,qCCARA,QAAQ,mCCARA,QAAQ,qCCARA,QAAQ,oCCARA,QAAQ,mCCsDpC,SAAS07B,GAAQC,GACtB,MACE,CACEC,KAAM,KACN,MAAO,MACP,KAAM,SACN,cAAe,aACfC,MAAO,OACPC,KAAM,OACNH,IAtCe,OAsCN,CAUR,SAASI,GAAUj8B,EAAmC67B,EAAeK,SAC1EL,EAAOA,EAAKt6B,cACZ,IAAI46B,EAAU,aAAgBN,GAI9B,OAHKM,IACHA,EAAU,aAAgBP,GAAQC,KAE7B,aAAgB77B,EAAO1D,WAAY6/B,EAASN,EAAA,CC1C9C,SAASO,GAASC,GACvB,MAAO,CAACC,EAAGC,EAAIC,KACbA,EAAKn+B,MAvCT,SAAkB+N,EAAMqwB,GACtB,IAAIj2B,EACA8L,EACAvN,EACA23B,EAAe,KACfC,EAAW,EACf,MAAMC,EAAQ,KACZD,GAAW,IAAIE,MAAOC,UACtBJ,EAAU,KACV33B,EAASqH,EAAKmG,MAAM/L,EAAS8L,GACxBoqB,IACHl2B,EAAU8L,EAAO,OAGrB,OAAO,WACL,MAAMyqB,GAAM,IAAIF,MAAOC,UACjBE,EAAYP,GAAQM,EAAMJ,GAiBhC,OAhBAn2B,EAAUxK,KAEVsW,EAAOxD,UACHkuB,GAAa,GAAKA,EAAYP,GAC5BC,IACFO,aAAaP,GACbA,EAAU,MAEZC,EAAWI,EACXh4B,EAASqH,EAAKmG,MAAM/L,EAAS8L,GACxBoqB,IACHl2B,EAAU8L,EAAO,OAEToqB,IACVA,EAAUpwB,WAAWswB,EAAOI,IAEvBj4B,CAAA,EAMMm4B,CAASV,EAAKn+B,MAAOg+B,EAAM,CAAN,CCvC/B,SAASc,GAAUvQ,GAET,CAIV,SAASwQ,GAAaxQ,GAET,CFmBpB,0BACE,aACA,SACA,CACE,kBAAmB,CACjBkJ,QAAS,0CACTuH,YAAY,SAGhB,GAGF,0BACE,aACA,cACA,CACE5vB,SAAU,CACRqoB,QAAS,6BACTuH,YAAY,SAGhB,kbG/CF,MAAMC,GAAW,CAAC,EAEX,SAASC,GAAWz1B,EAAa/I,EAAcy+B,GACpD,GAAgC,mBAArBA,EAAWn/B,MACpB,OA2BJ,SAA2ByJ,EAAa/I,EAAcy+B,GACpD,IAAKA,EAAWn/B,OAAUm/B,EAAWn/B,MAAcpB,OAAS,EAC1D,MAAM,IAAI6E,MAAM,uEAElB,MAAM27B,EAAe,aAAa1+B,IAC5BV,EAAQm/B,EAAWn/B,MAEzB,OADAyJ,EAAO21B,GAAgBH,GAChB,SACFE,GADE,CAELn/B,QAIE,OAHIrC,KAAKyhC,KAAkBH,KACzBthC,KAAKyhC,GAAiBp/B,EAAcH,KAAKlC,OAEpCA,KAAKyhC,EAAA,IAxCPC,CAAe51B,EAAQ/I,EAAMy+B,GAAA,GACD,mBAAnBA,EAAW1rB,IAC3B,OAUJ,SAAwBhK,EAAa/I,EAAcy+B,GACjD,MAAMC,EAAe,aAAa1+B,IAC5B+S,EAAM0rB,EAAW1rB,IAEvB,OADAhK,EAAO21B,GAAgBH,GAChB,SACFE,GADE,CAEL1rB,MAIE,OAHI9V,KAAKyhC,KAAkBH,KACzBthC,KAAKyhC,GAAgB3rB,EAAI5T,KAAKlC,OAEzBA,KAAKyhC,EAAA,IApBPE,CAAe71B,EAAQ/I,EAAMy+B,GAEpC,MAAM,IAAI17B,MACR,gEACEoC,OAAOs5B,EAAWn/B,OAClB,YCPD,SAASu/B,GAAwBnwB,GACtC,IAAIowB,EAAY,EAOhB,MALoB,MAAhBpwB,EAAS,KACXowB,GAAa,EACbpwB,EAAWA,EAAS4L,OAAO,IAGtB,CAACnU,EAAM0G,KACM,GAAdiyB,EACKjyB,EAAE6B,GAAUqsB,cAAc50B,EAAEuI,IAE5BvI,EAAEuI,GAAUqsB,cAAcluB,EAAE6B,GAAA,iECbzC,MAAMqwB,GAAQ,aAEP,MAAMC,GAGXj/B,cAqBA,KAAAk/B,KAAO,KACLhiC,KAAKiiC,QAAQD,KAAKF,GAAO9hC,KAAKkiC,UAAU,EArBxCliC,KAAKiiC,QAAU,IAAI,GAAAE,aACnBniC,KAAKqQ,MAAA,CAGH6xB,gBACF,OAAOrW,EAAahV,mBAAmB+C,OAAOoe,SAAS3uB,KAAKykB,UAAU,IAAM,GAG9EsU,UAAUjiC,GACR,OAAKA,EAGE,IAAMA,EAFJ,EAEI,CAGfkiC,UAAUC,GACR,MAAMC,EAAUviC,KAAKiiC,QAAQO,YAAYV,GAAOQ,GAChD,MAAO,IAAMC,EAAQE,eAAeX,GAAOQ,EAAA,CAO7CjyB,OACMwb,GACFjS,OAAO8L,iBAAiB,aAAc1lB,KAAKgiC,MAAM,GAIrDx9B,UACMqnB,GACFjS,OAAO8oB,oBAAoB,aAAc1iC,KAAKgiC,KAAA,CAMlD/5B,QAAQ9H,EAAmBwiC,GAA0B,GAC9C9W,GAIK,MAAN1rB,GAAcA,IAAOH,KAAKkiC,YAG1BS,EACF/oB,OAAOgpB,QAAQC,aACb,KACA,GACAjpB,OAAOoe,SAAS9I,KAAKxoB,MAAM,KAAK,GAAK1G,KAAKoiC,UAAUjiC,KAKxDyZ,OAAOgpB,QAAQE,UAAU,KAAM,GAAIlpB,OAAOoe,SAAS9I,KAAKxoB,MAAM,KAAK,GAAK1G,KAAKoiC,UAAUjiC,IACvFH,KAAKgiC,QAAA,iGAlBP,EAFC,GAAA3xB,KACA,GAAA0yB,UACD,wBAsBK,MAAM,GAAU,IAAIhB,GCtE3B,IAAI,GAA+B79B,QAAQ,WCEpC,MAAM8+B,GAAN,cACL,KAAAziC,IAA0B,IAAI0iC,IAEtB,KAAAC,SAAmB,GAE3B9+B,IAAI+nB,GACFnsB,KAAKO,IAAIgR,IAAI4a,EAAI,IAAI,GAAKA,GAAA,CAG5BnD,OAAOmD,GACLnsB,KAAKO,IAAIyoB,OAAOmD,EAAA,CAGlBgX,QAAQC,GACNpjC,KAAKO,IAAIoG,SAAQ,CAAC08B,EAAMC,MACU,IAA5BF,EAAS56B,QAAQ86B,KACnBD,EAAKE,SACLvjC,KAAKO,IAAIyoB,OAAOsa,GAAA,IAIpB,UAAWnX,KAAMiX,EACVpjC,KAAKO,IAAI+Q,IAAI6a,IAChBnsB,KAAKO,IAAIgR,IAAI4a,EAAI,IAAI,GAAKA,GAAA,CAKhCqX,WACExjC,KAAKujC,SACLvjC,KAAKO,IAAIkjC,OAAA,CAGXC,KAAK98B,IACEA,GAAS5G,KAAKkjC,YAGnBljC,KAAKO,IAAIoG,SAAQoqB,IACfA,EAAIwS,SACJxS,EAAI2S,KAAK98B,GAAQ5G,KAAKkjC,SAAS,IAEjCljC,KAAKkjC,SAAWt8B,GAAQ5G,KAAKkjC,SAAA,CAG/BK,SACEvjC,KAAKO,IAAIoG,SAAQoqB,GAAOA,EAAIwS,WAC5BvjC,KAAKkjC,SAAW,ICbpB,IAAIpR,GAvBK,CACL9mB,QAAS,KACT24B,QAAQ,EACRC,WAAY,KACZC,KAAK,EACLC,WAAW,EACXC,aAAc,GACd9D,UAAW,KACX+D,WAAY,YACZC,QAAQ,EACRC,UAAU,EACVC,SAAU,KACVC,UAAU,EACVC,UAAW,KACXC,QAAQ,EACRC,YAAY,EACZC,aAAa,EACbC,UAAW,KACXC,WAAY,KACZC,OAAO,GAaX,MAAMC,GAAa,UACbC,GAAgB,WAChBC,GAAqB,qBACrBC,GAAwB,sBACxBC,GAAqB,CACzB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SAEDC,GAAwBC,GAAOF,GAAmBE,GACxD,SAAS,GAAOlZ,EAAMmZ,GACpB,GAAIA,GACF,GAAIP,GAAW3hC,KAAK+oB,GAClB,OAAOA,EAAK/jB,QAAQ48B,GAAeI,SAGrC,GAAIH,GAAmB7hC,KAAK+oB,GAC1B,OAAOA,EAAK/jB,QAAQ88B,GAAuBE,IAI/C,OAAOjZ,CACT,CAEA,MAAMoZ,GAAe,6CAKrB,SAAS,GAASpZ,GAEhB,OAAOA,EAAK/jB,QAAQm9B,IAAc,CAAC9E,EAAG59B,IAE1B,WADVA,EAAIA,EAAE6C,eACoB,IACN,MAAhB7C,EAAE4sB,OAAO,GACY,MAAhB5sB,EAAE4sB,OAAO,GACZpnB,OAAOynB,aAAa5Y,SAASrU,EAAEorB,UAAU,GAAI,KAC7C5lB,OAAOynB,cAAcjtB,EAAEorB,UAAU,IAEhC,IAEX,CAEA,MAAMuX,GAAQ,eAMd,SAASC,GAAKC,EAAOC,GACnBD,EAAyB,iBAAVA,EAAqBA,EAAQA,EAAMvhC,OAClDwhC,EAAMA,GAAO,GACb,MAAMj7B,EAAM,CACVtC,QAAS,CAAClF,EAAMguB,KAEdA,GADAA,EAAMA,EAAI/sB,QAAU+sB,GACV9oB,QAAQo9B,GAAO,MACzBE,EAAQA,EAAMt9B,QAAQlF,EAAMguB,GACrBxmB,GAETk7B,SAAU,IACD,IAAInX,OAAOiX,EAAOC,IAG7B,OAAOj7B,CACT,CAEA,MAAMm7B,GAAsB,UACtBC,GAAuB,gCAO7B,SAASC,GAASxB,EAAUz5B,EAAMukB,GAChC,GAAIkV,EAAU,CACZ,IAAIyB,EACJ,IACEA,EAAOhvB,mBAAmB,GAASqY,IAChCjnB,QAAQy9B,GAAqB,IAC7BngC,aAGL,CAFE,MAAOQ,GACP,OAAO,IACT,CACA,GAAoC,IAAhC8/B,EAAKr9B,QAAQ,gBAAsD,IAA9Bq9B,EAAKr9B,QAAQ,cAAgD,IAA1Bq9B,EAAKr9B,QAAQ,SACvF,OAAO,IAEX,CACImC,IAASg7B,GAAqB1iC,KAAKisB,KACrCA,EAmBJ,SAAoBvkB,EAAMukB,GACnB4W,GAAS,IAAMn7B,KAIdo7B,GAAW9iC,KAAK0H,GAClBm7B,GAAS,IAAMn7B,GAAQA,EAAO,IAE9Bm7B,GAAS,IAAMn7B,GAAQq7B,GAAMr7B,EAAM,KAAK,IAI5C,MAAMs7B,GAAsC,KAD5Ct7B,EAAOm7B,GAAS,IAAMn7B,IACInC,QAAQ,KAElC,MAA6B,OAAzB0mB,EAAKpB,UAAU,EAAG,GAChBmY,EACK/W,EAEFvkB,EAAK1C,QAAQkE,GAAU,MAAQ+iB,EACV,MAAnBA,EAAKI,OAAO,GACjB2W,EACK/W,EAEFvkB,EAAK1C,QAAQi+B,GAAQ,MAAQhX,EAE7BvkB,EAAOukB,CAElB,CA9CW,CAAWvkB,EAAMukB,IAE1B,IACEA,EAAOiX,UAAUjX,GAAMjnB,QAAQ,OAAQ,IAGzC,CAFE,MAAOlC,GACP,OAAO,IACT,CACA,OAAOmpB,CACT,CAEA,MAAM4W,GAAW,CAAC,EACZC,GAAa,mBACb55B,GAAW,oBACX+5B,GAAS,4BAmCTE,GAAW,CAAEC,KAAM,WAAqB,GAE9C,SAASC,GAAM/7B,GACb,IACEuB,EACAT,EAFEzK,EAAI,EAIR,KAAOA,EAAIkS,UAAU7R,OAAQL,IAE3B,IAAKyK,KADLS,EAASgH,UAAUlS,GACPkL,EACNnJ,OAAOC,UAAU6S,eAAevT,KAAK4J,EAAQT,KAC/Cd,EAAIc,GAAOS,EAAOT,IAKxB,OAAOd,CACT,CAEA,SAASg8B,GAAWC,EAAUruB,GAG5B,MAaEsuB,EAbUD,EAASv+B,QAAQ,OAAO,CAACG,EAAOs+B,EAAQniB,KAChD,IAAIoiB,GAAU,EACZC,EAAOF,EACT,OAASE,GAAQ,GAAmB,OAAdriB,EAAIqiB,IAAgBD,GAAWA,EACrD,OAAIA,EAGK,IAGA,IACT,IAEUjgC,MAAM,OACpB,IAAI9F,EAAI,EAMR,GAHK6lC,EAAM,GAAGngC,QAAUmgC,EAAM/X,QAC1B+X,EAAMxlC,OAAS,IAAMwlC,EAAMA,EAAMxlC,OAAS,GAAGqF,QAAUmgC,EAAM75B,MAE7D65B,EAAMxlC,OAASkX,EACjBsuB,EAAM3tB,OAAOX,QAEb,KAAOsuB,EAAMxlC,OAASkX,GAAOsuB,EAAMvmC,KAAK,IAG1C,KAAOU,EAAI6lC,EAAMxlC,OAAQL,IAEvB6lC,EAAM7lC,GAAK6lC,EAAM7lC,GAAG0F,OAAO2B,QAAQ,QAAS,KAE9C,OAAOw+B,CACT,CAUA,SAAST,GAAMzhB,EAAKkB,EAAGohB,GACrB,MAAMnW,EAAInM,EAAItjB,OACd,GAAU,IAANyvB,EACF,MAAO,GAIT,IAAIoW,EAAU,EAGd,KAAOA,EAAUpW,GAAG,CAClB,MAAMqW,EAAWxiB,EAAI+K,OAAOoB,EAAIoW,EAAU,GAC1C,GAAIC,IAAathB,GAAMohB,EAEhB,IAAIE,IAAathB,IAAKohB,EAG3B,MAFAC,GAGF,MALEA,GAMJ,CAEA,OAAOviB,EAAI1hB,MAAM,EAAG6tB,EAAIoW,EAC1B,CAwBA,SAASE,GAAyBxB,GAC5BA,GAAOA,EAAIpB,WAAaoB,EAAIlB,QAC9Bt+B,QAAQ6F,KAAK,0MAEjB,CAOA,SAASo7B,GAAanN,EAAS3hB,GAC7B,GAAIA,EAAQ,EACV,MAAO,GAET,IAAIpP,EAAS,GACb,KAAOoP,EAAQ,GACD,EAARA,IACFpP,GAAU+wB,GAEZ3hB,IAAU,EACV2hB,GAAWA,EAEb,OAAO/wB,EAAS+wB,CAClB,CAEA,SAASoN,GAAWC,EAAKje,EAAM2I,EAAKuV,GAClC,MAAMlY,EAAOhG,EAAKgG,KACZ9pB,EAAQ8jB,EAAK9jB,MAAQ,GAAO8jB,EAAK9jB,OAAS,KAC1CuI,EAAOw5B,EAAI,GAAGl/B,QAAQ,cAAe,MAE3C,GAAyB,MAArBk/B,EAAI,GAAG7X,OAAO,GAAY,CAC5B8X,EAAMjhC,MAAMkhC,QAAS,EACrB,MAAMvgC,EAAQ,CACZwV,KAAM,OACNuV,MACA3C,OACA9pB,QACAuI,OACA8qB,OAAQ2O,EAAME,aAAa35B,EAAM,KAGnC,OADAy5B,EAAMjhC,MAAMkhC,QAAS,EACdvgC,CACT,CACA,MAAO,CACLwV,KAAM,QACNuV,MACA3C,OACA9pB,QACAuI,KAAM,GAAOA,GAEjB,CAiCA,MAAM45B,GACJzkC,YAAY8H,GACV5K,KAAK4K,QAAUA,GAAWknB,EAC5B,CAEA0V,MAAM/8B,GACJ,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMC,QAAQtB,KAAK57B,GAC1C,GAAI08B,GAAOA,EAAI,GAAGlmC,OAAS,EACzB,MAAO,CACLqb,KAAM,QACNuV,IAAKsV,EAAI,GAGf,CAEA/0B,KAAK3H,GACH,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMt1B,KAAKi0B,KAAK57B,GACvC,GAAI08B,EAAK,CACP,MAAMx5B,EAAOw5B,EAAI,GAAGl/B,QAAQ,YAAa,IACzC,MAAO,CACLqU,KAAM,OACNuV,IAAKsV,EAAI,GACTS,eAAgB,WAChBj6B,KAAO3N,KAAK4K,QAAQs5B,SAEhBv2B,EADAq4B,GAAMr4B,EAAM,MAGpB,CACF,CAEAk6B,OAAOp9B,GACL,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMG,OAAOxB,KAAK57B,GACzC,GAAI08B,EAAK,CACP,MAAMtV,EAAMsV,EAAI,GACVx5B,EAjEZ,SAAgCkkB,EAAKlkB,GACnC,MAAMm6B,EAAoBjW,EAAIzpB,MAAM,iBAEpC,GAA0B,OAAtB0/B,EACF,OAAOn6B,EAGT,MAAMo6B,EAAeD,EAAkB,GAEvC,OAAOn6B,EACJjH,MAAM,MACNnG,KAAIynC,IACH,MAAMC,EAAoBD,EAAK5/B,MAAM,QACrC,GAA0B,OAAtB6/B,EACF,OAAOD,EAGT,MAAOE,GAAgBD,EAEvB,OAAIC,EAAajnC,QAAU8mC,EAAa9mC,OAC/B+mC,EAAKnlC,MAAMklC,EAAa9mC,QAG1B+mC,CAAI,IAEZrnC,KAAK,KACV,CAuCmBwnC,CAAuBtW,EAAKsV,EAAI,IAAM,IAEnD,MAAO,CACL7qB,KAAM,OACNuV,MACAgO,KAAMsH,EAAI,GAAKA,EAAI,GAAG7gC,OAAS6gC,EAAI,GACnCx5B,OAEJ,CACF,CAEAygB,QAAQ3jB,GACN,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMtZ,QAAQiY,KAAK57B,GAC1C,GAAI08B,EAAK,CACP,IAAIx5B,EAAOw5B,EAAI,GAAG7gC,OAGlB,GAAI,KAAKrD,KAAK0K,GAAO,CACnB,MAAMy6B,EAAUpC,GAAMr4B,EAAM,KACxB3N,KAAK4K,QAAQs5B,SACfv2B,EAAOy6B,EAAQ9hC,OACL8hC,IAAW,KAAKnlC,KAAKmlC,KAE/Bz6B,EAAOy6B,EAAQ9hC,OAEnB,CAEA,MAAMQ,EAAQ,CACZwV,KAAM,UACNuV,IAAKsV,EAAI,GACTp4B,MAAOo4B,EAAI,GAAGlmC,OACd0M,OACA8qB,OAAQ,IAGV,OADAz4B,KAAKonC,MAAMiB,OAAOvhC,EAAM6G,KAAM7G,EAAM2xB,QAC7B3xB,CACT,CACF,CAEAwhC,GAAG79B,GACD,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMY,GAAGjC,KAAK57B,GACrC,GAAI08B,EACF,MAAO,CACL7qB,KAAM,KACNuV,IAAKsV,EAAI,GAGf,CAEAoB,WAAW99B,GACT,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMa,WAAWlC,KAAK57B,GAC7C,GAAI08B,EAAK,CACP,MAAMx5B,EAAOw5B,EAAI,GAAGl/B,QAAQ,eAAgB,IAE5C,MAAO,CACLqU,KAAM,aACNuV,IAAKsV,EAAI,GACT1O,OAAQz4B,KAAKonC,MAAMoB,YAAY76B,EAAM,IACrCA,OAEJ,CACF,CAEAtN,KAAKoK,GACH,IAAI08B,EAAMnnC,KAAKynC,MAAMC,MAAMrnC,KAAKgmC,KAAK57B,GACrC,GAAI08B,EAAK,CACP,IAAItV,EAAK4W,EAAQC,EAAWC,EAAQ/nC,EAAGgoC,EAAWC,EAChDC,EAAMC,EAAUC,EAASC,EAAcC,EAErCC,EAAOhC,EAAI,GAAG7gC,OAClB,MAAM8iC,EAAYD,EAAKloC,OAAS,EAE1BZ,EAAO,CACXic,KAAM,OACNuV,IAAK,GACLwX,QAASD,EACT70B,MAAO60B,GAAaD,EAAKtmC,MAAM,GAAI,GAAK,GACxCymC,OAAO,EACP93B,MAAO,IAGT23B,EAAOC,EAAY,aAAaD,EAAKtmC,OAAO,KAAO,KAAKsmC,IAEpDnpC,KAAK4K,QAAQs5B,WACfiF,EAAOC,EAAYD,EAAO,SAI5B,MAAMI,EAAY,IAAIjb,OAAO,WAAW6a,kCAGxC,KAAO1+B,IACLy+B,GAAW,EACL/B,EAAMoC,EAAUlD,KAAK57B,MAIvBzK,KAAKynC,MAAMC,MAAMY,GAAGrlC,KAAKwH,IANnB,CAkCV,GAxBAonB,EAAMsV,EAAI,GACV18B,EAAMA,EAAIqjB,UAAU+D,EAAI5wB,QAExB6nC,EAAO3B,EAAI,GAAGzgC,MAAM,KAAM,GAAG,GAC7BqiC,EAAWt+B,EAAI/D,MAAM,KAAM,GAAG,GAE1B1G,KAAK4K,QAAQs5B,UACfyE,EAAS,EACTM,EAAeH,EAAKU,aAEpBb,EAASxB,EAAI,GAAG9iC,OAAO,QACvBskC,EAASA,EAAS,EAAI,EAAIA,EAC1BM,EAAeH,EAAKjmC,MAAM8lC,GAC1BA,GAAUxB,EAAI,GAAGlmC,QAGnB2nC,GAAY,GAEPE,GAAQ,OAAO7lC,KAAK8lC,KACvBlX,GAAOkX,EAAW,KAClBt+B,EAAMA,EAAIqjB,UAAUib,EAAS9nC,OAAS,GACtCioC,GAAW,IAGRA,EAAU,CACb,MAAMO,EAAkB,IAAInb,OAAO,QAAQkD,KAAKqL,IAAI,EAAG8L,EAAS,qDAC1De,EAAU,IAAIpb,OAAO,QAAQkD,KAAKqL,IAAI,EAAG8L,EAAS,wDAGxD,KAAOl+B,IACLu+B,EAAUv+B,EAAI/D,MAAM,KAAM,GAAG,GAC7BoiC,EAAOE,EAGHhpC,KAAK4K,QAAQs5B,WACf4E,EAAOA,EAAK7gC,QAAQ,0BAA2B,QAI7CwhC,EAAgBxmC,KAAK6lC,MAKrBY,EAAQzmC,KAAKwH,IAfP,CAmBV,GAAIq+B,EAAKzkC,OAAO,SAAWskC,IAAWG,EAAKxiC,OACzC2iC,GAAgB,KAAOH,EAAKjmC,MAAM8lC,OAC7B,IAAKC,EAGV,MAFAK,GAAgB,KAAOH,CAGzB,CAEKF,GAAcE,EAAKxiC,SACtBsiC,GAAY,GAGd/W,GAAOmX,EAAU,KACjBv+B,EAAMA,EAAIqjB,UAAUkb,EAAQ/nC,OAAS,EACvC,CACF,CAEKZ,EAAKipC,QAEJT,EACFxoC,EAAKipC,OAAQ,EACJ,YAAYrmC,KAAK4uB,KAC1BgX,GAAoB,IAKpB7oC,KAAK4K,QAAQi5B,MACf4E,EAAS,cAAcpC,KAAK4C,GACxBR,IACFC,EAA0B,SAAdD,EAAO,GACnBQ,EAAeA,EAAahhC,QAAQ,eAAgB,MAIxD5H,EAAKmR,MAAMtR,KAAK,CACdoc,KAAM,YACNuV,MACA8X,OAAQlB,EACRmB,QAASlB,EACTY,OAAO,EACP37B,KAAMs7B,IAGR5oC,EAAKwxB,KAAOA,CACd,CAGAxxB,EAAKmR,MAAMnR,EAAKmR,MAAMvQ,OAAS,GAAG4wB,IAAMA,EAAIgY,YAC5CxpC,EAAKmR,MAAMnR,EAAKmR,MAAMvQ,OAAS,GAAG0M,KAAOs7B,EAAaY,YACtDxpC,EAAKwxB,IAAMxxB,EAAKwxB,IAAIgY,YAEpB,MAAMnZ,EAAIrwB,EAAKmR,MAAMvQ,OAGrB,IAAKL,EAAI,EAAGA,EAAI8vB,EAAG9vB,IAAK,CACtBZ,KAAKonC,MAAMjhC,MAAM2K,KAAM,EACvBzQ,EAAKmR,MAAM5Q,GAAG63B,OAASz4B,KAAKonC,MAAMoB,YAAYnoC,EAAKmR,MAAM5Q,GAAG+M,KAAM,IAClE,MAAMm8B,EAAUzpC,EAAKmR,MAAM5Q,GAAG63B,OAAOlsB,QAAO9F,GAAgB,UAAXA,EAAE6V,OAC7CytB,EAAwBD,EAAQE,OAAMvjC,IAC1C,MAAMwjC,EAAQxjC,EAAEorB,IAAInrB,MAAM,IAC1B,IAAIwjC,EAAa,EACjB,IAAK,MAAMC,KAAQF,EAIjB,GAHa,OAATE,IACFD,GAAc,GAEZA,EAAa,EACf,OAAO,EAIX,OAAO,CAAK,KAGT7pC,EAAKipC,OAASQ,EAAQ7oC,QAAU8oC,IAEnC1pC,EAAKipC,OAAQ,EACbjpC,EAAKmR,MAAM5Q,GAAG0oC,OAAQ,EAE1B,CAEA,OAAOjpC,CACT,CACF,CAEA2rB,KAAKvhB,GACH,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAM1b,KAAKqa,KAAK57B,GACvC,GAAI08B,EAAK,CACP,MAAMrgC,EAAQ,CACZwV,KAAM,OACNuV,IAAKsV,EAAI,GACTiD,KAAMpqC,KAAK4K,QAAQy5B,YACF,QAAX8C,EAAI,IAA2B,WAAXA,EAAI,IAA8B,UAAXA,EAAI,IACrDx5B,KAAMw5B,EAAI,IAQZ,OANInnC,KAAK4K,QAAQw5B,WACft9B,EAAMwV,KAAO,YACbxV,EAAM6G,KAAO3N,KAAK4K,QAAQy5B,UAAYrkC,KAAK4K,QAAQy5B,UAAU8C,EAAI,IAAM,GAAOA,EAAI,IAClFrgC,EAAM2xB,OAAS,GACfz4B,KAAKonC,MAAMiB,OAAOvhC,EAAM6G,KAAM7G,EAAM2xB,SAE/B3xB,CACT,CACF,CAEAgH,IAAIrD,GACF,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAM55B,IAAIu4B,KAAK57B,GACtC,GAAI08B,EAGF,OAFIA,EAAI,KAAIA,EAAI,GAAKA,EAAI,GAAGrZ,UAAU,EAAGqZ,EAAI,GAAGlmC,OAAS,IAElD,CACLqb,KAAM,MACN+tB,IAHUlD,EAAI,GAAG5hC,cAAc0C,QAAQ,OAAQ,KAI/C4pB,IAAKsV,EAAI,GACTjY,KAAMiY,EAAI,GACV/hC,MAAO+hC,EAAI,GAGjB,CAEAmD,MAAM7/B,GACJ,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAM4C,MAAMjE,KAAK57B,GACxC,GAAI08B,EAAK,CACP,MAAM3mC,EAAO,CACX8b,KAAM,QACNmC,OAAQ8nB,GAAWY,EAAI,IAAI5mC,KAAIklB,IAAc,CAAE9X,KAAM8X,MACrD8kB,MAAOpD,EAAI,GAAGl/B,QAAQ,aAAc,IAAIvB,MAAM,UAC9C8jC,KAAMrD,EAAI,IAAMA,EAAI,GAAG7gC,OAAS6gC,EAAI,GAAGl/B,QAAQ,YAAa,IAAIvB,MAAM,MAAQ,IAGhF,GAAIlG,EAAKie,OAAOxd,SAAWT,EAAK+pC,MAAMtpC,OAAQ,CAC5CT,EAAKqxB,IAAMsV,EAAI,GAEf,IACIvmC,EAAG6pC,EAAG5sB,EAAG6sB,EADTha,EAAIlwB,EAAK+pC,MAAMtpC,OAEnB,IAAKL,EAAI,EAAGA,EAAI8vB,EAAG9vB,IACb,YAAYqC,KAAKzC,EAAK+pC,MAAM3pC,IAC9BJ,EAAK+pC,MAAM3pC,GAAK,QACP,aAAaqC,KAAKzC,EAAK+pC,MAAM3pC,IACtCJ,EAAK+pC,MAAM3pC,GAAK,SACP,YAAYqC,KAAKzC,EAAK+pC,MAAM3pC,IACrCJ,EAAK+pC,MAAM3pC,GAAK,OAEhBJ,EAAK+pC,MAAM3pC,GAAK,KAKpB,IADA8vB,EAAIlwB,EAAKgqC,KAAKvpC,OACTL,EAAI,EAAGA,EAAI8vB,EAAG9vB,IACjBJ,EAAKgqC,KAAK5pC,GAAK2lC,GAAW/lC,EAAKgqC,KAAK5pC,GAAIJ,EAAKie,OAAOxd,QAAQV,KAAIklB,IAAc,CAAE9X,KAAM8X,MAOxF,IADAiL,EAAIlwB,EAAKie,OAAOxd,OACXwpC,EAAI,EAAGA,EAAI/Z,EAAG+Z,IACjBjqC,EAAKie,OAAOgsB,GAAGhS,OAAS,GACxBz4B,KAAKonC,MAAME,aAAa9mC,EAAKie,OAAOgsB,GAAG98B,KAAMnN,EAAKie,OAAOgsB,GAAGhS,QAK9D,IADA/H,EAAIlwB,EAAKgqC,KAAKvpC,OACTwpC,EAAI,EAAGA,EAAI/Z,EAAG+Z,IAEjB,IADAC,EAAMlqC,EAAKgqC,KAAKC,GACX5sB,EAAI,EAAGA,EAAI6sB,EAAIzpC,OAAQ4c,IAC1B6sB,EAAI7sB,GAAG4a,OAAS,GAChBz4B,KAAKonC,MAAME,aAAaoD,EAAI7sB,GAAGlQ,KAAM+8B,EAAI7sB,GAAG4a,QAIhD,OAAOj4B,CACT,CACF,CACF,CAEAmqC,SAASlgC,GACP,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMiD,SAAStE,KAAK57B,GAC3C,GAAI08B,EAAK,CACP,MAAMrgC,EAAQ,CACZwV,KAAM,UACNuV,IAAKsV,EAAI,GACTp4B,MAA4B,MAArBo4B,EAAI,GAAG7X,OAAO,GAAa,EAAI,EACtC3hB,KAAMw5B,EAAI,GACV1O,OAAQ,IAGV,OADAz4B,KAAKonC,MAAMiB,OAAOvhC,EAAM6G,KAAM7G,EAAM2xB,QAC7B3xB,CACT,CACF,CAEA8jC,UAAUngC,GACR,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAMkD,UAAUvE,KAAK57B,GAC5C,GAAI08B,EAAK,CACP,MAAMrgC,EAAQ,CACZwV,KAAM,YACNuV,IAAKsV,EAAI,GACTx5B,KAA2C,OAArCw5B,EAAI,GAAG7X,OAAO6X,EAAI,GAAGlmC,OAAS,GAChCkmC,EAAI,GAAGtkC,MAAM,GAAI,GACjBskC,EAAI,GACR1O,OAAQ,IAGV,OADAz4B,KAAKonC,MAAMiB,OAAOvhC,EAAM6G,KAAM7G,EAAM2xB,QAC7B3xB,CACT,CACF,CAEA6G,KAAKlD,GACH,MAAM08B,EAAMnnC,KAAKynC,MAAMC,MAAM/5B,KAAK04B,KAAK57B,GACvC,GAAI08B,EAAK,CACP,MAAMrgC,EAAQ,CACZwV,KAAM,OACNuV,IAAKsV,EAAI,GACTx5B,KAAMw5B,EAAI,GACV1O,OAAQ,IAGV,OADAz4B,KAAKonC,MAAMiB,OAAOvhC,EAAM6G,KAAM7G,EAAM2xB,QAC7B3xB,CACT,CACF,CAEA+jC,OAAOpgC,GACL,MAAM08B,EAAMnnC,KAAKynC,MAAMY,OAAOwC,OAAOxE,KAAK57B,GAC1C,GAAI08B,EACF,MAAO,CACL7qB,KAAM,SACNuV,IAAKsV,EAAI,GACTx5B,KAAM,GAAOw5B,EAAI,IAGvB,CAEAkD,IAAI5/B,GACF,MAAM08B,EAAMnnC,KAAKynC,MAAMY,OAAOgC,IAAIhE,KAAK57B,GACvC,GAAI08B,EAYF,OAXKnnC,KAAKonC,MAAMjhC,MAAMkhC,QAAU,QAAQpkC,KAAKkkC,EAAI,IAC/CnnC,KAAKonC,MAAMjhC,MAAMkhC,QAAS,EACjBrnC,KAAKonC,MAAMjhC,MAAMkhC,QAAU,UAAUpkC,KAAKkkC,EAAI,MACvDnnC,KAAKonC,MAAMjhC,MAAMkhC,QAAS,IAEvBrnC,KAAKonC,MAAMjhC,MAAM2kC,YAAc,iCAAiC7nC,KAAKkkC,EAAI,IAC5EnnC,KAAKonC,MAAMjhC,MAAM2kC,YAAa,EACrB9qC,KAAKonC,MAAMjhC,MAAM2kC,YAAc,mCAAmC7nC,KAAKkkC,EAAI,MACpFnnC,KAAKonC,MAAMjhC,MAAM2kC,YAAa,GAGzB,CACLxuB,KAAMtc,KAAK4K,QAAQw5B,SACf,OACA,OACJvS,IAAKsV,EAAI,GACTE,OAAQrnC,KAAKonC,MAAMjhC,MAAMkhC,OACzByD,WAAY9qC,KAAKonC,MAAMjhC,MAAM2kC,WAC7Bn9B,KAAM3N,KAAK4K,QAAQw5B,SACdpkC,KAAK4K,QAAQy5B,UACZrkC,KAAK4K,QAAQy5B,UAAU8C,EAAI,IAC3B,GAAOA,EAAI,IACbA,EAAI,GAGd,CAEAje,KAAKze,GACH,MAAM08B,EAAMnnC,KAAKynC,MAAMY,OAAOnf,KAAKmd,KAAK57B,GACxC,GAAI08B,EAAK,CACP,MAAM4D,EAAa5D,EAAI,GAAG7gC,OAC1B,IAAKtG,KAAK4K,QAAQs5B,UAAY,KAAKjhC,KAAK8nC,GAAa,CAEnD,IAAM,KAAK9nC,KAAK8nC,GACd,OAIF,MAAMC,EAAahF,GAAM+E,EAAWloC,MAAM,GAAI,GAAI,MAClD,IAAKkoC,EAAW9pC,OAAS+pC,EAAW/pC,QAAU,GAAM,EAClD,MAEJ,KAAO,CAEL,MAAMgqC,EAxjBd,SAA4B1mB,EAAK3U,GAC/B,IAA2B,IAAvB2U,EAAI/b,QAAQoH,EAAE,IAChB,OAAQ,EAEV,MAAM8gB,EAAInM,EAAItjB,OACd,IAAIywB,EAAQ,EACV9wB,EAAI,EACN,KAAOA,EAAI8vB,EAAG9vB,IACZ,GAAe,OAAX2jB,EAAI3jB,GACNA,SACK,GAAI2jB,EAAI3jB,KAAOgP,EAAE,GACtB8hB,SACK,GAAInN,EAAI3jB,KAAOgP,EAAE,KACtB8hB,IACIA,EAAQ,GACV,OAAO9wB,EAIb,OAAQ,CACV,CAoiB+BsqC,CAAmB/D,EAAI,GAAI,MAClD,GAAI8D,GAAkB,EAAG,CACvB,MACME,GADgC,IAAxBhE,EAAI,GAAG3+B,QAAQ,KAAa,EAAI,GACtB2+B,EAAI,GAAGlmC,OAASgqC,EACxC9D,EAAI,GAAKA,EAAI,GAAGrZ,UAAU,EAAGmd,GAC7B9D,EAAI,GAAKA,EAAI,GAAGrZ,UAAU,EAAGqd,GAAS7kC,OACtC6gC,EAAI,GAAK,EACX,CACF,CACA,IAAIjY,EAAOiY,EAAI,GACX/hC,EAAQ,GACZ,GAAIpF,KAAK4K,QAAQs5B,SAAU,CAEzB,MAAMhb,EAAO,gCAAgCmd,KAAKnX,GAE9ChG,IACFgG,EAAOhG,EAAK,GACZ9jB,EAAQ8jB,EAAK,GAEjB,MACE9jB,EAAQ+hC,EAAI,GAAKA,EAAI,GAAGtkC,MAAM,GAAI,GAAK,GAYzC,OATAqsB,EAAOA,EAAK5oB,OACR,KAAKrD,KAAKisB,KAGVA,EAFElvB,KAAK4K,QAAQs5B,WAAc,KAAKjhC,KAAK8nC,GAEhC7b,EAAKrsB,MAAM,GAEXqsB,EAAKrsB,MAAM,GAAI,IAGnBqkC,GAAWC,EAAK,CACrBjY,KAAMA,EAAOA,EAAKjnB,QAAQjI,KAAKynC,MAAMY,OAAO+C,SAAU,MAAQlc,EAC9D9pB,MAAOA,EAAQA,EAAM6C,QAAQjI,KAAKynC,MAAMY,OAAO+C,SAAU,MAAQhmC,GAChE+hC,EAAI,GAAInnC,KAAKonC,MAClB,CACF,CAEAiE,QAAQ5gC,EAAKoZ,GACX,IAAIsjB,EACJ,IAAKA,EAAMnnC,KAAKynC,MAAMY,OAAOgD,QAAQhF,KAAK57B,MAClC08B,EAAMnnC,KAAKynC,MAAMY,OAAOiD,OAAOjF,KAAK57B,IAAO,CACjD,IAAIye,GAAQie,EAAI,IAAMA,EAAI,IAAIl/B,QAAQ,OAAQ,KAE9C,GADAihB,EAAOrF,EAAMqF,EAAK3jB,gBACb2jB,IAASA,EAAKgG,KAAM,CACvB,MAAMvhB,EAAOw5B,EAAI,GAAG7X,OAAO,GAC3B,MAAO,CACLhT,KAAM,OACNuV,IAAKlkB,EACLA,OAEJ,CACA,OAAOu5B,GAAWC,EAAKje,EAAMie,EAAI,GAAInnC,KAAKonC,MAC5C,CACF,CAEAmE,SAAS9gC,EAAK+gC,EAAWC,EAAW,IAClC,IAAIrjC,EAAQpI,KAAKynC,MAAMY,OAAOkD,SAASG,OAAOrF,KAAK57B,GACnD,IAAKrC,EAAO,OAGZ,GAAIA,EAAM,IAAMqjC,EAASrjC,MAAM,iBAAkB,OAEjD,MAAMujC,EAAWvjC,EAAM,IAAMA,EAAM,IAAM,GAEzC,IAAKujC,GAAaA,IAA0B,KAAbF,GAAmBzrC,KAAKynC,MAAMY,OAAOuD,YAAYvF,KAAKoF,IAAa,CAChG,MAAMI,EAAUzjC,EAAM,GAAGnH,OAAS,EAClC,IAAI6qC,EAAQC,EAASC,EAAaH,EAASI,EAAgB,EAE3D,MAAMC,EAAyB,MAAhB9jC,EAAM,GAAG,GAAapI,KAAKynC,MAAMY,OAAOkD,SAASY,UAAYnsC,KAAKynC,MAAMY,OAAOkD,SAASa,UAMvG,IALAF,EAAOG,UAAY,EAGnBb,EAAYA,EAAU3oC,OAAO,EAAI4H,EAAIxJ,OAAS4qC,GAEH,OAAnCzjC,EAAQ8jC,EAAO7F,KAAKmF,KAAqB,CAG/C,GAFAM,EAAS1jC,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAEtE0jC,EAAQ,SAIb,GAFAC,EAAUD,EAAO7qC,OAEbmH,EAAM,IAAMA,EAAM,GAAI,CACxB4jC,GAAcD,EACd,QACF,CAAO,IAAI3jC,EAAM,IAAMA,EAAM,KACvByjC,EAAU,MAAQA,EAAUE,GAAW,GAAI,CAC7CE,GAAiBF,EACjB,QACF,CAKF,GAFAC,GAAcD,EAEVC,EAAa,EAAG,SAMpB,GAHAD,EAAUva,KAAKqL,IAAIkP,EAASA,EAAUC,EAAaC,GAG/Cza,KAAKqL,IAAIgP,EAASE,GAAW,EAAG,CAClC,MAAMp+B,EAAOlD,EAAI5H,MAAM,EAAGgpC,EAAUzjC,EAAMxD,MAAQmnC,GAClD,MAAO,CACLzvB,KAAM,KACNuV,IAAKpnB,EAAI5H,MAAM,EAAGgpC,EAAUzjC,EAAMxD,MAAQmnC,EAAU,GACpDp+B,OACA8qB,OAAQz4B,KAAKonC,MAAME,aAAa35B,EAAM,IAE1C,CAGA,MAAMA,EAAOlD,EAAI5H,MAAM,EAAGgpC,EAAUzjC,EAAMxD,MAAQmnC,EAAU,GAC5D,MAAO,CACLzvB,KAAM,SACNuV,IAAKpnB,EAAI5H,MAAM,EAAGgpC,EAAUzjC,EAAMxD,MAAQmnC,EAAU,GACpDp+B,OACA8qB,OAAQz4B,KAAKonC,MAAME,aAAa35B,EAAM,IAE1C,CACF,CACF,CAEA2+B,SAAS7hC,GACP,MAAM08B,EAAMnnC,KAAKynC,MAAMY,OAAOj2B,KAAKi0B,KAAK57B,GACxC,GAAI08B,EAAK,CACP,IAAIx5B,EAAOw5B,EAAI,GAAGl/B,QAAQ,MAAO,KACjC,MAAMskC,EAAmB,OAAOtpC,KAAK0K,GAC/B6+B,EAA0B,KAAKvpC,KAAK0K,IAAS,KAAK1K,KAAK0K,GAK7D,OAJI4+B,GAAoBC,IACtB7+B,EAAOA,EAAKmgB,UAAU,EAAGngB,EAAK1M,OAAS,IAEzC0M,EAAO,GAAOA,GAAM,GACb,CACL2O,KAAM,WACNuV,IAAKsV,EAAI,GACTx5B,OAEJ,CACF,CAEA6gB,GAAG/jB,GACD,MAAM08B,EAAMnnC,KAAKynC,MAAMY,OAAO7Z,GAAG6X,KAAK57B,GACtC,GAAI08B,EACF,MAAO,CACL7qB,KAAM,KACNuV,IAAKsV,EAAI,GAGf,CAEAsF,IAAIhiC,GACF,MAAM08B,EAAMnnC,KAAKynC,MAAMY,OAAOoE,IAAIpG,KAAK57B,GACvC,GAAI08B,EACF,MAAO,CACL7qB,KAAM,MACNuV,IAAKsV,EAAI,GACTx5B,KAAMw5B,EAAI,GACV1O,OAAQz4B,KAAKonC,MAAME,aAAaH,EAAI,GAAI,IAG9C,CAEAuF,SAASjiC,EAAKw5B,GACZ,MAAMkD,EAAMnnC,KAAKynC,MAAMY,OAAOqE,SAASrG,KAAK57B,GAC5C,GAAI08B,EAAK,CACP,IAAIx5B,EAAMuhB,EASV,MARe,MAAXiY,EAAI,IACNx5B,EAAO,GAAO3N,KAAK4K,QAAQq5B,OAASA,EAAOkD,EAAI,IAAMA,EAAI,IACzDjY,EAAO,UAAYvhB,IAEnBA,EAAO,GAAOw5B,EAAI,IAClBjY,EAAOvhB,GAGF,CACL2O,KAAM,OACNuV,IAAKsV,EAAI,GACTx5B,OACAuhB,OACAuJ,OAAQ,CACN,CACEnc,KAAM,OACNuV,IAAKlkB,EACLA,SAIR,CACF,CAEA9D,IAAIY,EAAKw5B,GACP,IAAIkD,EACJ,GAAIA,EAAMnnC,KAAKynC,MAAMY,OAAOx+B,IAAIw8B,KAAK57B,GAAM,CACzC,IAAIkD,EAAMuhB,EACV,GAAe,MAAXiY,EAAI,GACNx5B,EAAO,GAAO3N,KAAK4K,QAAQq5B,OAASA,EAAOkD,EAAI,IAAMA,EAAI,IACzDjY,EAAO,UAAYvhB,MACd,CAEL,IAAIg/B,EACJ,GACEA,EAAcxF,EAAI,GAClBA,EAAI,GAAKnnC,KAAKynC,MAAMY,OAAOuE,WAAWvG,KAAKc,EAAI,IAAI,SAC5CwF,IAAgBxF,EAAI,IAC7Bx5B,EAAO,GAAOw5B,EAAI,IAEhBjY,EADa,SAAXiY,EAAI,GACC,UAAYx5B,EAEZA,CAEX,CACA,MAAO,CACL2O,KAAM,OACNuV,IAAKsV,EAAI,GACTx5B,OACAuhB,OACAuJ,OAAQ,CACN,CACEnc,KAAM,OACNuV,IAAKlkB,EACLA,SAIR,CACF,CAEAk/B,WAAWpiC,EAAK+5B,GACd,MAAM2C,EAAMnnC,KAAKynC,MAAMY,OAAO16B,KAAK04B,KAAK57B,GACxC,GAAI08B,EAAK,CACP,IAAIx5B,EAMJ,OAJEA,EADE3N,KAAKonC,MAAMjhC,MAAM2kC,WACZ9qC,KAAK4K,QAAQw5B,SAAYpkC,KAAK4K,QAAQy5B,UAAYrkC,KAAK4K,QAAQy5B,UAAU8C,EAAI,IAAM,GAAOA,EAAI,IAAOA,EAAI,GAEzG,GAAOnnC,KAAK4K,QAAQ45B,YAAcA,EAAY2C,EAAI,IAAMA,EAAI,IAE9D,CACL7qB,KAAM,OACNuV,IAAKsV,EAAI,GACTx5B,OAEJ,CACF,EAMF,MAAM+5B,GAAQ,CACZC,QAAS,mBACTv1B,KAAM,uCACNy1B,OAAQ,4FACRS,GAAI,qEACJla,QAAS,uCACTma,WAAY,0CACZloC,KAAM,uCACN2rB,KAAM,mdAUNle,IAAK,2FACLw8B,MAAOlE,GACPuE,SAAU,sCAGVmC,WAAY,uFACZn/B,KAAM,UAGR+5B,OAAe,8BACfA,OAAe,gEACfA,GAAM55B,IAAMw3B,GAAKoC,GAAM55B,KACpB7F,QAAQ,QAASy/B,GAAMqF,QACvB9kC,QAAQ,QAASy/B,GAAMsF,QACvBvH,WAEHiC,GAAMuF,OAAS,wBACfvF,GAAMwF,cAAgB5H,GAAK,iBACxBr9B,QAAQ,OAAQy/B,GAAMuF,QACtBxH,WAEHiC,GAAMrnC,KAAOilC,GAAKoC,GAAMrnC,MACrB4H,QAAQ,QAASy/B,GAAMuF,QACvBhlC,QAAQ,KAAM,mEACdA,QAAQ,MAAO,UAAYy/B,GAAM55B,IAAI9J,OAAS,KAC9CyhC,WAEHiC,GAAMyF,KAAO,gWAMbzF,GAAM0F,SAAW,+BACjB1F,GAAM1b,KAAOsZ,GAAKoC,GAAM1b,KAAM,KAC3B/jB,QAAQ,UAAWy/B,GAAM0F,UACzBnlC,QAAQ,MAAOy/B,GAAMyF,MACrBllC,QAAQ,YAAa,4EACrBw9B,WAEHiC,GAAMkD,UAAYtF,GAAKoC,GAAMoF,YAC1B7kC,QAAQ,KAAMy/B,GAAMY,IACpBrgC,QAAQ,UAAW,iBACnBA,QAAQ,YAAa,IACrBA,QAAQ,SAAU,IAClBA,QAAQ,aAAc,WACtBA,QAAQ,SAAU,kDAClBA,QAAQ,OAAQ,0BAChBA,QAAQ,OAAQ,+DAChBA,QAAQ,MAAOy/B,GAAMyF,MACrB1H,WAEHiC,GAAMa,WAAajD,GAAKoC,GAAMa,YAC3BtgC,QAAQ,YAAay/B,GAAMkD,WAC3BnF,WAMHiC,GAAMlgC,OAAS8+B,GAAM,CAAC,EAAGoB,IAMzBA,GAAM7D,IAAMyC,GAAM,CAAC,EAAGoB,GAAMlgC,OAAQ,CAClC8iC,MAAO,qKAKT5C,GAAM7D,IAAIyG,MAAQhF,GAAKoC,GAAM7D,IAAIyG,OAC9BriC,QAAQ,KAAMy/B,GAAMY,IACpBrgC,QAAQ,UAAW,iBACnBA,QAAQ,aAAc,WACtBA,QAAQ,OAAQ,cAChBA,QAAQ,SAAU,kDAClBA,QAAQ,OAAQ,0BAChBA,QAAQ,OAAQ,+DAChBA,QAAQ,MAAOy/B,GAAMyF,MACrB1H,WAEHiC,GAAM7D,IAAI+G,UAAYtF,GAAKoC,GAAMoF,YAC9B7kC,QAAQ,KAAMy/B,GAAMY,IACpBrgC,QAAQ,UAAW,iBACnBA,QAAQ,YAAa,IACrBA,QAAQ,QAASy/B,GAAM7D,IAAIyG,OAC3BriC,QAAQ,aAAc,WACtBA,QAAQ,SAAU,kDAClBA,QAAQ,OAAQ,0BAChBA,QAAQ,OAAQ,+DAChBA,QAAQ,MAAOy/B,GAAMyF,MACrB1H,WAKHiC,GAAMxD,SAAWoC,GAAM,CAAC,EAAGoB,GAAMlgC,OAAQ,CACvCwkB,KAAMsZ,GACJ,8IAGCr9B,QAAQ,UAAWy/B,GAAM0F,UACzBnlC,QAAQ,OAAQ,qKAIhBw9B,WACH33B,IAAK,oEACLsgB,QAAS,yBACTyZ,OAAQzB,GACRwE,UAAWtF,GAAKoC,GAAMlgC,OAAOslC,YAC1B7kC,QAAQ,KAAMy/B,GAAMY,IACpBrgC,QAAQ,UAAW,mBACnBA,QAAQ,WAAYy/B,GAAMiD,UAC1B1iC,QAAQ,aAAc,WACtBA,QAAQ,UAAW,IACnBA,QAAQ,QAAS,IACjBA,QAAQ,QAAS,IACjBw9B,aAML,MAAM4C,GAAS,CACbwC,OAAQ,8CACR6B,SAAU,sCACV7iC,IAAKu8B,GACLiE,IAAK,2JAMLnhB,KAAM,gDACNmiB,QAAS,0BACTC,OAAQ,wBACR+B,cAAe,wBACf9B,SAAU,CACRG,OAAQ,2DAGRS,UAAW,iOACXC,UAAW,gMAEbh6B,KAAM,sCACNoc,GAAI,wBACJie,IAAKrG,GACLz4B,KAAM,8EACNi+B,YAAa,sBAiIf,SAASpH,GAAY72B,GACnB,OAAOA,EAEJ1F,QAAQ,OAAQ,KAEhBA,QAAQ,MAAO,KAEfA,QAAQ,0BAA2B,OAEnCA,QAAQ,KAAM,KAEdA,QAAQ,+BAAgC,OAExCA,QAAQ,KAAM,KAEdA,QAAQ,SAAU,IACvB,CAMA,SAASg8B,GAAOt2B,GACd,IACE/M,EACAskC,EAFEnxB,EAAM,GAIV,MAAM2c,EAAI/iB,EAAK1M,OACf,IAAKL,EAAI,EAAGA,EAAI8vB,EAAG9vB,IACjBskC,EAAKv3B,EAAKpE,WAAW3I,GACjB4wB,KAAK8b,SAAW,KAClBpI,EAAK,IAAMA,EAAG5kC,SAAS,KAEzByT,GAAO,KAAOmxB,EAAK,IAGrB,OAAOnxB,CACT,CAjKAs0B,GAAOkF,aAAe,uCACtBlF,GAAOuD,YAActG,GAAK+C,GAAOuD,aAAa3jC,QAAQ,eAAgBogC,GAAOkF,cAAc9H,WAG3F4C,GAAOmF,UAAY,4CACnBnF,GAAOoF,YAAc,YAErBpF,GAAO+E,SAAW9H,GAAKoC,GAAM0F,UAAUnlC,QAAQ,eAAa,UAAOw9B,WAEnE4C,GAAOkD,SAASG,OAASpG,GAAK+C,GAAOkD,SAASG,QAC3CzjC,QAAQ,SAAUogC,GAAOkF,cACzB9H,WAEH4C,GAAOkD,SAASY,UAAY7G,GAAK+C,GAAOkD,SAASY,UAAW,KACzDlkC,QAAQ,SAAUogC,GAAOkF,cACzB9H,WAEH4C,GAAOkD,SAASa,UAAY9G,GAAK+C,GAAOkD,SAASa,UAAW,KACzDnkC,QAAQ,SAAUogC,GAAOkF,cACzB9H,WAEH4C,GAAO+C,SAAW,8CAElB/C,GAAOqF,QAAU,+BACjBrF,GAAOsF,OAAS,+IAChBtF,GAAOqE,SAAWpH,GAAK+C,GAAOqE,UAC3BzkC,QAAQ,SAAUogC,GAAOqF,SACzBzlC,QAAQ,QAASogC,GAAOsF,QACxBlI,WAEH4C,GAAOuF,WAAa,8EAEpBvF,GAAOgC,IAAM/E,GAAK+C,GAAOgC,KACtBpiC,QAAQ,UAAWogC,GAAO+E,UAC1BnlC,QAAQ,YAAaogC,GAAOuF,YAC5BnI,WAEH4C,GAAO0E,OAAS,sDAChB1E,GAAOwF,MAAQ,uCACfxF,GAAO2E,OAAS,8DAEhB3E,GAAOnf,KAAOoc,GAAK+C,GAAOnf,MACvBjhB,QAAQ,QAASogC,GAAO0E,QACxB9kC,QAAQ,OAAQogC,GAAOwF,OACvB5lC,QAAQ,QAASogC,GAAO2E,QACxBvH,WAEH4C,GAAOgD,QAAU/F,GAAK+C,GAAOgD,SAC1BpjC,QAAQ,QAASogC,GAAO0E,QACxB9kC,QAAQ,MAAOy/B,GAAMqF,QACrBtH,WAEH4C,GAAOiD,OAAShG,GAAK+C,GAAOiD,QACzBrjC,QAAQ,MAAOy/B,GAAMqF,QACrBtH,WAEH4C,GAAOgF,cAAgB/H,GAAK+C,GAAOgF,cAAe,KAC/CplC,QAAQ,UAAWogC,GAAOgD,SAC1BpjC,QAAQ,SAAUogC,GAAOiD,QACzB7F,WAMH4C,GAAO7gC,OAAS8+B,GAAM,CAAC,EAAG+B,IAM1BA,GAAOnE,SAAWoC,GAAM,CAAC,EAAG+B,GAAO7gC,OAAQ,CACzCsmC,OAAQ,CACNv5B,MAAO,WACPw5B,OAAQ,iEACRC,OAAQ,cACRC,OAAQ,YAEVC,GAAI,CACF35B,MAAO,QACPw5B,OAAQ,6DACRC,OAAQ,YACRC,OAAQ,WAEV/kB,KAAMoc,GAAK,2BACRr9B,QAAQ,QAASogC,GAAO0E,QACxBtH,WACH4F,QAAS/F,GAAK,iCACXr9B,QAAQ,QAASogC,GAAO0E,QACxBtH,aAOL4C,GAAOxE,IAAMyC,GAAM,CAAC,EAAG+B,GAAO7gC,OAAQ,CACpCqjC,OAAQvF,GAAK+C,GAAOwC,QAAQ5iC,QAAQ,KAAM,QAAQw9B,WAClD0I,gBAAiB,4EACjBtkC,IAAK,mEACL+iC,WAAY,yEACZH,IAAK,+CACL9+B,KAAM,+NAGR06B,GAAOxE,IAAIh6B,IAAMy7B,GAAK+C,GAAOxE,IAAIh6B,IAAK,KACnC5B,QAAQ,QAASogC,GAAOxE,IAAIsK,iBAC5B1I,WAKH4C,GAAO1E,OAAS2C,GAAM,CAAC,EAAG+B,GAAOxE,IAAK,CACpCrV,GAAI8W,GAAK+C,GAAO7Z,IAAIvmB,QAAQ,OAAQ,KAAKw9B,WACzC93B,KAAM23B,GAAK+C,GAAOxE,IAAIl2B,MACnB1F,QAAQ,OAAQ,iBAChBA,QAAQ,UAAW,KACnBw9B,aAiDL,MAAM2I,GACJtrC,YAAY8H,GACV5K,KAAKy4B,OAAS,GACdz4B,KAAKy4B,OAAO5U,MAAQlhB,OAAOoT,OAAO,MAClC/V,KAAK4K,QAAUA,GAAWknB,GAC1B9xB,KAAK4K,QAAQ65B,UAAYzkC,KAAK4K,QAAQ65B,WAAa,IAAI8C,GACvDvnC,KAAKykC,UAAYzkC,KAAK4K,QAAQ65B,UAC9BzkC,KAAKykC,UAAU75B,QAAU5K,KAAK4K,QAC9B5K,KAAKykC,UAAU2C,MAAQpnC,KACvBA,KAAKquC,YAAc,GACnBruC,KAAKmG,MAAQ,CACXkhC,QAAQ,EACRyD,YAAY,EACZh6B,KAAK,GAGP,MAAM22B,EAAQ,CACZC,MAAOA,GAAMlgC,OACb6gC,OAAQA,GAAO7gC,QAGbxH,KAAK4K,QAAQs5B,UACfuD,EAAMC,MAAQA,GAAMxD,SACpBuD,EAAMY,OAASA,GAAOnE,UACblkC,KAAK4K,QAAQi5B,MACtB4D,EAAMC,MAAQA,GAAM7D,IAChB7jC,KAAK4K,QAAQ+4B,OACf8D,EAAMY,OAASA,GAAO1E,OAEtB8D,EAAMY,OAASA,GAAOxE,KAG1B7jC,KAAKykC,UAAUgD,MAAQA,CACzB,CAKWA,mBACT,MAAO,CACLC,SACAW,UAEJ,CAKAiG,WAAW7jC,EAAKG,GAEd,OADc,IAAIwjC,GAAMxjC,GACX2jC,IAAI9jC,EACnB,CAKA6jC,iBAAiB7jC,EAAKG,GAEpB,OADc,IAAIwjC,GAAMxjC,GACX08B,aAAa78B,EAC5B,CAKA8jC,IAAI9jC,GAMF,IAAItI,EACJ,IANAsI,EAAMA,EACHxC,QAAQ,WAAY,MAEvBjI,KAAKwoC,YAAY/9B,EAAKzK,KAAKy4B,QAGpBt2B,EAAOnC,KAAKquC,YAAY3f,SAC7B1uB,KAAKsnC,aAAanlC,EAAKsI,IAAKtI,EAAKs2B,QAGnC,OAAOz4B,KAAKy4B,MACd,CAKA+P,YAAY/9B,EAAKguB,EAAS,IASxB,IAAI3xB,EAAO0nC,EAAWC,EAAQC,EAE9B,IATEjkC,EADEzK,KAAK4K,QAAQs5B,SACTz5B,EAAIxC,QAAQ,MAAO,QAAQA,QAAQ,SAAU,IAE7CwC,EAAIxC,QAAQ,gBAAgB,CAACq4B,EAAGqO,EAASC,IACtCD,EAAU,OAAOE,OAAOD,EAAK3tC,UAMjCwJ,GACL,KAAIzK,KAAK4K,QAAQg5B,YACZ5jC,KAAK4K,QAAQg5B,WAAW8D,OACxB1nC,KAAK4K,QAAQg5B,WAAW8D,MAAMoH,MAAMC,MACjCjoC,EAAQioC,EAAa7sC,KAAK,CAAEklC,MAAOpnC,MAAQyK,EAAKguB,MAClDhuB,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,IACL,MAQb,GAAIA,EAAQ9G,KAAKykC,UAAU+C,MAAM/8B,GAC/BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QACL,IAArB6F,EAAM+qB,IAAI5wB,QAAgBw3B,EAAOx3B,OAAS,EAG5Cw3B,EAAOA,EAAOx3B,OAAS,GAAG4wB,KAAO,KAEjC4G,EAAOv4B,KAAK4G,QAMhB,GAAIA,EAAQ9G,KAAKykC,UAAUryB,KAAK3H,GAC9BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9ButC,EAAY/V,EAAOA,EAAOx3B,OAAS,IAE/ButC,GAAiC,cAAnBA,EAAUlyB,MAA2C,SAAnBkyB,EAAUlyB,KAK5Dmc,EAAOv4B,KAAK4G,IAJZ0nC,EAAU3c,KAAO,KAAO/qB,EAAM+qB,IAC9B2c,EAAU7gC,MAAQ,KAAO7G,EAAM6G,KAC/B3N,KAAKquC,YAAYruC,KAAKquC,YAAYptC,OAAS,GAAGwJ,IAAM+jC,EAAU7gC,WAQlE,GAAI7G,EAAQ9G,KAAKykC,UAAUoD,OAAOp9B,GAChCA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAUrW,QAAQ3jB,GACjCA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAU6D,GAAG79B,GAC5BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAU8D,WAAW99B,GACpCA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAUpkC,KAAKoK,GAC9BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAUzY,KAAKvhB,GAC9BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAU32B,IAAIrD,GAC7BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9ButC,EAAY/V,EAAOA,EAAOx3B,OAAS,IAC/ButC,GAAiC,cAAnBA,EAAUlyB,MAA2C,SAAnBkyB,EAAUlyB,KAIlDtc,KAAKy4B,OAAO5U,MAAM/c,EAAMujC,OAClCrqC,KAAKy4B,OAAO5U,MAAM/c,EAAMujC,KAAO,CAC7Bnb,KAAMpoB,EAAMooB,KACZ9pB,MAAO0B,EAAM1B,SANfopC,EAAU3c,KAAO,KAAO/qB,EAAM+qB,IAC9B2c,EAAU7gC,MAAQ,KAAO7G,EAAM+qB,IAC/B7xB,KAAKquC,YAAYruC,KAAKquC,YAAYptC,OAAS,GAAGwJ,IAAM+jC,EAAU7gC,WAWlE,GAAI7G,EAAQ9G,KAAKykC,UAAU6F,MAAM7/B,GAC/BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAUkG,SAASlgC,GAClCA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,OAFd,CASA,GADA2nC,EAAShkC,EACLzK,KAAK4K,QAAQg5B,YAAc5jC,KAAK4K,QAAQg5B,WAAWoL,WAAY,CACjE,IAAIC,EAAava,IACjB,MAAMwa,EAAUzkC,EAAI5H,MAAM,GAC1B,IAAIssC,EACJnvC,KAAK4K,QAAQg5B,WAAWoL,WAAWroC,SAAQ,SAASyoC,GAClDD,EAAYC,EAAcltC,KAAK,CAAEklC,MAAOpnC,MAAQkvC,GACvB,iBAAdC,GAA0BA,GAAa,IAAKF,EAAazd,KAAKqL,IAAIoS,EAAYE,GAC3F,IACIF,EAAava,KAAYua,GAAc,IACzCR,EAAShkC,EAAIqjB,UAAU,EAAGmhB,EAAa,GAE3C,CACA,GAAIjvC,KAAKmG,MAAM2K,MAAQhK,EAAQ9G,KAAKykC,UAAUmG,UAAU6D,IACtDD,EAAY/V,EAAOA,EAAOx3B,OAAS,GAC/BytC,GAA2C,cAAnBF,EAAUlyB,MACpCkyB,EAAU3c,KAAO,KAAO/qB,EAAM+qB,IAC9B2c,EAAU7gC,MAAQ,KAAO7G,EAAM6G,KAC/B3N,KAAKquC,YAAYzhC,MACjB5M,KAAKquC,YAAYruC,KAAKquC,YAAYptC,OAAS,GAAGwJ,IAAM+jC,EAAU7gC,MAE9D8qB,EAAOv4B,KAAK4G,GAEd4nC,EAAwBD,EAAOxtC,SAAWwJ,EAAIxJ,OAC9CwJ,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,aAKhC,GAAI6F,EAAQ9G,KAAKykC,UAAU92B,KAAKlD,GAC9BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9ButC,EAAY/V,EAAOA,EAAOx3B,OAAS,GAC/ButC,GAAgC,SAAnBA,EAAUlyB,MACzBkyB,EAAU3c,KAAO,KAAO/qB,EAAM+qB,IAC9B2c,EAAU7gC,MAAQ,KAAO7G,EAAM6G,KAC/B3N,KAAKquC,YAAYzhC,MACjB5M,KAAKquC,YAAYruC,KAAKquC,YAAYptC,OAAS,GAAGwJ,IAAM+jC,EAAU7gC,MAE9D8qB,EAAOv4B,KAAK4G,QAKhB,GAAI2D,EAAK,CACP,MAAM4kC,EAAS,0BAA4B5kC,EAAIlB,WAAW,GAC1D,GAAIvJ,KAAK4K,QAAQ05B,OAAQ,CACvBt+B,QAAQC,MAAMopC,GACd,KACF,CACE,MAAM,IAAIvpC,MAAMupC,EAEpB,CAvDA,CA2DF,OADArvC,KAAKmG,MAAM2K,KAAM,EACV2nB,CACT,CAEA4P,OAAO59B,EAAKguB,GACVz4B,KAAKquC,YAAYnuC,KAAK,CAAEuK,MAAKguB,UAC/B,CAKA6O,aAAa78B,EAAKguB,EAAS,IACzB,IAAI3xB,EAAO0nC,EAAWC,EAIlBrmC,EACAknC,EAAc7D,EAFdD,EAAY/gC,EAKhB,GAAIzK,KAAKy4B,OAAO5U,MAAO,CACrB,MAAMA,EAAQlhB,OAAO8L,KAAKzO,KAAKy4B,OAAO5U,OACtC,GAAIA,EAAM5iB,OAAS,EACjB,KAA8E,OAAtEmH,EAAQpI,KAAKykC,UAAUgD,MAAMY,OAAOgF,cAAchH,KAAKmF,KACzD3nB,EAAMkX,SAAS3yB,EAAM,GAAGvF,MAAMuF,EAAM,GAAGqK,YAAY,KAAO,GAAI,MAChE+4B,EAAYA,EAAU3oC,MAAM,EAAGuF,EAAMxD,OAAS,IAAMqiC,GAAa,IAAK7+B,EAAM,GAAGnH,OAAS,GAAK,IAAMuqC,EAAU3oC,MAAM7C,KAAKykC,UAAUgD,MAAMY,OAAOgF,cAAchB,WAIrK,CAEA,KAA0E,OAAlEjkC,EAAQpI,KAAKykC,UAAUgD,MAAMY,OAAOmF,UAAUnH,KAAKmF,KACzDA,EAAYA,EAAU3oC,MAAM,EAAGuF,EAAMxD,OAAS,IAAMqiC,GAAa,IAAK7+B,EAAM,GAAGnH,OAAS,GAAK,IAAMuqC,EAAU3oC,MAAM7C,KAAKykC,UAAUgD,MAAMY,OAAOmF,UAAUnB,WAI3J,KAA4E,OAApEjkC,EAAQpI,KAAKykC,UAAUgD,MAAMY,OAAOoF,YAAYpH,KAAKmF,KAC3DA,EAAYA,EAAU3oC,MAAM,EAAGuF,EAAMxD,OAAS,KAAO4mC,EAAU3oC,MAAM7C,KAAKykC,UAAUgD,MAAMY,OAAOoF,YAAYpB,WAG/G,KAAO5hC,GAOL,GANK6kC,IACH7D,EAAW,IAEb6D,GAAe,IAGXtvC,KAAK4K,QAAQg5B,YACZ5jC,KAAK4K,QAAQg5B,WAAWyE,QACxBroC,KAAK4K,QAAQg5B,WAAWyE,OAAOyG,MAAMC,MAClCjoC,EAAQioC,EAAa7sC,KAAK,CAAEklC,MAAOpnC,MAAQyK,EAAKguB,MAClDhuB,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,IACL,MAQb,GAAIA,EAAQ9G,KAAKykC,UAAUoG,OAAOpgC,GAChCA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAU4F,IAAI5/B,GAC7BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9ButC,EAAY/V,EAAOA,EAAOx3B,OAAS,GAC/ButC,GAA4B,SAAf1nC,EAAMwV,MAAsC,SAAnBkyB,EAAUlyB,MAClDkyB,EAAU3c,KAAO/qB,EAAM+qB,IACvB2c,EAAU7gC,MAAQ7G,EAAM6G,MAExB8qB,EAAOv4B,KAAK4G,QAMhB,GAAIA,EAAQ9G,KAAKykC,UAAUvb,KAAKze,GAC9BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAU4G,QAAQ5gC,EAAKzK,KAAKy4B,OAAO5U,OAClDpZ,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9ButC,EAAY/V,EAAOA,EAAOx3B,OAAS,GAC/ButC,GAA4B,SAAf1nC,EAAMwV,MAAsC,SAAnBkyB,EAAUlyB,MAClDkyB,EAAU3c,KAAO/qB,EAAM+qB,IACvB2c,EAAU7gC,MAAQ7G,EAAM6G,MAExB8qB,EAAOv4B,KAAK4G,QAMhB,GAAIA,EAAQ9G,KAAKykC,UAAU8G,SAAS9gC,EAAK+gC,EAAWC,GAClDhhC,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAU6H,SAAS7hC,GAClCA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAUjW,GAAG/jB,GAC5BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAUgI,IAAIhiC,GAC7BA,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAIA,EAAQ9G,KAAKykC,UAAUiI,SAASjiC,EAAKw5B,IACvCx5B,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,QAKd,GAAK9G,KAAKmG,MAAMkhC,UAAWvgC,EAAQ9G,KAAKykC,UAAU56B,IAAIY,EAAKw5B,KAA3D,CASA,GADAwK,EAAShkC,EACLzK,KAAK4K,QAAQg5B,YAAc5jC,KAAK4K,QAAQg5B,WAAW2L,YAAa,CAClE,IAAIN,EAAava,IACjB,MAAMwa,EAAUzkC,EAAI5H,MAAM,GAC1B,IAAIssC,EACJnvC,KAAK4K,QAAQg5B,WAAW2L,YAAY5oC,SAAQ,SAASyoC,GACnDD,EAAYC,EAAcltC,KAAK,CAAEklC,MAAOpnC,MAAQkvC,GACvB,iBAAdC,GAA0BA,GAAa,IAAKF,EAAazd,KAAKqL,IAAIoS,EAAYE,GAC3F,IACIF,EAAava,KAAYua,GAAc,IACzCR,EAAShkC,EAAIqjB,UAAU,EAAGmhB,EAAa,GAE3C,CACA,GAAInoC,EAAQ9G,KAAKykC,UAAUoI,WAAW4B,EAAQjK,IAC5C/5B,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QACF,MAAxB6F,EAAM+qB,IAAIhvB,OAAO,KACnB4oC,EAAW3kC,EAAM+qB,IAAIhvB,OAAO,IAE9BysC,GAAe,EACfd,EAAY/V,EAAOA,EAAOx3B,OAAS,GAC/ButC,GAAgC,SAAnBA,EAAUlyB,MACzBkyB,EAAU3c,KAAO/qB,EAAM+qB,IACvB2c,EAAU7gC,MAAQ7G,EAAM6G,MAExB8qB,EAAOv4B,KAAK4G,QAKhB,GAAI2D,EAAK,CACP,MAAM4kC,EAAS,0BAA4B5kC,EAAIlB,WAAW,GAC1D,GAAIvJ,KAAK4K,QAAQ05B,OAAQ,CACvBt+B,QAAQC,MAAMopC,GACd,KACF,CACE,MAAM,IAAIvpC,MAAMupC,EAEpB,CAzCA,MAHE5kC,EAAMA,EAAIqjB,UAAUhnB,EAAM+qB,IAAI5wB,QAC9Bw3B,EAAOv4B,KAAK4G,GA8ChB,OAAO2xB,CACT,EAMF,MAAM+W,GACJ1sC,YAAY8H,GACV5K,KAAK4K,QAAUA,GAAWknB,EAC5B,CAEA1f,KAAKA,EAAMq9B,EAAY9I,GACrB,MAAM9G,GAAQ4P,GAAc,IAAIrnC,MAAM,OAAO,GAC7C,GAAIpI,KAAK4K,QAAQq1B,UAAW,CAC1B,MAAMlsB,EAAM/T,KAAK4K,QAAQq1B,UAAU7tB,EAAMytB,GAC9B,MAAP9rB,GAAeA,IAAQ3B,IACzBu0B,GAAU,EACVv0B,EAAO2B,EAEX,CAIA,OAFA3B,EAAOA,EAAKnK,QAAQ,MAAO,IAAM,KAE5B43B,EAME,qBACH7/B,KAAK4K,QAAQo5B,WACb,GAAOnE,GAAM,GACb,MACC8G,EAAUv0B,EAAO,GAAOA,GAAM,IAC/B,kBAVK,eACFu0B,EAAUv0B,EAAO,GAAOA,GAAM,IAC/B,iBASR,CAKAm2B,WAAWmH,GACT,MAAO,iBAAiBA,kBAC1B,CAEA1jB,KAAKA,GACH,OAAOA,CACT,CAQAoC,QAAQzgB,EAAM+jB,EAAOG,EAAK8d,GACxB,OAAI3vC,KAAK4K,QAAQk5B,UAER,KAAKpS,SADD1xB,KAAK4K,QAAQm5B,aAAe4L,EAAQC,KAAK/d,OACpBlkB,OAAU+jB,OAIrC,KAAKA,KAAS/jB,OAAU+jB,MACjC,CAEA4W,KACE,OAAOtoC,KAAK4K,QAAQ+5B,MAAQ,UAAY,QAC1C,CAEAtkC,KAAKuhB,EAAMynB,EAAS90B,GAClB,MAAM+H,EAAO+sB,EAAU,KAAO,KAE9B,MAAO,IAAM/sB,GADC+sB,GAAqB,IAAV90B,EAAgB,WAAaA,EAAQ,IAAO,IACtC,MAAQqN,EAAO,KAAOtF,EAAO,KAC9D,CAKAuzB,SAASliC,GACP,MAAO,OAAOA,UAChB,CAEAmiC,SAASlG,GACP,MAAO,WACFA,EAAU,cAAgB,IAC3B,+BACC5pC,KAAK4K,QAAQ+5B,MAAQ,KAAO,IAC7B,IACN,CAKAiG,UAAUj9B,GACR,MAAO,MAAMA,SACf,CAMA28B,MAAM7rB,EAAQmD,GAGZ,OAFIA,IAAMA,EAAO,UAAUA,aAEpB,qBAEHnD,EACA,aACAmD,EACA,YACN,CAKAmuB,SAAStvC,GACP,MAAO,SAASA,UAClB,CAEAuvC,UAAUvvC,EAASwvC,GACjB,MAAM3zB,EAAO2zB,EAAMxxB,OAAS,KAAO,KAInC,OAHYwxB,EAAM1F,MACd,IAAIjuB,YAAe2zB,EAAM1F,UACzB,IAAIjuB,MACK7b,EAAU,KAAK6b,MAC9B,CAMAwxB,OAAOngC,GACL,MAAO,WAAWA,YACpB,CAKAugC,GAAGvgC,GACD,MAAO,OAAOA,QAChB,CAKA2+B,SAAS3+B,GACP,MAAO,SAASA,UAClB,CAEA6gB,KACE,OAAOxuB,KAAK4K,QAAQ+5B,MAAQ,QAAU,MACxC,CAKA8H,IAAI9+B,GACF,MAAO,QAAQA,SACjB,CAOAub,KAAKgG,EAAM9pB,EAAOuI,GAEhB,GAAa,QADbuhB,EAAO0W,GAAS5lC,KAAK4K,QAAQw5B,SAAUpkC,KAAK4K,QAAQI,QAASkkB,IAE3D,OAAOvhB,EAET,IAAIoG,EAAM,YAAc,GAAOmb,GAAQ,IAKvC,OAJI9pB,IACF2O,GAAO,WAAa3O,EAAQ,KAE9B2O,GAAO,IAAMpG,EAAO,OACboG,CACT,CAOAm8B,MAAMhhB,EAAM9pB,EAAOuI,GAEjB,GAAa,QADbuhB,EAAO0W,GAAS5lC,KAAK4K,QAAQw5B,SAAUpkC,KAAK4K,QAAQI,QAASkkB,IAE3D,OAAOvhB,EAGT,IAAIoG,EAAM,aAAamb,WAAcvhB,KAKrC,OAJIvI,IACF2O,GAAO,WAAW3O,MAEpB2O,GAAO/T,KAAK4K,QAAQ+5B,MAAQ,KAAO,IAC5B5wB,CACT,CAEApG,KAAKA,GACH,OAAOA,CACT,EAOF,MAAMwiC,GAEJrC,OAAOngC,GACL,OAAOA,CACT,CAEAugC,GAAGvgC,GACD,OAAOA,CACT,CAEA2+B,SAAS3+B,GACP,OAAOA,CACT,CAEA8+B,IAAI9+B,GACF,OAAOA,CACT,CAEAqe,KAAKre,GACH,OAAOA,CACT,CAEAA,KAAKA,GACH,OAAOA,CACT,CAEAub,KAAKgG,EAAM9pB,EAAOuI,GAChB,MAAO,GAAKA,CACd,CAEAuiC,MAAMhhB,EAAM9pB,EAAOuI,GACjB,MAAO,GAAKA,CACd,CAEA6gB,KACE,MAAO,EACT,EAMF,MAAM4hB,GACJttC,cACE9C,KAAKkL,KAAO,CAAC,CACf,CAKAmlC,UAAUhuC,GACR,OAAOA,EACJkD,cACAe,OAEA2B,QAAQ,kBAAmB,IAE3BA,QAAQ,gEAAiE,IACzEA,QAAQ,MAAO,IACpB,CAOAqoC,gBAAgBC,EAAcC,GAC5B,IAAIZ,EAAOW,EACPE,EAAuB,EAC3B,GAAIzwC,KAAKkL,KAAKuK,eAAem6B,GAAO,CAClCa,EAAuBzwC,KAAKkL,KAAKqlC,GACjC,GACEE,IACAb,EAAOW,EAAe,IAAME,QACrBzwC,KAAKkL,KAAKuK,eAAem6B,GACpC,CAKA,OAJKY,IACHxwC,KAAKkL,KAAKqlC,GAAgBE,EAC1BzwC,KAAKkL,KAAK0kC,GAAQ,GAEbA,CACT,CAQAA,KAAKvtC,EAAOuI,EAAU,CAAC,GACrB,MAAMglC,EAAO5vC,KAAKqwC,UAAUhuC,GAC5B,OAAOrC,KAAKswC,gBAAgBV,EAAMhlC,EAAQ8lC,OAC5C,EAMF,MAAMC,GACJ7tC,YAAY8H,GACV5K,KAAK4K,QAAUA,GAAWknB,GAC1B9xB,KAAK4K,QAAQu5B,SAAWnkC,KAAK4K,QAAQu5B,UAAY,IAAIqL,GACrDxvC,KAAKmkC,SAAWnkC,KAAK4K,QAAQu5B,SAC7BnkC,KAAKmkC,SAASv5B,QAAU5K,KAAK4K,QAC7B5K,KAAK4wC,aAAe,IAAIT,GACxBnwC,KAAK2vC,QAAU,IAAIS,EACrB,CAKA9B,aAAa7V,EAAQ7tB,GAEnB,OADe,IAAI+lC,GAAO/lC,GACZK,MAAMwtB,EACtB,CAKA6V,mBAAmB7V,EAAQ7tB,GAEzB,OADe,IAAI+lC,GAAO/lC,GACZimC,YAAYpY,EAC5B,CAKAxtB,MAAMwtB,EAAQ3nB,GAAM,GAClB,IACElQ,EACA6pC,EACA5sB,EACAizB,EACAC,EACArG,EACAsG,EACAvyB,EACAmD,EACA9a,EACAuiC,EACA90B,EACA+0B,EACA2H,EACAzwC,EACAopC,EACAD,EACAmG,EACA36B,EAnBEpB,EAAM,GAqBV,MAAM2c,EAAI+H,EAAOx3B,OACjB,IAAKL,EAAI,EAAGA,EAAI8vB,EAAG9vB,IAIjB,GAHAkG,EAAQ2xB,EAAO73B,GAGXZ,KAAK4K,QAAQg5B,YAAc5jC,KAAK4K,QAAQg5B,WAAWsN,WAAalxC,KAAK4K,QAAQg5B,WAAWsN,UAAUpqC,EAAMwV,QAC1GnH,EAAMnV,KAAK4K,QAAQg5B,WAAWsN,UAAUpqC,EAAMwV,MAAMpa,KAAK,CAAE87B,OAAQh+B,MAAQ8G,IAC/D,IAARqO,IAAkB,CAAC,QAAS,KAAM,UAAW,OAAQ,QAAS,aAAc,OAAQ,OAAQ,YAAa,QAAQ4lB,SAASj0B,EAAMwV,OAClIvI,GAAOoB,GAAO,QAKlB,OAAQrO,EAAMwV,MACZ,IAAK,QACH,SAEF,IAAK,KACHvI,GAAO/T,KAAKmkC,SAASmE,KACrB,SAEF,IAAK,UACHv0B,GAAO/T,KAAKmkC,SAAS/V,QACnBpuB,KAAK6wC,YAAY/pC,EAAM2xB,QACvB3xB,EAAMiI,MACN,GAAS/O,KAAK6wC,YAAY/pC,EAAM2xB,OAAQz4B,KAAK4wC,eAC7C5wC,KAAK2vC,SACP,SAEF,IAAK,OACH57B,GAAO/T,KAAKmkC,SAAS/xB,KAAKtL,EAAM6G,KAC9B7G,EAAM+4B,KACN/4B,EAAM6/B,SACR,SAEF,IAAK,QAMH,IALAloB,EAAS,GAGTuyB,EAAO,GACPF,EAAKhqC,EAAM2X,OAAOxd,OACbwpC,EAAI,EAAGA,EAAIqG,EAAIrG,IAClBuG,GAAQhxC,KAAKmkC,SAAS6L,UACpBhwC,KAAK6wC,YAAY/pC,EAAM2X,OAAOgsB,GAAGhS,QACjC,CAAEha,QAAQ,EAAM8rB,MAAOzjC,EAAMyjC,MAAME,KAOvC,IAJAhsB,GAAUze,KAAKmkC,SAAS4L,SAASiB,GAEjCpvB,EAAO,GACPkvB,EAAKhqC,EAAM0jC,KAAKvpC,OACXwpC,EAAI,EAAGA,EAAIqG,EAAIrG,IAAK,CAKvB,IAJAC,EAAM5jC,EAAM0jC,KAAKC,GAEjBuG,EAAO,GACPD,EAAKrG,EAAIzpC,OACJ4c,EAAI,EAAGA,EAAIkzB,EAAIlzB,IAClBmzB,GAAQhxC,KAAKmkC,SAAS6L,UACpBhwC,KAAK6wC,YAAYnG,EAAI7sB,GAAG4a,QACxB,CAAEha,QAAQ,EAAO8rB,MAAOzjC,EAAMyjC,MAAM1sB,KAIxC+D,GAAQ5hB,KAAKmkC,SAAS4L,SAASiB,EACjC,CACAj9B,GAAO/T,KAAKmkC,SAASmG,MAAM7rB,EAAQmD,GACnC,SAEF,IAAK,aACHA,EAAO5hB,KAAKiL,MAAMnE,EAAM2xB,QACxB1kB,GAAO/T,KAAKmkC,SAASoE,WAAW3mB,GAChC,SAEF,IAAK,OAOH,IANAynB,EAAUviC,EAAMuiC,QAChB90B,EAAQzN,EAAMyN,MACd+0B,EAAQxiC,EAAMwiC,MACdwH,EAAKhqC,EAAM0K,MAAMvQ,OAEjB2gB,EAAO,GACF6oB,EAAI,EAAGA,EAAIqG,EAAIrG,IAClBjqC,EAAOsG,EAAM0K,MAAMi5B,GACnBb,EAAUppC,EAAKopC,QACfD,EAAOnpC,EAAKmpC,KAEZsH,EAAW,GACPzwC,EAAKmpC,OACPmG,EAAW9vC,KAAKmkC,SAAS2L,SAASlG,GAC9BN,EACE9oC,EAAKi4B,OAAOx3B,OAAS,GAA6B,cAAxBT,EAAKi4B,OAAO,GAAGnc,MAC3C9b,EAAKi4B,OAAO,GAAG9qB,KAAOmiC,EAAW,IAAMtvC,EAAKi4B,OAAO,GAAG9qB,KAClDnN,EAAKi4B,OAAO,GAAGA,QAAUj4B,EAAKi4B,OAAO,GAAGA,OAAOx3B,OAAS,GAAuC,SAAlCT,EAAKi4B,OAAO,GAAGA,OAAO,GAAGnc,OACxF9b,EAAKi4B,OAAO,GAAGA,OAAO,GAAG9qB,KAAOmiC,EAAW,IAAMtvC,EAAKi4B,OAAO,GAAGA,OAAO,GAAG9qB,OAG5EnN,EAAKi4B,OAAO0Y,QAAQ,CAClB70B,KAAM,OACN3O,KAAMmiC,IAIVmB,GAAYnB,GAIhBmB,GAAYjxC,KAAKiL,MAAMzK,EAAKi4B,OAAQ6Q,GACpC1nB,GAAQ5hB,KAAKmkC,SAAS0L,SAASoB,EAAUtH,EAAMC,GAGjD71B,GAAO/T,KAAKmkC,SAAS9jC,KAAKuhB,EAAMynB,EAAS90B,GACzC,SAEF,IAAK,OAEHR,GAAO/T,KAAKmkC,SAASnY,KAAKllB,EAAM6G,MAChC,SAEF,IAAK,YACHoG,GAAO/T,KAAKmkC,SAASyG,UAAU5qC,KAAK6wC,YAAY/pC,EAAM2xB,SACtD,SAEF,IAAK,OAEH,IADA7W,EAAO9a,EAAM2xB,OAASz4B,KAAK6wC,YAAY/pC,EAAM2xB,QAAU3xB,EAAM6G,KACtD/M,EAAI,EAAI8vB,GAA4B,SAAvB+H,EAAO73B,EAAI,GAAG0b,MAChCxV,EAAQ2xB,IAAS73B,GACjBghB,GAAQ,MAAQ9a,EAAM2xB,OAASz4B,KAAK6wC,YAAY/pC,EAAM2xB,QAAU3xB,EAAM6G,MAExEoG,GAAOjD,EAAM9Q,KAAKmkC,SAASyG,UAAUhpB,GAAQA,EAC7C,SAGF,QAAS,CACP,MAAMytB,EAAS,eAAiBvoC,EAAMwV,KAAO,wBAC7C,GAAItc,KAAK4K,QAAQ05B,OAEf,YADAt+B,QAAQC,MAAMopC,GAGd,MAAM,IAAIvpC,MAAMupC,EAEpB,EAIJ,OAAOt7B,CACT,CAKA88B,YAAYpY,EAAQ0L,GAClBA,EAAWA,GAAYnkC,KAAKmkC,SAC5B,IACEvjC,EACAkG,EACAqO,EAHEpB,EAAM,GAKV,MAAM2c,EAAI+H,EAAOx3B,OACjB,IAAKL,EAAI,EAAGA,EAAI8vB,EAAG9vB,IAIjB,GAHAkG,EAAQ2xB,EAAO73B,GAGXZ,KAAK4K,QAAQg5B,YAAc5jC,KAAK4K,QAAQg5B,WAAWsN,WAAalxC,KAAK4K,QAAQg5B,WAAWsN,UAAUpqC,EAAMwV,QAC1GnH,EAAMnV,KAAK4K,QAAQg5B,WAAWsN,UAAUpqC,EAAMwV,MAAMpa,KAAK,CAAE87B,OAAQh+B,MAAQ8G,IAC/D,IAARqO,IAAkB,CAAC,SAAU,OAAQ,OAAQ,QAAS,SAAU,KAAM,WAAY,KAAM,MAAO,QAAQ4lB,SAASj0B,EAAMwV,OACxHvI,GAAOoB,GAAO,QAKlB,OAAQrO,EAAMwV,MACZ,IAAK,SAoCL,IAAK,OACHvI,GAAOowB,EAASx2B,KAAK7G,EAAM6G,MAC3B,MAlCF,IAAK,OACHoG,GAAOowB,EAASnY,KAAKllB,EAAM6G,MAC3B,MAEF,IAAK,OACHoG,GAAOowB,EAASjb,KAAKpiB,EAAMooB,KAAMpoB,EAAM1B,MAAOpF,KAAK6wC,YAAY/pC,EAAM2xB,OAAQ0L,IAC7E,MAEF,IAAK,QACHpwB,GAAOowB,EAAS+L,MAAMppC,EAAMooB,KAAMpoB,EAAM1B,MAAO0B,EAAM6G,MACrD,MAEF,IAAK,SACHoG,GAAOowB,EAAS2J,OAAO9tC,KAAK6wC,YAAY/pC,EAAM2xB,OAAQ0L,IACtD,MAEF,IAAK,KACHpwB,GAAOowB,EAAS+J,GAAGluC,KAAK6wC,YAAY/pC,EAAM2xB,OAAQ0L,IAClD,MAEF,IAAK,WACHpwB,GAAOowB,EAASmI,SAASxlC,EAAM6G,MAC/B,MAEF,IAAK,KACHoG,GAAOowB,EAAS3V,KAChB,MAEF,IAAK,MACHza,GAAOowB,EAASsI,IAAIzsC,KAAK6wC,YAAY/pC,EAAM2xB,OAAQ0L,IACnD,MAMF,QAAS,CACP,MAAMkL,EAAS,eAAiBvoC,EAAMwV,KAAO,wBAC7C,GAAItc,KAAK4K,QAAQ05B,OAEf,YADAt+B,QAAQC,MAAMopC,GAGd,MAAM,IAAIvpC,MAAMupC,EAEpB,EAGJ,OAAOt7B,CACT,EAMF,SAASq9B,GAAO3mC,EAAK+6B,EAAK94B,GAExB,GAAI,MAAOjC,EACT,MAAM,IAAI3E,MAAM,kDAElB,GAAmB,iBAAR2E,EACT,MAAM,IAAI3E,MAAM,wCACZnD,OAAOC,UAAUtC,SAAS4B,KAAKuI,GAAO,qBAW5C,GARmB,mBAAR+6B,IACT94B,EAAW84B,EACXA,EAAM,MAIRwB,GADAxB,EAAMc,GAAM,CAAC,EAAG8K,GAAOtf,SAAU0T,GAAO,CAAC,IAGrC94B,EAAU,CACZ,MAAMuzB,EAAYuF,EAAIvF,UACtB,IAAIxH,EAEJ,IACEA,EAAS2V,GAAMG,IAAI9jC,EAAK+6B,EAG1B,CAFE,MAAOz/B,GACP,OAAO2G,EAAS3G,EAClB,CAEA,MAAM3D,EAAO,SAASE,GACpB,IAAIyR,EAEJ,IAAKzR,EACH,IACMkjC,EAAId,YACN0M,GAAO1M,WAAWjM,EAAQ+M,EAAId,YAEhC3wB,EAAM48B,GAAO1lC,MAAMwtB,EAAQ+M,EAG7B,CAFE,MAAOz/B,GACPzD,EAAMyD,CACR,CAKF,OAFAy/B,EAAIvF,UAAYA,EAET39B,EACHoK,EAASpK,GACToK,EAAS,KAAMqH,EACrB,EAEA,IAAKksB,GAAaA,EAAUh/B,OAAS,EACnC,OAAOmB,IAKT,UAFOojC,EAAIvF,WAENxH,EAAOx3B,OAAQ,OAAOmB,IAE3B,IAAIivC,EAAU,EA2Bd,OA1BAD,GAAO1M,WAAWjM,GAAQ,SAAS3xB,GACd,SAAfA,EAAMwV,OACR+0B,IACA/gC,YAAW,KACT2vB,EAAUn5B,EAAM6G,KAAM7G,EAAM+4B,MAAM,SAASv9B,EAAK8P,GAC9C,GAAI9P,EACF,OAAOF,EAAKE,GAEF,MAAR8P,GAAgBA,IAAStL,EAAM6G,OACjC7G,EAAM6G,KAAOyE,EACbtL,EAAM6/B,SAAU,GAGlB0K,IACgB,IAAZA,GACFjvC,GAEJ,GAAE,GACD,GAEP,SAEgB,IAAZivC,GACFjvC,IAIJ,CAEA,IACE,MAAMq2B,EAAS2V,GAAMG,IAAI9jC,EAAK+6B,GAI9B,OAHIA,EAAId,YACN0M,GAAO1M,WAAWjM,EAAQ+M,EAAId,YAEzBiM,GAAO1lC,MAAMwtB,EAAQ+M,EAS9B,CARE,MAAOz/B,GAEP,GADAA,EAAEG,SAAW,8DACTs/B,EAAIlB,OACN,MAAO,iCACH,GAAOv+B,EAAEG,QAAU,IAAI,GACvB,SAEN,MAAMH,CACR,CACF,CAMAqrC,GAAOxmC,QACPwmC,GAAOE,WAAa,SAAS9L,GAj+E7B,IAAwB+L,EAo+EtB,OAFAjL,GAAM8K,GAAOtf,SAAU0T,GAl+ED+L,EAm+EPH,GAAOtf,SAl+EtBA,GAAWyf,EAm+EJH,EACT,EAEAA,GAAOI,YAjgFP,WACE,MAAO,CACLxmC,QAAS,KACT24B,QAAQ,EACRC,WAAY,KACZC,KAAK,EACLC,WAAW,EACXC,aAAc,GACd9D,UAAW,KACX+D,WAAY,YACZC,QAAQ,EACRC,UAAU,EACVC,SAAU,KACVC,UAAU,EACVC,UAAW,KACXC,QAAQ,EACRC,YAAY,EACZC,aAAa,EACbC,UAAW,KACXC,WAAY,KACZC,OAAO,EAEX,EA6+EAyM,GAAOtf,SAAWA,GAMlBsf,GAAOK,IAAM,YAAYn7B,GACvB,MAAMo7B,EAAOpL,GAAM,CAAC,KAAMhwB,GACpBstB,EAAawN,GAAOtf,SAAS8R,YAAc,CAAEsN,UAAW,CAAC,EAAGS,YAAa,CAAC,GAChF,IAAIC,EAEJt7B,EAAK3P,SAASkrC,IAuDZ,GArDIA,EAAKjO,aACPgO,GAAgB,EAChBC,EAAKjO,WAAWj9B,SAAS2N,IACvB,IAAKA,EAAIvR,KACP,MAAM,IAAI+C,MAAM,2BAElB,GAAIwO,EAAI6vB,SAAU,CAChB,MAAM2N,EAAelO,EAAWsN,UAAYtN,EAAWsN,UAAU58B,EAAIvR,MAAQ,KAG3E6gC,EAAWsN,UAAU58B,EAAIvR,MAFvB+uC,EAE+B,YAAYx7B,GAC3C,IAAInB,EAAMb,EAAI6vB,SAAS5tB,MAAMvW,KAAMsW,GAInC,OAHY,IAARnB,IACFA,EAAM28B,EAAav7B,MAAMvW,KAAMsW,IAE1BnB,CACT,EAEiCb,EAAI6vB,QAEzC,CACA,GAAI7vB,EAAImwB,UAAW,CACjB,IAAKnwB,EAAIod,OAAwB,UAAdpd,EAAIod,OAAmC,WAAdpd,EAAIod,MAC9C,MAAM,IAAI5rB,MAAM,+CAEd89B,EAAWtvB,EAAIod,OACjBkS,EAAWtvB,EAAIod,OAAOyf,QAAQ78B,EAAImwB,WAElCb,EAAWtvB,EAAIod,OAAS,CAACpd,EAAImwB,WAE3BnwB,EAAIC,QACY,UAAdD,EAAIod,MACFkS,EAAWoL,WACbpL,EAAWoL,WAAW9uC,KAAKoU,EAAIC,OAE/BqvB,EAAWoL,WAAa,CAAC16B,EAAIC,OAER,WAAdD,EAAIod,QACTkS,EAAW2L,YACb3L,EAAW2L,YAAYrvC,KAAKoU,EAAIC,OAEhCqvB,EAAW2L,YAAc,CAACj7B,EAAIC,QAItC,CACID,EAAIq9B,cACN/N,EAAW+N,YAAYr9B,EAAIvR,MAAQuR,EAAIq9B,YACzC,KAKAE,EAAK1N,SAAU,CACjB,MAAMA,EAAWiN,GAAOtf,SAASqS,UAAY,IAAIqL,GACjD,IAAK,MAAM39B,KAAQggC,EAAK1N,SAAU,CAChC,MAAM2N,EAAe3N,EAAStyB,GAE9BsyB,EAAStyB,GAAQ,IAAIyE,KACnB,IAAInB,EAAM08B,EAAK1N,SAAStyB,GAAM0E,MAAM4tB,EAAU7tB,GAI9C,OAHY,IAARnB,IACFA,EAAM28B,EAAav7B,MAAM4tB,EAAU7tB,IAE9BnB,CAAG,CAEd,CACAu8B,EAAKvN,SAAWA,CAClB,CACA,GAAI0N,EAAKpN,UAAW,CAClB,MAAMA,EAAY2M,GAAOtf,SAAS2S,WAAa,IAAI8C,GACnD,IAAK,MAAM11B,KAAQggC,EAAKpN,UAAW,CACjC,MAAMsN,EAAgBtN,EAAU5yB,GAEhC4yB,EAAU5yB,GAAQ,IAAIyE,KACpB,IAAInB,EAAM08B,EAAKpN,UAAU5yB,GAAM0E,MAAMkuB,EAAWnuB,GAIhD,OAHY,IAARnB,IACFA,EAAM48B,EAAcx7B,MAAMkuB,EAAWnuB,IAEhCnB,CAAG,CAEd,CACAu8B,EAAKjN,UAAYA,CACnB,CAGA,GAAIoN,EAAKnN,WAAY,CACnB,MAAMA,EAAa0M,GAAOtf,SAAS4S,WACnCgN,EAAKhN,WAAa,SAAS59B,GACzB+qC,EAAKnN,WAAWxiC,KAAKlC,KAAM8G,GACvB49B,GACFA,EAAWxiC,KAAKlC,KAAM8G,EAE1B,CACF,CAEI8qC,IACFF,EAAK9N,WAAaA,GAGpBwN,GAAOE,WAAWI,EAAK,GAE3B,EAMAN,GAAO1M,WAAa,SAASjM,EAAQ/rB,GACnC,IAAK,MAAM5F,KAAS2xB,EAElB,OADA/rB,EAASxK,KAAKkvC,GAAQtqC,GACdA,EAAMwV,MACZ,IAAK,QACH,IAAK,MAAM00B,KAAQlqC,EAAM2X,OACvB2yB,GAAO1M,WAAWsM,EAAKvY,OAAQ/rB,GAEjC,IAAK,MAAMg+B,KAAO5jC,EAAM0jC,KACtB,IAAK,MAAMwG,KAAQtG,EACjB0G,GAAO1M,WAAWsM,EAAKvY,OAAQ/rB,GAGnC,MAEF,IAAK,OACH0kC,GAAO1M,WAAW59B,EAAM0K,MAAO9E,GAC/B,MAEF,QACM0kC,GAAOtf,SAAS8R,YAAcwN,GAAOtf,SAAS8R,WAAW+N,aAAeP,GAAOtf,SAAS8R,WAAW+N,YAAY7qC,EAAMwV,MACvH80B,GAAOtf,SAAS8R,WAAW+N,YAAY7qC,EAAMwV,MAAM3V,SAAQ,SAASgrC,GAClEP,GAAO1M,WAAW59B,EAAM6qC,GAAcjlC,EACxC,IACS5F,EAAM2xB,QACf2Y,GAAO1M,WAAW59B,EAAM2xB,OAAQ/rB,GAK1C,EAMA0kC,GAAOP,YAAc,SAASpmC,EAAK+6B,GAEjC,GAAI,MAAO/6B,EACT,MAAM,IAAI3E,MAAM,8DAElB,GAAmB,iBAAR2E,EACT,MAAM,IAAI3E,MAAM,oDACZnD,OAAOC,UAAUtC,SAAS4B,KAAKuI,GAAO,qBAI5Cu8B,GADAxB,EAAMc,GAAM,CAAC,EAAG8K,GAAOtf,SAAU0T,GAAO,CAAC,IAGzC,IACE,MAAM/M,EAAS2V,GAAM4D,UAAUvnC,EAAK+6B,GAIpC,OAHIA,EAAId,YACN0M,GAAO1M,WAAWjM,EAAQ+M,EAAId,YAEzBiM,GAAOE,YAAYpY,EAAQ+M,EASpC,CARE,MAAOz/B,GAEP,GADAA,EAAEG,SAAW,8DACTs/B,EAAIlB,OACN,MAAO,iCACH,GAAOv+B,EAAEG,QAAU,IAAI,GACvB,SAEN,MAAMH,CACR,CACF,EAKAqrC,GAAOT,OAASA,GAChBS,GAAOpT,OAAS2S,GAAO1lC,MACvBmmC,GAAO5B,SAAWA,GAClB4B,GAAOjB,aAAeA,GACtBiB,GAAOhD,MAAQA,GACfgD,GAAOhK,MAAQgH,GAAMG,IACrB6C,GAAO7J,UAAYA,GACnB6J,GAAOhB,QAAUA,GACjBgB,GAAOnmC,MAAQmmC,GAECA,GAAOxmC,QACJwmC,GAAOE,WACdF,GAAOK,IACAL,GAAO1M,WACN0M,GAAOP,YAEZF,GAAO1lC,MACRmjC,GAAMG,6ZCttFpB,MAAMpK,GAAW,IAAIiN,GAAO5B,SAE5B4B,GAAOE,WAAW,CAChBnN,YACAlE,UAAW,CAAC1b,EAAKsb,IACRI,GAAU1b,EAAKsb,KAInB,MAAMoS,GAAgB,wEAGhBC,GAAuB,2GAGvBC,GAAmB,MAAQF,GAAgB,IAAMC,GAAuB,IAE9E,SAASE,GAAsBrvC,GACpC,MAAO,0BAAuBA,WAAA,CAGzB,MAAMsvC,GAqBXvvC,YAAmB8H,EAAyC0nC,GAAzC,KAAA1nC,QAAAA,EAAyC,KAAA0nC,SAAAA,EAP5D,KAAA/nB,SAA8B,GA8E9B,KAAAgoB,YAAc,CACZ5kC,EACA+jB,EACAG,EACA8d,KAEc,IAAVje,EACF1xB,KAAKwyC,kBAAoBxyC,KAAKyyC,YAAY9kC,EAAM+jB,GAC7B,IAAVA,GACT1xB,KAAKyyC,YACH9kC,EACA+jB,EACA1xB,KAAKwyC,mBAAqBxyC,KAAKwyC,kBAAkBhhC,MACjDxR,KAAKwyC,mBAAqBxyC,KAAKwyC,kBAAkBryC,IAG9CH,KAAK0yC,oBAAoB/kC,EAAM+jB,EAAOG,EAAK8d,IAtFlD3vC,KAAKsyC,SAAWA,EAChBtyC,KAAKg+B,OAAS,IAAIoT,GAAOT,OACzB3wC,KAAK2yC,uBAAyB,IAAIvB,GAAO5B,SACzCxvC,KAAK0yC,oBAAsB1yC,KAAK2yC,uBAAuBvkB,QAAQ/d,KAC7DrQ,KAAK2yC,wBAEP3yC,KAAK2yC,uBAAuBvkB,QAAUpuB,KAAKuyC,WAAA,0BA3BpBK,EAAiBC,GAExC,OADmB,IAAIvkB,OAAO6jB,GAAiBlqC,QAAQ,eAAgB4qC,GAAgB,OACrE5vC,KAAK2vC,EAAA,4BAGEzkB,EAAYC,GACrC,MAAM0kB,EAAiB3kB,EAAG9pB,OAAO,IAAIiqB,OAAO,WAAWF,IAAW,MAClE,OAAI0kB,GAAkB,EACb3kB,EAAGL,UAAU,EAAGglB,GAElB3kB,CAAA,CAoBTskB,YACE1vC,EACA2uB,EACAxb,EAA+BlW,KAAKuqB,SACpC+nB,GAEAvvC,EAAO0sB,EAAkB1sB,GACzB,MAAMvC,EAAwB,CAC5BL,GAAImyC,EACA,GAAGA,KAAYzjB,EAAY9rB,KAC3B,GAAG/C,KAAKsyC,UAAY,aAAazjB,EAAY9rB,KACjDA,OACA2uB,QACAlgB,MAAO,IAGT,OADA0E,EAAUhW,KAAKM,GACRA,CAAA,CAGTuyC,gBAAgB78B,GACd,QAAkB,IAAdA,EACF,MAAO,GAET,MAAMlP,EAAyB,GAC/B,UAAWonB,KAAWlY,EACpBlP,EAAI9G,KAAKkuB,GACTpnB,EAAI9G,QAAQF,KAAK+yC,gBAAgB3kB,EAAQ5c,QAE3C,OAAOxK,CAAA,CAGTgsC,2BAA2BJ,GACzB,MAAMK,EAAe7kB,GACZ,IAAIE,OACT,UAAUF,EAAQrrB,KAAKkF,QAAQ,yBAA0B,2BAIvDirC,EAAelzC,KAAK+yC,gBAAgB/yC,KAAKuqB,UAC/C,GAAI2oB,EAAajyC,OAAS,EACxB,OAEF,IAAIkyC,EAAcD,EAAa,GAC3BE,EAAaH,EAAYE,GACzBE,EAAUT,EAAQvuC,OAAO+uC,GAC7B,QAASxyC,EAAI,EAAGA,EAAIsyC,EAAajyC,OAAQL,IAAK,CAC5C,MAAMwtB,EAAU8kB,EAAatyC,GACvB0yC,EAASL,EAAY7kB,GACrBmlB,EAAaX,EAAQv1B,OAAOg2B,EAAU,GAAGhvC,OAAOivC,GAAUD,EAAU,EAC1EF,EAAY9tC,YAAcutC,EACvB9kB,UAAUulB,EAASE,GACnBtrC,QAAQmrC,EAAY,IACpB9sC,OAEH6sC,EAAc/kB,EACdglB,EAAaE,EACbD,EAAUE,CAAA,CAEZJ,EAAY9tC,YAAcutC,EAAQ9kB,UAAUulB,GAASprC,QAAQmrC,EAAY,IAAI9sC,MAAA,CAsB/EktC,SAASZ,EAAiBa,GAA2B,GACnD,MAAM/B,EAAO+B,EAAkB,CAAEtP,SAAUnkC,KAAK2yC,6BAA2B,EAI3E,OAFYvB,GAAOwB,EAAQtyC,WAAYoxC,EAEhC,CAGT+B,gBAAgBb,GACd5yC,KAAKwzC,SAASZ,GAAS,GACvB5yC,KAAKgzC,2BAA2BJ,GAChC,MAAM5rC,EAAMhH,KAAKuqB,SAEjB,OADAvqB,KAAKuqB,SAAW,GACTvjB,CAAA,CAIT0sC,uBAAuBd,GACrB,MAAM5qC,EAAahI,KAAK4K,SAAW5K,KAAK4K,QAAQoqB,oBAChD,IAAKhtB,GAAiD,IAAnCrF,OAAO8L,KAAKzG,GAAY/G,OACzC,MAAO,CAACjB,KAAKwzC,SAASZ,IAGxB,MAAMe,EAAQhxC,OAAO8L,KAAKzG,GAAYrH,KAAK,KACrCizC,EAAmB,IAAItlB,OAAO6jB,GAAiBlqC,QAAQ,eAAgB0rC,GAAQ,OAE/EE,EAAsB,GACtBC,EAAoC,GAE1C,IAAI1rC,EAAQwrC,EAAiBvN,KAAKuM,GAC9BmB,EAAW,EACf,KAAO3rC,GAAO,CACZyrC,EAAU3zC,KAAK0yC,EAAQ9kB,UAAUimB,EAAU3rC,EAAMxD,QACjDmvC,EAAWH,EAAiBvH,UAC5B,MACM2H,EAAgBhsC,EADLI,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAGzC8tB,EAAQ9tB,EAAM,IAAMA,EAAM,GAC1B0uB,EAAW1uB,EAAM,GAEnB4rC,GACFF,EAAc5zC,KAAK,CACjB+zC,UAAWD,EAAcC,UACzBC,cAAeF,EAAcE,cAC7Bhe,SAAO,SAAKie,GAAWje,IAAW8d,EAAc9d,SAAzC,CAAgDY,2BAG3D1uB,EAAQwrC,EAAiBvN,KAAKuM,EAAA,SAEhCiB,EAAU3zC,KAAK0yC,EAAQ9kB,UAAUimB,IAEjC,MAAM/sC,EAAa,GACnB,QAASpG,EAAI,EAAGA,EAAIizC,EAAU5yC,OAAQL,IAAK,CACzC,MAAMwzC,EAAWP,EAAUjzC,GACvBwzC,GACFptC,EAAI9G,KAAKF,KAAKwzC,SAASY,IAErBN,EAAclzC,IAChBoG,EAAI9G,KAAK4zC,EAAclzC,GAAA,CAG3B,OAAOoG,CAAA,EAIX,SAASmtC,GAAWje,GAClB,IAAKA,EACH,MAAO,CAAC,EAGV,MAAMqP,EAAQ,8CACRpN,EAAS,CAAC,EAChB,IAAI/vB,EAEJ,KAAuC,QAA/BA,EAAQm9B,EAAMc,KAAKnQ,KACzB,GAAI9tB,EAAM,GAER+vB,EAAO/vB,EAAM,IAAMA,EAAM,WAChBA,EAAM,GAAI,CAEnB,IAAI2oB,EACJ,IACEA,EAAMrtB,KAAKuH,MAAM7C,EAAM,GACvB,CADuB,MAChBrC,GAAP,CAGFoyB,EAAO/vB,EAAM,IAAM2oB,CAAA,CAIvB,OAAOoH,CAAA,CC/NF,MAAMkc,GAaXvxC,YACUk7B,EACApzB,EAAkC,IAAIsmB,EAAuB,CAAC,IAD9D,KAAA8M,OAAAA,EACA,KAAApzB,QAAAA,EAERjI,OAAOkF,OAAO7H,KAAMg+B,EAAO1F,KAAKhW,MAChCtiB,KAAKqF,YAAc24B,EAAO1F,KAAKhW,KAAKjd,aAAe,GACnDrF,KAAK+gB,QAAUid,EAAO1F,KAAKhW,KAAKvB,SAAW,GAE3C,MAAMuzB,EAAsBt0C,KAAKqF,YAAYhB,OAAO,eAChDiwC,GAAuB,IACzBt0C,KAAKqF,YAAcrF,KAAKqF,YAAYyoB,UAAU,EAAGwmB,IAGnDt0C,KAAKu0C,aAAev0C,KAAKw0C,kBACzBx0C,KAAKuzB,iBAAmBvzB,KAAKy0C,qBAAA,CAGvBD,kBACN,GAAIx0C,KAAK4K,QAAQ4oB,sBACf,OAAOxzB,KAAK4K,QAAQ4oB,sBAGtB,GAAIxzB,KAAKg+B,OAAOU,QACd,OAAO1+B,KAAKg+B,OAAOU,QAGrB,GAAI7S,GAAcjS,OAAO2L,MAAQ3L,OAAO8I,KAAO9I,OAAO8I,IAAI4C,gBAAiB,CACzE,MAAMovB,EAAO,IAAInvB,KAAK,CAAC7hB,KAAKC,UAAU3D,KAAKg+B,OAAO1F,KAAM,KAAM,IAAK,CACjEhc,KAAM,qBAER,OAAO1C,OAAO8I,IAAI4C,gBAAgBovB,EAAA,EAI9BD,sBACN,OAAKz0C,KAAKg+B,OAAOU,SAAY1+B,KAAK4K,QAAQ4oB,sBAGnCxzB,KAAK4K,QAAQ2oB,iBAFXvzB,KAAK4K,QAAQ2oB,kBAAoB,cAEtB,gSC9CjB,MAAMohB,GAGX7xC,YAAY8xC,EAAyC5W,GACnD,MAAM1c,EAAW0c,EAAO1F,KAAKtwB,YAAcg2B,EAAO1F,KAAKtwB,WAAW+b,iBAAoB,CAAC,EAEvF/jB,KAAKshB,QAAU3e,OAAO8L,KAAKmmC,GAAe,CAAC,GACxCr0C,KAAIJ,IACH,MAAQuO,SAAUsP,GAAWggB,EAAOI,MAAM9c,EAAQnhB,IAC5Cke,EAASu2B,EAAYz0C,IAAO,GAElC,IAAK6d,EAEH,YADAhY,QAAQ6F,KAAK,4CAA4C1L,eAG3D,MAAM00C,EAAc72B,EAAO,kBAAoB7d,EAE/C,kIAAO,IACF6d,WADE,CAEL7d,KACA20C,UAAW30C,EACX00C,cACAx2B,iBAAA,IAGH9R,QAAOyR,QAAqB,IAAXA,GAAW,mkBC3B5B,MAAM+2B,GAOXjyC,YACEk7B,EACAj7B,EACAiyC,EACAvoC,EACA7B,GAVF,KAAAqqC,UAAoB,EAGpB,KAAAC,WAA+B,IAS7B,KAAAC,gBAAen1C,MAEfA,KAAK+C,KAAOA,EACZ,MAAQ2L,SAAU3D,GAAUizB,EAAOI,MAAuB4W,GAE1D,UAAW3b,KAAY12B,OAAO8L,KAAK1D,GAAQ,CACzC,MAAMrF,EAAOqF,EAAMsuB,GACb6b,EAAavyC,OAAO8L,KAAK/I,GAAM6G,OAAO2sB,IAC5C,UAAWkc,KAAiBF,EAAY,CACtC,MAAMG,EAAgB3vC,EAAK0vC,GAErBhc,EAAY,IAAIkc,GACpBtX,KACA,MACKqX,KADL,CAEEhc,WACA5sB,QAAS+rB,GAAY+c,QAAQ,CAAC9oC,EAAS1J,EAAMs2B,EAAU+b,IACvDI,SAAUJ,EACVK,eAAgB/vC,EAAK2Z,YAAc,GACnCq2B,YAAahwC,EAAKsb,2BAEpB,EACApW,GACA,GAGF5K,KAAKk1C,WAAWh1C,KAAKk5B,EAAA,UAM3Buc,SACE31C,KAAKi1C,UAAYj1C,KAAKi1C,QAAA,EA7CxB,IADC,GAAAW,YACD,2BA4CA,IADC,GAAAC,QACD,2mBCzCK,SAASC,GAAQjf,EAAiB7xB,GACvC,OAAOA,GAAO6xB,EAAMA,EAAM51B,OAAS,KAAO+D,EAAM,IAAI6xB,EAAO7xB,GAAO6xB,CAAA,CAG7D,SAASkf,GAAgBprC,EAAgBksB,GAC9C,OAAOA,EAAQlsB,EAAKjK,OAAOm2B,GAASlsB,CAAA,CAG/B,MAAMqrC,GAMXlzC,YACEw1B,EACAoG,EACQ9zB,EAAkC,IAAIsmB,EAAuB,CAAC,IAA9D,KAAAtmB,QAAAA,EALO,KAAAqrC,gBAA0B,EA2B3C,KAAAC,MAA8BlxC,IAC5B,IAAIgC,EACJ,GAAKhH,KAAKs4B,KAAV,CAGsB,MAAlBtzB,EAAIsqB,OAAO,KACbtqB,EAAM,IAAMA,GAEdA,EAAM6R,mBAAmB7R,GACzB,IACEgC,EAAMwxB,GAAY1iB,IAAI9V,KAAKs4B,KAAMtzB,EACjC,CADiC,MAC1Be,GAAP,CAGF,OAAOiB,GAAO,CAAC,CAXb,CAWc,EAlChBhH,KAAKm2C,SAAS7d,GAEdt4B,KAAKs4B,KAAOA,EACZt4B,KAAKi2C,eAAiB3d,EAAKtpB,QAAQ1D,WAAW,OAE9C,MAAM4jB,EAAOrD,EAAajS,OAAOoe,SAAS9I,KAAO,GAC1B,iBAAZwP,IACT1+B,KAAK0+B,QAAUxP,EAAO,IAAIxM,IAAIgc,EAASxP,GAAMA,KAAOwP,EAAA,CAIxDyX,SAAS7d,GACP,QAAqB,IAAjBA,EAAKtpB,QACP,MAAM,IAAIlJ,MAAM,mDA2BpBsE,MAAyBG,GACvB,QAAKA,QAIe,IAAbA,EAAIoB,MAAmC,OAAbpB,EAAIoB,IAAS,CAShDyyB,MACE7zB,EACA6rC,EAA0B,GAC1BC,GAAe,GAGf,MAAMC,EAAe,MAAA/rC,OAAA,EAAAA,EAAM,eAG3B,GAFA6rC,EAAgBL,GAAgBK,EAAeE,GAE3Ct2C,KAAKoK,MAAMG,GAAM,CACnB,MAAMgsC,EAAa7Z,GAAkBnyB,EAAIoB,MACzC,GAAI4qC,GAAcv2C,KAAK4K,QAAQuqB,mBAAmB7jB,IAAIilC,GACpD,MAAO,CAAE7nC,SAAU,CAAE4N,KAAM,SAAUlX,MAAOmxC,GAAmBC,UAAWJ,GAG5E,IAAI1nC,EAAW1O,KAAKk2C,MAAS3rC,EAAIoB,MACjC,IAAK+C,EACH,MAAM,IAAI5I,MAAM,2BAA2ByE,EAAIoB,SAGjD,IAAI6qC,EAAYJ,EAChB,GAAIA,EAAcrb,SAASxwB,EAAIoB,OAASyqC,EAAcn1C,OApGpC,IAqGhByN,EAAW/L,OAAOkF,OAAO,CAAC,EAAG6G,EAAU,CAAE,kBAAkB,YAClD1O,KAAKoK,MAAMsE,GAAW,CAC/B,MAAM1H,EAAMhH,KAAKo+B,MAAM1vB,EAAU0nC,EAAeC,GAChDG,EAAYxvC,EAAIwvC,UAChB9nC,EAAW1H,EAAI0H,QAAA,CAMjB,OAHA8nC,EAAYV,GAAQM,EAAe7rC,EAAIoB,MACvC+C,EAAW1O,KAAKi2C,eAAiBj2C,KAAKy2C,UAAUlsC,EAAKmE,EAAU2nC,GAAgB3nC,EAExE,CAAEA,WAAU8nC,YAAA,CAErB,MAAO,CACL9nC,SAAUnE,EACVisC,UAAWT,GAAgBK,EAAeE,GAAA,CAI9CG,UAA6BzxC,EAAiB0J,EAAa2nC,GAEzD,MAA0B,EAAArxC,GAAlB2G,KAAAA,GAAkB,EAAT+qC,EAAA,GAAS,EAAT,CAAT,SACFjoC,EAAO9L,OAAO8L,KAAKioC,GACzB,GAAoB,IAAhBjoC,EAAKxN,OACP,OAAOyN,EAET,GACE2nC,GACA5nC,EAAKqgC,MACHjxB,IACG,CACC,cACA,QACA,eACA,cACA,eACA,WACA,aACAkd,SAASld,KAEf,CACA,MAAmE,EAAA64B,GAA3DrxC,YAAAA,EAAA,MAAaD,EAAK,SAAEuxC,EAAQ,UAAEC,GAA6B,EACnE,MAAO,CACLzlC,MAAO,CAAC,CAAE9L,cAAaD,QAAOuxC,WAAUC,aAAaloC,EAFH,GAAe,EAAf,CAA5C,cAAa,QAAO,WAAU,eAE2B,CAIjE,OAAO,SACDA,GACDgoC,EAAA,CAYTG,WACEjpC,EACAjC,EACA6qC,GA3KJ,MA6KI,GAAI5oC,EAAO,kBACT,OAAOA,EAKT,QAAqB,KAFrBA,EAAS5N,KAAK82C,YAAYlpC,EAAQ4oC,IAEvBrlC,MACT,OAAOvD,EAGT,IAAImpC,EAAgC,SAC/BnpC,GAD+B,CAElC,eAAgB,GAChBuD,WAAO,EACP/L,MAAOwI,EAAOxI,OAASs3B,GAAkB/wB,UAIf,IAAxBorC,EAASnlC,YAA2D,iBAAxBmlC,EAASnlC,aACvDmlC,EAASnlC,WAAa,MAAKmlC,EAASnlC,kBAEf,IAAnBmlC,EAASvlC,OAAiD,iBAAnBulC,EAASvlC,QAClDulC,EAASvlC,MAAQ,MAAKulC,EAASvlC,QAGjC,MAAMwlC,EA8LV,SAAoD51C,EAAUyQ,GAC5D,MAAM3G,EAAO,IAAIvC,IACjB,OAAOvH,EAAImL,QAAO/L,IAChB,MAAMqd,EAAIrd,EAAS,KACnB,OAAKqd,GACEA,IAAM3S,EAAKoG,IAAIuM,IAAM3S,EAAK9G,IAAIyZ,EAAE,GAAF,CAnMhBo5B,CACnBrpC,EAAOuD,MACJ5Q,KAAKuR,IAxMd,MAyMU,MAAM,SAAEpD,EAAU8nC,UAAWU,GAAiBl3C,KAAKo+B,MAAMtsB,EAAW0kC,GAAW,GAEzEW,EAASrlC,EAAUnG,WAAQ,EAC3ByrC,EAAYp3C,KAAK62C,WAAWnoC,EAAUyoC,EAAQD,GACpD,IAAIE,EAAU,oBAAqBA,EAAUjmC,MAQ7C,OAJIgmC,IAEF,SAAAJ,EAAS,kBAAT,EAA0B72C,QAASk3C,EAAU,iBAAmB,GAAKD,IAEhE,CACLxrC,KAAMwrC,EACNX,UAAWV,GAAQoB,EAAcC,GACjCvpC,OAAQwpC,EAAA,IAGX7qC,QAAO8qC,QAAmB,IAAVA,KAQrB,UAAazpC,OAAQkE,EAAW0kC,UAAWU,KAAkBF,EAAc,CACzE,MAcI,EAAAllC,GAbFwK,KAAAA,EACAoH,KAAM4zB,EAAY,WAClB1lC,EAAU,MACVJ,EAAK,SACLsK,EAAQ,MACR1W,EAAK,YACLC,EAAW,SACXsxC,EAAQ,UACRC,EAAS,MACTvlC,EAAK,MACLD,EACA,iBAAkBmmC,GAEhB,EADCC,EAAA,GACD,EADC,CAZH,OACA,OACA,aACA,QACA,WACA,QACA,cACA,WACA,YACA,QACA,QACA,mBAwBF,GApBIT,EAASz6B,OAASA,QAA0B,IAAlBy6B,EAASz6B,WAA+B,IAATA,GAC3DtW,QAAQ6F,KAAK,mCAAmCF,QAAWorC,EAASz6B,cAAcA,WAGvE,IAATA,IACE/a,MAAME,QAAQ6a,IAAS/a,MAAME,QAAQs1C,EAASz6B,MAChDy6B,EAASz6B,KAAO,IAAIA,KAASy6B,EAASz6B,MAEtCy6B,EAASz6B,KAAOA,QAIC,IAAjBg7B,IACE/1C,MAAME,QAAQ61C,IAAiB/1C,MAAME,QAAQs1C,EAASrzB,MACxDqzB,EAASrzB,KAAOniB,MAAMyB,KAAK,IAAI2F,IAAI,IAAI2uC,KAAiBP,EAASrzB,QAEjEqzB,EAASrzB,KAAO4zB,QAID,IAAf1lC,GAAkD,iBAAfA,EAAyB,CAC9DmlC,EAASnlC,WAAamlC,EAASnlC,YAAc,CAAC,EAC9C,UAAWC,KAAQD,EAAY,CAC7B,MAAM6lC,EAAgB1B,GAAgBmB,EAAc,SAAAtlC,EAAWC,SAAX,IAAmB,gBACvE,GAAKklC,EAASnlC,WAAWC,IAGN,IAEP0lC,EAAY,CAEtB,MAAMG,EAAa13C,KAAK62C,WACtB,CACE1lC,MAAO,CACL4lC,EAASnlC,WAAWC,GACpB,SAAKD,EAAWC,IAAhB,CAAuB,cAAe4lC,KAExC,cAAeA,GAEjB9rC,EAAO,eAAiBkG,EACxB4lC,GAEFV,EAASnlC,WAAWC,GAAQ6lC,CAAA,OAjB5BX,EAASnlC,WAAWC,GAAQ,SACvBD,EAAWC,IADY,CAE1B,cAAe4lC,GAeW,EAKlC,QAAc,IAAVjmC,IAAwB+lC,EAAY,CACtC,MAAMI,EACsB,kBAAnBZ,EAASvlC,MACZ,CAAC,EACA7O,OAAOkF,OAAO,CAAC,EAAGkvC,EAASvlC,OAC5BomC,EACuB,kBAApB9lC,EAAUN,MACb,CAAC,EACA7O,OAAOkF,OAAO,CAAC,EAAGiK,EAAUN,OAEnCulC,EAASvlC,MAAQxR,KAAK62C,WACpB,CACE1lC,MAAO,CAACwmC,EAAeC,IAEzBjsC,EAAO,SACPurC,EAAA,MAGU,IAAV7lC,IACF0lC,EAAS1lC,MAAQA,QAGL,IAAVD,IACF2lC,EAAS3lC,MAAQA,QAGF,IAAb0K,IACFi7B,EAASj7B,SAAW,IAAKi7B,EAASj7B,UAAY,MAAQA,IAKxDi7B,EAAW,YACNA,GADM,CAET3xC,MAAO2xC,EAAS3xC,OAASA,EACzBC,YAAa0xC,EAAS1xC,aAAeA,EACrCsxC,cAAgC,IAAtBI,EAASJ,SAAyBI,EAASJ,SAAWA,EAChEC,eAAkC,IAAvBG,EAASH,UAA0BG,EAASH,UAAYA,EACnE,iBAAkBG,EAAS,mBAAqBQ,IAC7CC,EAAA,CAIP,OAAOT,CAAA,CAQTc,YAAYC,GACV,MAAM9wC,EAAgC,CAAC,EACjCgW,EAAWhd,KAAKs4B,KAAKtwB,YAAchI,KAAKs4B,KAAKtwB,WAAWgV,SAAY,CAAC,EAC3E,UAAW+6B,KAAW/6B,EAAS,CAC7B,MAAQtO,SAAUZ,GAAQ9N,KAAKo+B,MAAMphB,EAAQ+6B,SAE7B,IAAdjqC,EAAIqD,OACJrD,EAAIqD,MAAMlI,MACPsB,QAAoC,IAAbA,EAAIoB,MAAsBmsC,EAAMtvC,QAAQ+B,EAAIoB,OAAS,MAG/E3E,EAAI,wBAA0B+wC,GAAW,CAACjqC,EAAI,0BAA4BiqC,GAAA,CAG9E,OAAO/wC,CAAA,CAGD8vC,YAAYlpC,EAAuB4oC,GACzC,QAAqB,IAAjB5oC,EAAOuD,MACT,OAAOvD,EAGT,MAAMuD,EAAQvD,EAAOuD,MACrB,QAASvQ,EAAI,EAAGA,EAAIuQ,EAAMlQ,OAAQL,IAAK,CACrC,MAAMo3C,EAAM7mC,EAAMvQ,GAClB,GAAIW,MAAME,QAAQu2C,EAAI3mC,OAAQ,CAC5B,MAAM4mC,EAAc9mC,EAAMtO,MAAM,EAAGjC,GAC7Bs3C,EAAa/mC,EAAMtO,MAAMjC,EAAI,GACnC,MAAO,CACLyQ,MAAO2mC,EAAI3mC,MAAM9Q,KAAK43C,IACb,CACLhnC,MAAO,IAAI8mC,EAAaE,KAASD,GACjC,cAAe1B,MAAA,EAOzB,OAAO5oC,CAAA,ylBCjWJ,eAiDL9K,YACEk7B,EACA7hB,EACA1P,EACQ7B,EACRwtC,GAAmB,EACX5B,EAAsB,IAFtB,KAAA5rC,QAAAA,EAEA,KAAA4rC,UAAAA,EAlDV,KAAA6B,WAAqB,GAMrB,KAAAd,YAAsB,EAuBtB,KAAAe,YAAsB,GAuBpB,KAAAnD,gBAAen1C,MAEfA,KAAKyM,QAAU0P,EAAYxQ,MAAQc,GAAW,GAE9C,MAAM,SAAEiC,EAAU8nC,UAAW+B,GAAiBva,EAAOI,MAAMjiB,EAAaq6B,GAAW,GACnFx2C,KAAKw2C,UAAYV,GAAQyC,EAAcv4C,KAAKyM,SAC5CzM,KAAKw4C,UAAY9pC,EAEjB1O,KAAK4N,OAASowB,EAAO6Y,WAAW72C,KAAKw4C,UAAWx4C,KAAKyM,QAASzM,KAAKw2C,WACnEx2C,KAAKy4C,KAAKza,EAAQoa,GAEdxtC,EAAQ+oB,iBACV3zB,KAAK4jC,WAAaxE,GAAkBp/B,KAAK4N,OAAQhD,EAAQ+oB,gBAAA,CAS7D+kB,cAAc/nB,GACZ3wB,KAAKs4C,YAAc3nB,CAAA,CAGrBgoB,QAAQr8B,GACN,OAAOtc,KAAKsc,OAASA,GAAS7a,EAAQzB,KAAKsc,OAAStc,KAAKsc,KAAKye,SAASze,EAAA,CAGzEm8B,KAAKza,EAAuBoa,GAlH9B,oBAmHI,MAAMxqC,EAAS5N,KAAK4N,OAuCpB,GAtCA5N,KAAKu3C,aAAe3pC,EAAO,kBAE3B5N,KAAKoF,MACHwI,EAAOxI,OAAUq3B,GAAkBz8B,KAAKyM,UAAY+rB,GAAYogB,SAAS54C,KAAKyM,UAAa,GAC7FzM,KAAKqF,YAAcuI,EAAOvI,aAAe,GACzCrF,KAAKsc,KAAO1O,EAAO0O,MAAQie,GAAW3sB,GACtC5N,KAAK8U,OAASlH,EAAOkH,OACrB9U,KAAK0jB,KAAO9V,EAAO8V,MAAQ,GAC3B1jB,KAAKyf,QAAU7R,EAAO6R,QACtBzf,KAAKwgB,SAAW5S,EAAO4S,SACvBxgB,KAAKwf,aAAe5R,EAAO4R,WAC3Bxf,KAAK85B,QAAUlsB,EAAOksB,QACtB95B,KAAK64C,aAAejrC,EAAOirC,aAE3B74C,KAAK84C,YAAc9b,GAAoBpvB,GACvC5N,KAAK+4C,cAAgB/4C,KAAK8U,OAC1B9U,KAAK66B,YAAcH,GAAgB9sB,EAAQ5N,KAAKsc,MAChDtc,KAAK6f,QAAUjS,EAAOiS,QACtB7f,KAAK22C,WAAa/oC,EAAO+oC,SACzB32C,KAAK42C,YAAchpC,EAAOgpC,UAC1B52C,KAAKmwB,MAAQviB,EAAOuiB,OAAS,GAC7BnwB,KAAK+5B,gBAAkBnsB,EAAOmsB,gBAC9B/5B,KAAKg6B,iBAAmBpsB,EAAOosB,iBAC/Bh6B,KAAKk6B,SAAWtsB,EAAOssB,SACvBl6B,KAAKi6B,SAAWrsB,EAAOqsB,UAEjBrsB,EAAOmO,UAAYnO,EAAO,iBAC1BnM,EAAQzB,KAAKsc,QAAUtc,KAAKsc,KAAKwyB,MAAKzsC,GAAmB,OAAVA,GAA4B,SAAVA,IACnErC,KAAKsc,KAAO,IAAItc,KAAKsc,KAAM,QACjB7a,EAAQzB,KAAKsc,OAAwB,OAAdtc,KAAKsc,MAA+B,SAAdtc,KAAKsc,OAC5Dtc,KAAKsc,KAAO,CAACtc,KAAKsc,KAAM,UAI5Btc,KAAKu/B,YAAc99B,EAAQzB,KAAKsc,MAC5Btc,KAAKsc,KAAK/b,KAAIC,GAAkB,OAATA,EAAgB,OAASA,IAAOG,KAAK,QAC5DX,KAAKsc,MAELtc,KAAKu3C,WAIT,GAAK3pC,EAAO+sB,IAAM/sB,EAAOP,MAAUO,EAAO+sB,IAAM/sB,EAAOgtB,KACrD56B,KAAKg5C,yBAAyBprC,EAAQowB,QAIxC,GAAKoa,QAAwC,IAA7Ba,GAAiBrrC,GAAjC,CAYA,GAREwqC,GACA32C,EAAQmM,EAAOyD,QACfzD,EAAOyD,MAAMpI,MAAKlB,GAAKA,EAAE4D,OAAS3L,KAAKyM,kBAGhCmB,EAAOyD,WAGK,IAAjBzD,EAAOyD,MAQT,OAPArR,KAAKk5C,UAAUtrC,EAAOyD,MAAO2sB,GAC7Bh+B,KAAKm5C,UAAY,mBACI,IAAjBvrC,EAAOwD,OACTpL,QAAQ6F,KACN,0EAA0E7L,KAAKyM,YAMrF,QAAqB,IAAjBmB,EAAOwD,MAGT,OAFApR,KAAKk5C,UAAUtrC,EAAOwD,MAAO4sB,QAC7Bh+B,KAAKm5C,UAAY,UAInB,GAAIn5C,KAAK24C,QAAQ,UACf34C,KAAKw9B,OAAS4b,GAAYpb,EAAQpwB,EAAQ5N,KAAKyM,QAASzM,KAAK4K,QAAS5K,KAAKw2C,gBAAA,GAClEx2C,KAAK24C,QAAQ,WAClBl3C,EAAQmM,EAAO4D,QAAU/P,EAAQmM,EAAOotB,aAC1Ch7B,KAAKw9B,OAAS4b,GAAYpb,EAAQpwB,EAAQ5N,KAAKyM,QAASzM,KAAK4K,QAAS5K,KAAKw2C,WAClE5oC,EAAO4D,QAChBxR,KAAKwR,MAAQ,IAAI,GACfwsB,EACApwB,EAAO4D,MACPxR,KAAKyM,QAAU,SACfzM,KAAK4K,SACL,EACA5K,KAAKw2C,YAITx2C,KAAKu/B,YACH3xB,EAAOotB,aAAev5B,EAAQmM,EAAO4D,OACjC,QACA8tB,IAAc,SAAAt/B,KAAKwR,YAAL,IAAY+tB,cAAev/B,KAAKu/B,aACpDv/B,KAAK+4C,eAAgB,SAAA/4C,KAAKwR,YAAL,IAAYsD,SAAU,GAC3C9U,KAAKq4C,YAAa,SAAAr4C,KAAKwR,YAAL,IAAY6mC,aAAc,GAAK3nB,EAAE,WACnD1wB,KAAKoF,MAAQpF,KAAKoF,QAAS,SAAApF,KAAKwR,YAAL,IAAYpM,QAAS,GAChDpF,KAAK66B,iBACyB,KAA5B,SAAA76B,KAAKwR,YAAL,IAAYqpB,aAA4B,SAAA76B,KAAKwR,YAAL,IAAYqpB,YAAc76B,KAAK66B,iBAEpD,IAAjB76B,KAAKyf,cAAiD,KAAxB,SAAAzf,KAAKwR,YAAL,IAAYiO,WAC5Czf,KAAKyf,QAAU,CAACzf,KAAKwR,MAAMiO,WAEzB,SAAAzf,KAAKwR,YAAL,IAAYqpB,eACd76B,KAAK0jB,KAAO1jB,KAAKwR,MAAMkS,MAErBjiB,EAAQzB,KAAKsc,OAAO,CACtB,MAAM+8B,EAAer5C,KAAKsc,KAAK/P,QAAO/L,GAAiB,UAATA,IAC1C64C,EAAap4C,SAAQjB,KAAKu/B,aAAe,OAAO8Z,EAAa14C,KAAK,WAItEX,KAAK0jB,KAAKziB,QAAUjB,KAAK4K,QAAQooB,8BACnChzB,KAAK0jB,KAAK/T,MA3DI,MARd3P,KAAKs5C,kBAAkB1rC,EAAQowB,EAmErB,CAINkb,UAAU7nC,EAAwB2sB,GAgCxC,GA/BAh+B,KAAKqR,MAAQA,EAAO9Q,KAAI,CAACg5C,EAAS5oB,KAChC,MAAQjiB,SAAU8qC,EAAY,UAAEhD,GAAcxY,EAAOI,MAAMmb,EAASv5C,KAAKw2C,WAAW,GAE9EiD,EAASzb,EAAO6Y,WAAW2C,EAAcx5C,KAAKyM,QAAU,UAAYkkB,EAAK6lB,GAGzEpxC,EACJq3B,GAAkB8c,EAAQ5tC,QAAU8tC,EAAOr0C,MACvCozB,GAAYogB,SAASW,EAAQ5tC,MAC7B,GAAG8tC,EAAOr0C,OAAS,KAAMq0C,EAAOtpB,OAASzsB,KAAKC,UAAU81C,EAAOtpB,QAAW,KAmBhF,OAjBe,IAAI,GACjB6N,EAEA,SAEKyb,GAFL,CAGEr0C,QACA+L,MAAO,CAAC,SAAKnR,KAAK4N,QAAV,CAAkByD,WAAO,EAAWD,WAAO,KAEnD6K,cAAeu9B,EAAaroC,WAAQ,EAAYsoC,EAAOx9B,gBAEzDs9B,EAAQ5tC,MAAQ3L,KAAKyM,QAAU,UAAYkkB,EAC3C3wB,KAAK4K,SACL,EACA4rC,EAGW,IAGXx2C,KAAK4K,QAAQypB,qBAAsB,CACrC,MAAMiK,EA6UZ,SAAqC1wB,GACnC,MAAM8rC,EAAc,IAAI/wC,IAgBxB,OAdA,WAAe,GACb,UAAWwwC,KAAa,EAAO9nC,OAAS,GAClC8nC,EAAU9nC,MACZsoC,EAAMR,GAIJA,EAAU78B,MACZo9B,EAAYt1C,IAAI+0C,EAAU78B,KAAA,CAKhCq9B,CAAM/rC,GACCrM,MAAMyB,KAAK02C,EAAYE,SAAA,CA9VZC,CAA4B75C,MAC1CA,KAAKu/B,YAAcjB,EAAM39B,KAAK,aAE9BX,KAAKu/B,YAAcv/B,KAAKqR,MACrB9Q,KAAIqN,IACH,IAAI7K,EACF6K,EAAOyqC,YACNzqC,EAAOxI,MAAQ,GAAGwI,EAAOxI,UAAUwI,EAAO2xB,eAAiB3xB,EAAO2xB,aAIrE,OAHIx8B,EAAKyF,QAAQ,SAAW,IAC1BzF,EAAO,IAAIA,MAENA,CAAI,IAEZpC,KAAK,QAIJ24C,kBAAkB1rC,EAAuBowB,GAC/C,MAAM/hB,EAAgBg9B,GAAiBrrC,GACvC5N,KAAK85C,kBAAoB79B,EAAcD,aACvC,MAAM+9B,EAA0B/b,EAAO6Z,YAAY,IAC7C73C,KAAK4N,OAAO,iBAAmB,GACnC5N,KAAKyM,UAGP,GAAImB,EAAOyD,MACT,UAAWkoC,KAAW3rC,EAAOyD,MAAO,CAClC,QAAqB,IAAjBkoC,EAAQ5tC,KACV,SAEF,MAAM5I,EAAOy1B,GAAYogB,SAASW,EAAQ5tC,MAC1CouC,EAAwBR,EAAQ5tC,MAAQ5I,CAAA,CAI5C,MAAMmZ,EAAUD,EAAcC,SAAW,CAAC,EAI1C,IAAI89B,EAAqB/9B,EAAc,2BAA4B,EAE/B,IAAhCtZ,OAAO8L,KAAKyN,GAASjb,SACvB+4C,GAAqB,GAGvB,MAAMC,EAA0B,CAAC,EACjC,UAAWl3C,KAAQmZ,EAAS,CAC1B,MAAMvQ,EAAOuQ,EAAQnZ,GAEjBtB,EAAQw4C,EAAwBtuC,IAClCsuC,EAAwBtuC,GAAMzL,KAAK6C,GAGnCk3C,EAAwBtuC,GAAQ,CAAC5I,EAAA,CAIrC,MAAMm3C,EACF,GADoBF,EACpB,GACA,MAAKD,GADAE,GAGT,IAAI1rC,EAA8B,GAElC,UAAW5C,KAAQhJ,OAAO8L,KAAKyrC,GAAkB,CAC/C,MAAM,EAAQA,EAAgBvuC,GAC9B,GAAIlK,EAAQ,GACV,UAAWsB,KAAQ,EACjBwL,EAAKrO,KAAK,CAAEyL,OAAM5I,cAGpBwL,EAAKrO,KAAK,CAAEyL,OAAM5I,KAAM,IAY5B,MAAM4wC,EAAQhxC,OAAO8L,KAAKyN,GACL,IAAjBy3B,EAAM1yC,SACRsN,EAAOA,EAAKoB,MAAK,CAACwqC,EAAMC,KACtB,MAAMC,EAAY1G,EAAMnrC,QAAQ2xC,EAAKp3C,MAC/Bu3C,EAAa3G,EAAMnrC,QAAQ4xC,EAAMr3C,MAEvC,OAAIs3C,EAAY,GAAKC,EAAa,EAEzBH,EAAKp3C,KAAK+6B,cAAcsc,EAAMr3C,MAC5Bs3C,EAAY,EAEd,EACEC,EAAa,GAEd,EAEDD,EAAYC,CAAA,KAKzBt6C,KAAKqR,MAAQ9C,EAAKhO,KAAI,EAAGoL,OAAM5I,WAC7B,MAAMw3C,EAAc,IAAI,GACtBvc,EACA,CAAEryB,QACFA,EACA3L,KAAK4K,SACL,EACA5K,KAAKw2C,UAAU3zC,MAAM,GAAI,IAG3B,OADA03C,EAAYn1C,MAAQrC,EACbw3C,CAAW,GAAX,CAIHvB,yBAAyBprC,EAAuBowB,GACtD,MAKI,EAAApwB,GAJF+sB,GAAI6f,EACJ5f,KAAM6f,EAAe,CAAC,EACtBptC,KAAMqtC,EAAe,CAAC,GAEpB,EADCC,mKAAA,CACD,EADC,CAHH,KACA,OACA,SAGIC,EAAmB,CACvB,CACEzpC,MAAO,CAACwpC,EAAYD,EAAcF,GAClCp1C,MAAQo1C,GAAcA,EAAW,mBAAqB,MAAAA,OAAA,EAAAA,EAAYp1C,QAAS,UAE7E,CACE+L,MAAO,CAACwpC,EAAYF,GACpBr1C,MAAQq1C,GAAgBA,EAAa,mBAAqB,MAAAA,OAAA,EAAAA,EAAcr1C,QAAS,WAIrFpF,KAAKqR,MAAQupC,EAAiBr6C,KAC5B,CAACg5C,EAAS5oB,IACR,IAAI,GACFqN,EACA,MACKub,GAELv5C,KAAKyM,QAAU,UAAYkkB,EAC3B3wB,KAAK4K,SACL,EACA5K,KAAKw2C,aAGXx2C,KAAKm5C,UAAY,WApYd,UAwYP,SAASC,GACPpb,EACApwB,EACAjC,EACAf,EACA4rC,GAEA,MAAMtgB,EAAQtoB,EAAOgE,YAAchE,EAAOotB,aAAeptB,EAAO4D,OAAS,CAAC,EACpEqpC,EAAejtC,EAAOmE,mBAAqB,CAAC,EAC5C+oC,EAAkBltC,EAAO+D,sBAAwB/D,EAAO0sB,sBACxDygB,EAAantC,EAAOotB,YAAcptB,EAAO4D,MAAQ5D,EAAO8D,gBACxDogB,EAAWlkB,EAAOiS,QACxB,IAAI2d,EAAS76B,OAAO8L,KAAKynB,GAAS,IAAI31B,KAAI86B,IACxC,IAAIt2B,EAAQmxB,EAAMmF,GAEbt2B,IACHiB,QAAQ6F,KACN,UAAUwvB,qEAA6Et2B,SAAa4G,MAEtG5G,EAAQ,CAAC,GAGX,MAAM+W,OACgB,IAApBlO,EAAOkO,UAAiClO,EAAOkO,SAAStT,QAAQ6yB,IAAc,EAEhF,OAAO,IAAI2f,GACThd,EACA,CACEj7B,KAAM6K,EAAOgE,WAAaypB,EAAY,IAAIA,KAC1Cvf,WACAlO,OAAQ,SACH7I,GADG,CAEN8a,aAA2B,IAAlB9a,EAAM8a,SAAyBiS,EAAWA,EAASuJ,GAAat2B,EAAM8a,WAGnFlU,EAAO,eAAiB0vB,EACxBzwB,EACA4rC,EAAA,IAqEJ,OAjEI5rC,EAAQmoB,0BACVyK,EAASK,GAAYL,EAAQ,SAE3B5yB,EAAQkoB,qBAEV0K,EAASD,GAAeC,EAAS5yB,EAAQmoB,6BAA4C,EAAlBnlB,EAAOkO,WAG5E0hB,EAAOt9B,QACFyC,OAAO8L,KAAKosC,GAAct6C,KAAI86B,IAC/B,IAAIt2B,EAAQ81C,EAAaxf,GASzB,OAPKt2B,IACHiB,QAAQ6F,KACN,UAAUwvB,qEAA6Et2B,SAAa4G,MAEtG5G,EAAQ,CAAC,GAGJ,IAAIi2C,GACThd,EACA,CACEj7B,KAAMs4B,EACNvf,UAAU,EACVlO,OAAQ7I,EACRk2C,KAAM,qBAER,GAAGtvC,uBAA0B0vB,IAC7BzwB,EACA4rC,EAAA,KAKyB,iBAApBsE,IAAoD,IAApBA,GACzCtd,EAAOt9B,KACL,IAAI86C,GACFhd,EACA,CACEj7B,MAAkC,iBAApB+3C,GACVA,EAAgB,+BAChB,iBACFp6C,OAAO,KACTob,UAAU,EACVlO,QAA4B,IAApBktC,EAA2B,CAAC,EAAIA,EACxCG,KAAM,wBAERtvC,EAAO,wBACPf,EACA4rC,IAKNhZ,EAAOt9B,QAcT,UAA8B,OAC5B89B,EAAM,OACNpwB,GAAS,EAAK,YACdstC,EAAW,KACXvvC,EAAI,QACJf,EAAO,UACP4rC,IASA,OAAI5mB,EAAUhiB,GACLA,EACH,CACE,IAAIotC,GACFhd,EACA,CACEj7B,KAAM,IAAIm4C,QACVttC,OAAQ,CAAC,GAEX,GAAGjC,oBACHf,EACA4rC,IAGJ,GAGF/0C,EAAQmM,GACH,IACFA,EAAOrN,KACR,CAACwE,EAAO4rB,IACN,IAAIqqB,GACFhd,EACA,CACEj7B,KAAM,IAAIm4C,EAAcvqB,KACxB/iB,OAAQ7I,GAEV,GAAG4G,oBACHf,EACA4rC,MAMN5nB,EAAShhB,GACJ,CACL,IAAIotC,GACFhd,EACA,CACEj7B,KAAM,IAAIm4C,QACVttC,UAEF,GAAGjC,oBACHf,EACA4rC,IAKC,GA9EF2E,CAAqB,CACtBnd,SACApwB,OAAQmtC,EACRG,YAAa1d,EAAOv8B,OACpB0K,OACAf,UACA4rC,eAIGhZ,CAAA,CAuET,SAASyb,GAAiBrrC,GACxB,OAAOA,EAAOqO,eAAiBrO,EAAO,mBAxhBtC,IADC,GAAAgoC,YACD,8BA4CA,IADC,GAAAC,QACD,gCCtGF,MAAMuF,GAAyD,CAAC,EAEzD,MAAMC,GAMXv4C,YACEk7B,EACAgX,EACOnZ,EACP7tB,GADO,KAAA6tB,KAAAA,EAGP,MAAQntB,SAAU+Q,GAAYue,EAAOI,MAAM4W,GAC3Ch1C,KAAKqC,MAAQod,EAAQpd,MACrBrC,KAAK+gB,QAAUtB,EAAQsB,QACvB/gB,KAAKqF,YAAcoa,EAAQpa,YACvBoa,EAAQ67B,gBACVt7C,KAAKu7C,iBAAmB,IAAI74B,IAAIjD,EAAQ67B,cAAetd,EAAOU,SAASxP,MAGrEgM,GAAiBW,IAAS77B,KAAKqC,OAA+B,iBAAfrC,KAAKqC,QACtDrC,KAAKqC,MAAQs5B,GAAqB37B,KAAKqC,MAAO2L,GAAA,CAIlDwtC,iBAAiBC,GACf,OAAKz7C,KAAKu7C,kBAINv7C,KAAKu7C,oBAAoBH,KAI7BA,GAAsBp7C,KAAKu7C,kBAAoBzxC,MAAM9J,KAAKu7C,kBAAkBluC,MAAKrG,GACxEA,EAAI2G,OAAON,MAAKquC,IACrB,IAAK10C,EAAI20C,GACP,OAAOz2C,QAAQgH,OAAO,IAAIpG,MAAM41C,IAGlC,IAAIzgB,GAAWwgB,GAOb,OAAOC,EANP,IACE,OAAOh4C,KAAKuH,MAAMywC,EAEX,CAFW,MACX31C,GACP,OAAO21C,CAAA,CAGF,OAhBJN,GAAsBp7C,KAAKu7C,mBAJ3Br2C,QAAQC,aAAQ,EAyBS,uMC1CtC,MAAMy2C,GAGF,CACFl2C,KAAM,CACJ8T,MAAO,SACPmF,SAAS,GAEXnY,MAAO,CACLgT,MAAO,OACPmF,SAAS,GAEXF,OAAQ,CACNjF,MAAO,SACPmF,SAAS,GAEXk9B,OAAQ,CACNriC,MAAO,OACPmF,SAAS,IAON,MAAMq8B,GAoBXl4C,YACEk7B,EACAgX,EACAvoC,EACA7B,EACA4rC,GAlEJ,cA2CE,KAAAvB,cAAgC,GAyB9B,KAAAE,gBAAen1C,MAEf,MAAQ0O,SAAU4T,GAAS0b,EAAOI,MAAwB4W,GAC1Dh1C,KAAKi7C,KAAOjG,EAAUiG,MAAQ,QAC9Bj7C,KAAK+C,KAAOiyC,EAAUjyC,MAAQuf,EAAKvf,KACnC/C,KAAKuf,GAAK+C,EAAK/C,GACfvf,KAAK8b,WAAawG,EAAKxG,SAEvB,IAAIggC,EAAcx5B,EAAK1U,OACnBouB,EAAoB,GAWxB,IAVK8f,GAAex5B,EAAK/C,IAAM+C,EAAK7hB,UAClCu7B,EAAoBr5B,OAAO8L,KAAK6T,EAAK7hB,SAAS,GAC9Cq7C,EAAcx5B,EAAK7hB,QAAQu7B,IAAsB1Z,EAAK7hB,QAAQu7B,GAAmBpuB,QAGnF5N,KAAK4N,OAAS,IAAImuC,GAAY/d,EAAQ8d,GAAe,CAAC,EAAGrvC,EAAS7B,GAAS,EAAO4rC,GAClFx2C,KAAKqF,iBACkB,IAArBid,EAAKjd,YAA4BrF,KAAK4N,OAAOvI,aAAe,GAAKid,EAAKjd,YACxErF,KAAKyf,QAAU6C,EAAK7C,SAAWzf,KAAK4N,OAAO6R,aAErB,IAAlB6C,EAAK9B,eAAmD,IAAzBxgB,KAAK4N,OAAO4S,SAAwB,CACrE,MAAMw7B,EAAe15B,EAAK9B,UAAYxgB,KAAK4N,OAAO4S,SAClDxgB,KAAKwgB,SAAW/e,EAAQu6C,GACpBA,EACAxuB,EACEwuB,GACA,CAACv8B,EAAS1c,IAAS,IAAIs4C,GAAard,EAAQve,EAAS1c,EAAMuf,EAAKtU,WAAA,CAIpEguB,EACFh8B,KAAKg8B,kBAAoBA,EAChB1Z,EAAK9I,MACdxZ,KAAKwZ,MAAQ8I,EAAK9I,MACTxZ,KAAKuf,KACdvf,KAAKwZ,MAAQ,kBAAAoiC,GAAsB57C,KAAKuf,UAA3B,IAAgC/F,OAAhC,EAAyC,aAGnC,IAAjB8I,EAAK3D,SAAyB3e,KAAKuf,GACrCvf,KAAK2e,QAAU,kBAAAi9B,GAAsB57C,KAAKuf,UAA3B,IAAgCZ,UAAhC,EAEf3e,KAAK2e,UAAY2D,EAAK3D,QAGxB3e,KAAKwf,gBAAiC,IAApB8C,EAAK9C,aAA6Bxf,KAAK4N,OAAO4R,WAAa8C,EAAK9C,WAE9E5U,EAAQ+oB,iBACV3zB,KAAK4jC,WAAaxE,GAAkB9c,EAAM1X,EAAQ+oB,iBAGpD3zB,KAAKmwB,OAAQ,SAAAnwB,KAAK4N,aAAL,IAAauiB,SAAS,MAAA7N,OAAA,EAAAA,EAAM6N,QAAS,GAIpDwlB,SACE31C,KAAKi1C,UAAYj1C,KAAKi1C,QAAA,CAIxBgH,WACEj8C,KAAKi1C,UAAW,EAIlBvZ,SACE17B,KAAKi1C,UAAW,GA1FlB,IADC,GAAAW,YACD,2BA+EA,IADC,GAAAC,QACD,yBAKA,IADC,GAAAA,QACD,2BAKA,IADC,GAAAA,QACD,yBCpIF,IAAI,GAA+B3xC,QAAQ,mBCUpC,MAAMg4C,GAWXp5C,YACEk7B,EACAj7B,EACAo5C,EACA75B,EACA1X,GAEA5K,KAAK+C,KAAOA,EACZ/C,KAAKm8C,cAAgBA,EACrBn8C,KAAK4N,OAAS0U,EAAK1U,QAAU,IAAImuC,GAAY/d,EAAQ1b,EAAK1U,OAAQ,GAAIhD,GACtE5K,KAAK0zB,sBAAwB9oB,EAAQ8oB,sBACrC1zB,KAAKq1B,gCAAkCzqB,EAAQyqB,qCACzB,IAAlB/S,EAAK9B,SACPxgB,KAAKwgB,SAAWgN,EACdlL,EAAK9B,UACLf,GAAW,IAAI47B,GAAard,EAAQve,EAAS1c,EAAMuf,EAAKtU,iBAEhC,IAAjBsU,EAAK7C,QACdzf,KAAKwgB,SAAW,CACdX,QAAS,IAAIw7B,GACXrd,EACA,CAAE37B,MAAO27B,EAAOI,MAAM9b,EAAK7C,SAAS/Q,UACpC3L,EACAuf,EAAKtU,WAGAitB,GAAWl4B,IACpB/C,KAAKo8C,gBAAgBpe,EAAQ1b,EAAA,CAIjC85B,gBAAgBpe,EAAuB1b,GACrC,MAAM+5B,EAAiB,CACrBC,aAAct8C,KAAKm8C,cACnBI,eAAgBv8C,KAAKm8C,cACrBK,gBAAiBx8C,KAAKm8C,eAAiBn8C,KAAK0zB,sBAC5C+oB,eAAgBz8C,KAAKq1B,iCAEvB,GAAIr1B,KAAK4N,QAAU5N,KAAK4N,OAAOyD,MAAO,CACpCrR,KAAKwgB,SAAW,CAAC,EACjB,UAAW1O,KAAa9R,KAAK4N,OAAOyD,MAAO,CACzC,MAAMqrC,EAAS,UAAe5qC,EAAU0mC,UAAkB6D,EAAgBre,EAAO1F,MAE7Et4B,KAAK4N,OAAOksC,mBAAuC,iBAAX4C,GAAuBA,IACjEA,EAAO18C,KAAK4N,OAAOksC,mBAAqBhoC,EAAU1M,OAGpDpF,KAAKwgB,SAAS1O,EAAU1M,OAAS,IAAIi2C,GACnCrd,EACA,CACE37B,MAAOq6C,GAET18C,KAAK+C,KACLuf,EAAKtU,SAAA,OAGAhO,KAAK4N,SACd5N,KAAKwgB,SAAW,CACdX,QAAS,IAAIw7B,GACXrd,EACA,CACE37B,MAAO,UAAeigB,EAAK1U,OAAeyuC,EAAgBre,EAAO1F,OAEnEt4B,KAAK+C,KACLuf,EAAKtU,WAAA,uMCxER,MAAM2uC,GASX75C,YACEk7B,EACA1b,EACO65B,EACPvxC,GADO,KAAAuxC,cAAAA,EART,KAAAS,cAAgB,GAWd,KAAAzH,gBAAen1C,MAEX4K,EAAQmqB,gCACVzS,EAAO+b,GAAuB/b,IAEhCtiB,KAAK68C,WAAal6C,OAAO8L,KAAK6T,GAAM/hB,KAAIwC,IACtC,MAAM84B,EAAOvZ,EAAKvf,GAElB,OAAO,IAAIm5C,GAAele,EAAQj7B,EAAMo5C,EAAetgB,EAAMjxB,EAAQ,GAAR,CASjEkyC,SAASnsB,GACP3wB,KAAK48C,cAAgBjsB,CAAA,CAInBosB,aACF,OAAO/8C,KAAK68C,WAAW78C,KAAK48C,cAAA,CAG1BI,gBACF,OAAOh9C,KAAK68C,WAAWtwC,QAAOsvB,KAAUA,EAAKrb,WAAUvf,OAAS,GAtClE,IADC,GAAA20C,YACD,gCA4BA,IADC,GAAAC,QACD,2BAKI,IADH,GAAAoH,UACG,yBCpCC,MAAMC,GAKXp6C,aAAY,OAAEk7B,EAAM,UAAEgX,EAAS,QAAEpqC,EAAO,QAAEuyC,IACxC,MAAMC,GAAaD,GACXzuC,SAAU4T,GAAS0b,EAAOI,MAAM4W,GACxCh1C,KAAKqF,YAAcid,EAAKjd,aAAe,GACvCrF,KAAK8b,WAAawG,EAAKxG,SAEvB,MAAM2jB,EAAeD,GAA6Bld,QAC7B,IAAjBmd,IACFz/B,KAAKS,QAAU,IAAIk8C,GAAkB3e,EAAQyB,EAAc2d,EAAWxyC,GAAA,wcCRrE,MAAMyyC,GAYXv6C,aAAY,OACVk7B,EAAM,KACN5rB,EAAI,eACJ4mB,EAAc,UACdgc,EAAS,QACTpqC,EACAuyC,QAASC,IAhBX,KAAAnI,UAAoB,EAOpB,KAAAx0B,QAAwB,IAWtB,KAAA00B,gBAAen1C,MAEfA,KAAKi1C,SAAuC,QAA5BrqC,EAAQgoB,iBAA6BhoB,EAAQgoB,gBAAgBxgB,GAE7E,MAAQ1D,SAAU4T,GAAS0b,EAAOI,MAAM4W,GACxCh1C,KAAKoS,KAAOA,OACS,IAAjBkQ,EAAK7hB,UACPT,KAAKS,QAAU,IAAIk8C,GAAkB3e,EAAQ1b,EAAK7hB,QAAS28C,EAAWxyC,SAG9C,IAAtB0X,EAAK,cACPtiB,KAAK+gB,QAAUuB,EAAK,aACpBtiB,KAAKqF,YAAcid,EAAKjd,aAAe,KAEvCrF,KAAK+gB,QAAUuB,EAAKjd,aAAe,GACnCrF,KAAKqF,YAAc,IAGrBrF,KAAKsc,KAAOyc,GAAkB3mB,EAAM4mB,GAEpC,MAAMvY,EAAU6B,EAAK7B,aACL,IAAZA,IACFzgB,KAAKygB,QAAU9d,OAAO8L,KAAKgS,GAASlgB,KAAIwC,IACtC,MAAM0b,EAASgC,EAAQ1d,GACvB,OAAO,IAAIi4C,GAAWhd,8HAAQ,IAAKvf,WAAL,CAAa1b,WAAQ,GAAI6H,QAAQ,KAI/DA,EAAQ+oB,iBACV3zB,KAAK4jC,WAAaxE,GAAkB9c,EAAM1X,EAAQ+oB,gBAAA,CAKtDgiB,SACE31C,KAAKi1C,UAAYj1C,KAAKi1C,QAAA,EArDxB,IADC,GAAAW,YACD,2BAoDA,IADC,GAAAC,QACD,8NCtCK,SAASyH,GACdZ,GAEA,MAAuB,YAAhBA,EAAO7c,MAAuB6c,EAAea,kBAAA,CAGtD,IAAIC,IAA8B,EAK3B,MAAMlI,GAoCXxyC,YACUk7B,EACAyf,EACRhyC,EACQb,EACR8yC,GAAsB,GAJd,KAAA1f,OAAAA,EACA,KAAAyf,cAAAA,EAEA,KAAA7yC,QAAAA,EAjCV,KAAA0R,KAAO,YAIP,KAAA9K,MAA4B,GAK5B,KAAAmsC,OAAkB,EAElB,KAAAZ,QAAkB,EAElB,KAAA9H,UAAoB,GAuBlB,KAAAE,gBAAen1C,MAEfA,KAAKyM,QAAUgxC,EAAchxC,QAE7BzM,KAAKqF,YAAco4C,EAAcp4C,YACjCrF,KAAKyL,OAASA,EACdzL,KAAK64C,aAAe4E,EAAc5E,aAElC74C,KAAKwf,aAAei+B,EAAcj+B,WAClCxf,KAAKw1C,SAAWiI,EAAcjI,SAC9Bx1C,KAAKwf,aAAei+B,EAAcj+B,WAClCxf,KAAK+f,YAAc09B,EAAc19B,YACjC/f,KAAK0F,KAAO+3C,EAAcpkB,SAC1Br5B,KAAK09C,WAAaA,EAClB19C,KAAK49C,UAAYH,EAAcG,UAC/B59C,KAAKm9C,QAAUn9C,KAAK09C,YAAc19C,KAAK49C,UAEvC59C,KAAK+C,KAAOo2B,GAAoBskB,GAEhCz9C,KAAK69C,aACHjzC,EAAQipB,eAAiBhD,EAAiBU,OACtCvxB,KAAK+f,aAAe/f,KAAK0F,KACzBkF,EAAQipB,eAAiBhD,EAAiBS,SAC1CtxB,KAAK0F,KACL1F,KAAK+C,KAEP/C,KAAK09C,YAGP19C,KAAKkhB,UAAYu8B,EAAcv8B,UAAY,IAAI3gB,KAC7C2gB,GAAY,IAAIyzB,GAAyBzzB,EAAU8c,KAIrDh+B,KAAKghB,QAAUyd,GAAiB,GAAIgf,EAAcz8B,SAAWy8B,EAAc/H,aAAe,MAE1F11C,KAAK89C,cAAgBL,EAAc19B,aAAe,aAAe09B,EAAc19B,YAC/E/f,KAAKG,QAC2B,IAA9Bs9C,EAAc19B,aACTtU,EAASA,EAAOtL,GAAK,IAAM,IAAMH,KAAK89C,mBAC5B,IAAXryC,EACAA,EAAOtL,GAAKH,KAAKyM,QACjBzM,KAAKyM,QAEXzM,KAAKkhB,UAAYu8B,EAAcv8B,UAAY8c,EAAO1F,KAAKpX,UAAY,IAAI3gB,KACrE2gB,GAAY,IAAIyzB,GAAyBzzB,EAAU8c,KAGrDh+B,KAAKghB,QAAUyd,GACbT,EAAOU,QACP+e,EAAcz8B,SAAWy8B,EAAc/H,aAAe1X,EAAO1F,KAAKtX,SAAW,KAI7EpW,EAAQ+oB,iBACV3zB,KAAK4jC,WAAaxE,GAAkBqe,EAAe7yC,EAAQ+oB,gBAAA,CAQ/DmpB,WACE98C,KAAK+8C,QAAS,EAOhBgB,aACE/9C,KAAK+8C,QAAS,EAOhBpH,SACE31C,KAAKi1C,UAAYj1C,KAAKi1C,QAAA,CAGxBvZ,SACM17B,KAAKyL,QACPzL,KAAKyL,OAAOiwB,QAAA,CAIhBugB,WAAW,CAKP/7B,kBACF,OACElgB,KAAKy9C,cAAcv9B,aACnB,IAAIg9B,GAAiB,CACnBlf,OAAQh+B,KAAKg+B,OACbgX,UAAWh1C,KAAKy9C,cAAcv9B,YAC9BtV,QAAS5K,KAAK4K,QACduyC,QAASn9C,KAAKm9C,SAAA,CAMhBa,kBACF,IAAIC,EACFj+C,KAAKy9C,cAAc,kBAAoBz9C,KAAKy9C,cAAc,mBAAqB,GAE7Ez9C,KAAKy9C,cAAc,oBAAsBD,KAC3CA,IAA8B,EAC9Bx3C,QAAQ6F,KAAK,gEAGf,MAAM0xC,EAAqBv9C,KAAKkgB,aAAelgB,KAAKkgB,YAAYzf,QAChE,GAAI88C,GAAsBA,EAAmBP,UAAW,CACtD,MAAMkB,EAAY1sB,KAAKqL,IAAIohB,EAAQh9C,OAAQjB,KAAK4K,QAAQ0pB,kBAExD2pB,EAAU,IACLA,EAAQp7C,MAAM,EAAGq7C,GACpB,CACEre,KAAM,UACNjP,MAAO,UACP5sB,OAAQ,GACRu5C,yBAECU,EAAQp7C,MAAMq7C,GAAA,CAIrB,OAAOD,CAAA,CAIL5+B,iBACF,MAAM8+B,EAAcpgB,GAClB/9B,KAAKg+B,OACLh+B,KAAKy9C,cAAchI,eACnBz1C,KAAKy9C,cAAcp+B,YAEnB9e,KAAI69C,GAAc,IAAIpD,GAAWh7C,KAAKg+B,OAAQogB,EAAYp+C,KAAKyM,QAASzM,KAAK4K,WAE/E,OAAI5K,KAAK4K,QAAQmoB,wBACR8K,GAAYsgB,EAAa,QAE9Bn+C,KAAK4K,QAAQkoB,mBACRyK,GAAe4gB,GAGjBA,CAAA,CAILh9B,gBACF,IAAIk9B,GAAsB,EAC1B,OAAO17C,OAAO8L,KAAKzO,KAAKy9C,cAAct8B,WAAa,IAChD5U,QAAO6F,GACO,YAATA,IAI4B,YAA5B2mB,GAAkB3mB,KACpBisC,GAAsB,GAGjBvlB,GAAa1mB,MAErB7R,KAAI6R,GACI,IAAIirC,GAAc,CACvBrf,OAAQh+B,KAAKg+B,OACb5rB,OACA4mB,eAAgBqlB,EAChBrJ,UAAWh1C,KAAKy9C,cAAct8B,UAAU/O,GACxCxH,QAAS5K,KAAK4K,QACduyC,QAASn9C,KAAKm9C,WAAA,CAMlBv5B,gBACF,OAAOjhB,OAAO8L,KAAKzO,KAAKy9C,cAAc75B,WAAa,IAAIrjB,KAAI+9C,GAClD,IAAIvJ,GACT/0C,KAAKg+B,OACLsgB,EACAt+C,KAAKy9C,cAAc75B,UAAW06B,GAC9Bt+C,KAAKyM,QACLzM,KAAK4K,UAAA,EAxNX,IADC,GAAAgrC,YACD,wBAEA,IADC,GAAAA,YACD,yBAEA,IADC,GAAAA,YACD,2BAsFA,IADC,GAAAC,QACD,2BAQA,IADC,GAAAA,QACD,6BAQA,IADC,GAAAA,QACD,yBAeI,IADHtU,IACG,8BAaA,IADHA,IACG,8BA6BA,IADHA,IACG,6BAmBA,IADHA,IACG,4BA2BA,IADHA,IACG,qbCzQC,MAAMgd,GAGXz7C,YACEk7B,EACApzB,EACAoqC,GALF,KAAAE,WAA+B,GAO7B,MAAQxmC,SAAU8vC,GAAaxgB,EAAOI,MAAmB4W,GAAa,CAAC,GACvEh1C,KAAKy+C,aAAazgB,EAAQwgB,EAAU5zC,EAAA,CAGtC6zC,aAAazgB,EAAuBwgB,EAAuB5zC,GACzD,UAAW8zC,KAAe/7C,OAAO8L,KAAK+vC,GAAW,CAC/C,MAAMtuB,EAAUsuB,EAASE,GACnBxJ,EAAavyC,OAAO8L,KAAKyhB,GAAS3jB,OAAO2sB,IAC/C,UAAWkc,KAAiBF,EAAY,CACtC,MAAMG,EAAgBnlB,EAAQklB,GAC9B,GAAIllB,EAAQvkB,KAAM,CAChB,MAAMgzC,EAAkB3gB,EAAOI,MAAmBlO,GAAW,CAAC,GAC9DlwB,KAAKy+C,aAAazgB,EAAQ,CAAE,CAACoX,GAAgBuJ,GAAmB/zC,EAAA,CAGlE,IAAKyqC,EAAe,SACpB,MAAMjc,EAAY,IAAIkc,GACpBtX,KACA,MACKqX,WADL,CAEEG,SAAUJ,WAEZ,EACAxqC,GACA,GAGF5K,KAAKk1C,WAAWh1C,KAAKk5B,EAAA,SCrCtB,MAAMwlB,GAqBX97C,YAAYk7B,EAAuB79B,EAAY6d,GAC7C,MAAQtP,SAAU4T,GAAS0b,EAAOI,MAAMpgB,GACxChe,KAAKG,GAAKA,EACVH,KAAK80C,UAAY/V,GAAkC5+B,EACnDH,KAAKsc,KAAOgG,EAAKhG,KACjBtc,KAAK60C,YAAcvyB,EAAK,kBAAoBniB,EAC5CH,KAAKqF,YAAcid,EAAKjd,aAAe,GACrB,WAAdid,EAAKhG,OACPtc,KAAK6+C,OAAS,CACZ97C,KAAMuf,EAAKvf,KACXwc,GAAI+C,EAAK/C,KAIK,SAAd+C,EAAKhG,OACPtc,KAAKilB,KAAO,CACVjH,OAAQsE,EAAKtE,OACb8gC,aAAcx8B,EAAKw8B,eAIL,kBAAdx8B,EAAKhG,OACPtc,KAAK++C,OAAS,CACZC,WAAY18B,EAAK28B,mBAIH,WAAd38B,EAAKhG,MAAqBgG,EAAKhE,QACjCte,KAAKse,MAAQgE,EAAKhE,MAAA,EAKjB,MAAM4gC,GAGXp8C,YAAYk7B,GACV,MAAM1c,EAAW0c,EAAO1F,KAAKtwB,YAAcg2B,EAAO1F,KAAKtwB,WAAW+b,iBAAoB,CAAC,EACvF/jB,KAAKshB,QAAU3e,OAAO8L,KAAK6S,GAAS/gB,KAClCwC,GAAQ,IAAI67C,GAAoB5gB,EAAQj7B,EAAMue,EAAQve,KAAA,4VCpDrD,MAAMo8C,GASXr8C,YACEw1B,EACAoG,EACQ9zB,GAxBZ,UAwBY,KAAAA,QAAAA,EAER5K,KAAKg+B,OAAS,IAAIgY,GAAc1d,EAAMoG,EAAS9zB,GAC/C5K,KAAKsiB,KAAO,IAAI+xB,GAAar0C,KAAKg+B,OAAQh+B,KAAK4K,SAC/C5K,KAAK64C,aAAe74C,KAAKg+B,OAAO1F,KAAKugB,aACrC74C,KAAKo/C,aAAeC,GAAYC,eAAet/C,KAAKg+B,OAAQh+B,KAAK4K,SACjE5K,KAAK+jB,gBAAkB,IAAIm7B,GAAqBl/C,KAAKg+B,QACrD,MAAMuhB,EAAuC,SACxC,kBAAAv/C,KAAKg+B,aAAL,IAAa1F,WAAb,IAAoB,eACpB,SAAAt4B,KAAKg+B,aAAL,IAAa1F,KAAKkmB,UAEvBx+C,KAAKw+C,SAAW,IAAID,GAAav+C,KAAKg+B,OAAQpzB,EAAS20C,EAAA,uMCzBpD,MAAMC,GAsBX18C,YACEwZ,EACAmjC,EACAh0C,GAhBF,KAAA+F,MAA4B,GAK5B,KAAAurC,QAAkB,EAElB,KAAA9H,UAAoB,GAWlB,KAAAE,gBAAen1C,MAGfA,KAAKG,GAAMs/C,EAA+Bt/C,IAAMmc,EAAO,IAAMuS,EAAY4wB,EAAW18C,MACpF/C,KAAKsc,KAAOA,EACZtc,KAAK+C,KAAO08C,EAAW,kBAAoBA,EAAW18C,KACtD/C,KAAK0xB,MAAS+tB,EAA+B/tB,OAAS,EAEtD1xB,KAAK69C,aAAe79C,KAAK+C,KAGzB/C,KAAKqF,YAAco6C,EAAWp6C,aAAe,GAE7C,MAAMmM,EAASiuC,EAA+BjuC,MAC1CA,GAASA,EAAMvQ,SACjBjB,KAAKqF,YAAcgtC,GAAiBqN,oBAAoB1/C,KAAKqF,YAAamM,EAAM,GAAGzO,OAGrF/C,KAAKyL,OAASA,EACdzL,KAAK64C,aAAgB4G,EAA0B5G,aAG7B,UAAd74C,KAAKsc,OACPtc,KAAKi1C,UAAW,GAKpB6H,WACE98C,KAAK+8C,QAAS,EAIhBrhB,SACM17B,KAAKyL,QACPzL,KAAKyL,OAAOiwB,SAEd17B,KAAKi1C,UAAW,EAIlBgH,WAEoB,UAAdj8C,KAAKsc,OAGTtc,KAAKi1C,UAAW,GAIlB8I,aACE/9C,KAAK+8C,QAAS,GAhEhB,IADC,GAAAnH,YACD,yBAEA,IADC,GAAAA,YACD,2BAuCA,IADC,GAAAC,QACD,2BAKA,IADC,GAAAA,QACD,yBAQA,IADC,GAAAA,QACD,2BASA,IADC,GAAAA,QACD,4cC/EK,MAAM8J,GAAc,EAEpB,MAAMN,GAAY,sBAKrBrhB,EACApzB,GAEA,MAAM0tB,EAAO0F,EAAO1F,KAEd9mB,EAA4B,GAC5BouC,EAAUP,GAAYQ,sBAAsB7hB,EAAQ1F,GAS1D,OARA9mB,EAAMtR,QAAQm/C,GAAYS,iBAAiBxnB,EAAKhW,KAAKjd,aAAe,QAAI,EAAW,EAAGuF,IAClF0tB,EAAK,gBAAkBA,EAAK,eAAer3B,OAAS,EACtDuQ,EAAMtR,QACDm/C,GAAYU,kBAAkB/hB,OAAQ,EAAW1F,EAAK,eAAgBsnB,EAASh1C,IAGpF4G,EAAMtR,QAAQm/C,GAAYW,aAAahiB,EAAQ4hB,OAAS,OAAW,EAAWh1C,IAEzE4G,CAAA,yBAQPnM,EACAoG,EACAw0C,EACAr1C,GAEA,MACM2f,EADW,IAAI8nB,GAAiBznC,EAAS,MAAAa,OAAA,EAAAA,EAAQtL,IAC7BszC,gBAAgBpuC,GAAe,IAErDklB,EAAStpB,QAAUwK,GAAUA,EAAOpG,cACtCoG,EAAOpG,YAAcgtC,GAAiBqN,oBACpCj0C,EAAOpG,YACPklB,EAAS,GAAGxnB,OAIhB,MAAMm9C,EAAkB,CAACC,EAAS3uC,EAAOzC,EAAQ,IAC/CyC,EAAMjR,KAAI6tB,IACR,MAAMgyB,EAAQ,IAAIZ,GAAW,UAAWpxB,EAAS+xB,GAMjD,OALAC,EAAMrxC,MAAQA,EACVqf,EAAQ5c,QACV4uC,EAAM5uC,MAAQ0uC,EAAgBE,EAAOhyB,EAAQ5c,MAAOzC,EAAQ,IAGvDqxC,CAAK,IAGhB,OAAOF,EAAgBz0C,EAAQ8e,EAAU01B,EAAA,0BAQzCjiB,EACAvyB,EACA40C,EACAC,EACA11C,GAEA,MAAM5D,EAAoB,GAC1B,UAAWo5C,KAASC,EAAQ,CAC1B,MAAM7/C,EAAO,IAAIg/C,GAAW,QAASY,EAAO30C,GAC5CjL,EAAKuO,MAAQ4wC,GACbn/C,EAAKgR,MAAQ6tC,GAAYW,aAAahiB,EAAQsiB,EAAM9/C,EAAM4/C,EAAOx1C,GACjE5D,EAAI9G,KAAKM,EAAA,CAGX,OAAOwG,CAAA,qBAYPg3B,EACA4hB,EACAn0C,EACA20C,EACAx1C,GAEA,IAAI21C,EAGFA,OADY,IAAVH,EACSz9C,OAAO8L,KAAKmxC,GAEZQ,EAAME,KAGnB,MAAMA,EAAOC,EAAShgD,KAAIigD,GACnBZ,EAAQY,IAIbZ,EAAQY,GAASC,MAAO,EACjBb,EAAQY,KAJbx6C,QAAQ6F,KAAK,qBAAqB20C,6BAAmCJ,EAAOr9C,SACrE,QAMLiE,EAA0C,GAChD,UAAWqjC,KAAOiW,EAAM,CACtB,IAAKjW,EACH,SAEF,MAAM7pC,EAAO,IAAIg/C,GAAW,MAAOnV,EAAK5+B,GAIxC,GAHAjL,EAAKuO,MAAQ4wC,GAAc,EAGV,KAAbtV,EAAItnC,KASRvC,EAAKgR,MAAQ,IACR6tC,GAAYS,iBAAiBzV,EAAIhlC,aAAe,GAAI7E,EAAMA,EAAKuO,MAAQ,EAAGnE,MAC1E5K,KAAK0gD,mBAAmB1iB,EAAQx9B,EAAM6pC,EAAK7pC,EAAKuO,MAAQ,EAAGnE,IAGhE5D,EAAI9G,KAAKM,OAdT,CACE,MAAMgR,EAAQ,IACT6tC,GAAYS,iBAAiBzV,EAAIhlC,aAAe,GAAI7E,EAAMA,EAAKuO,MAAQ,EAAGnE,MAC1E5K,KAAK0gD,mBAAmB1iB,OAAQ,EAAWqM,EAAK7pC,EAAKuO,MAAQ,EAAGnE,IAErE5D,EAAI9G,QAAQsR,EACZ,CAQO,CAOX,OAJI5G,EAAQsoB,wBACVlsB,EAAI2I,KAAKiyB,GAAkD,SAGtD56B,CAAA,2BAYPg3B,EACAvyB,EACA4+B,EACAt7B,EACAnE,GAEA,GAA8B,IAA1By/B,EAAI6K,WAAWj0C,OACjB,MAAO,GAGT,MAAM+F,EAAwB,GAC9B,UAAWquC,KAAiBhL,EAAI6K,WAAY,CAC1C,MAAM9b,EAAY,IAAIkc,GAAetX,EAAQqX,EAAe5pC,EAAQb,GACpEwuB,EAAUrqB,MAAQA,EAClB/H,EAAI9G,KAAKk5B,EAAA,CAOX,OAJIxuB,EAAQqoB,8BACVjsB,EAAI2I,KAAKiyB,GAAqC,SAGzC56B,CAAA,8BAMoBg3B,EAAuB1F,GAClD,MAAMgoB,EAAoB,CAAC,EACrB9B,EAAWlmB,EAAK,eAAiBA,EAAKkmB,SAC5C,UAAWnU,KAAO/R,EAAKgoB,MAAQ,GAC7BA,EAAKjW,EAAItnC,MAAQ,SAAKsnC,GAAL,CAAU6K,WAAY,KAWzC,WAAiB,EAAuBnqC,EAAqB6yC,GAC3D,UAAWvkB,KAAY12B,OAAO8L,KAAK1D,GAAQ,CACzC,MAAMrF,EAAOqF,EAAMsuB,GACb6b,EAAavyC,OAAO8L,KAAK/I,GAAM6G,OAAO2sB,IAC5C,UAAWkc,KAAiBF,EAAY,CACtC,MAAMG,EAAgB3vC,EAAK0vC,GAC3B,GAAI1vC,EAAKiG,KAAM,CACb,MAAQ+C,SAAUiyC,GAAkB,EAAOviB,MAAoB14B,GAC/Dk7C,EAAQ,EAAQ,CAAE,CAACvnB,GAAWsnB,GAAiB/C,GAC/C,SAEF,IAAIiD,EAAgB,MAAAxL,OAAA,EAAAA,EAAeiL,KAE9BO,GAAkBA,EAAc5/C,SAEnC4/C,EAAgB,CAAC,KAGnB,UAAWL,KAAWK,EAAe,CACnC,IAAIxW,EAAMiW,EAAKE,QACH,IAARnW,IACFA,EAAM,CACJtnC,KAAMy9C,EACNtL,WAAY,IAEdoL,EAAKE,GAAWnW,GAEdA,EAAI,eAGRA,EAAI6K,WAAWh1C,KAAK,SACfm1C,GADe,CAElBhc,WACA5sB,QAAS+rB,GAAY+c,QAAQ,CAAC,QAASlc,EAAU+b,IACjDI,SAAUJ,EACVK,eAAgB/vC,EAAK2Z,YAAc,GACnCq2B,YAAahwC,EAAKsb,QAClB48B,YAAaA,IAAA,IAMvB,OAnDIY,GACFoC,EAAQ5iB,EAAQwgB,GAAU,GAGxBlmB,EAAKvtB,OACP61C,EAAQ5iB,EAAQ1F,EAAKvtB,OA8ChBu1C,CAAA,uMC3OJ,MAAMQ,GAAe,kBAKrB,MAAMC,GAsCXj+C,YAAYw1B,EAAwB0oB,EAA8Bpe,GAA9B,KAAAoe,OAAAA,EAA8B,KAAApe,QAAAA,EAtBlE,KAAAqe,eAAyB,EAMzB,KAAAC,eAAyB,EA8CzB,KAAAC,eAAkBC,IAChB,MAAMC,EAAOD,EAAiB,GAAK,EACnC,IAAIE,EAAUthD,KAAKihD,cACnB,OACmB,IAAbK,GAAmBF,MAInBE,GAAWthD,KAAKuhD,UAAUtgD,OAAS,GAAKmgD,IALjC,CASX,GAAIA,EAAgB,CAClB,MAAMj1B,EAAKnsB,KAAKwhD,yBAAyBF,EAAU,GACnD,GAAIthD,KAAKghD,OAAOS,gBAAgBt1B,GAC9B,UAEG,CACL,MAAMA,EAAKnsB,KAAK0hD,aAAaJ,GAC7B,GAAIthD,KAAKghD,OAAOW,eAAex1B,GAC7B,MAGJm1B,GAAWD,CAAA,CAGbrhD,KAAK88C,SAAS98C,KAAKuhD,UAAUD,IAAU,GAAM,EAAK,EAOpD,KAAAM,gBAAkB,CAACzhD,EAAaH,KAAK4iC,QAAQV,aAC3C,IAAK/hC,EACH,OAEF,IAAIK,EAEJA,EAAOR,KAAKuhD,UAAUt4C,MAAKrI,GAAKA,EAAET,KAAOA,IAErCK,EACFR,KAAK6hD,kBAAkBrhD,GAAM,IAEzBL,EAAGmL,WAAWyzB,MAChBv+B,EAAOR,KAAKuhD,UAAUt4C,MAAKrI,GAAKm+B,GAAgCzzB,WAAW1K,EAAET,MAC7EH,KAAK6hD,kBAAkBrhD,GAAM,IAE/BR,KAAKghD,OAAOc,yBAAyB,IAAIhB,OAAiBtxB,EAAoBrvB,QAAA,EAgClF,KAAA4hD,YAAe5hD,GACNH,KAAKuhD,UAAUt4C,MAAKzI,GAAQA,EAAKL,KAAOA,KA9G/C,KAAAg1C,gBAAen1C,MAEfA,KAAKwR,MAAQ8mB,EAAK8mB,aAElBp/C,KAAKuhD,UAAY9zB,EAAcztB,KAAKwR,OAAS,GAAI,SACjDxR,KAAKuhD,UAAU56C,SAAQ,CAACnG,EAAMmwB,IAASnwB,EAAKwhD,YAAcrxB,IAE1D3wB,KAAKqiC,WAAA,wBAzCgBliC,EAAa,aAAuB6gD,GACpD7gD,GAGL6gD,EAAOc,yBAAyB,IAAIhB,OAAiBtxB,EAAoBrvB,OAAA,CAwC3EkiC,YACEriC,KAAKiiD,aAAejiD,KAAKghD,OAAO3e,UAAUriC,KAAKmhD,gBAC/CnhD,KAAKkiD,iBAAmBliD,KAAK4iC,QAAQP,UAAUriC,KAAK4hD,gBAAA,CAItDO,gBACEniD,KAAKkhD,eAAgBlhD,KAAKkhD,aAAwB,CAIpDkB,eACEpiD,KAAKkhD,eAAgB,EA+DvBQ,aAAa/wB,GACX,MAAMnwB,EAAOR,KAAKuhD,UAAU5wB,GAC5B,OAAQnwB,GAAQmZ,EAAc,IAAImnC,OAAiBtxB,EAAoBhvB,EAAKL,UAAa,KAO3FqhD,yBAAyB7wB,GACvB,IAAInwB,EAAOR,KAAKuhD,UAAU5wB,GAI1B,OAHInwB,GAAsB,UAAdA,EAAK8b,OACf9b,EAAOA,EAAKgR,MAAM,IAEZhR,GAAQmZ,EAAc,IAAImnC,OAAiBtxB,EAAoBhvB,EAAKL,UAAa,KAMvFkiD,iBACF,OAAOriD,KAAKuhD,UAAUvhD,KAAKihD,qBAAkB,EAc/CnE,SACEt8C,EACA8hD,GAA0B,EAC1B3f,GAA0B,GAE1B,IAAK3iC,KAAKqiD,YAAcriD,KAAKqiD,WAAWliD,OAASK,GAAQA,EAAKL,OAI1DK,GAAsB,UAAdA,EAAK8b,MAAjB,CAKA,GADAtc,KAAK+9C,WAAW/9C,KAAKqiD,aAChB7hD,EAGH,OAFAR,KAAKihD,eAAiB,OACtBjhD,KAAK4iC,QAAQ36B,QAAQ,GAAI06B,GAMvBniC,EAAKuO,OAAS4wC,KAIlB3/C,KAAKihD,cAAgBzgD,EAAKwhD,YACtBM,GACFtiD,KAAK4iC,QAAQ36B,QAAQk+B,UAAU3lC,EAAKL,IAAKwiC,GAG3CniC,EAAKs8C,WACLt8C,EAAKk7B,SAtBH,CAsBG,CAOPqiB,WAAWv9C,GACT,QAAa,IAATA,EAIJ,IADAA,EAAKu9C,kBACW,IAATv9C,GACLA,EAAKy7C,WACLz7C,EAAOA,EAAKiL,MAAA,CAShBo2C,kBACErhD,EACA8hD,EACA3f,GAGA,MAAM4f,EAAY/hD,GAAQR,KAAK+hD,YAAYvhD,EAAKL,KAAQK,EACxDR,KAAK88C,SAASyF,EAAUD,EAAgB3f,GACxC3iC,KAAKwiD,iBACAD,GAAaA,EAAS/wC,MAAMvQ,QAC/BjB,KAAKoiD,cAAA,CAOTI,iBACExiD,KAAKghD,OAAO3zB,eAAertB,KAAK0hD,aAAa1hD,KAAKihD,eAAA,CAGpDz8C,UACExE,KAAKiiD,eACLjiD,KAAKkiD,kBAAA,EA7NP,IADC,GAAAtM,YACD,gCAMA,IADC,GAAAA,YACD,gCAiCA,IADC,GAAAC,QACD,gCAKA,IADC,GAAAA,QACD,+BAmGA,IADC,GAAAA,QACD,2BAuDA,IADC,GAAAA,OAAA,OACD,oGClOF,MAAM,GAAQ,SAEP,MAAM4M,GAIX3/C,YAAoB8H,GAAA,KAAAA,QAAAA,EADZ,KAAA83C,aAAe,EAErB1iD,KAAK2iD,cAAgB92B,EAAajS,YAAS,EAC3C5Z,KAAKiiC,QAAU,IAAI,GACnBjiC,KAAKqQ,MAAA,CAGPA,OACErQ,KAAK0iD,aAAe1iD,KAAK4iD,UACrB5iD,KAAK2iD,eACP3iD,KAAK2iD,cAAcj9B,iBAAiB,SAAU1lB,KAAK6iD,aAAA,CAIvDr+C,UACMxE,KAAK2iD,eACP3iD,KAAK2iD,cAAcjgB,oBAAoB,SAAU1iC,KAAK6iD,cAExD7iD,KAAKiiC,QAAQ6gB,mBAAmB,IAGlCF,UACE,MAA2B,oBAAhBG,aAA+B/iD,KAAK2iD,yBAAyBI,YAC/D/iD,KAAK2iD,cAAc/1B,eACM,IAAvB5sB,KAAK2iD,cACN3iD,KAAK2iD,cAAyBK,YAE/B,EAIXvB,gBAAgBt1B,GACd,GAAW,OAAPA,EAGJ,OAAOA,EAAGiF,wBAAwBtgB,IAAM9Q,KAAK4K,QAAQ4nB,eAAA,CAGvDmvB,eAAex1B,GACb,GAAW,OAAPA,EACF,OAEF,MAAMrb,EAAMqb,EAAGiF,wBAAwBtgB,IACvC,OAAQA,EAAM,EAAI0gB,KAAKyxB,MAAMnyC,GAAO0gB,KAAKI,KAAK9gB,KAAS9Q,KAAK4K,QAAQ4nB,eAAA,CAGtE6P,UAAUC,GACR,MAAMC,EAAUviC,KAAKiiC,QAAQO,YAAY,GAAOF,GAChD,MAAO,IAAMC,EAAQE,eAAe,GAAOH,EAAA,CAG7CjV,eAAenT,GACG,OAAZA,IAGJA,EAAQmT,iBACJrtB,KAAK2iD,eAAiB3iD,KAAK2iD,cAAcO,UAE1CljD,KAAK2iD,cAAcO,SAAiB,EAAmC,EAA/BljD,KAAK4K,QAAQ4nB,iBAAkB,CAI5EsvB,yBAAyBh2B,GACvB,MAAM5R,EAAUP,EAAcmS,GAC9B9rB,KAAKqtB,eAAenT,EAAA,CAKtB2oC,eACE,MACMzB,EADUphD,KAAK4iD,UACY5iD,KAAK0iD,aAAe,EACrD1iD,KAAK0iD,aAAe1iD,KAAK4iD,UACzB5iD,KAAKiiC,QAAQD,KAAK,GAAOof,EAAA,iGAJ3B,EAFC,GAAA/wC,KACA+vB,GAAS,MACV,6BC3DK,MAAM+iB,GAAN,cACL,KAAAC,aAhBF,WACE,IAAI59B,EACJ,GAAIqG,EACF,IAEErG,EAAS,EAAQ,IAEyB,CAFzB,MACVzf,GACPyf,EAAS,SAAiC,MAG5CA,EAAS,UAEX,OAAO,IAAIA,CAAA,CAII69B,EAAA,CAEfC,WAAWjD,GACT,MAAMp2C,EAAUuH,IACdA,EAAM7K,SAAQy5C,IACO,UAAfA,EAAM9jC,MACRtc,KAAKoE,IAAIg8C,EAAMr9C,MAAOq9C,EAAM/6C,aAAe,IAAI3E,OAAO,IAAK0/C,EAAM16C,MAAQ,IAAK06C,EAAMjgD,IAEtF8J,EAAQm2C,EAAM5uC,MAAM,GAAN,EAIlBvH,EAAQo2C,GACRrgD,KAAKojD,aAAahhD,MAAA,CAGpBgC,IAAIgB,EAAewc,EAActc,GAC/BtF,KAAKojD,aAAah/C,IAAIgB,EAAOwc,EAAMtc,EAAA,CAGrCd,UACGxE,KAAKojD,aAAqBG,YAC1BvjD,KAAKojD,aAAqB5+C,SAAA,CAG7BH,OAAO+B,GACL,OAAOpG,KAAKojD,aAAa/+C,OAAU+B,EAAA,CAG/B9B,OAAO,iCACX,OAAOtE,KAAKojD,aAAa9+C,MAAA,mLADd,yBACc,CAG3BC,KAAK4B,GACHnG,KAAKojD,aAAa7+C,KAAK4B,EAAA,CAGzB1B,eAAeiB,EAAeC,GACxBD,GAAQC,GACV3F,KAAKojD,aAAa3+C,eAAeiB,EAAMC,EAAA,EC1DtC,MAAM,GAAc,MAAU;uBACduwB,GAASA,EAAM9M,MAAMqC,WAAWV;eACxCmL,GAASA,EAAM9M,MAAMjC,QAAQE;;IAExC,EAAGm8B,UAASp6B,WACZ9Q,EAAMwd,SAAS,UAAU,EAAK;;eAEnB,GAAG0tB,EAAU,EAAIp6B,EAAMjC,QAAQG,qBACxC8B,EAAMjC,QAAQE;;EAKPo8B,GAAU,cAAiBvtB,IAAU,EAC/C4qB,IAAe5qB,EAAM/1B,MAAA;aAEX+1B,GAASA,EAAM9M,MAAMjC,QAAQG;;;;;;;;;;IAUtChP,EAAMwd,SAAS,UAAU,EAAK;;;IAG7BI,GACAA,EAAMwtB,WACL,2OAYF;EAGSC,GAAa,MAAU;WACzBztB,GAASA,EAAM9M,MAAMqC,WAAWV;WAChC,EAAG3B,WAAYA,EAAMqC,WAAWT;sBACrBkL,GAASA,EAAM9M,MAAMqC,WAAW/C;eACvCwN,GAASA,EAAM9M,MAAMjC,QAAQE;;IAExC/O,EAAMwd,SAAS,UAAU,EAAK;;eAEnBI,GACT,GAAGA,EAAM9M,MAAMjC,QAAQG,qBAAqB4O,EAAM9M,MAAMjC,QAAQE;;EAIzDu8B,GAAiB,GAAOD,GAAW;sBAC1BztB,GAASA,EAAM9M,MAAMqC,WAAW/C;EAGzCm7B,GAAM,MAAU;;;;;IAKzBvrC,EAAMwd,SAAS,UAAU,EAAK;;;ECrE5BguB,GAAiB,CACrB,EAAG,YACH,EAAG,YACH,EAAG,UAGQC,GAAoBryB,GAASrZ,CAAG;iBAC5B,EAAG+Q,WAAYA,EAAMU,WAAWS,SAASH;iBACzC,EAAGhB,WAAYA,EAAMU,WAAWS,SAASC;eAC3Cs5B,GAAepyB;iBACb,EAAGtI,WAAYA,EAAMU,WAAWS,SAASP;EAG7Cg6B,GAAK,KAAS;IACvBD,GAAkB;WACX,EAAG36B,WAAYA,EAAMzB,OAAOha,KAAKka;;IAExCmK,GAAe;EAGNiyB,GAAK,KAAS;IACvBF,GAAkB;WACX,EAAG36B,WAAYA,EAAMzB,OAAOha,KAAKka;;;IAGxCmK,GAAe;EAUNkyB,IAPK,KAAS;IACvBH,GAAkB;WACX,EAAG36B,WAAYA,EAAMzB,OAAOha,KAAKka;;IAExCmK,GAAe;EAGa,KAAS;WAC9B,EAAG5I,WAAYA,EAAMqC,WAAWT;;IAEvCgH,GAAe;GAGNmyB,GAAmB,KAAS;;;;;;;;;IASrCnyB,GAAe;ECzBboyB,IAAe,IAAAC,oBAAoC,IACnD,SAAE5sB,GAAQ,SAAEE,IAAaysB,GAGxB,SAASE,GAAapuB,GAC3B,MAAM,KAAEoC,EAAI,QAAEoG,EAAO,QAAE9zB,EAAO,SAAE25C,EAAQ,SAAEztB,GAAaZ,GAEhDsuB,EAAcC,GAAmB,WAAoB,OACrDx+C,EAAOy+C,GAAY,WAA6B,MACvD,GAAIz+C,EACF,MAAMA,EAGR,aAAgB,MACd,WAAsB,iCACpB,GAAKqyB,GAASoG,EAAd,CAGA+lB,EAAgB,MAChB,IACE,MAAM/1C,QAAiBi2C,GAAkBrsB,GAAQoG,GACjD+lB,EAAgB/1C,EAGV,CAHU,MACT3I,GAEP,MADA2+C,EAAS3+C,GACHA,CAAA,CARC,CAQD,mLAVY,yBAUZ,CAGVxB,EAAA,GACC,CAAC+zB,EAAMoG,IAEV,MAAM75B,EAAQ,WAAc,KAC1B,IAAK2/C,EAAc,OAAO,KAC1B,IACE,OAAO,IAAII,GAASJ,EAAc9lB,EAAS9zB,EAKrC,CALqC,MACpC7E,GAIP,MAHIw+C,GACFA,EAASx+C,GAELA,CAAA,IAGP,CAACy+C,EAAc9lB,EAAS9zB,IAQ3B,OANA,aAAgB,KACV/F,GAAS0/C,GACXA,GAAA,GAED,CAAC1/C,EAAO0/C,IAEJztB,EAAS,CACd+tB,SAAUhgD,EACVA,SAAA,CAIG,SAASigD,KACd,OAAO,IAAAC,YAAWX,GAAA,CC3Eb,MAAMY,GAAe/tB,GAAa5e,CAAG;IACxC4e;;;;;;;;;IASAA;;;;;;;;;;;;eAYWA,yBAAiCA,cAAsBA;;;EA2ChEguB,GAAkB,IAnCjB,SAAc/uB,GACnB,MAAMrxB,EAAQ,aAAiBu/C,IACzBc,EAAe,eAClBC,IACMtgD,GAoBX,SAAkB+9B,EAAyBuiB,EAA4C5xC,GAElF4xC,EAAMC,kBACU,IAAjBD,EAAME,QA9Bc,CAAAF,MACnBA,EAAMG,SAAWH,EAAMI,QAAUJ,EAAMK,SAAWL,EAAMM,UA8BxDC,CAAgBP,KAEjBA,EAAMQ,iBACN/iB,EAAQ36B,QAAQk+B,UAAU5yB,IAAA,CA1BxB,CAAS1O,EAAMqtB,KAAK0Q,QAASuiB,EAAOjvB,EAAM3iB,GAAG,GAE/C,CAAC1O,EAAOqxB,EAAM3iB,KAGhB,OAAK1O,EAGH,gBAAC,IAAD,CACEoyB,UAAWf,EAAMe,UACjB/H,KAAMrqB,EAAOqtB,KAAK0Q,QAAQR,UAAUlM,EAAM3iB,IAC1CqyC,QAASV,EACT,aAAYhvB,EAAM3iB,IAEjB2iB,EAAMY,UATQ,IASR,GAgBuB;IAChCkuB,GAAa;EAGV,SAASa,GAAU3vB,GACxB,OAAO,gBAAC+uB,GAAD,CAAiB1xC,GAAI2iB,EAAM3iB,IAAA,CC3EpC,MAAMuyC,GAAe,CACnB3L,KAAM,QACNC,MAAO,SACP2L,GAAI,UACJC,KAAM,KA2BKC,GAAY,IAxBH/vB,GASlB,gBAAC,MAAD,CACEe,UAAWf,EAAMe,UACjBzd,MAAO0c,EAAM1c,MACb+I,QAAQ,MACR4U,QAAQ,YACR+uB,EAAE,IACFC,MAAM,6BACNC,EAAE,IACF,cAAY,QAEZ,gBAAC,UAAD,CAASC,OAAO,yDAKuB;YACjCnwB,GAASA,EAAMttB,MAAQ;WACxBstB,GAASA,EAAMttB,MAAQ;eACnBstB,GAASA,EAAMttB,MAAQ;;WAE3BstB,GAASA,EAAMowB,OAAS;;uBAEZpwB,GAAS4vB,GAAa5vB,EAAMqwB,WAAa;;;YAGpD,EAAG99B,QAAOW,WACfX,GAASW,EAAMzB,OAAOxG,UAAUsH,IAAUW,EAAMzB,OAAOxG,UAAUsH,GAAOA,OAAUA;;EAI5E+9B,GAAQ,OAAW;;;;sBAIVtwB,GAASA,EAAM9M,MAAMzB,OAAOuO,EAAM5Z,MAAM+H;WACnD6R,GAASA,EAAM9M,MAAMzB,OAAOuO,EAAM5Z,MAAM4L;eACpCgO,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;;;;iBAInC,EAAGX,WAAYA,EAAMU,WAAWI;;;;;ECzDpCu8B,GAAgBpuC,CAAG;;;ECCnBquC,GAAyB,UAAc;;;;WAIzCxwB,GAASA,EAAM9M,MAAMzB,OAAOha,KAAK4a;EAG/Bo+B,GAAe,KAAS;2BACVzwB,GAASA,EAAM9M,MAAMxb,OAAOub;;;;;IAKnD7Q,EAAMwd,SAAS;;;;;;;;;;;;;;;;;;QAkBXI,GAASA,EAAM9M,MAAMxb,OAAOub;QAC5B+M,GAASA,EAAM9M,MAAMxb,OAAOub;;;;;;;QAO5B+M,GAASA,EAAM9M,MAAMxb,OAAOub;QAC5B+M,GAASA,EAAM9M,MAAMxb,OAAOub;;;;;;;;;;;;;;EAgBvBy9B,GAAwB,GAAOD,GAAa;;EAI5CE,GAAmB,GAAOF,GAAa;;;;;iBAKnCzwB,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;MAGhDq8B;;;IAGF,EAAGxL,UACM,sBAATA,GACA5iC,CAAG;;;;;;;;;;;;;;IAcH,EAAG4iC,OAAO,MACV,CAAC,QAAS,uBAAwB,qBAAqBlgB,SAASkgB,GAC5D,GACA;;IAEJjpB,GAAe;EAGN80B,GAAsB,KAAS;;;WAGjC5wB,GAASA,EAAM9M,MAAMxb,OAAO0b;;;;;;;IAOnChR,EAAMwd,SAAS;;;6BAGUI,GAASA,EAAM9M,MAAMxb,OAAOub;;;;;;;IAOrD6I,GAAe;EAGN+0B,GAAiB,OAAW;WAC9B7wB,GAASA,EAAM9M,MAAMxb,OAAOub;iBACtB+M,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;;;;;;;kBASpC8L,GAASA,EAAM9M,MAAMxb,OAAOub;;;;;;;;kBAQ5B+M,GAASA,EAAM9M,MAAMxb,OAAOub;;;EAKjC69B,GAAsB,MAAU;aAChC,EAAG59B,WAAYA,EAAMxb,OAAO+b;EAG5Bs9B,GAAkB,QAAY;;;eAG5B/wB,GAASA,EAAM9M,MAAMU,WAAWC;;;;;;;;;IAS3CzR,EAAMwd,SAAS;;;;;;;IAOfxd,EAAMwd,SAAS,SAAS,EAAO;;;;;;;;MAQ7BkxB;;MAEAA;MACAA;MACAA;;MAEAA;MACAA;MACAA;MACAA;MACAA;cACQ,EAAG59B,WAAYA,EAAMxb,OAAO+b;;kBAExB,EAAGP,WAAYA,EAAMxb,OAAOgc;;;;MAIxCo9B;MACAA;;MAEAA;MACAA;MACAA;MACAA;;MAEAA;MACAA;MACAA;MACAA;MACAA;MACAA;;;EC1MOE,GAAY,MAAU;;;EAKtBC,GAAa,OAAW;;;WAG1BjxB,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;iBAC9B6R,GAASA,EAAM9M,MAAMU,WAAWS,SAASH;;EAI7Cg9B,GAAc,SAAa;;;;;;sBAMlBlxB,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;;;;4BAK9B6R,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;;IAG5D,EAAG7E,gBAAkBA,GAAcinC,IAAkB;;IAErDvwB,GACIA,EAAM6mB,OACD,kDAEa7mB,EAAM9M,MAAMzB,OAAOE,QAAQxD,iFAGzB,IAAA4D,QAAO,IAAMiO,EAAM9M,MAAMzB,OAAOE,QAAQxD,0BAIvD,oBACI6R,EAAM9M,MAAMzB,OAAOE,QAAQxD;EAO/BgjC,GAAqB,MAAU;;iBAE3BnxB,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;;EAMzCk9B,GAAoB,MAAU;;iBAE1BpxB,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;;EC9DtD,IAAI,GAA+BlmB,QAAQ,cCOpC,MAAMqjD,GAAO,GAAO,QAAU;;;;;;;;;;;0BAWX,EAAGn+B,WAAYA,EAAMuC,UAAUjD;;;;;eAK1C,EAAGU,YAAY,IAAAnB,QAAOmB,EAAMzB,OAAOC,YAAawB,EAAMqC,WAAWT;;UAEtE,EAAG5B,WAAY,GAAGA,EAAMjC,QAAQC,UAAUgC,EAAMjC,QAAQC,UAAUgC,EAAMjC,QAAQC;0BAChE,EAAGgC,YAAY,IAAAnB,QAAO,IAAMmB,EAAMuC,UAAUjD;;;;;;;iBAOrDwN,GAASA,EAAM9M,MAAMzB,OAAOha,KAAKka;sBAC5B,EAAGuB,WAAYA,EAAMqC,WAAWT;;;;;;;;;;;;iBAYrCkL,GAASA,EAAM9M,MAAMzB,OAAOxG,UAAUiH,QAAQQ;;;;iBAI9CsN,GAASA,EAAM9M,MAAMzB,OAAOxG,UAAU0H,SAASD;;;;iBAI/CsN,GAASA,EAAM9M,MAAMzB,OAAOxG,UAAUmB,KAAKsG;;;;iBAI3CsN,GAASA,EAAM9M,MAAMzB,OAAOxG,UAAUlb,MAAM2iB;;;;;kBAK3C,EAAGQ,WAAYA,EAAMuC,UAAUjD;;;iBAGhCwN,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;;;;;;;EChEjCogC,ID0EY,GAAOD,GAAK;;;;;;;;;;eAUtB,EAAGn+B,YAAY,IAAAnB,QAAOmB,EAAMzB,OAAOC,YAAawB,EAAMqC,WAAWT;;;;;;;;;iBAS/D,EAAG5B,WAAYA,EAAMqC,WAAWT;;;;;;;;iBAQhCkL,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;;ECrGtB,MAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwH9B4K,GAAe;GCvHNy1B,GAAiB,MAAU;;;;;;;;;;;;mBAYrB,EAAGr+B,WAAYA,EAAMU,WAAWM;iBAClC,EAAGhB,WAAYA,EAAMU,WAAWC;mBAC9B,EAAGX,WAAYA,EAAMU,WAAWE;;;;;;;;;EAWtC09B,GAAqB,MAAU;YAChCD;;;EAKCE,GAAY,GAAOH,GAASI,cAAc;iBACtC1xB,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;eACvC8L,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;;;;iBAInC,EAAGX,WAAaA,EAAMU,WAAW1X,KAAKqY,KAAO,WAAa;ECxC3E,IAAI,GAA+BvmB,QAAQ,2PCa3C,MAAM2jD,GACJ,MAAsC,GAExC,IAAIC,GAAW,GACXj8B,IACFi8B,GAAW,EAAQ,KACnBA,GAAyC,mBAAtBA,GAASxnD,UAA2BwnD,GAASxnD,YAAe,GAC/EwnD,GAAwB,oBAAbA,GAAiC,GAAKA,IAGnD,MAAMC,GAAYpyB,CAAiB,GAAGmyB,KAEhCE,GAAsB,MAAU;;EAU/B,MAAMC,WAAyB,YAA/B,kCAoBL,KAAAC,UAAYljD,IACVhF,KAAKmoD,WAAanjD,CAAG,CAAH,CAjBpBojD,oBACE,MAAM1hB,EAAU1mC,KAAKmoD,WAAWE,eAAiBroD,KAAKmoD,WAAWE,cAAcz7B,WAAc,EAC7F5sB,KAAKqjC,KAAO,IAAIwkB,GAA4B7nD,KAAKmoD,WAAYnoD,KAAKk2B,MAAMtrB,SAAW,CAAC,GAChF5K,KAAKmoD,WAAWG,UAClBtoD,KAAKmoD,WAAWG,SAAS,EAAG5hB,EAAA,CAIhC6hB,qBACEvoD,KAAKqjC,KAAKrqB,QAAA,CAGZwvC,uBACExoD,KAAKqjC,KAAKolB,SAAA,CAOZ7xB,SACE,MAAM,SAAEE,EAAQ,UAAEG,EAAS,SAAEyxB,GAAa1oD,KAAKk2B,MAM/C,OAJIwyB,GACFA,EAAS1oD,KAAKuoD,mBAAmBl4C,KAAKrQ,OAItC,gCACG8nD,IAAY,gBAACC,GAAD,MACb,gBAACC,GAAD,CAAqB/wB,UAAW,uBAAuBA,IAAajyB,IAAKhF,KAAKkoD,WAC3EpxB,GAAA,EAOJ,SAAS6xB,GACdzyB,GAEA,OACE,gBAACqB,GAAeI,SAAhB,MACG/sB,GACEA,EAAQuoB,iBAGP,gBAAC,MAAD,CACE3Z,MAAO,CACLovC,SAAU,OACVC,mBAAoB,UACpBC,gBAAiB,6BAGlB5yB,EAAMY,UATT,gBAACmxB,4HAAD,IAAsB/xB,GAAQA,EAAMY,WAS3B,CCzFnB,MAkBMiyB,GAAY,IAlBD,EAAG9xB,YAAWzd,WAC7B,gBAAC,MAAD,CACEyd,YACAzd,QACA2sC,MAAM,6BACNp7B,MAAM,KACNmM,OAAO,KACPC,QAAQ,YACR6xB,KAAK,OACLC,OAAO,eACPC,YAAY,IACZC,cAAc,QACdC,eAAe,SAEf,gBAAC,WAAD,CAAU/C,OAAO,qBAIa;;;;;;;;;;;;aAYrBnwB,GAA2B,SAAlBA,EAAMqjB,SAAsB;;EAiCrC8P,GAAW,QA7BGnzB,IACzB,MAAM,QAAEtrB,EAAO,SAAE0+C,EAAQ,YAAEC,EAAW,MAAElnD,EAAQ,WAAIk3C,EAAO,UAAEtiB,GAAcf,EAQ3E,OACE,gBAAC,MAAD,CAAKe,aACH,gBAAC8xB,GAAD,CAAWxP,YACX,gBAAC,SAAD,CAAQ+P,SATWnE,IACrB,MAAM,cAAEqE,GAAkBrE,EAAMr5C,OAEhCw9C,EAAS1+C,EADK2+C,EAAcC,EAAgB,EAAIA,GACxB,EAMYnnD,QAAc40B,UAAU,mBACvDsyB,GACC,gBAAC,SAAD,CAAQE,UAAQ,EAACC,QAAM,EAACrnD,MAAOknD,GAC5BA,GAGJ3+C,EAAQrK,KAAI,EAAGowB,MAAKtuB,MAAA,EAAO+C,SAAyBR,IACnD,gBAAC,SAAD,CAAQyG,IAAKslB,GAAO,EAAQ/rB,EAAOvC,MAAO,GACvC+C,GAAS,MAIhB,gBAAC,QAAD,KAAQ/C,GAAA,IC1DD,GAAW,IAAOgnD,GAAkB;;;;;;mBAQ9BnzB,GAASA,EAAM9M,MAAMU,WAAWS,SAASH;aAC/C,EAAGhB,WAAYA,EAAMzB,OAAOha,KAAKka;;aAEjC,EAAG8hC,eAAiBA,EAAY,OAAS;;;;;;;;;;;;;;;;;;;;;;aAsBzC,EAAGvgC,WAAYA,EAAMzB,OAAOha,KAAKka;;;;;;;;;;;;;;;;iBAgB7BqO,GAASA,EAAM9M,MAAMU,WAAWS,SAASH;;;;;;;;wBAQlC8L,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;aAC/C6R,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;kCACf6R,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;EAIzDulC,GAAiB,IAAO,GAAS;;;;;;;;;;;;;;;eAe/B1zB,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;iCAClB6R,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;;EAKxDwlC,GAAY,QAAW;;;;;iOCvE7B,SAASC,GAAgB5zB,GAC9B,MAAM,MAAE6zB,EAAQF,GAAS,SAAER,EAAWO,IAAmB1zB,EACzD,OAA6B,IAAzBA,EAAMtrB,QAAQ3J,OACT,gBAAC8oD,EAAD,KAAQ7zB,EAAMtrB,QAAQ,GAAGvI,OAE3B,gBAACgnD,2HAAD,IAAcnzB,GAAA,CCtBvB,IAAI,GAA+BhyB,QAAQ,aCMpC,MAAM8lD,GAAW3xC,CAAG;;uBAEJ6d,GAASA,EAAM9M,MAAMU,WAAWjG,MAAM+G;aAChDsL,GAASA,EAAM9M,MAAMU,WAAWjG,MAAM4E;;;eAGpCyN,GAASA,EAAM9M,MAAMU,WAAWjG,MAAM6G;;;;eAItCwL,GAASA,EAAM9M,MAAMU,WAAWjG,MAAM8G;yBAC5BuL,GAASA,EAAM9M,MAAMU,WAAWjG,MAAMgH;;;EAKlDo/B,GAAsB,GACjCzC,GAAQ;iBAMOtxB,GAASA,EAAM9M,MAAMU,WAAWM;iBAChC8L,GAASA,EAAM9M,MAAMU,WAAWG;iBAChCiM,GAASA,EAAM9M,MAAMU,WAAWE;;;;;;;;IAQ7C,EAAGw5B,aACHA,GACA;;IASA,EAAGnb,YACHA,GACA;;;MAKE0b,GAAkB;aACX7tB,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;;;;MAK3C0/B,GAAkB;aACX7tB,GAASA,EAAM9M,MAAMzB,OAAOha,KAAKka;;;;aAIjC,EAAGuB,WAAYA,EAAMU,WAAW1X,KAAKqW;wBAC1B,EAAGW,WAAYA,EAAMU,WAAW1X,KAAKsW;;mBAE1CwN,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;iBAGvC,EAAGhB,WAAYA,EAAMjC,QAAQC;iBAC7B8O,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;mBACnC,EAAGX,WAAYA,EAAMU,WAAW1X,KAAKoY;;;;;;mBAMrC0L,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;mBACrC,EAAGhB,WAAaA,EAAMU,WAAW1X,KAAKqY,KAAO,WAAa;wBACrD,EAAGrB,WAAYA,EAAMuC,UAAUjD;;eAExCwN,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA6DlB,EAAGgC,WAAYA,EAAMxb,OAAOgc;;;;;;;;;;;;;;;IAelDo7B,GAAa;;IAEbgF;;IAEAh4B,GAAe;iOC/JnB,MAAMk4B,GAAqBD,GAAoBrC,cAAc,QAItD,SAASuC,GACdj0B,GAEA,MAAMk0B,EAAOl0B,EAAMmS,OAAS6hB,GAAqBD,GAEjD,OACE,gBAACvyB,GAAD,MACG9sB,IACC,uBAACw/C,2HAAD,EACEnzB,UAAW,mBAAqBf,EAAMe,WAAa,IACnDozB,wBAAyB,CACvBC,QAbMj3B,EAaWzoB,EAAQyoB,cAbJrH,EAamBkK,EAAMlK,KAbfqH,EAAgB,YAAmBrH,GAAQA,IAe5E,YAAWkK,EAAM,cACbA,IAhBG,IAAC7C,EAAerH,CAgBnB,ICHP,MAAMu+B,WAAiB,YAC5B3zB,SACE,MAAM,OAAE5yB,EAAM,OAAEqkC,EAAM,QAAEmb,EAAO,UAAEvsB,EAAW,YAAauzB,GAAaxqD,KAAKk2B,MACrEiO,EAAW,IAAIkO,GACrB,OACE,gBAAC8X,GAAD,CACEn+B,KAAMmY,EAASqP,SAASxvC,GACxBqkC,SACAmb,UACAvsB,YACA,YAAWuzB,GAAA,EC5BnB,MAAMC,GAAU,MAAU;;EAIpBC,GAAM,MAAU;;;;;;;;;;;;;;EAgBhBC,GAAU,MAAU;;;;;;EAQpBC,GAAQ,MAAU;;;;;;;;;;EAYlBC,GAAM,MAAU;;;;;EAYf,MAAMC,WAAgB,YAC3Bl0B,SACE,MAAM,KAAEm0B,EAAI,MAAE3lD,EAAK,SAAE0xB,GAAa92B,KAAKk2B,MACvC,OACE,gBAACu0B,GAAD,KACG3zB,EACAi0B,GACC,gBAACL,GAAD,KACE,gBAACC,GAAD,KAAUvlD,GACV,gBAACwlD,GAAD,MACA,gBAACC,GAAD,SClEZ,MAAMG,GACgB,oBAAbtxC,UACPA,SAASuxC,uBACTvxC,SAASuxC,sBAAsB,QAE1B,MAAMC,GAAiB,qBAE1B,OAAOF,EAAA,sBAGY9wC,GACnB,IAAIixC,EACAC,EACC1xC,SAASkI,KAAaypC,iBACzBF,EAASzxC,SAASkI,KAAaypC,kBAC/BF,EAAMG,kBAAkBpxC,GACxBixC,EAAMI,UACG7xC,SAAS8xC,aAAe5xC,OAAO6xC,eACxCL,EAAYxxC,OAAO6xC,eACnBN,EAAQzxC,SAAS8xC,cACjBL,EAAMO,mBAAmBxxC,GACzBkxC,EAAUO,kBACVP,EAAUQ,SAAST,GAAA,mBAKrB,GAAKzxC,SAAiB0xC,UACnB1xC,SAAiB0xC,UAAUS,aAAA,GACnBjyC,OAAO6xC,aAAc,CAC9B,MAAML,EAAYxxC,OAAO6xC,eACrBL,GACFA,EAAUO,iBAAA,wBAMd,IAAI5iD,EACJ,IACEA,EAAS2Q,SAASoyC,YAAY,OAErB,CAFqB,MACvBxpD,GACPyG,GAAS,EAEX,OAAOA,CAAA,oBAGUmR,GACjBgxC,GAAiBa,cAAc7xC,GAC/B,MAAMlT,EAAMkkD,GAAiBc,eAI7B,OAHIhlD,GACFkkD,GAAiBe,WAEZjlD,CAAA,mBAGS2G,GAChB,MAAMu+C,EAAWxyC,SAASS,cAAc,YACxC+xC,EAAS1yC,MAAM2yC,SAAW,QAC1BD,EAAS1yC,MAAM1I,IAAM,IACrBo7C,EAAS1yC,MAAM2gC,KAAO,IAItB+R,EAAS1yC,MAAMuR,MAAQ,MACvBmhC,EAAS1yC,MAAM0d,OAAS,MAGxBg1B,EAAS1yC,MAAM4yC,QAAU,IAGzBF,EAAS1yC,MAAMgP,OAAS,OACxB0jC,EAAS1yC,MAAM6yC,QAAU,OACzBH,EAAS1yC,MAAM8yC,UAAY,OAG3BJ,EAAS1yC,MAAM+yC,WAAa,cAE5BL,EAAS7pD,MAAQsL,EAEjB+L,SAASkI,KAAK3H,YAAYiyC,GAE1BA,EAASX,SAET,MAAMvkD,EAAMkkD,GAAiBc,eAG7B,OADAtyC,SAASkI,KAAKlH,YAAYwxC,GACnBllD,CAAA,EC7EJ,MAAMwlD,GACXt2B,IAEA,MAAOu2B,EAAcC,GAAmB,YAAe,GAEjDC,EAAO,KACX,MAAMlsD,EACkB,iBAAfy1B,EAAMtyB,KAAoBsyB,EAAMtyB,KAAOF,KAAKC,UAAUuyB,EAAMtyB,KAAM,KAAM,GACjFsnD,GAAA,WAA4BzqD,GAC5BmsD,GAAA,EAgBIA,EAAc,KAClBF,GAAgB,GAEhBp8C,YAAW,KACTo8C,GAAgB,EAAM,GACrB,KAAK,EAEV,OAAOx2B,EAAMY,SAAS,CAAE+1B,iBApBC,IAErB,gBAAC,SAAD,CAAQjH,QAAS+G,GACf,gBAAC7B,GAAD,CACE1lD,MAAO8lD,GAAiBF,cAAgB,SAAW,gCACnDD,KAAM0B,GACP,UAciB,EC1C1B,IAAI/6B,GAAQ,EAEL,SAASo7B,GAAWhtB,EAAMitB,GAC/Br7B,GAAQ,EACR,IAAIs7B,EAAS,GAMb,OALAA,GAAU,2BACVA,GAAU,SACVA,GAAUC,GAAYntB,EAAMitB,GAC5BC,GAAU,UACVA,GAAU,SACHA,CAAA,CAGT,SAASE,GAAWzmD,GAClB,YAAa,IAANA,EACHA,EACGnG,WACA2H,QAAQ,KAAM,SACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACjB,GAGN,SAASklD,GAAuB5oC,GAC9B,OAAO7gB,KAAKC,UAAU4gB,GAAK1hB,MAAM,GAAI,EAAD,CAGtC,SAASuqD,GAAiB/qD,EAAO40B,GAC/B,MAAO,gBAAkBA,EAAY,KAAOi2B,GAAW7qD,GAAS,UAGlE,SAASupC,GAAY7a,GACnB,MAAO,mCAAqCA,EAAM,UAGpD,SAASk8B,GAAY5qD,EAAO0qD,GAC1B,MAAMM,SAAmBhrD,EACzB,IAAI2qD,EAAS,GAgCb,OA/BI3qD,QACF2qD,GAAUI,GAAiB,OAAQ,iBAC1B/qD,GAASA,EAAMS,cAAgBvB,OACxCmwB,KACAs7B,GA8BJ,SAAqBltB,EAAMitB,GACzB,MAAMO,EAAY57B,GAAQq7B,EAAiB,YAAc,GACzD,IAAIC,EAAS,yCACXt7B,GAAQq7B,EAAiB,EAAI,SAAW,wBAC5BnhB,GAAY,mEACtB2hB,GAAc,EAClB,MAAMtsD,EAAS6+B,EAAK7+B,OACpB,QAASL,EAAI,EAAGA,EAAIK,EAAQL,IAC1B2sD,GAAc,EACdP,GAAU,6BAA+BM,EAAY,KACrDN,GAAUC,GAAYntB,EAAKl/B,GAAImsD,GAC3BnsD,EAAIK,EAAS,IACf+rD,GAAU,KAEZA,GAAU,cAMZ,OAJAA,GAAU,QAAQphB,GAAY,OACzB2hB,IACHP,EAASphB,GAAY,QAEhBohB,CAAA,CAlDKQ,CAAYnrD,EAAO0qD,GAC7Br7B,MACSrvB,GAASA,EAAMS,cAAgB+9B,KACxCmsB,GAAUI,GAAiB,IAAM/qD,EAAMorD,cAAgB,IAAK,gBACrC,WAAdJ,GACT37B,KACAs7B,GA+CJ,SAAsBltB,EAAMitB,GAC1B,MAAMO,EAAY57B,GAAQq7B,EAAiB,YAAc,GACnDt+C,EAAO9L,OAAO8L,KAAKqxB,GACnB7+B,EAASwN,EAAKxN,OACpB,IAAI+rD,EAAS,yCACXt7B,GAAQq7B,EAAiB,EAAI,SAAW,wBAC5BnhB,GAAY,iEACtB2hB,GAAc,EAClB,QAAS3sD,EAAI,EAAGA,EAAIK,EAAQL,IAAK,CAC/B,MAAMyK,EAAMoD,EAAK7N,GACjB2sD,GAAc,EACdP,GAAU,6BAA+BM,EAAY,KACrDN,GAAU,wCAA0CE,GAAW7hD,GAAO,aACtE2hD,GAAUC,GAAYntB,EAAKz0B,GAAM0hD,GAC7BnsD,EAAIK,EAAS,IACf+rD,GAAUphB,GAAY,MAExBohB,GAAU,cAMZ,OAJAA,GAAU,QAAQphB,GAAY,OACzB2hB,IACHP,EAASphB,GAAY,QAEhBohB,CAAA,CAtEKU,CAAarrD,EAAO0qD,GAC9Br7B,MACuB,WAAd27B,EACTL,GAAUI,GAAiB/qD,EAAO,gBACX,WAAdgrD,EACL,4BAA4BpqD,KAAKZ,GACnC2qD,GACEI,GAAiB,IAAK,gBACtB,YACAjnB,UAAU9jC,GACV,KACA6qD,GAAWC,GAAuB9qD,IAClC,OACA+qD,GAAiB,IAAK,gBAExBJ,GAAUI,GAAiB,IAAMD,GAAuB9qD,GAAS,IAAK,gBAEjD,YAAdgrD,IACTL,GAAUI,GAAiB/qD,EAAO,kBAG7B2qD,CAAA,CCpEF,MAAMW,GAAat1C,CAAG;;;;;;iBAMZ6d,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;eACvC8L,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;;iBAEnC,EAAGX,WAAaA,EAAMU,WAAW1X,KAAKqY,KAAO,WAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA0CxDyL,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;iBACvC8L,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvChD6jC,GAAiB,MAAU;cACnBnG;;;EAiGDoG,GAAa,IA5FZ33B,IACZ,MAAO8R,EAAM8lB,GAAW,aAElBC,EAAc,EAAGlB,uBACrB,MAAMmB,EACJ93B,EAAMtyB,MACNjB,OAAOi3C,OAAO1jB,EAAMtyB,MAAMkrC,MAAKzsC,GAA0B,iBAAVA,GAAgC,OAAVA,IAEvE,OACE,gBAACurD,GAAD,KACE,gBAACnG,GAAD,KACGoF,IACAmB,GACC,gCACE,gBAAC,SAAD,CAAQpI,QAASqI,GAAW,gBAC5B,gBAAC,SAAD,CAAQrI,QAASsI,GAAa,oBAIpC,gBAAC32B,GAAeI,SAAhB,MACG/sB,GACC,gBAAC48C,GAAD,CACEvwB,UAAWf,EAAMe,UAEjBjyB,IAAK,GAAQ8oD,EAAQ,GACrBzD,wBAAyB,CACvBC,OAAQwC,GAAW52B,EAAMtyB,KAAMgH,EAAQqpB,4BAAA,EAS/Cg6B,EAAY,KAChB,MAAM7qB,EAAW,MAAA4E,OAAA,EAAAA,EAAMmmB,uBAAuB,eAC9C,UAAWb,KAAa/rD,MAAMqB,UAAUC,MAAMX,KAAKkhC,GAAW,CAC5D,MAAM3oB,EAAa6yC,EAAU7yC,WAC7BA,EAAW2zC,UAAUl1C,OAAO,aAC5BuB,EAAWd,cAAc,cAAeY,aAAa,aAAc,cAIjE2zC,EAAc,KAClB,MAAM9qB,EAAW,MAAA4E,OAAA,EAAAA,EAAMmmB,uBAAuB,eAExCE,EAAc9sD,MAAMqB,UAAUC,MAAMX,KAAKkhC,EAAU,GAEzD,UAAW6R,KAAYoZ,EAAa,CAClC,MAAM5zC,EAAaw6B,EAASx6B,WAC5BA,EAAW2zC,UAAUhqD,IAAI,aACzBqW,EAAWd,cAAc,cAAeY,aAAa,aAAc,YAIjE+zC,EAAmBxiD,IACvB,IAAIwhD,EACqB,cAArBxhD,EAAOmrB,YACTq2B,EAAYxhD,EAAOu8C,cAAe8F,uBAAuB,eAAe,GACpEb,EAAUjF,cAAc+F,UAAUG,SAAS,cAC7CjB,EAAUjF,cAAc+F,UAAUl1C,OAAO,aACzCpN,EAAOyO,aAAa,aAAc,cAElC+yC,EAAUjF,cAAc+F,UAAUhqD,IAAI,aACtC0H,EAAOyO,aAAa,aAAc,aAKlCi0C,EAAgB,eAAmBrJ,IACvCmJ,EAAgBnJ,EAAMr5C,OAAA,GACrB,IAEG2iD,EAAgB,eAAmBtJ,IACrB,UAAdA,EAAM95C,KACRijD,EAAgBnJ,EAAMr5C,OAAA,GAEvB,IAWH,OATA,aAAgB,KACd,MAAAk8B,GAAAA,EAAMtiB,iBAAiB,QAAS8oC,GAChC,MAAAxmB,GAAAA,EAAMtiB,iBAAiB,QAAS+oC,GACzB,KACL,MAAAzmB,GAAAA,EAAMtF,oBAAoB,QAAS8rB,GACnC,MAAAxmB,GAAAA,EAAMtF,oBAAoB,QAAS+rB,EAAc,IAElD,CAACD,EAAeC,EAAezmB,IAE3B,gBAACwkB,GAAD,CAAmB5oD,KAAMsyB,EAAMtyB,MAAOmqD,EAAA,GAGT;IAClCJ;ECvGSe,GAAcx4B,IACzB,MAAM,OAAElyB,EAAM,KAAE67B,GAAS3J,EACzB,OAAO,gBAACyxB,GAAD,CAAW0C,wBAAyB,CAAEC,OAAQrqB,GAAUj8B,EAAQ67B,KAAA,EAG5D8uB,GAAsBz4B,IACjC,MAAM,OAAElyB,EAAM,KAAE67B,GAAS3J,EACzB,OACE,gBAACs2B,GAAD,CAAmB5oD,KAAMI,IACtB,EAAG6oD,sBACF,gBAACnF,GAAD,KACE,gBAACD,GAAD,KAAiBoF,KACjB,gBAAC6B,GAAD,CAAY7uB,OAAY77B,aAAA,ECZ3B,SAAS4qD,IAAa,MAAEvsD,EAAK,SAAEo5C,IACpC,OAAIxgB,GAAWwgB,GACN,gBAACoS,GAAD,CAAYjqD,KAAMvB,KAEJ,iBAAVA,IAETA,EAAQqB,KAAKC,UAAUtB,EAAO,KAAM,IAE/B,gBAACssD,GAAD,CAAoB9uB,KAAMtD,GAAakf,GAAWz3C,OAAQ3B,IAAA,CCP9D,SAASwsD,IAAQ,QAAEpvC,EAAO,SAAEg8B,IACjC,YAAsB,IAAlBh8B,EAAQpd,OAAuBod,EAAQ87B,iBAClC,gBAACuT,GAAD,CAAiBrvC,UAAkBg8B,aAEnC,gBAACmT,GAAD,CAAcvsD,MAAOod,EAAQpd,MAAOo5C,YAAA,CAIxC,SAASqT,IAAgB,QAAErvC,EAAO,SAAEg8B,IACzC,MAAMp5C,EClBD,SAA4Bod,EAAuBg8B,GACxD,MAAO,CAAEsT,IAAgB,IAAAC,WAAS,GAE5B3sD,GAAQ,IAAA4sD,aAAY,GACpBC,GAAU,IAAAD,aAAiC,GAsBjD,OApBIC,EAAQC,UAAY1vC,IACtBpd,EAAM8sD,aAAU,GAGlBD,EAAQC,QAAU1vC,GAElB,IAAA2vC,YAAU,KACK,MAAY,4BACvBL,GAAa,GACb,IACE1sD,EAAM8sD,cAAgB1vC,EAAQ+7B,iBAAiBC,EAE/B,CAF+B,MACxC11C,GACP1D,EAAM8sD,QAAUppD,CAAA,CAElBgpD,GAAa,qLAPU,yBAOV,EAGfxqD,EAAA,GACC,CAACkb,EAASg8B,IAENp5C,EAAM8sD,OAAA,CDRCE,CAAmB5vC,EAASg8B,GAE1C,YAAc,IAAVp5C,EACK,gBAAC,OAAD,KAAM,cAGXA,aAAiByD,MAEjB,gBAAC6hD,GAAD,KAAW,mCACuB,gBAAC,KAAD,MAChC,gBAAC,IAAD,CACE1wB,UAAW,eACX/H,KAAMzP,EAAQ87B,iBACdzvC,OAAO,SACPwjD,IAAI,uBAEH7vC,EAAQ87B,mBAMV,gBAACqT,GAAD,CAAcvsD,QAAco5C,YAAA,CEvC9B,MAAM,GAAY,MAAU;;sBAEb,EAAGryB,YAAY,IAAAT,gBAAe,GAAKS,EAAMqC,WAAW/C;;;iBAGzD,EAAGU,WAAYA,EAAMU,WAAWS,SAASH;;;EAK7CmlC,GAAgB,OAAW;iBACvB,EAAGnmC,WAAYA,EAAMU,WAAWS,SAASH;;;;;;iBAMzC,EAAGhB,WAAYA,EAAMU,WAAWI;WACtC,EAAGd,YAAY,IAAAT,gBAAe,GAAKS,EAAMqC,WAAWT;EAGlDwkC,GAAkB,MAAU;;EAI5BC,GAAyB,GAAO,GAAS;;aAEzC,EAAGrmC,WAAYA,EAAMqC,WAAWT;;;;;;;;;;sBAUvB,EAAG5B,YAAY,IAAAT,gBAAe,GAAKS,EAAMqC,WAAW/C;;;;;;;;wBAQlD,EAAGU,YAAY,IAAAT,gBAAe,GAAKS,EAAMqC,WAAW/C;;EAI/DgnC,GAAgB,MAAU;iBACtBx5B,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;ECnC/C,MAAMulC,WAAyB,YAA/B,kCACL,KAAAxpD,MAAQ,CACNypD,UAAW,GAEb,KAAAC,YAAc,EAAGl/B,eACH,IAARA,GACF3wB,KAAK22B,SAAS,CACZi5B,UAAWj/B,GAAA,EAIjBiG,SACE,MAAM,UAAEg5B,GAAc5vD,KAAKmG,MACrBqa,EAAWxgB,KAAKk2B,MAAM45B,UAAUtvC,UAAY,CAAC,EAC7Ci7B,EAAWz7C,KAAKk2B,MAAM45B,UAAU/sD,KAEhCgtD,EAAW,gBAACL,GAAD,KAAe,aAE1BM,EAAgBrtD,OAAO8L,KAAK+R,GAClC,GAA6B,IAAzBwvC,EAAc/uD,OAChB,OAAO8uD,EAGT,GAAIC,EAAc/uD,OAAS,EAAG,CAC5B,MAAM2J,EAAUolD,EAAczvD,KAAI,CAACwC,EAAM4tB,KAChC,CACLtuB,MAAOme,EAASzd,GAAMge,SAAWhe,EACjC4tB,UAIElR,EAAUe,EAASwvC,EAAcJ,IACjCvqD,EAAcoa,EAAQpa,YAE5B,OACE,gBAAC4qD,GAAD,KACE,gBAACT,GAAD,KACE,gBAACD,GAAD,KAAe,WACdvvD,KAAKk2B,MAAMg6B,eAAe,CACzB7tD,MAAOuI,EAAQglD,GAAWvtD,MAC1BuI,UACA0+C,SAAUtpD,KAAK6vD,YACfM,UAAW,aAGf,gBAAC,MAAD,KACG9qD,GAAe,gBAACklD,GAAD,CAAUvmD,OAAQqB,IAClC,gBAACwpD,GAAD,CAASpvC,UAAkBg8B,cAAA,CAI5B,CACL,MAAMh8B,EAAUe,EAASwvC,EAAc,IACvC,OACE,gBAACC,GAAD,KACGxwC,EAAQpa,aAAe,gBAACklD,GAAD,CAAUvmD,OAAQyb,EAAQpa,cAClD,gBAACwpD,GAAD,CAASpvC,UAAkBg8B,aAAA,GAOrC,MAAMwU,GAAiB,MAAU;;EClFjC,IAAI,GAA+B/rD,QAAQ,cCMpC,MAAMksD,GAA4B,GAAOvJ,GAAiB;;;;;;mBAM9C3wB,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;aAG3C8L,GAASA,EAAM9M,MAAMzB,OAAOha,KAAKka;;qBAEzB,EAAGuB,WAAYA,EAAMU,WAAWI;;MAE/C,EAAG+wB,UACM,sBAATA,GACA5iC,CAAG;;;;;;;;;;;;;;;;;;;;IAoBL4tC;cACU,EAAG78B,WAAYA,EAAMxb,OAAOic,MAAMjhB;aACnC,EAAGwgB,WAAYA,EAAMxb,OAAOic,MAAMjhB;;cAEjC,EAAGwgB,WAAYA,EAAMxb,OAAOic,MAAMpB;;;EAKnC4nC,GAAa,OAAW;;eAEtB,EAAGjnC,WAAYA,EAAMU,WAAW1X,KAAK2X;;EAIvCumC,GAAa,GAAOD,GAAW;WACjCn6B,IAAS,IAAAvN,gBAAe,GAAKuN,EAAM9M,MAAMxb,OAAO2b;EAG9CgnC,GAAW,GAAOF,GAAW;WAC/Bn6B,GAASA,EAAM9M,MAAMxb,OAAO2b;EAG1BinC,GAAY,GAAOH,GAAW;WAChCn6B,GAASA,EAAM9M,MAAMxb,OAAO4b;;EAI1BinC,GAAaF,GAEbG,GAAgB,GAAOL,GAAWzI,cAAc;WAClD1xB,GAASA,EAAM9M,MAAMxb,OAAO6b;eACxByM,GAASA,EAAM9M,MAAMxb,OAAO8b;;;;EAM9BinC,GAAgB,GAAOD,GAAc;WACvCx6B,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQC;EAGlC8oC,GAAiB,GAAOP,GAAW;WACrC,EAAGjnC,WAAYA,EAAMzB,OAAOU,QAAQhE;;EAIlCwsC,GAAe,GAAOR,GAAW;;;;;;EAQjC,GAAe,GAAOA,GAAW;;;IAG1C,EAAGjnC,WAAY,4BACK,IAAAT,gBAAe,IAAMS,EAAMzB,OAAOha,KAAKka,0BAClD,IAAAc,gBAAe,GAAKS,EAAMzB,OAAOha,KAAKka,+BAElCuB,EAAMjC,QAAQC,mCACP,IAAAuB,gBAAe,GAAKS,EAAMzB,OAAOha,KAAKka,+BAC3CuB,EAAMU,WAAW1X,KAAKgY;;;;IAKrC4H,GAAe;EAGN8+B,GAAiB,GAAO,GAAa,GAErCC,GAAiB,GAAOV,GAAW;;IAE5C,EAAGjnC,WAAY,4BACK,IAAAT,gBAAe,IAAMS,EAAMzB,OAAOE,QAAQC,wBACrD,IAAAa,gBAAe,GAAKS,EAAMzB,OAAOE,QAAQxD,2BAEtC+E,EAAMjC,QAAQC,2BACbgC,EAAMjC,QAAQC,mCACP,IAAAuB,gBAAe,GAAKS,EAAMzB,OAAOE,QAAQxD;;;;IAK7D2N,GAAe;EAGNg/B,GAAe,SAAa;;;WAG9B,EAAG5nC,WAAYA,EAAMzB,OAAOha,KAAK4a;iBAC3B,EAAGa,WAAYA,EAAMjC,QAAQC;;;mBAG3B,EAAGgC,WAAYA,EAAMzB,OAAOha,KAAK4a;;wDCpIpD,MAAM0oC,GAAW,MAAU;IACvBjH;IACA,EAAGxG,aAAgBA,EAA4B,GAAlB;EAI1B,qBAAoC,YAIzC5sB,SACE,MAAM,aAAEiiB,GAAiB74C,KAAKk2B,MAC9B,OAAK2iB,GAAiBA,EAAahvC,IAKjC,gBAAConD,GAAD,CAAUzN,QAASxjD,KAAKk2B,MAAMstB,SAC5B,gBAAC,IAAD,CAAGt0B,KAAM2pB,EAAahvC,KAAMgvC,EAAaxzC,aAAewzC,EAAahvC,MALhE,IAKgE,GAZtE,sFADN,GAAAqnD,UACM,ICKA,MAAMC,WAAmB,gBAAzB,kCACL,KAAAhrD,MAAyB,CACvBmnD,WAAW,GAKL3X,SACN31C,KAAK22B,SAAS,CAAE22B,WAAYttD,KAAKmG,MAAMmnD,WAAA,CAGzC12B,SACE,MAAM,OAAEgjB,EAAM,YAAE9e,GAAgB96B,KAAKk2B,OAC/B,UAAEo3B,GAActtD,KAAKmG,OAGrB,eAAEguB,EAAc,uBAAEe,GAA2Bl1B,KAAKwK,QAExD,IAAKovC,EAAO34C,OACV,OAAO,KAGT,MAAMmwD,EACJpxD,KAAKmG,MAAMmnD,WAAap4B,EACpB0kB,EAAO/2C,MAAM,EAAGqyB,GAChB0kB,EAEAyX,IAAmBn8B,GACrB0kB,EAAO34C,OAASi0B,EAGdo8B,EAAmBp8B,EACrBo4B,EACE,KAAK1T,EAAO34C,OAASi0B,SACrB,OACF,GAEJ,OACE,gBAAC,MAAD,KACE,gBAACm7B,GAAD,KACGv1B,EAAcpK,EAAE,aAAe,GAAI,IACjB,IAAlBkpB,EAAO34C,OAAeyvB,EAAE,mBAAqBA,EAAE,QAAQ,KAC5C,IACb0gC,EAAe7wD,KAAI,CAAC8B,EAAOsuB,KAC1B,MAAMqrB,EAAe7nB,EAAiBjsB,OAAO7F,GAASqB,KAAKC,UAAUtB,GACrE,OACE,gBAAC,WAAD,CAAgBgJ,IAAKslB,GACnB,gBAAC,GAAD,KAAeqrB,GAA6B,QAIjDqV,EACC,gBAAC,GAAD,CACEzL,QAAS,KACP5lD,KAAK21C,QAAQ,GAGd2b,GAED,OAtDH,GAAAC,YAAch6B,GA4DvB,MAAM,GAAe,OAAW;WACrBrB,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;;;;;ECzEzCmtC,GAAY,GAAOvH,GAAoB;;EAUtC,MAAMwH,WAAmB,gBAC9B76B,SACE,MAAM86B,EAAO1xD,KAAKk2B,MAAM0N,WACxB,OACE,gBAACrM,GAAeI,SAAhB,MACG/sB,GACC,gCACGA,EAAQ+oB,gBACPhxB,OAAO8L,KAAKijD,GAAMnxD,KAAI8K,GACpB,gBAACmmD,GAAD,CAAWnmD,OACT,gBAACglD,GAAD,KAAY,IAAEhlD,EAAIyiB,UAAU,GAAG,MAAgB,IAC/C,gBAACgjC,GAAD,KACwB,iBAAdY,EAAKrmD,GAAoBqmD,EAAKrmD,GAAO3H,KAAKC,UAAU+tD,EAAKrmD,UAAA,ECvB9E,SAASsmD,IAAS,MAAE5sD,IACzB,OAAKA,EAAMyb,SAKT,gCACE,gBAAC6vC,GAAD,KAAY,IAAE3/B,EAAE,YAAY,MAC3BjvB,EAAQsD,EAAMyb,UACbzb,EAAMyb,SAASjgB,KAAI,CAACkf,EAASkR,KAC3B,MAAMtuB,EAAQi6B,GAAmBv3B,EAAO0a,GAClCmyC,EAAiB7sD,EAAMwa,GAAKrX,OAAO7F,GAASqB,KAAKC,UAAUtB,GACjE,OACE,gBAAC,WAAD,CAAgBgJ,IAAKslB,GACnB,gBAAC,GAAD,KAAeihC,GAA+B,QAKpD,gBAACC,GAAD,KACGlvD,OAAOi3C,OAAO70C,EAAMyb,UAAUjgB,KAAI,CAACkf,EAASkR,IAC3C,gBAAC,KAAD,CAAItlB,IAAKslB,EAAMlR,EAAQpd,OACrB,gBAAC,GAAD,KAAei6B,GAAmBv3B,EAAO0a,EAAQpd,QAAsB,KAAG,IACzEod,EAAQsB,SAAWtB,EAAQpa,iBArB/B,IAqB+B,CAS1C,MAAMwsD,GAAe,KAAS;;;EClCvB,MAAMC,WAAwB,gBACnCl7B,SACE,OAAsC,IAAlC52B,KAAKk2B,MAAM4iB,YAAY73C,OAClB,KAGP,gBAAC,OAAD,KACG,IACAjB,KAAKk2B,MAAM4iB,YAAYv4C,KAAIwxD,GAC1B,gBAAChB,GAAD,CAAgB1lD,IAAK0mD,GAAY,IAAEA,EAAW,SCOjD,MAAMC,GAAc,QAd3B,UAA8B,MAAE3vD,EAAK,MAAEuuB,EAAK,IAAEiB,IAC5C,QAAc,IAAVxvB,EACF,OAAO,KAGT,MAAMuvD,EAAiB//B,EAAM3pB,OAAO7F,GAASqB,KAAKC,UAAUtB,GAE5D,OACE,gBAAC,MAAD,KACE,gBAACguD,GAAD,KAAY,IAAEz/B,EAAM,KAAc,IAAC,gBAAC,GAAD,KAAeghC,GAAA,ICXjD,SAASK,GAAQ/7B,GACtB,MAAM4D,EAAU5D,EAAMtoB,OAAOksB,SACvB,kBAAE1E,GAAsB,aAAiBmC,KACxC26B,EAAgBC,GAAqB,YAAe,GACrDC,EAAgB,eACpB,IAAMD,GAAmBD,IACzB,CAACA,IAGH,OAAKp4B,GAAW1E,EAA0B,KAGxC,gCACE,gBAACy7B,GAAD,KACGqB,GAAkBp4B,EAAQ74B,OAhBR,GAiBf64B,EACA,GAAGA,EAAQzc,OAAO,EAlBH,UAoBpByc,EAAQ74B,OApBY,IAqBnB,gBAAC+vD,GAAD,CAAcpL,QAASwM,GACpBF,EAAiB,eAAiB,iBCnBtC,SAASG,IAAiB,OAAEzkD,IACjC,MAAM,kBAAEwnB,GAAsB,aAAiBmC,IAC/C,OACG3pB,IACgB,WAAhBA,EAAO0O,MAAsB1O,EAAOkrC,YAAY73C,WAC9C,MAAA2M,OAAA,EAAAA,EAAQksB,WAAW1E,GACnBxnB,EAAO4D,OACP5D,EAAOmrC,eACPnrC,EAAOkrC,YAAY73C,QAMtB,gBAAC,GAAD,KAAS,UAEN2M,EAAOmrC,eAAiB,gBAAC0X,GAAD,KAAY,KAAM7iD,EAAOmrC,cAAc,MAChE,gBAAC+Y,GAAD,CAAiBhZ,YAAalrC,EAAOkrC,cACrC,gBAACmZ,GAAD,CAASrkD,WACRA,EAAO4D,OAAS,gBAAC6gD,GAAD,CAAkBzkD,OAAQA,EAAO4D,QAAU,MATvD,IASuD,CAKlE,MAAM,GAAU,GAAO8+C,GAAW;;;4VCL3B,MAAMgC,IAAwB,KAAApB,WAAUh7B,IAC7C,MAAM,eAAE/B,EAAc,iBAAEC,GAAqB,aAAiBmD,KAExD,aAAEg7B,EAAY,MAAExtD,EAAK,0BAAEytD,GAA8Bt8B,GACrD,OAAEtoB,EAAM,YAAEvI,EAAW,WAAEma,EAAU,WAAEokB,EAAYrkB,GAAIkzC,EAAKtiC,MAAOuiC,GAAW3tD,EAC1E+1B,EAA8B,UAAhBltB,EAAO0O,KAErBq2C,EAAax+B,GAA0B,WAARs+B,EAE/BG,EAAmB,WAAkC,KACrDL,QAAmC,IAAlBxtD,EAAM0a,cAA4C,IAAnB1a,EAAMyb,SAcnD,UAbkB,IAAnBzb,EAAMyb,SACD,gBAACmxC,GAAD,CAAU5sD,UAGf,gBAACitD,GAAD,CACEphC,MAAOF,EAAE,WAAa,IACtBruB,MAAOi6B,GAAmBv3B,EAAOA,EAAM0a,SACvCoS,IAAKghC,QAAQ9tD,EAAMwa,OAO1B,CAACxa,EAAOwtD,IAEX,OACE,gBAAC,MAAD,KACE,gBAAC,MAAD,KACE,gBAACjC,GAAD,KAAa1iD,EAAOyqC,YACpB,gBAACkY,GAAD,KAAW3iD,EAAO2xB,aACjB3xB,EAAOmrC,eACN,gBAAC0X,GAAD,KACG,IAAI,IAEJ7iD,EAAOmrC,cAAc,IACjB,KAGRnrC,EAAOmsB,iBACN,gBAAC02B,GAAD,KACG,IAAI,IAEJ7iD,EAAOmsB,gBAAgB,IACnB,KAGRnsB,EAAOosB,kBACN,gBAACy2B,GAAD,KACG,IAAI,IAEJ7iD,EAAOosB,iBAAiB,IACpB,KAGRpsB,EAAOxI,QAAUgvB,GAAoB,gBAACo8B,GAAD,KAAW,KAAG5iD,EAAOxI,MAAM,MACjE,gBAAC0sD,GAAD,CAAiBhZ,YAAalrC,EAAOkrC,cACrC,gBAACmZ,GAAD,CAASrkD,WACRA,EAAO2pC,YAAc,gBAACqZ,GAAD,KAAgB,IAAElgC,EAAE,aAAa,KACtDoK,GAAeltB,EAAO4D,OAAS,gBAAC6gD,GAAD,CAAkBzkD,OAAQA,EAAO4D,SAElEgO,GACC,gBAAC,MAAD,KACE,gBAACgnC,GAAD,CAAOlqC,KAAK,WAAU,IAAEoU,EAAE,cAAc,MAG5C,gBAACshC,GAAD,CAAangC,IAAK8gC,EAAY/hC,MAAOF,EAAE,WAAa,IAAKruB,MAAOuL,EAAOiS,WACrE2yC,GACA,gBAACrB,GAAD,CAAYr2B,cAA0B8e,OAAQhsC,EAAO8V,OACpD,IACFkvC,EACD,gBAACnB,GAAD,CAAY7tB,WAAY,SAAKA,GAAeh2B,EAAOg2B,cACnD,gBAAC,MAAD,KACE,gBAAC2mB,GAAD,CAAU/G,SAAS,EAAMx/C,OAAQqB,KAElCuI,EAAOirC,cACN,gBAACia,GAAD,CAAuBja,aAAcjrC,EAAOirC,aAAc2K,SAAS,IAEnEgP,GAA6BA,EAA0Bt8B,IAAW,KAClEw8B,GAAU,gBAACV,GAAD,CAAaphC,MAAOF,EAAE,SAAW,IAAKruB,MAAOqwD,KAAe,SAKjEK,GAAe,OAAuBT,qQC9E5C,qBAAoB,YAApB,kCACL,KAAA3c,OAAS,UAC2B,IAA9B31C,KAAKk2B,MAAMnxB,MAAMkwC,UAA0Bj1C,KAAKk2B,MAAM88B,gBACxDhzD,KAAKk2B,MAAMnxB,MAAMk3C,WAEjBj8C,KAAKk2B,MAAMnxB,MAAM4wC,QAAA,EAIrB,KAAAsd,eAAiBltD,IACD,UAAVA,EAAEsF,MACJtF,EAAE4/C,iBACF3lD,KAAK21C,SAAA,EAIT/e,SACE,MAAM,UAAEK,EAAY,SAAIlyB,EAAK,OAAEmuD,EAAM,gBAAEF,GAAoBhzD,KAAKk2B,OAC1D,KAAEnzB,EAAI,WAAEyc,EAAU,SAAE1D,EAAQ,KAAEm/B,GAASl2C,EACvCouD,GAAiBpuD,EAAM6I,OAAOitB,cAAgB91B,EAAM6I,OAAO2pC,WAE3DtC,OAA8B,IAAnBlwC,EAAMkwC,SAAyB+d,EAAkBjuD,EAAMkwC,SAElEplB,EACJ,gCACY,yBAATorB,GAAmC,gBAAC0V,GAAD,KAAe,uBACzC,sBAAT1V,GAAgC,gBAAC0V,GAAD,KAAe,oBAC/C70C,GAAY,gBAAC40C,GAAD,KAAe,aAI1B0C,EAAYD,EAChB,gBAAC/C,GAAD,CACEn5B,UAAWzX,EAAa,aAAe,GACvCy7B,OACA71C,MAAOrC,GAEP,gBAACgkD,GAAD,MACA,gBAAC,SAAD,CACEnB,QAAS5lD,KAAK21C,OACd0d,WAAYrzD,KAAKizD,eACjB,aAAW,qBAEX,gBAAC,OAAD,CAAMh8B,UAAU,iBAAiBl0B,GACjC,gBAACkjD,GAAD,CAAWM,UAAWtR,EAAW,OAAS,WAE3CplB,GAGH,gBAACg3B,GAAD,CAAkB5vB,UAAWzX,EAAa,kBAAe,EAAWy7B,OAAY71C,MAAOrC,GACrF,gBAACgkD,GAAD,MACA,gBAAC,OAAD,CAAM9vB,UAAU,iBAAiBl0B,GAChC8sB,GAIL,OACE,gCACE,gBAAC,KAAD,CAAIoH,UAAWi8B,EAAS,QAAUj8B,EAAYA,GAC3Cm8B,EACD,gBAACtM,GAAD,KACE,gBAACiM,4HAAD,IAAkB/yD,KAAKk2B,UAG1B+e,GAAYke,GACX,gBAAC,KAAD,CAAI9nD,IAAKtG,EAAMhC,KAAO,SACpB,gBAAC6jD,GAAD,CAAuB0M,QAAS,GAC9B,gBAACtM,GAAD,KACE,gBAACuM,GAAD,CACE3lD,OAAQ7I,EAAM6I,OACd0uC,aAAct8C,KAAKk2B,MAAMomB,aACzBC,cAAev8C,KAAKk2B,MAAMqmB,cAC1BiX,UAAWxzD,KAAKk2B,MAAMs9B,UACtB9hC,MAAO1xB,KAAKk2B,MAAMxE,WAAA,GAzE7B,sFADN,GAAAw/B,UACM,0DC3BA,qBAAoC,YAApC,kCA+CL,KAAAuC,kBAAqBC,SACA,IAAfA,EAAO/iC,KACT3wB,KAAKk2B,MAAMzqB,OAAOitC,cAAcgb,EAAO/iC,IAAA,EA7C3CgjC,YAAY/oD,EAA2BgpD,GACrC,GAA0B,IAAtBA,EAAW3yD,OACb,OAGF,MAAM4yD,EAAY,CAAC,EAEnBD,EAAWjtD,SAAQ,CAACmtD,EAAUnjC,KAC5BkjC,EAAUC,GAAYnjC,CAAG,IAG3B/lB,EAAQ+E,MAAK,CAACzG,EAAG0G,IACRikD,EAAU3qD,EAAE7G,OAASwxD,EAAUjkD,EAAEvN,OAAS,GAAK,GAAD,CAIzDu0B,SACE,MAAM,OAAEnrB,EAAM,WAAEmoD,GAAe5zD,KAAKk2B,MACpC,QAAqB,IAAjBzqB,EAAO4F,MACT,OAAO,KAGT,MAAMzG,EAAUa,EAAO4F,MAAM9Q,KAAI,CAACuR,EAAW6e,KACpC,CACLtuB,MAAOyP,EAAU1M,MACjBurB,UAIEojC,EAAcnpD,EAAQa,EAAO6sC,aAAaj2C,MAIhD,OAFArC,KAAK2zD,YAAY/oD,EAASgpD,GAGxB,gBAAC,GAAD,CACEvxD,MAAO0xD,EACPnpD,UACA0+C,SAAUtpD,KAAKyzD,kBACftD,UAAU,cA1CX,sFADN,GAAAe,UACM,ICaA,MAAM8C,IAAe,KAAA9C,WAC1B,EACEtjD,QAAU4vB,SAAS,GAAIp4B,SACvBouD,YACAv3C,gBACAqgC,eACAC,gBACA7qB,YAEA,MAAM,wBAAE8C,EAAuB,yBAAEI,EAAwB,qBAAEH,GACzD,aAAiB8C,IAEb08B,EAAiB,WACrB,IACE3X,GAAgBC,EACZ/e,EAAOjxB,QACL/L,KAEK87C,GAAgB97C,EAAKoN,OAAO+oC,UAC5B4F,GAAiB/7C,EAAKoN,OAAOgpC,aAGpCpZ,GACN,CAAC8e,EAAcC,EAAe/e,IAG1Bw1B,EACHx+B,GAAqD,IAA1By/B,EAAehzD,QAAiBwzB,GAAwB/C,EAEtF,OACE,gBAACu1B,GAAD,KACGuM,GAAa,gBAAC9M,GAAD,KAAyBthD,GACvC,gBAAC,QAAD,KACGkoB,EAAY2mC,GAAgB,CAAClvD,EAAOmuD,IAEjC,gBAACgB,GAAD,CACE7oD,IAAKtG,EAAMhC,KACXmwD,SACAnuD,QACAiuD,kBACAR,2BACE,MAAAv2C,OAAA,EAAAA,EAAeof,aAAct2B,EAAMhC,KAC/B,IACE,gBAACoxD,GAAD,CACE1oD,OAAQwQ,EAAem4C,aACvBR,WAAY7uD,EAAM6I,OAAO8V,YAG7B,EAENuT,UAAWlyB,EAAMkwC,SAAW,gBAAa,EACzCsd,aAAc39B,EACd0nB,eACAC,gBACAiX,YACA9hC,aAAA,mbCjEhB,MAAM2iC,GAAe,MAAU;kBACb,EAAGjrC,WAAiC,EAArBA,EAAMjC,QAAQC;EAGxC,MAAMktC,WAAoB,gBAC/B19B,SACE,MAAMhpB,EAAS5N,KAAKk2B,MAAMtoB,OACpB2mD,EAAc3mD,EAAO4D,MAErBgjD,OACgB,IAApB5mD,EAAOssB,eAA8C,IAApBtsB,EAAOqsB,SACpC,GACA,IAAI+C,GAAoBpvB,MAE9B,OAAIA,EAAO4vB,OACF,gBAACw2B,GAAD,SAAmBh0D,KAAKk2B,OAAxB,CAAuCxE,MAAO1xB,KAAKk2B,MAAMxE,UAE9D9jB,EAAO2xB,aAAgBg1B,GAAgBC,EAAYvzD,OASrD,gBAAC,MAAD,KACE,gBAAComD,GAAD,KAAoB,UAAQmN,GAC5B,gBAACH,GAAD,KACE,gBAACd,GAAD,SAAYvzD,KAAKk2B,OAAjB,CAAwBtoB,OAAQ2mD,MAElC,gBAACjN,GAAD,OAZA,gBAAC,MAAD,KACE,gBAACiJ,GAAD,KAAW3iD,EAAO2xB,aAWpB,wcCrBD,qBAA0B,YAA1B,kCAcL,KAAAmZ,cAAgB,KACd14C,KAAKk2B,MAAMtoB,OAAO8qC,cAAc14C,KAAKk2B,MAAMvF,IAAI,CAAJ,CAd7CiG,SACE,MAAM,IAAEjG,EAAG,OAAE/iB,EAAM,UAAEkE,GAAc9R,KAAKk2B,MACxC,OACE,gBAAC,GAAD,CACE1W,WAAY1N,EAAU0N,WACtBu9B,OAAQpsB,IAAQ/iB,EAAO0qC,YACvBsN,QAAS5lD,KAAK04C,eAEb5mC,EAAU1M,OAAS0M,EAAUumC,WAAavmC,EAAUytB,YAAA,GATtD,OADN,GAAA2xB,UACM,IAoBA,qBAA0B,YAC/Bt6B,SACE,MACEhpB,QAAQ,MAAEyD,GAAO,OACjBzD,GACE5N,KAAKk2B,MAET,QAAc,IAAV7kB,EACF,OAAO,KAET,MAAMojD,EAAepjD,EAAMzD,EAAO0qC,aAElC,OACE,gBAAC,MAAD,KACE,gBAAC6O,GAAD,KAAY,IAAEv5C,EAAOurC,UAAU,KAC/B,gBAAC+N,GAAD,KACG71C,EAAM9Q,KAAI,CAACuR,EAAW6e,IACrB,gBAAC,GAAD,CAAatlB,IAAKyG,EAAUrF,QAASmB,SAAgBkE,YAAsB6e,WAG/E,gBAAC,MAAD,KACGtf,EAAMzD,EAAO0qC,aAAa94B,YAAc,gBAACgnC,GAAD,CAAOlqC,KAAK,WAAU,eAEjE,gBAACw1C,GAAD,CAAiBhZ,YAAa2b,EAAa3b,cAC3C,gBAACya,+HAAD,IAAYvzD,KAAKk2B,eAAjB,CAAwBtoB,OAAQ6mD,aAAA,GAxBjC,OADN,GAAAvD,UACM,ICjCA,MAAMwD,IAAkB,KAAAxD,WAAS,EAAGtjD,YAEvC,gBAAC,MAAD,KACE,gBAAC2iD,GAAD,KAAW3iD,EAAO2xB,aACjB3xB,EAAOxI,OAAS,gBAACorD,GAAD,KAAW,IAAE5iD,EAAOxI,MAAM,KAC3C,gBAACwrD,GAAD,KAAgB,IAAElgC,EAAE,aAAa,ydCchC,qBAAqB,YAC1BkG,SA3BF,MA4BI,MAA4B,EAAA52B,KAAKk2B,OAAzBtoB,OAAAA,GAAoB,EAAT8oC,mKAAA,CAAS,EAAT,CAAX,WACFhlB,GAASglB,EAAKhlB,OAAS,GAAK,EAElC,IAAK9jB,EACH,OAAO,gBAAC,KAAD,KAAI,yBAEb,MAAM,KAAE0O,EAAI,MAAEjL,EAAK,kBAAEyoC,EAAiB,WAAEvC,GAAe3pC,EAEvD,GAAI2pC,EACF,OAAO,gBAACmd,GAAD,CAAiB9mD,WAG1B,QAA0B,IAAtBksC,EAAiC,CACnC,IAAKzoC,IAAUA,EAAMpQ,OAInB,OAHA+E,QAAQ6F,KACN,kGAAkG+B,EAAOxI,SAEpG,KAET,MAAMqvD,EAAepjD,EAAMzD,EAAO0qC,aAClC,OAAOmc,EAAald,WAClB,gBAACmd,GAAD,CAAiB9mD,OAAQ6mD,IAEzB,gBAACT,GAAD,SACMtd,GADN,CAEEhlB,QACA9jB,OAAQ6mD,EACRx4C,cAAe,CACbof,UAAWye,EACXsa,aAAcxmD,KAAA,CAMtB,QAAc,IAAVyD,EACF,OAAO,gBAACsjD,GAAD,IAAa/mD,UAAoB8oC,IAG1C,MAAMpY,EAAQ78B,EAAQ6a,GAAQA,EAAO,CAACA,GACtC,GAAIgiB,EAAMvD,SAAS,WACjB,GAAI,SAAAntB,EAAO4vB,aAAP,IAAev8B,OACjB,OAAO,gBAAC+yD,GAAD,SAAmBh0D,KAAKk2B,OAAxB,CAAuCxE,gBAAA,GAEvC4M,EAAMvD,SAAS,SACxB,OAAO,gBAACu5B,GAAD,SAAkBt0D,KAAKk2B,OAAvB,CAAsCxE,WAI/C,MAAM3sB,EAAQ,CACZ6I,SACA7K,KAAM,GACN+Y,UAAU,EACVzW,YAAauI,EAAOvI,YACpBwzC,aAAcjrC,EAAOirC,aACrBr5B,YAAY,EACZm2B,OAAQ,IAAM,KACdV,UAAU,GAGZ,OACE,gBAAC,MAAD,KACE,gBAAC8d,GAAD,CAAchuD,UAAA,GAhEf,sFADN,GAAAmsD,UACM,kSCNA,MAAM0D,WAAyB,gBAA/B,kCAwDG,KAAA1E,eAAiBh6B,IACvB,OACE,gBAAC4zB,+HAAD,EACEC,MAAOF,GACPR,SAAUoG,IACNv5B,WAHN,CAIEqjB,QAAQ,uCA7Dcsb,EAAmBC,GAC7C,IAAKD,EACH,MAAO,CAAC,EAGV,MAAMvyC,EAAyB,CAC7B1U,OAAQ,CAAEjC,KAAMkpD,IAOlB,OAJIC,IACFxyC,EAAK9B,SAAW,CAAEf,QAAS,CAAE9T,KAAMmpD,KAG9BxyC,CAAA,CAKGyyC,iBACV,MAAM,OAAE/2B,EAAM,UAAE62B,EAAS,WAAEC,EAAU,QAAElqD,GAAY5K,KAAKk2B,MAWxD,OAVKl2B,KAAKg1D,cACRh1D,KAAKg1D,YAAc,IAAI9Y,GACrBle,EACA,QACA,EACA42B,GAAiBK,aAAaJ,EAAWC,GACzClqD,IAIG5K,KAAKg1D,WAAA,CAGdp+B,SACE,MAAM,aAAEs+B,GAAe,EAAI,cAAEC,GAAgB,GAAUn1D,KAAKk2B,MAC5D,OACE,gBAACutB,GAAD,KACE,gBAACI,GAAD,KACE,gBAAC,GAAD,KACE,gBAAC0P,GAAD,CACEhX,eAAgB4Y,EAChB7Y,cAAe4Y,EACftnD,OAAQ5N,KAAK+0D,WAAWnnD,UAG5B,gBAACg2C,GAAD,KACE,gBAACwR,GAAD,KACE,gBAACzF,GAAD,CAAkBO,eAAgBlwD,KAAKkwD,eAAgBJ,UAAW9vD,KAAK+0D,gBAAA,EAoBrF,MAAMK,GAAmB,MAAU;gBACnB,EAAGhsC,WAAYA,EAAMuC,UAAUjD;;;eAGhCwN,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;;;;;;EClE/BiuC,IArBS,OAAU;;EAIH,MAAS;;;;;;;;;;;;;;;EAiBb,QAAW;eACrBn/B,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;iBACnCmM,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;;;;;;;;;;;;GAgBzCkrC,GAA6B,QAAW;;;;;;;;;;IAUjDtL;EAGSuL,GAA4B,QAAW;IAChD//C,IAAMA,EAAEy/B,UAAY;;;MAGlBz/B,GAAKA,EAAEy/B,UAAY;;;;;;;;;IASrB+U;EAGSwL,GAAmB,OAAU;;;EAK7BC,GAAmB,OAAU;WAC/Bv/B,GAASA,EAAM9M,MAAMxb,OAAO0b;;;;IAInC9T,GACAA,EAAEy/B,UACF,eAAez/B,EAAE4T,MAAMzB,OAAOW,KAAK;IAKnChQ,EAAMwd,SAAS;;;EAKN4/B,GAAa,IAAOvR,GAAiB;;;EAKrCiG,GAAO,OAAU;;;;oBAIV50C,GAAMA,EAAEy/B,SAAW,SAAW;IAC9C38B,EAAMwd,SAAS;;;EAKN6/B,GAAc,OAAU;;EAIxBC,GAAuB,OAAU;6BACjB,EAAGxsC,WAAYA,EAAMzB,OAAOa,OAAOR;;;;;;;iBAO/C,EAAGoB,WAAYA,EAAMU,WAAWC;;;;;;EChH1C,SAAS8rC,IAAQ,SAAE/+B,EAAQ,OAAEI,IAClC,MAAMlyB,EAAM,eACL8wD,EAAUC,GAAe,YAAe,IACxCC,EAAUC,GAAe,YAAe,GAY/C,OAVA,aAAgB,KACVjxD,EAAImqD,SAAWnqD,EAAImqD,QAAQriC,aAbd,GAa4C9nB,EAAImqD,QAAQ+G,cACvED,GAAY,KAEb,CAACjxD,IAOF,gCACE,gBAACmxD,GAAD,CACEnxD,MACAiyB,UAAW6+B,EAAW,GAAK,YAC3Bt8C,MAAO,CAAE0d,OAAQ4+B,EAAW,OAAS5+B,IAEpCJ,GAEH,gBAACs/B,GAAD,CAAiBC,QAASP,GACvBE,GACC,gBAACM,GAAD,CAAkB1Q,QAfN,KAClBmQ,GAAaD,EAAS,GAebA,EAAW,WAAa,cAQrC,MAAMK,GAAY,OAAU;;EAItBC,GAAkB,OAAU;;;IAG9B,EAAGC,YACHA,GACA;EAQEC,GAAmB,KAAQ;;ECQpBC,GAAY,QA1DlB,SAA4BrgC,GACjC,MAAM,KAAE5Z,EAAI,KAAE2B,EAAI,eAAEu4C,GAAmBtgC,EACjCugC,EAAc9zD,OAAO8L,MAAK,MAAAwP,OAAA,EAAAA,EAAMI,SAAU,CAAC,GAEjD,OACE,gCACE,gBAACs3C,GAAD,KACE,gBAAC,IAAD,KAAG,eACH,gBAAC,OAAD,KAAOr5C,EAAK,OAEH,aAATA,GAAgC,sBAATA,IACvB,gBAACq5C,GAAD,KACE,gBAAC,SAAD,KAAQ,wBACR,gBAAC,OAAD,KACE,gBAAC,IAAD,CAAG7pD,OAAO,SAASwjD,IAAI,sBAAsBpgC,KAAOjR,EAAaE,kBAC7DF,EAAaE,qBAKZ,aAAT7B,GAAgC,sBAATA,GAAyC,sBAATA,IACvD,gBAACq5C,GAAD,KACE,gBAAC,IAAD,KAAG,gBACH,gBAAC,OAAD,KAAQ13C,EAAaG,WAGxBH,EAAMy4C,YACL,gBAACf,GAAD,KACE,gBAAC,SAAD,KAAQ,kBACP13C,EAAMy4C,cAGRD,EAAYx1D,QACb,gCACGu1D,GAAkB,KACnB,gBAACb,GAAD,KACE,gBAAC,IAAD,KAAG,cAEL,gBAACE,GAAD,CAAS3+B,OAAO,OACd,gBAAC,KAAD,KACGu/B,EAAYl2D,KAAIo2D,GACf,gBAAC,KAAD,CAAItrD,IAAKsrD,GACP,gBAAC,OAAD,KAAOA,GAAa,KAAG,IACvB,gBAACpM,GAAD,CACEtzB,UAAW,iBACXoR,QAAQ,EACRrkC,OAAQia,EAAMI,OAAOs4C,IAAU,eC/C5C,SAASC,GAAgB1gC,GAC9B,MAAM,eAAEsgC,EAAc,OAAEx4C,GAAWkY,EAEnC,OACE,gBAAC+zB,GAAD,KACGjsC,EAAO6gC,OACN,gCACE,gBAAC8W,GAAD,KACE,gBAAC,IAAD,KAAItmC,EAASrR,EAAO6gC,OAAOt/B,IAAM,IAAI,qBACrC,gBAAC,OAAD,KAAOvB,EAAO6gC,OAAO97C,OAEtByzD,GAEDx4C,EAAOiH,KACT,gCACE,gBAAC0wC,GAAD,KACE,gBAAC,IAAD,KAAG,+BACH,gBAAC,OAAD,KAAO33C,EAAOiH,KAAKjH,SAErB,gBAAC23C,GAAD,KAC0B,WAAvB33C,EAAOiH,KAAKjH,QAAuBA,EAAOiH,KAAK65B,cAC9C,gCACE,gBAAC,IAAD,KAAG,mBACH,gBAAC,OAAD,KAAO9gC,EAAOiH,KAAK65B,gBAIxB0X,GAEDx4C,EAAO+gC,OACT,gCACE,gBAAC4W,GAAD,KACE,gBAAC,IAAD,KAAG,iBACH,gBAAC,OAAD,KACE,gBAAC,IAAD,CAAG7pD,OAAO,SAASwjD,IAAI,sBAAsBpgC,KAAMlR,EAAO+gC,OAAOC,YAC9DhhC,EAAO+gC,OAAOC,cAIpBwX,GAEDx4C,EAAOM,MACT3b,OAAO8L,KAAKuP,EAAOM,OAAO/d,KAAI+b,GAC5B,gBAACi6C,GAAD,CACElrD,IAAKiR,EACLA,OACAk6C,iBACAv4C,KAAMD,EAAOM,MAAMhC,OAGrB,MCrDH,MAAMu6C,GAAa,CACxBC,OAAQ,SACRjY,OAAQ,UACR55B,KAAM,OACN8xC,cAAe,kBAOV,MAAMC,WAAqB,gBAChCpgC,SACE,OAAO52B,KAAKk2B,MAAMnS,gBAAgBzC,QAAQ/gB,KAAIyd,GAC5C,gBAACylC,GAAD,CAAStjD,GAAI6d,EAAO82B,UAAWzpC,IAAK2S,EAAO7d,IACzC,gBAAC0jD,GAAD,KACE,gBAAC,GAAD,KACE,gBAACI,GAAD,KACE,gBAAC4B,GAAD,CAAWtyC,GAAIyK,EAAO82B,YACrB92B,EAAO62B,aAEV,gBAAC0V,GAAD,CAAUvmD,OAAQga,EAAO3Y,aAAe,KACxC,gBAACuwD,GAAD,KACE,gBAACD,GAAD,KACE,gBAAC,IAAD,KAAG,0BACH,gBAAC,OAAD,KAAOkB,GAAW74C,EAAO1B,OAAS0B,EAAO1B,OAE3C,gBAACs6C,GAAD,CAAiB54C,gBAAA,kNCXxB,YACL,EACA,GAEA,oCAHAsa,EACAoG,EACA9zB,EAA2B,CAAC,GAE5B,MAAM45C,QAAqBG,GAAkBrsB,GAAQoG,GACrD,OAAO,IAAIkmB,GAASJ,EAAc9lB,EAAS9zB,EAAA,IAGtC,MAAMg6C,GA0BX9hD,YACEw1B,EACAoG,EACA9zB,EAA2B,CAAC,EAC5BqsD,GAA6B,GAT/B,KAAAC,OAAS,IAAIl0B,GAGL,KAAAm0B,SAA0B,KAQhCn3D,KAAKo3D,WAAaxsD,EAClB5K,KAAK4K,QAAU,IAAIsmB,EAAuBtmB,EAASysD,IACnDr3D,KAAKghD,OAAS,IAAIyB,GAAcziD,KAAK4K,SAGrCm2C,GAAA,gBAA0B,aAAmB/gD,KAAKghD,QAElDhhD,KAAKs4B,KAAO,IAAI6mB,GAAU7mB,EAAMoG,EAAS1+B,KAAK4K,SAC9C5K,KAAKkyB,KAAO,IAAI6uB,GAAU/gD,KAAKs4B,KAAMt4B,KAAKghD,OAAQ,IAE7ChhD,KAAK4K,QAAQ6oB,gBAChBzzB,KAAKqE,OAAS,IAAI8+C,GACd8T,GACFj3D,KAAKqE,OAAOi/C,WAAWtjD,KAAKkyB,KAAK1gB,OAGnCxR,KAAKm3D,UAAW,KAAAG,SAAQt3D,KAAKkyB,KAAM,iBAAiBqlC,IAClDv3D,KAAKw3D,iBAAiBD,EAAO5gD,SAAA,mBA3CrBxQ,GACZ,MAAMk9B,EAAO,IAAIuhB,GAASz+C,EAAMmyB,KAAK10B,KAAMuC,EAAMmyB,KAAKzuB,IAAK1D,EAAMyE,SAAS,GAM1E,OALAy4B,EAAKnR,KAAK+uB,cAAgB96C,EAAM+rB,KAAK+uB,eAAiB,EACtD5d,EAAKnR,KAAK4qB,SAASzZ,EAAKnR,KAAKqvB,UAAUle,EAAKnR,KAAK+uB,gBAC5C5d,EAAKz4B,QAAQ6oB,eAChB4P,EAAKh/B,OAAQE,KAAK4B,EAAMsxD,aAEnBp0B,CAAA,CAyCTq0B,aACE13D,KAAKkyB,KAAK0vB,kBACV5hD,KAAKw3D,iBAAiBx3D,KAAKkyB,KAAK+uB,cAAA,CAGlCz8C,UACExE,KAAKghD,OAAOx8C,UACZxE,KAAKkyB,KAAK1tB,UACNxE,KAAKqE,QACPrE,KAAKqE,OAAOG,UAEO,MAAjBxE,KAAKm3D,UACPn3D,KAAKm3D,UAAA,CASH7yD,OAA4B,iCAChC,MAAO,CACL4tB,KAAM,CACJ+uB,cAAejhD,KAAKkyB,KAAK+uB,eAE3B3oB,KAAM,CACJzuB,IAAK7J,KAAKs4B,KAAK0F,OAAOU,QACtB96B,KAAM5D,KAAKs4B,KAAK0F,OAAO1F,MAEzBm/B,YAAaz3D,KAAKqE,aAAerE,KAAKqE,OAAOC,YAAS,EACtDsG,QAAS5K,KAAKo3D,WAAA,IAIVI,iBAAiB7mC,GACvB,MAAMpc,EAAQid,KAAKC,IAAI,EAAGd,GACpBxc,EAAMqd,KAAKqL,IAAI78B,KAAKkyB,KAAKqvB,UAAUtgD,OAAQsT,EAAQ,GAEnD6uB,EAAsB,GAC5B,QAASxiC,EAAI2T,EAAO3T,EAAIuT,EAAKvT,IAAK,CAChC,MAAM0iC,EAAOtjC,KAAKkyB,KAAKwvB,aAAa9gD,GAC/B0iC,GAGLF,EAASljC,KAAKojC,EAAA,CAGhB,IAAa,IAAT3S,GAAc9E,EAAY,CAC5B,MAAM8rC,EAAej+C,SAASC,cAAc,mCACtCi+C,EAAWl+C,SAASC,cAAc,+BAEpCg+C,GAAcv0B,EAASljC,KAAKy3D,GAC5BC,GAAUx0B,EAASljC,KAAK03D,EAAA,CAG9B53D,KAAKk3D,OAAO/zB,QAAQC,GACpBpjC,KAAKk3D,OAAOxzB,MAAA,EAIhB,MAAM2zB,GAAmC,CACvCriC,oBAAqB,EAClB4J,IAAgC,CAC/BqV,UAAW+iB,GACX9iB,cAAgBrvC,IAAqB,CACnCkf,gBAAiBlf,EAAMyzB,KAAKvU,mBAAA,CAG/B8a,IAAoC,CACnCoV,UAAW+iB,GACX9iB,cAAgBrvC,IAAqB,CACnCkf,gBAAiBlf,EAAMyzB,KAAKvU,mBAAA,CAG/B+a,IAA6B,CAC5BmV,UAAW2gB,GACX1gB,cAAgBrvC,IAAqB,CACnCm5B,OAAQn5B,EAAMyzB,KAAK0F,OACnBpzB,QAAS/F,EAAM+F,aC/JVitD,GAAY,GAAO7T,GAAG;;;;IAI/BhyB,GAAe;EAGN8lC,GAAiB,IAAQ;sBAChB5hC,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;WAC/C6R,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;;;;;;;IAQ3C2N,GAAe;EAGN+lC,GAAW,OAAW;;;;;aAxBZ;;;;;;;EAsCVC,GAAkB,MAAU;;EAI5BC,GAAc,MAAU;;;;kBA1Cd;wDCoBhB,qBAAsB,YAAtB,kCACL,KAAAC,oBAAsBnyD,IACfA,EAAE+F,OAAOojB,OACZnpB,EAAE+F,OAAOojB,KAAOlvB,KAAKk2B,MAAMrxB,MAAMyzB,KAAKhW,KAAKiyB,aAAA,EAI/C3d,SACE,MAAM,MAAE/xB,GAAU7E,KAAKk2B,OACjB,KAAE5T,EAAI,aAAEu2B,GAAiBh0C,EAAMyzB,KAC/BhF,EAAqBzuB,EAAM+F,QAAQ0oB,mBAEnC6kC,EAAmB71C,EAAKiR,iBACxBghB,EAAejyB,EAAKiyB,aAEpB6jB,EACH91C,EAAK81C,SACJ,gBAACL,GAAD,KAAU,WACC,IACRz1C,EAAK81C,QAAQrgD,WACZuK,EAAK81C,QAAQrgD,WAEb,gBAAC,IAAD,CAAGmX,KAAM5M,EAAK81C,QAAQvuD,KAAMyY,EAAK81C,QAAQr1D,QAI/C,KAEIs1D,EACH/1C,EAAKg2C,SAAWh2C,EAAKg2C,QAAQzuD,KAC5B,gBAACkuD,GAAD,KAAU,QACH,gBAAC,IAAD,CAAG7oC,KAAM5M,EAAKg2C,QAAQzuD,KAAMyY,EAAKg2C,QAAQzuD,OAGlD,KAEI0uD,EACHj2C,EAAKg2C,SAAWh2C,EAAKg2C,QAAQC,OAC5B,gBAACR,GAAD,KACGz1C,EAAKg2C,QAAQv1D,MAAQ,SAAS,IAAE,IACjC,gBAAC,IAAD,CAAGmsB,KAAM,UAAY5M,EAAKg2C,QAAQC,OAAQj2C,EAAKg2C,QAAQC,SAG3D,KAEIC,EACHl2C,EAAKG,gBACJ,gBAACs1C,GAAD,KACE,gBAAC,IAAD,CAAG7oC,KAAM5M,EAAKG,gBAAgB,sBAGlC,KAEIF,EAAWD,EAAKC,SAAW,gBAAC,OAAD,KAAM,IAAED,EAAKC,QAAQ,MAAa,KAEnE,OACE,gBAACkhC,GAAD,KACE,gBAACI,GAAD,KACE,gBAAC,GAAD,CAAa5sB,UAAU,YACrB,gBAAC4gC,GAAD,KACGv1C,EAAKld,MAAM,IAAEmd,IAEd+Q,GACA,gBAAC,IAAD,KACG5C,EAAE,yBAAyB,IAC5B,gBAAConC,GAAD,CACEznC,SAAU8nC,IAAoB,EAC9BrsD,OAAO,SACPojB,KAAMqlB,EACNqR,QAAS5lD,KAAKk4D,qBAEbxnC,EAAE,cAIT,gBAACu5B,GAAD,MACK3nC,EAAK81C,SAAW91C,EAAKg2C,SAAWh2C,EAAKG,iBACtC,gBAACu1C,GAAD,KACE,gBAACC,GAAD,KACGM,EAAM,IAAEF,EAAQ,IAAED,EAAQ,IAAEI,KAIjC,MAEJ,gBAACjO,GAAD,CAAUvmD,OAAQa,EAAMyzB,KAAKhW,KAAKvB,QAAS,YAAU,kBACrD,gBAACwpC,GAAD,CAAUvmD,OAAQa,EAAMyzB,KAAKhW,KAAKjd,YAAa,YAAU,sBACxDwzC,GAAgB,gBAACia,GAAD,CAAuBja,mBAAA,GAvF7C,sFADN,GAAAqY,UACM,ICpBA,MAAMuH,GAAY,MAAU;gBACnBviC,GAASA,EAAM9M,MAAM5G,KAAK8I;eAC3B4K,GAASA,EAAM9M,MAAM5G,KAAK+I;aAC5B2K,GAASA,EAAM9M,MAAM5G,KAAKgJ;;;EAK1BktC,GAAW,MAAU;;EAI5B,GAAO,IAAQ;;wDCTd,qBAAsB,YAC3B9hC,SACE,MAAM,KAAEtU,GAAStiB,KAAKk2B,MAChByiC,EAAWr2C,EAAK,UACtB,IAAKq2C,IAAaA,EAAS9uD,IACzB,OAAO,KAGT,MAAM+uD,EAAWD,EAASzpC,MAAS5M,EAAKg2C,SAAWh2C,EAAKg2C,QAAQzuD,IAG1DgvD,EAAUF,EAASE,QAAUF,EAASE,QAAU,OAEhDr2C,EAAO,gBAACi2C,GAAD,CAAWhuD,IAAKkuD,EAAS9uD,IAAKivD,IAAKD,IAChD,OACE,gBAACH,GAAD,CAAUl/C,MAAO,CAAEkP,gBAAiBiwC,EAASjwC,kBAC1CkwC,GDFe/uD,ECEK+uD,EDFEG,GAAa,gBAAC,GAAD,CAAM7pC,KAAMrlB,GAAMkvD,ICEvBv2C,GAAQA,GDFvB,IAAA3Y,CCEuB,GAhBxC,sFADN,GAAAqnD,UACM,8VCQA,MAAM8H,WAAyB,YACpCpiC,SACE,OACE,gBAACc,GAAD,MACG9sB,GACC,gBAAC,GAAD,MAAgB/F,GAAS7E,KAAKi5D,0BAA0BruD,EAAS/F,MAAA,CAMzEo0D,0BAA0BruD,EAAiC/F,GACzD,MAAM,OAAEb,EAAM,SAAEk1D,EAAW,CAAAt4D,GAAKA,IAAMZ,KAAKk2B,MAC3C,IAAKrxB,EACH,MAAM,IAAIiB,MAAM,kEAGlB,MACM8Q,EADW,IAAIy7B,GAAiBznC,EAAS5K,KAAKk2B,MAAMoc,UACnCoB,uBAAuB1vC,GAE9C,OAAK4S,EAAM3V,OAIJ2V,EAAMrW,KAAI,CAAC43C,EAAMxnB,KACtB,GAAoB,iBAATwnB,EACT,OAAO,eACL+gB,EAAS,gBAAC/O,GAAD,CAAuBn+B,KAAMmsB,EAAM9P,QAAQ,EAAOmb,SAAS,KACpE,CAAEn4C,IAAKslB,IAGX,MAAMwoC,EAAgBhhB,EAAKlE,UAC3B,OAAO,gBAACklB,EAAD,IAAe9tD,IAAKslB,GAAS,SAAKwnB,EAAKjiB,OAAUiiB,EAAKjE,cAAcrvC,KAAA,IAXpE,IAWoE,EC9CjF,IAAI,GAA+BX,QAAQ,yBCMpC,MAAMk1D,GAAiB,eAAmBljC,IAA6B,CAC5Ee,UAAW,kBAAkBf,EAAM5Z,UAAA;;;YAIzB4Z,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;iBAChCmM,GAASA,EAAM9M,MAAMU,WAAW1X,KAAK2X;;;;;;;;;;;;;;;;wBAgB9BmM,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAKnP;;;;wBAIjCogB,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAK6D;;;;wBAIjCoN,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAK8D;;;;wBAIjCmN,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAKra;;;;wBAIjCsrB,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAKxV;;;;wBAIjCymB,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAK+D;;;;wBAIjCkN,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAKgE;;;;wBAIjCiN,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAKiE;;;;wBAIjCgN,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAKlL;;;;wBAIjCmc,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;EAI5D,SAASg1C,GACPtqD,GACA,MAAEqa,GACFsqC,GAEA,OAAI3kD,EAAQ,EACHqa,EAAM0B,QAAQO,YAAYqoC,GACd,IAAV3kD,EACFqa,EAAM0B,QAAQI,WAAWwoC,GAEzB,GAIJ,MAAM4F,GAAa,KAAS;;;;;;;;;;;;IAY/BpjC,GAAUA,EAAM+e,SAAW,GAAK;EAGvBskB,GAAa,KAAS;;;;;IAK/BrjC,GAA0B,IAAhBA,EAAMnnB,MAAc,mBAAqB;EAG1CyqD,GAAgB,CAC3B,EAAGnhD,CAAG;;sBAEc,EAAG+Q,WAAYA,EAAM0B,QAAQI,WAAWE;;;;IAK5D,EAAG/S,CAAG;;sBAEc,EAAG+Q,WAAYA,EAAM0B,QAAQO,YAAYD;KAWlDquC,GAAgB,gBAAoBvjC,IAA8B,CAC7EwjC,KAAM,WACNziC,UAAW,KAAW,SAAWf,EAAMnnB,MAAO,CAC5CguC,OAAQ7mB,EAAM6mB,YAAA;;WAIP7mB,GACPA,EAAM6mB,OACFsc,GAAenjC,EAAMnnB,MAAOmnB,EAAO,mBACnCA,EAAM9M,MAAM0B,QAAQE;;oBAERkL,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;IAC7C,EAAGrY,QAAOuN,OAAM8M,WACN,YAAT9M,GAAsBvN,EAAQ,GAAK,iBAAwC,EAArBqa,EAAMjC,QAAQC,KAAW,OAAU;;;iBAG7E8O,GAASA,EAAM9M,MAAMU,WAAWS,SAASH;IACtD8L,GAASsjC,GAActjC,EAAMnnB;sBACXmnB,GAClBA,EAAM6mB,OACFsc,GAAenjC,EAAMnnB,MAAOmnB,EAAO,yBACnCA,EAAM9M,MAAM0B,QAAQpC;;IAExBwN,GAAUA,EAAM1W,YAAcinC,IAAkB;;;aAGvCvwB,GAASmjC,GAAenjC,EAAMnnB,MAAOmnB,EAAO;wBACjCA,GAASmjC,GAAenjC,EAAMnnB,MAAOmnB,EAAO;;;IAGhE+vB;cACU,EAAG78B,WAAYA,EAAM0B,QAAQjB,MAAMjhB;aACpC,EAAGwgB,WAAYA,EAAM0B,QAAQjB,MAAMjhB;;cAElC,EAAGwgB,WAAYA,EAAM0B,QAAQjB,MAAMpB;;;EAKpCkxC,GAAgB,OAAW;;;WAG7BzjC,GAAUA,EAAMnL,MAAQmL,EAAMnL,MAAQ;;;EAKpC6uC,GAAmB,MAAU;IACtC,EAAGxwC,WAAY/Q,CAAG;;kBAEiB,EAArB+Q,EAAMjC,QAAQC;;;aAGnBgC,EAAM0B,QAAQC;;kBAET3B,EAAM0B,QAAQpC;;;;;eAKjBU,EAAM0B,QAAQE;iBACZ5B,EAAMjC,QAAQC;+BACD,IAAAa,QAAO,GAAKmB,EAAM0B,QAAQpC;;;;;;;;;;;;IAYpDpQ,EAAMwd,SAAS;;;ECzKb+jC,GAAuB,SAAa;;;;;;;;IAQtC5T;;cAEU,EAAG78B,YAAY,IAAAnB,QAAOmB,EAAMzB,OAAOC,YAAawB,EAAMzB,OAAOW,KAAK;;;EAK1EwxC,GAAe,OAAW;qBACX5jC,GAAUA,EAAM1W,WAAa,eAAiB;;EAI7Du6C,GAAuB,GAAOX,GAAe;;EChDtCY,GAAsB,IDeL9jC,IAC5B,MAAM,KAAEnzB,EAAI,OAAEk3D,EAAM,UAAEhjC,EAAS,QAAE2uB,EAAO,SAAEpQ,EAAQ,WAAEh2B,GAAe0W,EAEnE,OACE,gBAAC2jC,GAAD,CAAsB5iC,YAAsB2uB,QAASA,QAAW,GAC9D,gBAACmU,GAAD,CAAsBz9C,KAAMk5B,GAAWvW,GAAgBuW,IACvD,gBAACyQ,GAAD,CAAWr9C,KAAM,QAAS29C,UAAW0T,EAAS,OAAS,QAAS3T,MAAO,SACvE,gBAACwT,GAAD,CAAct6C,cAAyBzc,GACtCyc,EAAa,gBAACgnC,GAAD,CAAOlqC,KAAK,WAAU,IAAEoU,EAAE,cAAc,KAAY,QCvBhB;;;;;sBAKlC,EAAGtH,WAAYA,EAAMzB,OAAOW,KAAK;;mBAEpC,EAAGc,YAAY,IAAAnB,QAAOmB,EAAMzB,OAAOC,YAAawB,EAAMzB,OAAOW,KAAK;EAGxE4xC,GAAsB,MAAU;;sBAEvB,EAAG9wC,WAAYA,EAAMzB,OAAOW,KAAK;;;ECZhD,MAAM6xC,WAAsB,gBAA5B,kCAEL,KAAApO,cAAgB,KACdb,GAAA,cAA+BlrD,KAAKq3C,MAAM,CAAN,CAGtCzgB,SACE,MAAM,SAAEE,GAAa92B,KAAKk2B,MAC1B,OACE,gBAAC,MAAD,CACElxB,IAAKmnB,GAAOnsB,KAAKq3C,MAAQlrB,EACzBy5B,QAAS5lD,KAAK+rD,cACdqO,QAASp6D,KAAK+rD,cACdsO,SAAU,EACVX,KAAK,UAEJ5iC,EAAA,EClBF,MAAMwjC,GAAwB,MAAU;;;;EAMlCC,GAAoB,OAAW;iBAC3BrkC,GAASA,EAAM9M,MAAMU,WAAW1X,KAAKgY;;;;;EAOzCowC,GAAe,SAAa;;;;;;4BAMbtkC,GAAUA,EAAMukC,SAAW,OAAS;mBAC7CvkC,GAAUA,EAAMukC,SAAW,IAAM;sBAC9BvkC,GAClBA,EAAMukC,SAAW,cAAgBvkC,EAAM9M,MAAMuC,UAAUjD;;;;YAI/CwN,GAAUA,EAAMukC,SAAW,IAAM;mBAC1BvkC,GAAUA,EAAMukC,SAAW,iBAAmB;;;IAG7DvkC,GACCA,EAAM+e,WAAa/e,EAAMukC,UAAY,iBAAiBvkC,EAAM9M,MAAMzB,OAAOa,OAAOR,SAAY;;KAE5FuyC;aACQrkC,GAAUA,EAAMukC,SAAWvkC,EAAM9M,MAAMzB,OAAOha,KAAKka,QAAU;;;;;EAO7D6yC,GAAW,eAAmBxkC,IAAgD,CACzFe,UAAW,aAAaf,EAAM5Z,UAAA;eAEjB4Z,GAAUA,EAAMstB,QAAU,QAAU;iBAClCttB,GAAUA,EAAMstB,QAAU,OAAS;sBAC9BttB,GAASA,EAAM9M,MAAMzB,OAAO1C,KAAKiR,EAAM5Z,OAAS;;aAEzD4Z,GAAUA,EAAMstB,QAAU,UAAY;;iBAElCttB,GAASA,EAAM9M,MAAMU,WAAWS,SAASH;;EAI7CuwC,GAAiB,MAAU;;;;gBAIxBzkC,GAASA,EAAM9M,MAAMqC,WAAWzK,QAAQ0K,QAAQhD;WACrDwN,GAASA,EAAM9M,MAAMqC,WAAWzK,QAAQ0K,QAAQV;;;;;;;;IAQvDkL,GAAUA,EAAM+e,SAAW,uBAAyB;EAG3C2lB,GAAa,MAAU;;EAIvBC,GAAY,MAAU;;;gBAGnB3kC,GAASA,EAAM9M,MAAMqC,WAAWzK,QAAQnX,IAAI6e;;WAEjDwN,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;aAElC6R,GAASA,EAAM9M,MAAMzB,OAAOha,KAAKka;;ECtDvC,MAAMizC,WAAiB,YAC5Bh4D,YAAYozB,GACV1a,MAAM0a,GAMR,KAAAyf,OAAS,KACP31C,KAAK22B,SAAS,CAAEse,UAAWj1C,KAAKmG,MAAM8uC,UAAW,EANjDj1C,KAAKmG,MAAQ,CACX8uC,UAAU,GAQdre,SACE,MAAM,UAAEwC,EAAS,SAAEqhC,EAAQ,aAAE/nC,GAAiB1yB,KAAKk2B,OAC7C,SAAE+e,GAAaj1C,KAAKmG,MAG1B,OACE,gBAACoxB,GAAeI,SAAhB,MACG/sB,GACC,gBAAC0vD,GAAD,KACE,gBAACE,GAAD,CAAc5U,QAAS5lD,KAAK21C,OAAQV,WAAoBwlB,YACtD,gBAACC,GAAD,CAAUp+C,KAAM8c,EAAUoc,SAAUgO,QAASxjD,KAAKk2B,MAAMstB,SACrDpqB,EAAUoc,UAEb,gBAAC+kB,GAAD,KAAoBnhC,EAAU1zB,MAC9B,gBAACugD,GAAD,CACEK,MAAO,QACP79B,MAAOgyC,EAAW,QAAU,QAC5B7xD,KAAM,OACN29C,UAAWtR,EAAW,KAAO,OAC7Bz7B,MAAO,CAAEuhD,YAAa,YAG1B,gBAACJ,GAAD,CAAgB1lB,WAAoB,eAAcA,GAC/C7b,EAAUpY,QAAQzgB,KAAIghB,IACrB,MAAMy5C,EAAgBpwD,EAAQqqB,6BAC1BA,GAA6B1T,EAAO1X,IAAK0X,EAAOa,WAChDb,EAAO1X,IACLwZ,EAAW8L,EAAY6rC,GAC7B,OACE,gBAACJ,GAAD,CAAYvvD,IAAK2vD,GACf,gBAACzQ,GAAD,CAAUvmD,OAAQud,EAAOlc,aAAe,GAAIm+C,SAAS,IACrD,gBAAC2W,GAAD,KACE,gBAACU,GAAD,KACE,gBAAC,OAAD,KACGnoC,GAAgB9nB,EAAQ8nB,aACR,MAAbrP,EACE,GACAA,EACF23C,GAEL5hC,EAAU1zB,OAAA,SCnE5B,MAAMu1D,WAAwB,gBACnCrkC,SACE,MAAM,MAAEskC,EAAK,WAAE77C,GAAerf,KAAKk2B,MACnC,OAAK7W,GAAeA,EAAWpe,OAK7B,gBAAC,MAAD,CAAKoK,IAAK6vD,GACR,gBAAC/W,GAAD,KAAmB+W,EAAM,eACzB,gBAACjU,GAAD,KACE,gBAAC,QAAD,KACG35B,EAAYjO,GAAY,CAACta,EAAOmuD,IAC/B,gBAACgB,GAAD,CAAO7oD,IAAKtG,EAAMhC,KAAMmwD,SAAgBnuD,QAAcwtD,cAAc,SATrE,IASqE,wDCP3E,qBAA+B,YAA/B,kCACL,KAAA1C,YAAc,EAAGl/B,UACX3wB,KAAKk2B,MAAMz1B,cAAmB,IAARkwB,GACxB3wB,KAAKk2B,MAAMz1B,QAAQq8C,SAASnsB,EAAA,EAIhCiG,SACE,MAAM,QAAEn2B,GAAYT,KAAKk2B,MACzB,IAAKz1B,IAAYA,EAAQo8C,aAAep8C,EAAQo8C,WAAW57C,OACzD,OAAO,KAET,MAAM27C,EAAgBn8C,EAAQm8C,cAExBhyC,EAAUnK,EAAQo8C,WAAWt8C,KAAI,CAACs7B,EAAMlL,KACrC,CACLtuB,MAAOw5B,EAAK94B,KACZ4tB,UAIE85B,EAAU,EAAG3zB,cACjB92B,KAAKk2B,MAAMilC,UACT,gBAAC3L,GAAD,KACE,gBAACD,GAAD,KAAe,gBACdz4B,GAGHA,EAGJ,OACE,gCACE,gBAAC2zB,EAAD,KACGzqD,KAAKk2B,MAAMg6B,eAAe,CACzB7tD,MAAOuI,EAAQgyC,GAAev6C,MAC9BuI,UACA0+C,SAAUtpD,KAAK6vD,YACfM,UAAW,kBAGdnwD,KAAKk2B,MAAMY,SAASr2B,EAAQs8C,QAAA,GAzC9B,sFADN,GAAAmU,UACM,mOCKP,MAAMkK,GAAe,CAAC,OAAQ,QAAS,SAAU,UAE1C,MAAMC,WAAmB,gBAC9BC,YAAYt1C,GACV,MAAMhf,EAAM,CAAC,EAIb,OAHAgf,EAAOrf,SAAQkY,IAjBnB,IAAkBtU,EAAKsH,EAAMrR,IAkBCqe,GAlBZtU,EAkBHvD,GAlBQ6K,EAkBHgN,EAAMU,MAhBtBhV,EAAIsH,GAAQ,IAEdtH,EAAIsH,GAAM3R,KAAKM,EAcmB,IAEzBwG,CAAA,CAGT4vB,SACE,MAAM,KAAEhV,EAAI,WAAEvC,EAAa,IAAOrf,KAAKk2B,MACvC,QAAa,IAATtU,QAAqC,IAAfvC,EACxB,OAAO,KAGT,MAAMk8C,EAAYv7D,KAAKs7D,YAAYj8C,GAE7Bm8C,EAAen8C,EAAWpe,OAAS,EAAIm6D,GAAe,GAEtDK,EAAc75C,GAAQA,EAAKnhB,QAE3Bi7D,EAAkB95C,GAAQA,EAAKvc,YAErC,OACE,gCACGm2D,EAAaj7D,KAAI26D,GAChB,gBAACD,GAAD,CAAiB5vD,IAAK6vD,EAAOA,QAAc77C,WAAYk8C,EAAUL,OAElEO,GAAe,gBAACE,GAAD,CAAal7D,QAASg7D,EAAap2D,YAAaq2D,IAAA,EAMxE,SAASE,GAAqB1lC,GAC5B,OACE,gBAACiuB,GAAD,CAAkB94C,IAAI,UAAS,wBACR,gBAACy+C,4HAAD,IAAqB5zB,IAAA,CAKzC,SAASylC,GAAYzlC,GAI1B,MAAM,QAAEz1B,EAAO,YAAE4E,GAAgB6wB,GAC3B,cAAEimB,GAAkB17C,EAC1B,OACE,gBAACo7D,GAAD,CAAkBp7D,UAAkByvD,eAAgB0L,KACjD,EAAGhuD,YAEA,qCACmB,IAAhBvI,GAA6B,gBAACklD,GAAD,CAAUvmD,OAAQqB,IAC9B,YAAjB,MAAAuI,OAAA,EAAAA,EAAQ0O,OACP,gBAACw1C,GAAD,CAAiBhZ,aAAa,MAAAlrC,OAAA,EAAAA,EAAQkrC,cAAe,KAEvD,gBAACya,GAAD,CACEjX,aAAcH,EACdI,eAAgBJ,EAChB9wC,IAAI,SACJuC,aAAA,CC3CP,MAAMkuD,GAAgB,QA9B7B,UAAgC,MAC9B12D,EAAK,KACLkX,EAAI,MACJuvC,EAAK,KACLz5C,EAAI,OACJ6nD,EAAM,UACNhjC,EAAS,QACT2uB,IAEA,OACE,gBAAC,SAAD,CACE3uB,YACA2uB,SAAWiG,GAASjG,QAAY,EAChC,gBAAeqU,EACfxQ,SAAUoC,IAERA,GACA,gBAAC5F,GAAD,CACEr9C,KAAM,QACN6f,MAAOnM,EACPiqC,UAAW0T,EAAS,OAAS,QAC7B3T,MAAO,SAGX,gBAACyV,GAAD,KAAO3pD,EAAK,KACZ,gBAACm4C,GAAD,CAAU/G,SAAS,EAAMnb,QAAQ,EAAMrkC,OAAQoB,IAAA,ICrCxC42D,GAAsB,GAAOF,GAAc;;;;;;;;;;;WAW7C5lC,GAASA,EAAM9M,MAAMzB,OAAOxG,UAAU+U,EAAM5Z,MAAMmM;sBACvCyN,GAASA,EAAM9M,MAAMzB,OAAOxG,UAAU+U,EAAM5Z,MAAMoM;;oBAEpDwN,GAASA,EAAM9M,MAAMzB,OAAOxG,UAAU+U,EAAM5Z,MAAMmM;;IAElEyN,GACCA,EAAM21B,MACL,qMAcF;EAGSoQ,GAAsB,MAAU;;EAIhCC,GAAiB,GAAO/X,GAAiByD,cAAc;;;;EAMvDmU,GAAO,SAAa;;ECrC1B,MAAMI,WAAwB,gBACnCvlC,SACE,MAAM,QAAEnW,GAAYzgB,KAAKk2B,MACzB,YAAgB,IAAZzV,GAA4C,IAAnBA,EAAQxf,OAC5B,KAGP,gBAACgmD,GAAD,KACE,gBAACiV,GAAD,KAAgB,sBAChB,gBAAC,QAAD,KACG5uC,EAAY7M,GAAS,CAAChC,EAAQy0C,IAC7B,gBAACgB,GAAD,CAAOhB,SAAgB7nD,IAAKoT,EAAO1b,KAAMgC,MAAO0Z,EAAQ8zC,cAAc,wOCT3E,MAAM6J,WAAwB,gBAA9B,kCAwBG,KAAAlM,eAAiBh6B,GAErB,gBAACiuB,GAAD,CAAkB94C,IAAI,UAAS,oBACZ,gBAACy+C,4HAAD,IAAqB5zB,IAAA,CA1B5CU,SACE,MAAM,YAAEvxB,EAAW,WAAEu+B,EAAU,QAAEnjB,EAAO,QAAEhgB,GAAYT,KAAKk2B,MAAM3V,SACjE,OACE,gCACGlb,GAAe,gBAACklD,GAAD,CAAUvmD,OAAQqB,IAClC,gBAACosD,GAAD,CAAY7tB,eACZ,gBAACu4B,GAAD,CAAiB17C,YACjB,gBAACo7C,GAAD,CAAkBp7D,UAAkByvD,eAAgBlwD,KAAKkwD,iBACtD,EAAGtiD,YAEA,gCACoB,YAAjB,MAAAA,OAAA,EAAAA,EAAQ0O,OACP,gBAACw1C,GAAD,CAAiBhZ,aAAa,MAAAlrC,OAAA,EAAAA,EAAQkrC,cAAe,KAEvD,gBAACya,GAAD,CAAQhX,eAAe,EAAMlxC,IAAI,SAASuC,cAAA,EClBnD,MAAMyuD,IAAe,KAAAnL,WAAS,EAAG3wC,eACtC,MAAM,WAAEqjB,EAAU,QAAEnjB,EAAO,KAAEnE,EAAI,QAAEyE,EAAO,YAAE1b,EAAW,KAAE+M,EAAI,SAAE6iC,EAAQ,QAAEx0C,GAAY8f,EAE/E+7C,EAAQ,WACZ,SACc,IAAZ77D,EAAwB,GAAKA,EAAQo8C,WAAWtwC,QAAOsvB,QAAwB,IAAhBA,EAAKjuB,UACtE,CAACnN,IAGGorD,EAAQ,WACZ,MACIjoB,GAAiD,IAAnCjhC,OAAO8L,KAAKm1B,GAAY3iC,QACrB,IAAnBwf,EAAQxf,QACS,IAAjBq7D,EAAMr7D,QACLoE,IACH,CAACu+B,EAAYnjB,EAAS67C,EAAOj3D,IAG/B,OACE,gBAAC,MAAD,KACE,gBAAC22D,GAAD,CACEpW,QAAS,IAAMrlC,EAASo1B,SACxBr5B,OACAuvC,QACAzmD,MAAO2b,GAAW,GAClB3O,OACA6nD,OAAQhlB,IAETA,IAAa4W,GACZ,gBAACoQ,GAAD,KACE,gBAACG,GAAD,CAAiB77C,cAAA,ICnCrBg8C,GAAkB,KAAS;;;;WAItB,EAAGnzC,WAAYA,EAAMzB,OAAOha,KAAKka;;EASrC,MAAM20C,WAAsB,gBACjC5lC,SACE,MAAM,UAAEzV,EAAS,WAAEu8B,GAAe19C,KAAKk2B,MAEvC,OAAK/U,GAAkC,IAArBA,EAAUlgB,OAK1B,gBAAC,MAAD,KACE,gBAACs7D,GAAD,KAA+B7rC,EAAbgtB,EAAe,oBAAyB,cACzDv8B,EAAU5gB,KAAIggB,GACN,gBAAC87C,GAAD,CAAchxD,IAAKkV,EAASnO,KAAMmO,gBAPtC,IAOsC,EChB5C,SAASk8C,GAAevmC,GAC7B,MAAM,SAAEhV,EAAQ,uBAAE2T,EAAsB,SAAEogB,GAAa/e,EAEjDwmC,EAAWx7C,EAASI,QAAQrgB,OAAS,EAC3C,OAAgC,IAA5BigB,EAASI,QAAQrgB,OACZ,gBAACs0D,GAAD,CAA2BtgB,YAAoB,QAEtD,gBAACsgB,GAAD,CAA2BtgB,YACxBynB,GAAY,IACZx7C,EAASI,QAAQ/gB,KAAIyd,GAElB,gBAACs3C,GAAD,CAA4BjqD,IAAK2S,EAAO7d,IACrC00B,GAA0B,GAAGgiC,GAAW74C,EAAO1B,OAAS0B,EAAO1B,SAChE,gBAAC,IAAD,KAAI0B,EAAO62B,aACVI,GAAYj3B,EAAOK,OAAOpd,OACvB,CACE,KACA+c,EAAOK,OAAO9d,KAAqBo2D,GACjC,gBAACtB,GAAD,CAAWhqD,IAAKsrD,GAAQA,KAE1B,MAEF,QAIT+F,GAAY,MCvCZ,MAAMC,GAAoB,EAAGt+C,YAC7BA,EAAOpd,OAGV,gBAAC,MAAD,KACE,gBAAC,IAAD,KAAG,qBACFod,EAAO9d,KAAI,CAACo2D,EAAOhmC,IAEhB,gBAAC,WAAD,CAAgBtlB,IAAKslB,GACnB,gBAAC,OAAD,KAAOgmC,GAAc,QARJ,KCmBtB,SAASiG,GAAqB1mC,GACnC,MAAMrxB,EAAQigD,KACRjwB,EAAyB,MAAAhwB,OAAA,EAAAA,EAAO+F,QAAQiqB,wBACvCogB,EAAU4nB,IAAe,IAAA7N,WAAS,IAEnC,WAAE8N,GAAe5mC,EAEvB,KAAK,MAAA4mC,OAAA,EAAAA,EAAY77D,UAAU,MAAA4D,OAAA,EAAAA,EAAO+F,QAAQkqB,qBACxC,OAAO,KAGT,MAAMioC,EAA2B,MAAAl4D,OAAA,EAAAA,EAAOyzB,KAAKvU,gBAAgBzC,QAAQ/U,QAAO,EAAGpM,QACtE28D,EAAW7zD,MAAKiY,GAAYA,EAASI,QAAQrY,MAAK+U,GAAUA,EAAO7d,KAAOA,QAGnF,OACE,gCACE,gBAACiqD,GAAD,CAAMnV,YACJ,gBAACugB,GAAD,CAAkB5P,QAAS,IAAMiX,GAAa5nB,IAC5C,gBAACygB,GAAD,KAAY,mBACZ,gBAACzP,GAAD,CAAWr9C,KAAM,QAAS29C,UAAWtR,EAAW,OAAS,WAE3D,gBAACwgB,GAAD,CAAkBxgB,YACf6nB,EAAWv8D,KAAI,CAAC2gB,EAAUyP,IACzB,gBAAC8rC,GAAD,CACEpxD,IAAKslB,EACLskB,WACApgB,yBACA3T,iBAKP+zB,IACC,MAAA8nB,OAAA,EAAAA,EAA0B97D,SAC1B87D,EAAyBx8D,KAAI,CAACyd,EAAQ2S,IACpC,gBAACilC,GAAD,CAAsBvqD,IAAKslB,GACzB,gBAAC,KAAD,KACE,gBAACqsC,GAAD,MAAY,IAAEnG,GAAW74C,EAAO1B,OAAS0B,EAAO1B,KAAK,KAAG0B,EAAO7d,IAEjE,gBAACoqD,GAAD,CAAUvmD,OAAQga,EAAO3Y,aAAe,KACxC,gBAACuxD,GAAD,CACEvrD,IAAK2S,EAAO7d,GACZ6d,SACAw4C,eACE,gBAACmG,GAAD,CAAmBt+C,OAAQ4+C,GAAkBj/C,EAAO7d,GAAI28D,UAAA,CASxE,MAAME,GAAW,IACf,gBAAC,MAAD,CAAK7W,MAAM,6BAA6BhvB,QAAQ,YAAYpM,MAAM,KAAKmM,OAAO,MAC5E,gBAAC,OAAD,CACE8xB,KAAK,eACLrjC,EAAE,0GAKR,SAASs3C,GAAkB98D,EAAY28D,GACrC,MAAMI,EAAsB,GAC5B,IAAIC,EAAmBL,EAAW77D,OAElC,KAAOk8D,KAAoB,CACzB,MAAMj8C,EAAW47C,EAAWK,GAC5B,IAAIC,EAAgBl8C,EAASI,QAAQrgB,OACrC,KAAOm8D,KAAiB,CACtB,MAAMp/C,EAASkD,EAASI,QAAQ87C,GAC5Bp/C,EAAO7d,KAAOA,GAAMoB,MAAME,QAAQuc,EAAOK,SAC3C6+C,EAAUh9D,QAAQ8d,EAAOK,OAAA,EAK/B,OAAO9c,MAAMyB,KAAK,IAAI2F,IAAIu0D,GAAA,uDCjFrB,qBAA8B,YACnCtmC,SACE,MAAM,UAAEwC,GAAcp5B,KAAKk2B,OACrB,YAAE7wB,EAAW,aAAEwzC,GAAiBzf,EAChCikC,KAAoBh4D,IAAewzC,GAEzC,OACE,gBAACqhB,GAAD,KACGmD,GACC,gBAACC,GAAD,UACmB,IAAhBj4D,GAA6B,gBAACklD,GAAD,CAAUvmD,OAAQqB,IAC/CwzC,GAAgB,gBAACia,GAAD,CAAuBja,kBAG5C,gBAACiiB,GAAD,CAAU1hC,UAAWp5B,KAAKk2B,MAAMkD,UAAWqhC,UAAU,EAAMjX,SAAS,IACpE,gBAACiO,GAAD,CAAY7tB,WAAYxK,EAAUwK,aAClC,gBAACg5B,GAAD,CAAsBE,WAAY1jC,EAAUlY,WAC5C,gBAACm6C,GAAD,CAAYh8C,WAAY+Z,EAAU/Z,WAAYuC,KAAMwX,EAAUlZ,cAC9D,gBAACs8C,GAAD,CAAer7C,UAAWiY,EAAUjY,UAAWu8B,WAAYtkB,EAAUskB,aAAA,GAlBtE,sFADN,GAAAwT,UACM,IAwBP,MAAMoM,GAAc,MAAU;mBACX,EAAGl0C,WAAiC,EAArBA,EAAMjC,QAAQC;wDCpCzC,qBAAgC,YAAhC,kCACL,KAAAuuB,OAAS,KACP31C,KAAKk2B,MAAMqnC,kBAAkB5nB,QAAQ,CAAR,CAG/B/e,SACE,MAAM,KAAE7zB,EAAI,SAAEkyC,EAAQ,SAAEO,EAAQ,WAAEh2B,GAAexf,KAAKk2B,MAAMqnC,kBAE5D,OACE,gCACE,gBAACvD,GAAD,CACEpU,QAAS5lD,KAAK21C,OACd5yC,OACAk3D,OAAQhlB,EACRO,WACAh2B,eAEDy1B,GAAY,gBAACuoB,GAAD,CAAiBpkC,UAAWp5B,KAAKk2B,MAAMqnC,oBAAA,GAjBrD,sFADN,GAAArM,UACM,ICEA,MAAMuM,WAAsB,gBACjC7mC,SACE,MAAM,UAAEhT,GAAc5jB,KAAKk2B,MAE3B,OAAKtS,GAAkC,IAArBA,EAAU3iB,OAK1B,gBAAC,MAAD,KACE,gBAACy8D,GAAD,KAAiB,eAChB95C,EAAUrjB,KAAImM,GACNA,EAASwoC,WAAW30C,KAAI,CAAC64B,EAAWx0B,IAEvC,gBAAC+4D,GAAD,CAAmBtyD,IAAK,GAAGqB,EAAS3J,QAAQ6B,IAAS24D,kBAAmBnkC,SATzE,IASyE,EAStF,MAAMskC,GAAkB,KAAS;;;;WAItB,EAAGt0C,WAAYA,EAAMzB,OAAOha,KAAKka;;wDCdrC,qBAAyC,YAI9C/kB,YAAYozB,GACV1a,MAAM0a,GAMR,KAAA0nC,WAAa,EAAGjtC,UACV3wB,KAAKk2B,MAAM1kB,YAAiB,IAARmf,GACtB3wB,KAAK22B,SAAS,CACZsqB,cAAetwB,GAAA,EARnB3wB,KAAKmG,MAAQ,CACX86C,cAAe,GAYnBrqB,SACE,MAAM,MAAEplB,GAAUxR,KAAKk2B,MAEvB,IAAK1kB,IAAUA,EAAMvQ,OACnB,OAAO,KAGT,MAAMwpD,EAAU,EAAG3zB,cACjB92B,KAAKk2B,MAAMtF,MACT,gBAAC4+B,GAAD,KACE,gBAACD,GAAD,KAAgBvvD,KAAKk2B,MAAMtF,OAC1BkG,GAGHA,EAGJ,OACE,gCACE,gBAAC2zB,EAAD,KACGzqD,KAAKk2B,MAAMg6B,eAAe,CACzB7tD,MAAOrC,KAAKk2B,MAAMtrB,QAAQ5K,KAAKmG,MAAM86C,eAAe5+C,MACpDuI,QAAS5K,KAAKk2B,MAAMtrB,QACpB0+C,SAAUtpD,KAAK49D,WACfzN,UAAWnwD,KAAKk2B,MAAMtF,OAAS,cAIlC5wB,KAAKk2B,MAAMY,SAAStlB,EAAMxR,KAAKmG,MAAM86C,gBAAA,GA/CvC,sFADN,GAAAiQ,UACM,oUCTA,qBAA6B,YAA7B,kCAoBG,KAAAhB,eAAiBh6B,IACvB,OACE,gBAAC4zB,+HAAD,EACEC,MAAO,GACPV,SAAUoG,IACNv5B,WAHN,CAIEqjB,QAAQ,mBAzBd3iB,SACE,MAAMinC,EAAc79D,KAAKk2B,MAAMz1B,QAC/B,YAAoB,IAAhBo9D,EACK,KAIP,gBAAChC,GAAD,CAAkBp7D,QAASo9D,EAAa3N,eAAgBlwD,KAAKkwD,eAAgBiL,WAAW,IACrFrL,GACC,gBAACH,GAAD,CACEtkD,IAAI,UACJykD,YACAI,eAAgBlwD,KAAKkwD,kBAAA,GAb1B,sFADN,GAAAgB,UACM,ICAA,MAAM4M,WAA8B,YACzClnC,SACE,MAAMmnC,EAAgB/9D,KAAKk2B,MAAMxpB,SAASsxC,YAAY/0C,MAAKyzC,GACzDY,GAAgBZ,KAGlB,OAAKqhB,EAKH,gBAACC,GAAD,KACE,gBAACC,GAAD,CAAgBx9D,QAASs9D,EAAcxgB,sBALlC,IAKkC,EAMxC,MAAMygB,GAAuB,MAAU;;kUCdvC,qBAA8B,YAA9B,kCAIG,KAAA9N,eAAiBh6B,IACvB,OACE,gBAAC4zB,+HAAD,EACEC,MAAO,GACPV,SAAUoG,IACNv5B,WAHN,CAIEqjB,QAAQ,mBAKd3iB,SACE,MAAM,UAAEhT,GAAc5jB,KAAKk2B,MAE3B,IAAKtS,GAAkC,IAArBA,EAAU3iB,OAC1B,OAAO,KAGT,MAAMi0C,EAAatxB,EAChBrjB,KAAImM,GAAYA,EAASwoC,WAAW30C,KAAI64B,GAAaA,MACrDjpB,QAAO,CAACjH,EAAG0G,IAAM1G,EAAExI,OAAOkP,IAAI,IAIjC,IAFmBslC,EAAWpG,MAAK1V,GAAaA,EAAU4kB,YAAY/8C,OAAS,IAG7E,OAAO,KAGT,MAAMi9D,EAAkBhpB,EAAW30C,KAAI,CAACmM,EAAUikB,KACzC,CACLtuB,MAAO,GAAGqK,EAAS8oC,SAASltC,kBAAkBoE,EAAS3J,OACvD4tB,UAIJ,OACE,gBAAC,MAAD,KACE,gBAACuzB,GAAD,KAAkB,8BAElB,gBAAC,GAAD,KACE,gBAACia,GAAD,CACE3sD,MAAO0jC,EACPgb,eAAgBlwD,KAAKkwD,eACrBt/B,MAAO,WACPhmB,QAASszD,IAERxxD,GACC,gBAACoxD,GAAD,CACEzyD,IAAI,wBACJqB,WACAwjD,eAAgBlwD,KAAKkwD,oBAAA,GArD5B,GAAAqB,YAAch6B,GADhB,sFADN,GAAA25B,UACM,IAgEA,MAAM,GAAiB,MAAU;gBACxB,EAAG9nC,WAAYA,EAAMuC,UAAUjD;aAClCwN,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;wDCrEnC,qBAA6B,YAKlCwP,SACE,MAAM,UAAEwC,GAAcp5B,KAAKk2B,MACrB+nB,EAAU7kB,EAAU4kB,YAEpBogB,EAAangB,EAAQh9C,OAAS,EAC9Bo9D,EAAiC,IAAnBpgB,EAAQh9C,QAAejB,KAAKwK,QAAQupB,2BACxD,OACGqqC,GACC,gBAAC,MAAD,KACE,gBAACla,GAAD,KAAkB,IAAExzB,EAAE,kBAAkB,KAExC,gBAAC62B,GAAD,CAAM+W,aAAc,GAClB,gBAAC,GAAAC,QAAD,CAAS7U,OAAQ2U,GACdpgB,EAAQ19C,KAAIm8C,GACX,gBAAC,GAAA8hB,IAAD,CAAKnzD,IAAKqxC,EAAO7c,KAAO,KAAO6c,EAAO9rB,OAAS,UAC3B,IAAjB8rB,EAAO9rB,MAAsB8rB,EAAO9rB,MAAQ8rB,EAAO7c,SAIzDoe,EAAQ19C,KAAIm8C,GACX,gBAAC,GAAA+hB,SAAD,CAAUpzD,IAAKqxC,EAAO7c,KAAO,KAAO6c,EAAO9rB,OAAS,KACjD0sB,GAAgBZ,GACf,gBAAC,MAAD,KACE,gBAACuhB,GAAD,CAAgBx9D,QAASi8C,EAAOa,sBAGlC,gBAACoR,GAAD,CAAoB9uB,KAAM6c,EAAO7c,KAAM77B,OAAQ04C,EAAO14C,eAOlE,OArCG,GAAAutD,YAAch6B,GADhB,sFADN,GAAA25B,UACM,0DCDA,qBAA8B,YAGnCt6B,SACE,MAAM,UAAEwC,GAAcp5B,KAAKk2B,MACrB/U,EAAYiY,EAAUjY,UAAU5U,QAAOgU,GACpCA,EAAS9f,SAAW8f,EAAS9f,QAAQu8C,YAG9C,OACG77B,EAAUlgB,OAAS,GAClB,gBAAC,MAAD,KACE,gBAACijD,GAAD,KAAkB,IAAExzB,EAAE,mBAAmB,KAEzC,gBAAC62B,GAAD,CAAM+W,aAAc,GAClB,gBAAC,GAAAC,QAAD,KACGp9C,EAAU5gB,KAAIggB,GACb,gBAAC,GAAAi+C,IAAD,CAAKvnC,UAAW,OAAS1W,EAASjE,KAAMjR,IAAKkV,EAASnO,MACnDmO,EAASnO,SAIf+O,EAAU5gB,KAAIggB,GACb,gBAAC,GAAAk+C,SAAD,CAAUpzD,IAAKkV,EAASnO,MACtB,gBAAC,MAAD,KACE,gBAAC6rD,GAAD,CAAgBx9D,QAAS8f,EAAS9f,iBAO9C,OAhCC,sFADN,GAAAywD,UACM,kSCOP,MAAM,GAAc,MAAU;mBACX,EAAG9nC,WAAiC,EAArBA,EAAMjC,QAAQC;EAOnCs3C,IAAY,KAAAxN,WAAS,EAAG93B,gBACnC,MAAQr2B,KAAMge,EAAO,YAAE1b,EAAW,WAAEma,EAAU,aAAEq5B,EAAY,UAAE+E,EAAS,SAAEpI,GAAapc,EAChFikC,KAAoBh4D,IAAewzC,IACnC,gBAAEpjB,GAAoB,aAAiB8B,IAC7C,OACE,gBAACA,GAAeI,SAAhB,MACG/sB,IACC,uBAACi5C,+HAAD,IAAS,CAAE,CAAC/C,IAAe1nB,EAAU0kB,kBAArC,CAAsD39C,GAAIi5B,EAAU0kB,4BAClE,gBAAC,GAAD,KACE,gBAACmG,GAAD,KACE,gBAAC4B,GAAD,CAAWtyC,GAAI6lB,EAAUj5B,KACxB4gB,EAAQ,IAAEvB,GAAc,gBAACgnC,GAAD,CAAOlqC,KAAK,WAAU,gBAC9CshC,GACC,gBAAC4I,GAAD,CAAOlqC,KAAK,WACT,IAAI,WACImZ,GAAmB+f,GAAY,KAAOA,EAASltC,gBAI7DsC,EAAQwoB,oBAAsBwqB,GAC7B,gBAACkd,GAAD,CAAU1hC,YAAsBqhC,UAAU,IAE3C4C,GACC,gBAAC,GAAD,UACmB,IAAhBh4D,GAA6B,gBAACklD,GAAD,CAAUvmD,OAAQqB,IAC/CwzC,GAAgB,gBAACia,GAAD,CAAuBja,kBAG5C,gBAAC4Y,GAAD,CAAY7tB,WAAYxK,EAAUwK,aAClC,gBAACg5B,GAAD,CAAsBE,WAAY1jC,EAAUlY,WAC5C,gBAACm6C,GAAD,CAAYh8C,WAAY+Z,EAAU/Z,WAAYuC,KAAMwX,EAAUlZ,cAC9D,gBAACs8C,GAAD,CAAer7C,UAAWiY,EAAUjY,YACpC,gBAACs8C,GAAD,CAAe75C,UAAWwV,EAAUxV,aAEtC,gBAACggC,GAAD,MACIh5C,EAAQwoB,oBAAsBwqB,GAAa,gBAACkd,GAAD,CAAU1hC,cACvD,gBAACulC,GAAD,CAAgBvlC,cAChB,gBAACwlC,GAAD,CAAiBxlC,cACjB,gBAACylC,GAAD,CAAiBj7C,UAAWwV,EAAUxV,qBAAA,8YCxD3C,qBAA2B,YAGhCgT,SACE,MAAMplB,EAAQxR,KAAKk2B,MAAM1kB,MACzB,OAAqB,IAAjBA,EAAMvQ,OACD,KAEFuQ,EAAMjR,KAAIC,GACR,gBAACs+D,GAAD,CAAazzD,IAAK7K,EAAKL,GAAIK,UAAA,GATjC,OADN,GAAA0wD,UACM,IAmBA,qBAA0B,YAC/Bt6B,SACE,MAAMp2B,EAAOR,KAAKk2B,MAAM11B,KACxB,IAAIC,EACJ,MAAM,KAAE6b,GAAS9b,EACjB,OAAQ8b,GAAA,IACD,QACH7b,EAAU,KACV,UACG,UACA,UAKH,QAEAA,EAAU,gBAACs+D,4HAAD,IAAiB/+D,KAAKk2B,cALhC,IACG,YACHz1B,EAAU,gBAACu+D,GAAD,CAAex+D,SAM7B,OACE,gCACGC,GACC,gBAACgjD,GAAD,CAAStjD,GAAIK,EAAKL,GAAIujD,WAA0B,cAAdljD,EAAK8b,MACpC7b,GAGJD,EAAKgR,OAAS,gBAACytD,GAAD,CAAcztD,MAAOhR,EAAKgR,QAAA,GA3B1C,OADN,GAAA0/C,UACM,IAiCP,MAAMgO,GAAkBjrB,GAAa,gBAAC,GAAD,CAAauP,SAAS,GAAOvP,GAG3D,qBAA0B,YAC/Brd,SACE,MAAM,KAAE7zB,EAAI,YAAEsC,EAAW,aAAEwzC,EAAY,MAAEnnB,GAAU1xB,KAAKk2B,MAAM11B,KAExD2+D,EAAmB,IAAVztC,EAAcuyB,GAAKD,GAClC,OACE,gCACE,gBAACH,GAAD,KACE,gBAAC,GAAD,CAAaL,SAAS,GACpB,gBAAC2b,EAAD,KACE,gBAACtZ,GAAD,CAAWtyC,GAAIvT,KAAKk2B,MAAM11B,KAAKL,KAC9B4C,KAIP,gBAACi2D,GAAD,CACE1mB,SAAUtyC,KAAKk2B,MAAM11B,KAAKL,GAC1B6D,OAAQqB,GAAe,GACvB6zD,SAAUgG,KAEXrmB,GACC,gBAACgL,GAAD,KACE,gBAAC,GAAD,KACE,gBAACiP,GAAD,CAAuBja,mBAAA,GAvB9B,OADN,GAAAqY,UACM,IAiCA,qBAA4B,YAGjCt6B,SACE,OAAO,gBAAC8nC,GAAD,CAAWtlC,UAAWp5B,KAAKk2B,MAAM11B,MAAA,GAJrC,OADN,GAAA0wD,UACM,oUC9EA,qBAAuB,YAAvB,kCACL,KAAAlsD,IAAM,cAEN,KAAA83C,SAAYj3B,IACV7lB,KAAKk2B,MAAMkpC,WAAYp/D,KAAKk2B,MAAM11B,MAClCqlB,EAAIw5C,iBAAiB,CAAjB,CAGNjX,oBACEpoD,KAAKs/D,wBAAA,CAGP/W,qBACEvoD,KAAKs/D,wBAAA,CAGPA,yBACMt/D,KAAKk2B,MAAM11B,KAAKu8C,QAAU/8C,KAAKgF,IAAImqD,SACrCjjC,EAAuBlsB,KAAKgF,IAAImqD,QAAA,CAIpCv4B,SACE,MAAM,KAAEp2B,EAAI,gBAAE++D,GAAoBv/D,KAAKk2B,MACvC,OACE,gBAACqjC,GAAD,CAAY3T,QAAS5lD,KAAK88C,SAAU/tC,MAAOvO,EAAKuO,MAAO,eAAcvO,EAAKL,IACzD,cAAdK,EAAK8b,KACJ,gBAACkjD,+HAAD,IAA8Bx/D,KAAKk2B,eAAnC,CAA0C11B,YAE1C,gBAACi5D,GAAD,CAAe1qD,MAAOvO,EAAKuO,MAAOguC,OAAQv8C,EAAKu8C,OAAQzgC,KAAM9b,EAAK8b,KAAMtX,IAAKhF,KAAKgF,KAChF,gBAAC20D,GAAD,CAAev0D,MAAO5E,EAAKq9C,cACxBr9C,EAAKq9C,aACL79C,KAAKk2B,MAAMY,UAEZt2B,EAAKuO,MAAQ,GAAKvO,EAAKgR,MAAMvQ,OAAS,GACtC,gBAACglD,GAAD,CAAWK,MAAO,QAASC,UAAW/lD,EAAKy0C,SAAW,OAAS,WAE/D,OAGJsqB,GAAmB/+D,EAAKgR,OAAShR,EAAKgR,MAAMvQ,OAAS,GACrD,gBAACw+D,GAAD,CACExqB,SAAUz0C,EAAKy0C,SACfzjC,MAAOhR,EAAKgR,MACZ4tD,WAAYp/D,KAAKk2B,MAAMkpC,mBAAA,GA5C5B,sFADN,GAAAlO,UACM,IAyDA,MAAMsO,IAA2B,KAAAtO,WAAUh7B,IAChD,MAAM,KAAE11B,GAAS01B,EACXlxB,EAAM,eACN,gBAAEywB,GAAoB,aAAiB8B,IAQ7C,OANA,aAAgB,KACVrB,EAAM11B,KAAKu8C,QAAU/3C,EAAImqD,SAC3BjjC,EAAuBlnB,EAAImqD,QAAA,GAE5B,CAACj5B,EAAM11B,KAAKu8C,OAAQ/3C,IAGrB,gBAACy0D,GAAD,CAAe1qD,MAAOvO,EAAKuO,MAAOguC,OAAQv8C,EAAKu8C,OAAQv9B,WAAYhf,EAAKgf,WAAYxa,OACjFxE,EAAKo9C,UACJ,gBAACwb,GAAD,CAAgB98C,KAAK,QAClBmZ,EAAkBj1B,EAAKg1C,SAAW9kB,EAAE,YAGvC,gBAAC0oC,GAAD,CAAgB98C,KAAM9b,EAAKg1C,UAAWvW,GAAgBz+B,EAAKg1C,WAE7D,gBAACmkB,GAAD,CAAe5uC,MAAM,qBAClBvqB,EAAKq9C,aACL3nB,EAAMY,UAAA,qQCjFR,qBAAwB,YAC7BF,SACE,MAAM,MAAEplB,EAAK,KAAE9R,EAAI,UAAEu3B,GAAcj3B,KAAKk2B,MAClC+e,EAAkC,MAAvBj1C,KAAKk2B,MAAM+e,UAA0Bj1C,KAAKk2B,MAAM+e,SACjE,OACE,gBAACqkB,4HAAD,EACEriC,YACAzd,MAAOxZ,KAAKk2B,MAAM1c,MAClBy7B,YACKv1C,EAAO,CAAEg6D,KAAM,QAAW,CAAC,GAE/BloD,EAAMjR,KAAI,CAACC,EAAMmwB,IAChB,gBAAC+uC,GAAD,CAAUr0D,IAAKslB,EAAKnwB,OAAY4+D,WAAYp/D,KAAKk2B,MAAMkpC,eAAA,GC5BlD,SAASO,KACtB,MAAOC,EAAWC,IAAc,IAAA7Q,WAAS,GAMzC,OAJA,IAAAI,YAAU,KACRyQ,GAAW,EAAK,GACf,IAEID,EACL,gBAAC,MAAD,CACE9G,IAAK,eACLgH,QAAS,IAAMD,GAAW,GAC1Bp1D,IAAK,6CAEL,KDGC,sFADN,GAAAymD,UACM,0DENA,qBAAuB,YAAvB,kCAyBL,KAAApU,SAAYt8C,IACV,GAAIA,GAAQA,EAAKu8C,QAAU/8C,KAAKwK,QAAQwpB,WACtC,OAAOxzB,EAAKy0C,SAAWz0C,EAAKy7C,WAAaz7C,EAAKk7B,SAEhD17B,KAAKk2B,MAAMhE,KAAK2vB,kBAAkBrhD,GAAM,GACxC8P,YAAW,KACLtQ,KAAK+/D,eACP//D,KAAK+/D,eAAA,KAKH,KAAAC,iBAAmBC,IACzBjgE,KAAK+/D,cAAgBE,CAAG,CAAH,CAlCvBrpC,SACE,MAAM/xB,EAAQ7E,KAAKk2B,MAAMhE,KACzB,OACE,gBAACy2B,GAAD,CACED,SAAU1oD,KAAKggE,iBACf/oC,UAAWj3B,KAAKk2B,MAAMe,UACtBrsB,QAAS,CACPs1D,kBAAkB,IAGpB,gBAACT,GAAD,CAAWjuD,MAAO3M,EAAM2M,MAAO4tD,WAAYp/D,KAAK88C,SAAUp9C,MAAM,IAChE,gBAACk6D,GAAD,KACE,gBAAC,IAAD,CAAG9tD,OAAO,SAASwjD,IAAI,sBAAsBpgC,KAAK,8BAChD,gBAACywC,GAAD,MAAe,2BAhBlB,GAAApO,YAAch6B,GADhB,sFADN,GAAA25B,UACM,ICTA,MAAMiP,GAAwB,EAAGpV,WACtC,MAAMqV,EAAarV,EAAO,GAAK,EAE/B,OACE,gBAACsV,GAAD,KACE,gBAACC,GAAD,CACE13D,KAAM,GACN4Q,MAAO,CACL+mD,UAAW,kBAAkBH,sBAC7BI,WAAY,yBAGhB,gBAACF,GAAD,CACE13D,KAAM,GACN4Q,MAAO,CACL+mD,UAAW,kBAAkB,EAAIH,OACjCI,WAAY,2BAQhBF,GAAa,EAAG13D,OAAO,GAAIquB,YAAY,GAAIzd,WAC/C,gBAAC,MAAD,CACEyd,YACAzd,MAAOA,GAAS,CAAC,EACjB2d,QAAQ,0BACR5U,QAAQ,MACR2jC,EAAE,MACFE,EAAE,MACFr7B,MAAOniB,EACPsuB,OAAQtuB,GAER,gBAAC,IAAD,CAAG23D,UAAU,kCACX,gBAAC,OAAD,CACE56C,EAAG,qiBAUHqjC,KAAK,mBAMPqX,GAAmB,MAAU;;;;;;;WAOxBnqC,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;wDCtD/C,IAAIo8C,GACA50C,IACF40C,GAAa,EAAQ,MAavB,MAAMC,GAAaD,IAAcA,KAE3BE,GAAsB,MAAU;WAC3BzqC,GAASA,EAAM9M,MAAM0B,QAAQC;sBAClBmL,GAASA,EAAM9M,MAAM0B,QAAQpC;;;;;;;;;;;;;IAa/CpQ,EAAMwd,SAAS;;;;kBAID,EAAG1M,WAAYA,EAAM0B,QAAQpC;eAChCwN,GAAUA,EAAM60B,KAAO,OAAS;;;;;;EAQzC6V,GAAiB,MAAU;;;sBAGX,EAAGx3C,WAAYA,EAAMwC,IAAIlD;WACpCwN,GAASA,EAAM9M,MAAMzB,OAAOE,QAAQxD;;;;;;;;IAQ3C/L,EAAMwd,SAAS;;;;;;;;;;aAUN,EAAG1M,WAAYA,EAAMwC,IAAInD;;;;;;EAS/B,qBAAsC,YAAtC,kCAML,KAAAtiB,MAA4B,CAAEwmB,UAAW,OA8DjC,KAAAk0C,cAAgB,KACtB7gE,KAAKk2B,MAAMhE,KAAKiwB,eAAe,CAAf,CA3DlBiG,oBACMsY,IACFA,GAAWt8D,IAAIpE,KAAK8gE,eAKtB9gE,KAAK22B,SAAS,CACZhK,UAAW3sB,KAAK+gE,iBAAiB/gE,KAAKwK,UAAA,CAI1Cg+C,uBACMkY,IACFA,GAAWxnD,OAAOlZ,KAAK8gE,cAAA,CAI3BC,iBAAiBn2D,GACf,IAAIkG,EAMJ,OAJEA,OAD+B,IAA7B9Q,KAAKk2B,MAAM1D,cACPtB,EAAuBuB,uBAAuBzyB,KAAKk2B,MAAM1D,cAAzDtB,GAEAtmB,EAAQ4nB,gBAET1hB,EAAM,KAGf8lB,SACE,MAAMm0B,EAAO/qD,KAAKk2B,MAAMhE,KAAKgvB,cAEvBpwC,EAAM9Q,KAAKmG,MAAMwmB,UAEvB,OACE,gCACE,gBAACg0C,GAAD,CACE5V,OACA9zB,UAAWj3B,KAAKk2B,MAAMe,UACtBzd,MAAO,CACL1I,MACAomB,OAAQ,gBAAgBpmB,MAG1B9L,IAAKmnB,IACHnsB,KAAK8gE,cAAgB30C,CAAE,GAGxBnsB,KAAKk2B,MAAMY,WAEZ92B,KAAKwK,QAAQ+qB,SACb,gBAACqrC,GAAD,CAAgBhb,QAAS5lD,KAAK6gE,eAC5B,gBAACV,GAAD,CAAuBpV,UAAA,GAzD1B,GAAAwG,YAAch6B,GAJhB,sFADN,GAAA25B,UACM,ICpFA,MAAM8P,GAAY,MAAU;IAC/B,EAAG53C,WAAY,oBACFA,EAAMU,WAAWM,6BACnBhB,EAAMU,WAAWC,6BACfX,EAAMU,WAAWG,sCACjBb,EAAMU,WAAWE,yBACvBZ,EAAMzB,OAAOha,KAAKka,uGAKDuB,EAAMU,WAAWO,iCACzBjB,EAAMU,WAAWO,iBAChCjB,EAAMU,WAAWQ,cAAiB,2CAA+C;EAYzE22C,GAAiB,MAAU;;;;uBAIjB/qC,GAASA,EAAM9M,MAAM0B,QAAQC;IAChDzS,EAAMwd,SAAS,SAAS,EAAK;;;;;EAOpBorC,GAAiB,MAAU;gBACxB,EAAG93C,WAAYA,EAAMqC,WAAW/C;;;;;WAKrC,EAAGU,YACV,GAAIA,EAAMqC,WAAWV,MAAM8C,SAAS,KAAM,CACxC,MAAMszC,EAAWpqD,SAASqS,EAAMqC,WAAWV,MAAO,IAClD,MAAO,gBAAgB3B,EAAM0B,QAAQC,YAAYo2C,EAAW,OAE5D,OAAO/3C,EAAMqC,WAAWV,KAAA;IAG1BzS,EAAMwd,SAAS,UAAU,EAAK;;;EC/CrBsrC,GAAa,MAAU;;EAIvBC,GAAc,gBAAmB,KAAO,CACnDpqC,UAAW;uBAEUf,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;cAEtC8O,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;iBAC1B8O,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;MACxC8O,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;;MAG7B,EAAGgC,aACF,IAAAk4C,cAAal4C,EAAM0B,QAAQpC,iBAAmB,GAAM,EAAAT,OAAS,EAAAF,SAC5D,GACAqB,EAAM0B,QAAQpC;iBAEL,EAAGU,WAAYA,EAAMU,WAAWM;;;WAGtC8L,GAASA,EAAM9M,MAAM0B,QAAQE;;;EAK3Bu2C,GAAa,IAAQrrC,GAChC,gBAAC,MAAD,CACEe,UAAWf,EAAMe,UACjB1U,QAAQ,MACR4U,QAAQ,gBACR+uB,EAAE,MACFC,MAAM,6BACNC,EAAE,OAEF,gBAAC,OAAD,CAAMzgC,EAAE,8WAET67C,MAAM,CACPvqC,UAAW;;UAGHf,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;;;;YAK3B8O,GAASA,EAAM9M,MAAM0B,QAAQE;;EAI5By2C,GAAmB,MAAU;aAC7BvrC,GAASA,EAAM9M,MAAMjC,QAAQC;sBACpB,EAAGgC,YAAY,IAAAnB,QAAO,IAAMmB,EAAM0B,QAAQpC;WACrDwN,GAASA,EAAM9M,MAAM0B,QAAQE;;;gBAGxB,EAAG5B,YAAY,IAAAnB,QAAO,GAAKmB,EAAM0B,QAAQpC;mBACtC,EAAGU,YAAY,IAAAnB,QAAO,GAAKmB,EAAM0B,QAAQpC;;;;;;;;;IASxD+wC;;;;;;0BAMsB,EAAGrwC,YAAY,IAAAnB,QAAO,GAAKmB,EAAM0B,QAAQpC;;;;;;;EAStDg5C,GAAY,IAAQ;;;WAGtBxrC,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;WAE7B8O,GAAoC,EAA3BA,EAAM9M,MAAMjC,QAAQC;;;;;;;kEC1DjC,MAAMu6C,WAAkB,gBAK7B7+D,YAAYozB,GACV1a,MAAM0a,GALR,KAAA0rC,cAAiC,KAuBjC,KAAAn+B,MAAQ,KACNzjC,KAAK22B,SAAS,CACZkrC,QAAS,GACTC,WAAW,EACXl7D,KAAM,GACNq6C,eAAgB,IAElBjhD,KAAKk2B,MAAMghC,OAAO3zB,QAAQ,EAG5B,KAAAw+B,cAAiB5c,IAmBf,GAlBsB,KAAlBA,EAAM6c,SAERhiE,KAAKyjC,QAEe,KAAlB0hB,EAAM6c,UAERhiE,KAAK22B,SAAS,CACZsqB,cAAezvB,KAAKqL,IAAI78B,KAAKmG,MAAM86C,cAAgB,EAAGjhD,KAAKmG,MAAM07D,QAAQ5gE,OAAS,KAEpFkkD,EAAMQ,kBAEc,KAAlBR,EAAM6c,UAERhiE,KAAK22B,SAAS,CACZsqB,cAAezvB,KAAKC,IAAI,EAAGzxB,KAAKmG,MAAM86C,cAAgB,KAExDkE,EAAMQ,kBAEc,KAAlBR,EAAM6c,QAAgB,CAExB,MAAMC,EAAejiE,KAAKmG,MAAM07D,QAAQ7hE,KAAKmG,MAAM86C,eACnD,GAAIghB,EAAc,CAChB,MAAMzhE,EAAOR,KAAKk2B,MAAM6rB,YAAYkgB,EAAa38D,MAC7C9E,GACFR,KAAKk2B,MAAMkpC,WAAW5+D,EAAA,IAsB9B,KAAA6D,OAAU8gD,IACR,MAAM,+BAAE3vB,GAAmCx1B,KAAKwK,QAC1CpE,EAAI++C,EAAMr5C,OAAOzJ,MACnB+D,EAAEnF,OAASu0B,EACbx1B,KAAKkiE,aAAa97D,GAIpBpG,KAAK22B,SACH,CACE/vB,KAAMR,IAER,IAAMpG,KAAKmiE,eAAeniE,KAAKmG,MAAMS,OAAA,EAtFvC5G,KAAKmG,MAAQ,CACX07D,QAAS,GACTC,WAAW,EACXl7D,KAAM,GACNq6C,eAAgB,EAAD,CAInBihB,aAAat7D,GACX5G,KAAK22B,SAAS,CACZkrC,QAAS,GACTC,WAAW,EACXl7D,SAEF5G,KAAKk2B,MAAMghC,OAAO3zB,QAAA,CA4CpB6+B,WAAWP,EAAyBj7D,GAClC5G,KAAK22B,SAAS,CACZkrC,UACAC,UAA8B,IAAnBD,EAAQ5gE,SAErBjB,KAAKk2B,MAAMghC,OAAOxzB,KAAK98B,EAAA,CAKzBu7D,eAAeE,GACbriE,KAAKk2B,MAAM7xB,OAAOA,OAAOg+D,GAAYh1D,MAAKrG,IACxChH,KAAKoiE,WAAWp7D,EAAKq7D,EAAW,GAAX,CAoBzBzrC,SACE,MAAM,cAAEqqB,GAAkBjhD,KAAKmG,MACzB07D,EAAU7hE,KAAKmG,MAAM07D,QACxBt1D,QAAOvF,GAAOhH,KAAKk2B,MAAM6rB,YAAY/6C,EAAI1B,QACzC/E,KAAIyG,IAAQ,CACXxG,KAAMR,KAAKk2B,MAAM6rB,YAAY/6C,EAAI1B,MACjC2B,MAAOD,EAAIC,UAEZ0I,MAAK,CAACzG,EAAG0G,IAAMA,EAAE3I,MAAQiC,EAAEjC,QAE9B,OACE,gBAACm6D,GAAD,CAAY1H,KAAK,UACd15D,KAAKmG,MAAMS,MAAQ,gBAAC86D,GAAD,CAAW9b,QAAS5lD,KAAKyjC,OAAO,KACpD,gBAAC89B,GAAD,MACA,gBAACF,GAAD,CACEh/D,MAAOrC,KAAKmG,MAAMS,KAClB07D,UAAWtiE,KAAK+hE,cAChBxY,YAAY,YACZ,aAAW,SACXjtC,KAAK,OACLgtC,SAAUtpD,KAAKqE,SAEhBw9D,EAAQ5gE,OAAS,GAChB,gBAAC0nD,GAAD,CACE/9C,QAAS,CACPs1D,kBAAkB,IAGpB,gBAACuB,GAAD,CAAkB,YAAU,kBACzBI,EAAQthE,KAAI,CAACyG,EAAK2pB,IACjB,gBAAC+uC,GAAD,CACEl/D,KAAMmC,OAAOoT,OAAO/O,EAAIxG,KAAM,CAC5Bu8C,OAAQ,CACN16C,MAAOsuB,IAAQswB,KAGnBme,WAAYp/D,KAAKk2B,MAAMkpC,WACvBG,iBAAiB,EACjBl0D,IAAKrE,EAAIxG,KAAKL,GACd,YAAU,sBAMnBH,KAAKmG,MAAMS,MAAQ5G,KAAKmG,MAAM27D,UAC7B,gBAACL,GAAD,CAAkB,YAAU,kBAAkB/wC,EAAE,mBAC9C,OA7IH,GAAA6gC,YAAch6B,kGAwErB,EAFC,GAAAlnB,MACA,KAAA0yB,UAAS,MACV,+BCzFK,MAAMw/B,WAAc,YAKzBna,oBACEpoD,KAAKk2B,MAAMrxB,MAAM6yD,YAAA,CAGnBlP,uBACExoD,KAAKk2B,MAAMrxB,MAAML,SAAA,CAGnBoyB,SACE,MACE/xB,OAAO,KAAEyzB,EAAI,KAAEpG,EAAI,QAAEtnB,EAAO,OAAEvG,EAAM,OAAE6yD,IACpCl3D,KAAKk2B,MACHrxB,EAAQ7E,KAAKk2B,MAAMrxB,MACzB,OACE,gBAACgxB,EAAD,CAAezM,MAAOxe,EAAQwe,OAC5B,gBAAC,GAAD,CAAe/mB,MAAOwC,GACpB,gBAAC2yB,GAAD,CAAiBn1B,MAAOuI,GACtB,gBAACo2D,GAAD,CAAW/pC,UAAU,cACnB,gBAACurC,GAAD,CAAyBtwC,OAAY+E,UAAU,gBAC7C,gBAACwrC,GAAD,CAASngD,KAAMgW,EAAKhW,QACjB1X,EAAQ6oB,eACT,gBAACkuC,GAAD,CACEt9D,SACA6yD,SACAnV,YAAa7vB,EAAK6vB,YAClBqd,WAAYltC,EAAK2vB,qBAGnB,KACF,gBAAC6gB,GAAD,CAAUxwC,UAEZ,gBAAC+uC,GAAD,CAAgBhqC,UAAU,eACxB,gBAAC0rC,GAAD,CAAS99D,UACT,gBAACo6D,GAAD,CAAcztD,MAAO0gB,EAAK1gB,SAE5B,gBAAC0vD,GAAD,WAvCL,GAAA0B,UAAY,CACjB/9D,MAAO,cAAqB+/C,IAAUie,YCFnC,MAAMC,GAAkB,SAAU5sC,GACvC,MAAM,KAAEoC,EAAI,QAAEoG,EAAO,QAAE9zB,EAAU,CAAC,EAAC,SAAE25C,GAAaruB,EAC5C6sC,EAAcjyC,EAAkBlmB,EAAQm4D,aAAa,GAErDC,EAAiB,IAAI9xC,EAAuBtmB,GAElD,QAA6B,IAAzBo4D,EAAe1oD,MACjB,IAEE,KAAoB0oD,EAAe1oD,KACnC,CADmC,MAC7B,GAAN,CAGJ,OACE,gBAACmc,GAAD,KACE,gBAAC6tB,GAAD,CAAchsB,OAAYoG,UAAkB9zB,UAAkB25C,aAC3D,EAAGM,UAAShgD,WACVggD,EAEGke,EAAc,KAChB,gBAAC1rC,GAAD,CAAS5O,MAAOu6C,EAAe55C,MAAMzB,OAAOE,QAAQxD,OAFpD,gBAACk+C,GAAD,CAAO19D,YAE6C,O/N/BhE","sources":["webpack://Redoc/webpack/universalModuleDefinition","webpack://Redoc/./node_modules/perfect-scrollbar/css/perfect-scrollbar.css","webpack://Redoc/./node_modules/css-loader/dist/runtime/api.js","webpack://Redoc/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://Redoc/./src/empty.js","webpack://Redoc/external commonjs \"lunr\"","webpack://Redoc/./src/services/SearchWorker.worker.ts","webpack://Redoc/./node_modules/oas-kit-common/index.js","webpack://Redoc/./node_modules/oas-resolver/index.js","webpack://Redoc/./node_modules/oas-schema-walker/index.js","webpack://Redoc/./node_modules/path-browserify/index.js","webpack://Redoc/./node_modules/reftools/lib/clone.js","webpack://Redoc/./node_modules/reftools/lib/dereference.js","webpack://Redoc/./node_modules/reftools/lib/isref.js","webpack://Redoc/./node_modules/reftools/lib/jptr.js","webpack://Redoc/./node_modules/reftools/lib/recurse.js","webpack://Redoc/./node_modules/perfect-scrollbar/css/perfect-scrollbar.css?2fd0","webpack://Redoc/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://Redoc/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://Redoc/./node_modules/swagger2openapi/index.js","webpack://Redoc/./node_modules/swagger2openapi/lib/statusCodes.js","webpack://Redoc/./src/services/SearchWorker.worker.ts?40cf","webpack://Redoc/./node_modules/workerize-loader/dist/rpc-wrapper.js","webpack://Redoc/external commonjs \"call-me-maybe\"","webpack://Redoc/external commonjs \"fast-safe-stringify\"","webpack://Redoc/external commonjs \"stickyfill\"","webpack://Redoc/external commonjs \"yaml\"","webpack://Redoc/external var \"undefined\"","webpack://Redoc/webpack/bootstrap","webpack://Redoc/webpack/runtime/compat get default export","webpack://Redoc/webpack/runtime/define property getters","webpack://Redoc/webpack/runtime/global","webpack://Redoc/webpack/runtime/hasOwnProperty shorthand","webpack://Redoc/webpack/runtime/make namespace object","webpack://Redoc/webpack/runtime/nonce","webpack://Redoc/external commonjs \"react\"","webpack://Redoc/external commonjs \"polished\"","webpack://Redoc/./src/theme.ts","webpack://Redoc/./src/utils/dom.ts","webpack://Redoc/external commonjs \"slugify\"","webpack://Redoc/./src/utils/helpers.ts","webpack://Redoc/./src/services/Labels.ts","webpack://Redoc/./src/services/types.ts","webpack://Redoc/./src/services/RedocNormalizedOptions.ts","webpack://Redoc/external commonjs \"styled-components\"","webpack://Redoc/./src/styled-components.ts","webpack://Redoc/./src/components/ErrorBoundary.tsx","webpack://Redoc/./src/components/Loading/Spinner.svg.tsx","webpack://Redoc/./src/components/Loading/Loading.tsx","webpack://Redoc/external commonjs \"prop-types\"","webpack://Redoc/./src/components/OptionsProvider.ts","webpack://Redoc/external commonjs \"mobx\"","webpack://Redoc/external commonjs \"@redocly/openapi-core/lib/bundle\"","webpack://Redoc/external commonjs \"@redocly/openapi-core/lib/config/config\"","webpack://Redoc/./src/utils/loadAndBundleSpec.ts","webpack://Redoc/external commonjs \"decko\"","webpack://Redoc/external commonjs \"eventemitter3\"","webpack://Redoc/external commonjs \"json-pointer\"","webpack://Redoc/./src/utils/JsonPointer.ts","webpack://Redoc/external commonjs \"url-template\"","webpack://Redoc/./src/utils/openapi.ts","webpack://Redoc/external commonjs \"prismjs\"","webpack://Redoc/external commonjs \"prismjs/components/prism-bash.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-c.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-clike.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-coffeescript.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-cpp.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-csharp.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-go.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-http.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-java.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-lua.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-markup-templating.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-markup.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-objectivec.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-perl.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-php.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-python.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-q.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-ruby.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-scala.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-sql.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-swift.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-yaml.js\"","webpack://Redoc/external commonjs \"prismjs/components/prism-csv.js\"","webpack://Redoc/./src/utils/highlight.ts","webpack://Redoc/./src/utils/decorators.ts","webpack://Redoc/./src/utils/debug.ts","webpack://Redoc/./src/utils/memoize.ts","webpack://Redoc/./src/utils/sort.ts","webpack://Redoc/./src/services/HistoryService.ts","webpack://Redoc/external commonjs \"mark.js\"","webpack://Redoc/./src/services/MarkerService.ts","webpack://Redoc/./node_modules/marked/lib/marked.esm.js","webpack://Redoc/./src/services/MarkdownRenderer.ts","webpack://Redoc/./src/services/models/ApiInfo.ts","webpack://Redoc/./src/services/models/SecurityRequirement.ts","webpack://Redoc/./src/services/models/Callback.ts","webpack://Redoc/./src/services/OpenAPIParser.ts","webpack://Redoc/./src/services/models/Schema.ts","webpack://Redoc/./src/services/models/Example.ts","webpack://Redoc/./src/services/models/Field.ts","webpack://Redoc/external commonjs \"openapi-sampler\"","webpack://Redoc/./src/services/models/MediaType.ts","webpack://Redoc/./src/services/models/MediaContent.ts","webpack://Redoc/./src/services/models/RequestBody.ts","webpack://Redoc/./src/services/models/Response.ts","webpack://Redoc/./src/services/models/Operation.ts","webpack://Redoc/./src/services/models/Webhook.ts","webpack://Redoc/./src/services/models/SecuritySchemes.ts","webpack://Redoc/./src/services/SpecStore.ts","webpack://Redoc/./src/services/models/Group.model.ts","webpack://Redoc/./src/services/MenuBuilder.ts","webpack://Redoc/./src/services/MenuStore.ts","webpack://Redoc/./src/services/ScrollService.ts","webpack://Redoc/./src/services/SearchStore.ts","webpack://Redoc/./src/common-elements/panels.ts","webpack://Redoc/./src/common-elements/headers.ts","webpack://Redoc/./src/components/StoreBuilder.ts","webpack://Redoc/./src/common-elements/linkify.tsx","webpack://Redoc/./src/common-elements/shelfs.tsx","webpack://Redoc/./src/common-elements/mixins.ts","webpack://Redoc/./src/common-elements/fields-layout.ts","webpack://Redoc/./src/common-elements/schema.ts","webpack://Redoc/external commonjs \"react-tabs\"","webpack://Redoc/./src/common-elements/tabs.ts","webpack://Redoc/./src/common-elements/PrismDiv.tsx","webpack://Redoc/./src/common-elements/samples.tsx","webpack://Redoc/external commonjs \"perfect-scrollbar\"","webpack://Redoc/./src/common-elements/perfect-scrollbar.tsx","webpack://Redoc/./src/common-elements/Dropdown/Dropdown.tsx","webpack://Redoc/./src/common-elements/Dropdown/styled.ts","webpack://Redoc/./src/components/DropdownOrLabel/DropdownOrLabel.tsx","webpack://Redoc/external commonjs \"dompurify\"","webpack://Redoc/./src/components/Markdown/styled.elements.tsx","webpack://Redoc/./src/components/Markdown/SanitizedMdBlock.tsx","webpack://Redoc/./src/components/Markdown/Markdown.tsx","webpack://Redoc/./src/common-elements/Tooltip.tsx","webpack://Redoc/./src/services/ClipboardService.ts","webpack://Redoc/./src/common-elements/CopyButtonWrapper.tsx","webpack://Redoc/./src/utils/jsonToHtml.ts","webpack://Redoc/./src/components/JsonViewer/style.ts","webpack://Redoc/./src/components/JsonViewer/JsonViewer.tsx","webpack://Redoc/./src/components/SourceCode/SourceCode.tsx","webpack://Redoc/./src/components/PayloadSamples/ExampleValue.tsx","webpack://Redoc/./src/components/PayloadSamples/Example.tsx","webpack://Redoc/./src/components/PayloadSamples/exernalExampleHook.ts","webpack://Redoc/./src/components/PayloadSamples/styled.elements.ts","webpack://Redoc/./src/components/PayloadSamples/MediaTypeSamples.tsx","webpack://Redoc/external commonjs \"mobx-react\"","webpack://Redoc/./src/common-elements/fields.ts","webpack://Redoc/./src/components/ExternalDocumentation/ExternalDocumentation.tsx","webpack://Redoc/./src/components/Fields/EnumValues.tsx","webpack://Redoc/./src/components/Fields/Extensions.tsx","webpack://Redoc/./src/components/Fields/Examples.tsx","webpack://Redoc/./src/components/Fields/FieldContstraints.tsx","webpack://Redoc/./src/components/Fields/FieldDetail.tsx","webpack://Redoc/./src/components/Fields/Pattern.tsx","webpack://Redoc/./src/components/Fields/ArrayItemDetails.tsx","webpack://Redoc/./src/components/Fields/FieldDetails.tsx","webpack://Redoc/./src/components/Fields/Field.tsx","webpack://Redoc/./src/components/Schema/DiscriminatorDropdown.tsx","webpack://Redoc/./src/components/Schema/ObjectSchema.tsx","webpack://Redoc/./src/components/Schema/ArraySchema.tsx","webpack://Redoc/./src/components/Schema/OneOfSchema.tsx","webpack://Redoc/./src/components/Schema/RecursiveSchema.tsx","webpack://Redoc/./src/components/Schema/Schema.tsx","webpack://Redoc/./src/components/SchemaDefinition/SchemaDefinition.tsx","webpack://Redoc/./src/components/SecurityRequirement/styled.elements.ts","webpack://Redoc/./src/components/SeeMore/SeeMore.tsx","webpack://Redoc/./src/components/SecurityRequirement/OAuthFlow.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityDetails.tsx","webpack://Redoc/./src/components/SecuritySchemes/SecuritySchemes.tsx","webpack://Redoc/./src/services/AppStore.ts","webpack://Redoc/./src/components/ApiInfo/styled.elements.ts","webpack://Redoc/./src/components/ApiInfo/ApiInfo.tsx","webpack://Redoc/./src/components/ApiLogo/styled.elements.tsx","webpack://Redoc/./src/components/ApiLogo/ApiLogo.tsx","webpack://Redoc/./src/components/Markdown/AdvancedMarkdown.tsx","webpack://Redoc/external commonjs \"classnames\"","webpack://Redoc/./src/components/SideMenu/styled.elements.ts","webpack://Redoc/./src/components/Callbacks/CallbackTitle.tsx","webpack://Redoc/./src/components/Callbacks/styled.elements.ts","webpack://Redoc/./src/components/SelectOnClick/SelectOnClick.tsx","webpack://Redoc/./src/components/Endpoint/styled.elements.ts","webpack://Redoc/./src/components/Endpoint/Endpoint.tsx","webpack://Redoc/./src/components/Parameters/ParametersGroup.tsx","webpack://Redoc/./src/components/MediaTypeSwitch/MediaTypesSwitch.tsx","webpack://Redoc/./src/components/Parameters/Parameters.tsx","webpack://Redoc/./src/components/Responses/ResponseTitle.tsx","webpack://Redoc/./src/components/Responses/styled.elements.ts","webpack://Redoc/./src/components/Responses/ResponseHeaders.tsx","webpack://Redoc/./src/components/Responses/ResponseDetails.tsx","webpack://Redoc/./src/components/Responses/Response.tsx","webpack://Redoc/./src/components/Responses/ResponsesList.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityHeader.tsx","webpack://Redoc/./src/components/SecurityRequirement/RequiredScopesRow.tsx","webpack://Redoc/./src/components/SecurityRequirement/SecurityRequirement.tsx","webpack://Redoc/./src/components/Callbacks/CallbackDetails.tsx","webpack://Redoc/./src/components/Callbacks/CallbackOperation.tsx","webpack://Redoc/./src/components/Callbacks/CallbacksList.tsx","webpack://Redoc/./src/components/GenericChildrenSwitcher/GenericChildrenSwitcher.tsx","webpack://Redoc/./src/components/PayloadSamples/PayloadSamples.tsx","webpack://Redoc/./src/components/CallbackSamples/CallbackReqSamples.tsx","webpack://Redoc/./src/components/CallbackSamples/CallbackSamples.tsx","webpack://Redoc/./src/components/RequestSamples/RequestSamples.tsx","webpack://Redoc/./src/components/ResponseSamples/ResponseSamples.tsx","webpack://Redoc/./src/components/Operation/Operation.tsx","webpack://Redoc/./src/components/ContentItems/ContentItems.tsx","webpack://Redoc/./src/components/SideMenu/MenuItem.tsx","webpack://Redoc/./src/components/SideMenu/MenuItems.tsx","webpack://Redoc/./src/components/SideMenu/Logo.tsx","webpack://Redoc/./src/components/SideMenu/SideMenu.tsx","webpack://Redoc/./src/components/StickySidebar/ChevronSvg.tsx","webpack://Redoc/./src/components/StickySidebar/StickyResponsiveSidebar.tsx","webpack://Redoc/./src/components/Redoc/styled.elements.tsx","webpack://Redoc/./src/components/SearchBox/styled.elements.tsx","webpack://Redoc/./src/components/SearchBox/SearchBox.tsx","webpack://Redoc/./src/components/Redoc/Redoc.tsx","webpack://Redoc/./src/components/RedocStandalone.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Redoc\"] = factory();\n\telse\n\t\troot[\"Redoc\"] = factory();\n})(this, function() {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y,.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y{opacity:.6}.ps .ps__rail-x:hover,.ps .ps__rail-y:hover,.ps .ps__rail-x:focus,.ps .ps__rail-y:focus,.ps .ps__rail-x.ps--clicking,.ps .ps__rail-y.ps--clicking{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x:hover>.ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x.ps--clicking .ps__thumb-x{background-color:#999;height:11px}.ps__rail-y:hover>.ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y.ps--clicking .ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style: none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ps{overflow:auto!important}}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/perfect-scrollbar/css/perfect-scrollbar.css\"],\"names\":[],\"mappings\":\"AAGA,IACE,yBAAA,CACA,oBAAA,CACA,uBAAA,CACA,iBAAA,CACA,qBAAA,CAMF,YACE,YAAA,CACA,SAAA,CACA,yDAAA,CACA,iEAAA,CACA,WAAA,CAEA,QAAA,CAEA,iBAAA,CAGF,YACE,YAAA,CACA,SAAA,CACA,yDAAA,CACA,iEAAA,CACA,UAAA,CAEA,OAAA,CAEA,iBAAA,CAGF,oDAEE,aAAA,CACA,4BAAA,CAGF,oJAME,UAAA,CAGF,kJAME,qBAAA,CACA,UAAA,CAMF,aACE,qBAAA,CAnEF,iBAAA,CAqEE,6DAAA,CACA,qEAAA,CACA,UAAA,CAEA,UAAA,CAEA,iBAAA,CAGF,aACE,qBAAA,CA/EF,iBAAA,CAiFE,4DAAA,CACA,oEAAA,CACA,SAAA,CAEA,SAAA,CAEA,iBAAA,CAGF,oGAGE,qBAAA,CACA,WAAA,CAGF,oGAGE,qBAAA,CACA,UAAA,CAIF,qCACE,IACE,uBAAA,CAAA,CAIJ,wEACE,IACE,uBAAA,CAAA\",\"sourcesContent\":[\"/*\\n * Container style\\n */\\n.ps {\\n overflow: hidden !important;\\n overflow-anchor: none;\\n -ms-overflow-style: none;\\n touch-action: auto;\\n -ms-touch-action: auto;\\n}\\n\\n/*\\n * Scrollbar rail styles\\n */\\n.ps__rail-x {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n height: 15px;\\n /* there must be 'bottom' or 'top' for ps__rail-x */\\n bottom: 0px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__rail-y {\\n display: none;\\n opacity: 0;\\n transition: background-color .2s linear, opacity .2s linear;\\n -webkit-transition: background-color .2s linear, opacity .2s linear;\\n width: 15px;\\n /* there must be 'right' or 'left' for ps__rail-y */\\n right: 0;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps--active-x > .ps__rail-x,\\n.ps--active-y > .ps__rail-y {\\n display: block;\\n background-color: transparent;\\n}\\n\\n.ps:hover > .ps__rail-x,\\n.ps:hover > .ps__rail-y,\\n.ps--focus > .ps__rail-x,\\n.ps--focus > .ps__rail-y,\\n.ps--scrolling-x > .ps__rail-x,\\n.ps--scrolling-y > .ps__rail-y {\\n opacity: 0.6;\\n}\\n\\n.ps .ps__rail-x:hover,\\n.ps .ps__rail-y:hover,\\n.ps .ps__rail-x:focus,\\n.ps .ps__rail-y:focus,\\n.ps .ps__rail-x.ps--clicking,\\n.ps .ps__rail-y.ps--clicking {\\n background-color: #eee;\\n opacity: 0.9;\\n}\\n\\n/*\\n * Scrollbar thumb styles\\n */\\n.ps__thumb-x {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, height .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, height .2s ease-in-out;\\n height: 6px;\\n /* there must be 'bottom' for ps__thumb-x */\\n bottom: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__thumb-y {\\n background-color: #aaa;\\n border-radius: 6px;\\n transition: background-color .2s linear, width .2s ease-in-out;\\n -webkit-transition: background-color .2s linear, width .2s ease-in-out;\\n width: 6px;\\n /* there must be 'right' for ps__thumb-y */\\n right: 2px;\\n /* please don't change 'position' */\\n position: absolute;\\n}\\n\\n.ps__rail-x:hover > .ps__thumb-x,\\n.ps__rail-x:focus > .ps__thumb-x,\\n.ps__rail-x.ps--clicking .ps__thumb-x {\\n background-color: #999;\\n height: 11px;\\n}\\n\\n.ps__rail-y:hover > .ps__thumb-y,\\n.ps__rail-y:focus > .ps__thumb-y,\\n.ps__rail-y.ps--clicking .ps__thumb-y {\\n background-color: #999;\\n width: 11px;\\n}\\n\\n/* MS supports */\\n@supports (-ms-overflow-style: none) {\\n .ps {\\n overflow: auto !important;\\n }\\n}\\n\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n .ps {\\n overflow: auto !important;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","module.exports = {};\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"lunr\");","import * as lunr from 'lunr';\nimport type { SearchResult } from './types';\n\n/* just for better typings */\nexport default class Worker {\n add: typeof add = add;\n done = done;\n search: typeof search = search;\n toJS = toJS;\n load = load;\n dispose = dispose;\n fromExternalJS = fromExternalJS;\n}\n\nlet store: any[] = [];\n\nlunr.tokenizer.separator = /\\s+/;\n\nlet builder: lunr.Builder;\n\nlet resolveIndex: (v: lunr.Index) => void;\n\nlet index: Promise<lunr.Index>;\n\nfunction initEmpty() {\n builder = new lunr.Builder();\n builder.field('title');\n builder.field('description');\n builder.ref('ref');\n\n builder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer);\n\n index = new Promise(resolve => {\n resolveIndex = resolve;\n });\n}\n\ninitEmpty();\n\nconst expandTerm = term => {\n const token = lunr.trimmer(new lunr.Token(term, {}));\n return '*' + lunr.stemmer(token) + '*';\n};\n\nexport function add<T>(title: string, description: string, meta?: T) {\n const ref = store.push(meta) - 1;\n const item = { title: title.toLowerCase(), description: description.toLowerCase(), ref };\n builder.add(item);\n}\n\nexport async function done() {\n resolveIndex(builder.build());\n}\n\nexport async function toJS() {\n return {\n store,\n index: (await index).toJSON(),\n };\n}\n\nexport async function fromExternalJS(path: string, exportName: string) {\n try {\n importScripts(path);\n if (!self[exportName]) {\n throw new Error('Broken index file format');\n }\n\n load(self[exportName]);\n } catch (e) {\n console.error('Failed to load search index: ' + e.message);\n }\n}\n\nexport async function load(state: any) {\n store = state.store;\n resolveIndex(lunr.Index.load(state.index));\n}\n\nexport async function dispose() {\n store = [];\n initEmpty();\n}\n\nexport async function search<Meta = string>(\n q: string,\n limit = 0,\n): Promise<Array<SearchResult<Meta>>> {\n if (q.trim().length === 0) {\n return [];\n }\n\n let searchResults = (await index).query(t => {\n q.trim()\n .toLowerCase()\n .split(/\\s+/)\n .forEach(term => {\n if (term.length === 1) return;\n const exp = expandTerm(term);\n t.term(exp, {});\n });\n });\n\n if (limit > 0) {\n searchResults = searchResults.slice(0, limit);\n }\n\n return searchResults.map(res => ({ meta: store[res.ref], score: res.score }));\n}\n","'use strict';\n\nconst sjs = require('fast-safe-stringify');\n\nconst colour = process.env.NODE_DISABLE_COLORS ?\n { red: '', yellow: '', green: '', normal: '' } :\n { red: '\\x1b[31m', yellow: '\\x1b[33;1m', green: '\\x1b[32m', normal: '\\x1b[0m' };\n\nfunction uniqueOnly(value, index, self) {\n return self.indexOf(value) === index;\n}\n\nfunction hasDuplicates(array) {\n return (new Set(array)).size !== array.length;\n}\n\nfunction allSame(array) {\n return (new Set(array)).size <= 1;\n}\n\nfunction deepEquals(obj1, obj2) {\n function _equals(obj1, obj2) {\n return sjs.stringify(obj1) === sjs.stringify(Object.assign({}, obj1, obj2));\n }\n return _equals(obj1, obj2) && _equals(obj2, obj1);\n}\n\nfunction compressArray(arr) {\n let result = [];\n for (let candidate of arr) {\n let dupe = result.find(function(e,i,a){\n return deepEquals(e,candidate);\n });\n if (!dupe) result.push(candidate);\n }\n return result;\n}\n\nfunction distinctArray(arr) {\n return (arr.length === compressArray(arr).length);\n}\n\nfunction firstDupe(arr) {\n return arr.find(function(e,i,a){\n return arr.indexOf(e)<i;\n });\n}\n\n/**\n * simple hash implementation based on https://stackoverflow.com/a/7616484/1749888\n * @param {string} s - string to hash\n * @returns {number} numerical hash code\n */\nfunction hash(s) {\n let hash = 0;\n let chr;\n if (s.length === 0) return hash;\n for (let i = 0; i < s.length; i++) {\n chr = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n\nString.prototype.toCamelCase = function camelize() {\n return this.toLowerCase().replace(/[-_ \\/\\.](.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n}\n\nconst parameterTypeProperties = [\n 'format',\n 'minimum',\n 'maximum',\n 'exclusiveMinimum',\n 'exclusiveMaximum',\n 'minLength',\n 'maxLength',\n 'multipleOf',\n 'minItems',\n 'maxItems',\n 'uniqueItems',\n 'minProperties',\n 'maxProperties',\n 'additionalProperties',\n 'pattern',\n 'enum',\n 'default'\n];\n\nconst arrayProperties = [\n 'items',\n 'minItems',\n 'maxItems',\n 'uniqueItems'\n];\n\nconst httpMethods = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'head',\n 'options',\n 'trace'\n];\n\nfunction sanitise(s) {\n s = s.replace('[]','Array');\n let components = s.split('/');\n components[0] = components[0].replace(/[^A-Za-z0-9_\\-\\.]+|\\s+/gm, '_');\n return components.join('/');\n}\n\nfunction sanitiseAll(s) {\n return sanitise(s.split('/').join('_'));\n}\n\nmodule.exports = {\n\n colour: colour,\n uniqueOnly: uniqueOnly,\n hasDuplicates: hasDuplicates,\n allSame: allSame,\n distinctArray: distinctArray,\n firstDupe: firstDupe,\n hash: hash,\n parameterTypeProperties: parameterTypeProperties,\n arrayProperties: arrayProperties,\n httpMethods: httpMethods,\n sanitise: sanitise,\n sanitiseAll: sanitiseAll\n\n};\n\n","'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst url = require('url');\n\nconst fetch = require('node-fetch-h2');\nconst yaml = require('yaml');\n\nconst jptr = require('reftools/lib/jptr.js').jptr;\nconst recurse = require('reftools/lib/recurse.js').recurse;\nconst clone = require('reftools/lib/clone.js').clone;\nconst deRef = require('reftools/lib/dereference.js').dereference;\nconst isRef = require('reftools/lib/isref.js').isRef;\nconst common = require('oas-kit-common');\n\nfunction unique(arr) {\n return [... new Set(arr)];\n}\n\nfunction readFileAsync(filename, encoding, options, pointer, def) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filename, encoding, function (err, data) {\n if (err) {\n if (options.ignoreIOErrors && def) {\n if (options.verbose) console.warn('FAILED',pointer);\n options.externalRefs[pointer].failed = true;\n resolve(def);\n }\n else {\n reject(err);\n }\n }\n else {\n resolve(data);\n }\n });\n });\n}\n\nfunction resolveAllFragment(obj, context, src, parentPath, base, options) {\n\n let attachPoint = options.externalRefs[src+parentPath].paths[0];\n\n let baseUrl = url.parse(base);\n let seen = {}; // seen is indexed by the $ref value and contains path replacements\n let changes = 1;\n while (changes) {\n changes = 0;\n recurse(obj, {identityDetection:true}, function (obj, key, state) {\n if (isRef(obj, key)) {\n if (obj[key].startsWith('#')) {\n if (!seen[obj[key]] && !obj.$fixed) {\n let target = clone(jptr(context, obj[key]));\n if (options.verbose>1) console.warn((target === false ? common.colour.red : common.colour.green)+'Fragment resolution', obj[key], common.colour.normal);\n /*\n ResolutionCase:A is where there is a local reference in an externally\n referenced document, and we have not seen it before. The reference\n is replaced by a copy of the data pointed to, which may be outside this fragment\n but within the context of the external document\n */\n if (target === false) {\n state.parent[state.pkey] = {}; /* case:A(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('Fragment $ref resolution failed '+obj[key]);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n else {\n changes++;\n state.parent[state.pkey] = target;\n seen[obj[key]] = state.path.replace('/%24ref','');\n }\n }\n else {\n if (!obj.$fixed) {\n let newRef = (attachPoint+'/'+seen[obj[key]]).split('/#/').join('/');\n state.parent[state.pkey] = { $ref: newRef, 'x-miro': obj[key], $fixed: true };\n if (options.verbose>1) console.warn('Replacing with',newRef);\n changes++;\n }\n /*\n ResolutionCase:B is where there is a local reference in an externally\n referenced document, and we have seen this reference before and resolved it.\n We create a new object containing the (immutable) $ref string\n */\n }\n }\n else if (baseUrl.protocol) {\n let newRef = url.resolve(base,obj[key]).toString();\n if (options.verbose>1) console.warn(common.colour.yellow+'Rewriting external url ref',obj[key],'as',newRef,common.colour.normal);\n obj['x-miro'] = obj[key];\n if (options.externalRefs[obj[key]]) {\n if (!options.externalRefs[newRef]) {\n options.externalRefs[newRef] = options.externalRefs[obj[key]];\n }\n options.externalRefs[newRef].failed = options.externalRefs[obj[key]].failed;\n }\n obj[key] = newRef;\n }\n else if (!obj['x-miro']) {\n let newRef = url.resolve(base,obj[key]).toString();\n let failed = false;\n if (options.externalRefs[obj[key]]) {\n failed = options.externalRefs[obj[key]].failed;\n }\n if (!failed) {\n if (options.verbose>1) console.warn(common.colour.yellow+'Rewriting external ref',obj[key],'as',newRef,common.colour.normal);\n obj['x-miro'] = obj[key]; // we use x-miro as a flag so we don't do this > once\n obj[key] = newRef;\n }\n }\n }\n });\n }\n\n recurse(obj,{},function(obj,key,state){\n if (isRef(obj, key)) {\n if (typeof obj.$fixed !== 'undefined') delete obj.$fixed;\n }\n });\n\n if (options.verbose>1) console.warn('Finished fragment resolution');\n return obj;\n}\n\nfunction filterData(data, options) {\n if (!options.filters || !options.filters.length) return data;\n for (let filter of options.filters) {\n data = filter(data, options);\n }\n return data;\n}\n\nfunction testProtocol(input, backup) {\n if (input && input.length > 2) return input;\n if (backup && backup.length > 2) return backup;\n return 'file:';\n}\n\nfunction resolveExternal(root, pointer, options, callback) {\n var u = url.parse(options.source);\n var base = options.source.split('\\\\').join('/').split('/');\n let doc = base.pop(); // drop the actual filename\n if (!doc) base.pop(); // in case it ended with a /\n let fragment = '';\n let fnComponents = pointer.split('#');\n if (fnComponents.length > 1) {\n fragment = '#' + fnComponents[1];\n pointer = fnComponents[0];\n }\n base = base.join('/');\n\n let u2 = url.parse(pointer);\n let effectiveProtocol = testProtocol(u2.protocol, u.protocol);\n\n let target;\n if (effectiveProtocol === 'file:') {\n target = path.resolve(base ? base + '/' : '', pointer);\n }\n else {\n target = url.resolve(base ? base + '/' : '', pointer);\n }\n\n if (options.cache[target]) {\n if (options.verbose) console.warn('CACHED', target, fragment);\n /*\n resolutionSource:A this is where we have cached the externally-referenced document from a\n file, http or custom handler\n */\n let context = clone(options.cache[target]);\n let data = options.externalRef = context;\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; // case:A(2) where the resolution fails\n if (options.fatal) {\n let ex = new Error('Cached $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n callback(clone(data), target, options);\n return Promise.resolve(data);\n }\n\n if (options.verbose) console.warn('GET', target, fragment);\n\n if (options.handlers && options.handlers[effectiveProtocol]) {\n return options.handlers[effectiveProtocol](base, pointer, fragment, options)\n .then(function (data) {\n options.externalRef = data;\n data = filterData(data, options);\n options.cache[target] = data;\n callback(data, target, options);\n return data;\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n throw ex;\n });\n }\n else if (effectiveProtocol && effectiveProtocol.startsWith('http')) {\n const fetchOptions = Object.assign({}, options.fetchOptions, { agent: options.agent });\n return options.fetch(target, fetchOptions)\n .then(function (res) {\n if (res.status !== 200) {\n if (options.ignoreIOErrors) {\n if (options.verbose) console.warn('FAILED',pointer);\n options.externalRefs[pointer].failed = true;\n return '{\"$ref\":\"'+pointer+'\"}';\n }\n else {\n throw new Error(`Received status code ${res.status}: ${target}`);\n }\n }\n return res.text();\n })\n .then(function (data) {\n try {\n let context = yaml.parse(data, { schema:'core', prettyErrors: true });\n data = options.externalRef = context;\n options.cache[target] = clone(data);\n /* resolutionSource:B, from the network, data is fresh, but we clone it into the cache */\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; /* case:B(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('Remote $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n }\n catch (ex) {\n if (options.verbose) console.warn(ex);\n if (options.promise && options.fatal) options.promise.reject(ex)\n else throw ex;\n }\n callback(data, target, options);\n return data;\n })\n .catch(function (err) {\n if (options.verbose) console.warn(err);\n options.cache[target] = {};\n if (options.promise && options.fatal) options.promise.reject(err)\n else throw err;\n });\n }\n else {\n const def = '{\"$ref\":\"'+pointer+'\"}';\n return readFileAsync(target, options.encoding || 'utf8', options, pointer, def)\n .then(function (data) {\n try {\n let context = yaml.parse(data, { schema:'core', prettyErrors: true });\n data = options.externalRef = context;\n /*\n resolutionSource:C from a file, data is fresh but we clone it into the cache\n */\n options.cache[target] = clone(data);\n if (fragment) {\n data = jptr(data, fragment);\n if (data === false) {\n data = {}; /* case:C(2) where the resolution fails */\n if (options.fatal) {\n let ex = new Error('File $ref resolution failed '+target+fragment);\n if (options.promise) options.promise.reject(ex)\n else throw ex;\n }\n }\n }\n data = resolveAllFragment(data, context, pointer, fragment, target, options);\n data = filterData(data, options);\n }\n catch (ex) {\n if (options.verbose) console.warn(ex);\n if (options.promise && options.fatal) options.promise.reject(ex)\n else throw ex;\n }\n callback(data, target, options);\n return data;\n })\n .catch(function(err){\n if (options.verbose) console.warn(err);\n if (options.promise && options.fatal) options.promise.reject(err)\n else throw err;\n });\n }\n}\n\nfunction scanExternalRefs(options) {\n return new Promise(function (res, rej) {\n\n function inner(obj,key,state){\n if (obj[key] && isRef(obj[key],'$ref')) {\n let $ref = obj[key].$ref;\n if (!$ref.startsWith('#')) { // is external\n\n let $extra = '';\n\n if (!refs[$ref]) {\n let potential = Object.keys(refs).find(function(e,i,a){\n return $ref.startsWith(e+'/');\n });\n if (potential) {\n if (options.verbose) console.warn('Found potential subschema at',potential);\n $extra = '/'+($ref.split('#')[1]||'').replace(potential.split('#')[1]||'');\n $extra = $extra.split('/undefined').join(''); // FIXME\n $ref = potential;\n }\n }\n\n if (!refs[$ref]) {\n refs[$ref] = { resolved: false, paths: [], extras:{}, description: obj[key].description };\n }\n if (refs[$ref].resolved) {\n // we've already seen it\n if (refs[$ref].failed) {\n // do none\n }\n else if (options.rewriteRefs) {\n let newRef = refs[$ref].resolvedAt;\n if (options.verbose>1) console.warn('Rewriting ref', $ref, newRef);\n obj[key]['x-miro'] = $ref;\n obj[key].$ref = newRef+$extra; // resolutionCase:C (new string)\n }\n else {\n obj[key] = clone(refs[$ref].data); // resolutionCase:D (cloned:yes)\n }\n }\n else {\n refs[$ref].paths.push(state.path);\n refs[$ref].extras[state.path] = $extra;\n }\n }\n }\n }\n\n let refs = options.externalRefs;\n\n if ((options.resolver.depth>0) && (options.source === options.resolver.base)) {\n // we only need to do any of this when called directly on pass #1\n return res(refs);\n }\n\n recurse(options.openapi.definitions, {identityDetection: true, path: '#/definitions'}, inner);\n recurse(options.openapi.components, {identityDetection: true, path: '#/components'}, inner);\n recurse(options.openapi, {identityDetection: true}, inner);\n\n res(refs);\n });\n}\n\nfunction findExternalRefs(options) {\n return new Promise(function (res, rej) {\n\n scanExternalRefs(options)\n .then(function (refs) {\n for (let ref in refs) {\n\n if (!refs[ref].resolved) {\n let depth = options.resolver.depth;\n if (depth>0) depth++;\n options.resolver.actions[depth].push(function () {\n return resolveExternal(options.openapi, ref, options, function (data, source, options) {\n if (!refs[ref].resolved) {\n let external = {};\n external.context = refs[ref];\n external.$ref = ref;\n external.original = clone(data);\n external.updated = data;\n external.source = source;\n options.externals.push(external);\n refs[ref].resolved = true;\n }\n\n let localOptions = Object.assign({}, options, { source: '',\n resolver: {actions: options.resolver.actions,\n depth: options.resolver.actions.length-1, base: options.resolver.base } });\n if (options.patch && refs[ref].description && !data.description &&\n (typeof data === 'object')) {\n data.description = refs[ref].description;\n }\n refs[ref].data = data;\n\n // sorting $refs by length causes bugs (due to overlapping regions?)\n let pointers = unique(refs[ref].paths);\n pointers = pointers.sort(function(a,b){\n const aComp = (a.startsWith('#/components/') || a.startsWith('#/definitions/'));\n const bComp = (b.startsWith('#/components/') || b.startsWith('#/definitions/'));\n if (aComp && !bComp) return -1;\n if (bComp && !aComp) return +1;\n return 0;\n });\n\n for (let ptr of pointers) {\n // shared x-ms-examples $refs confuse the fixupRefs heuristic in index.js\n if (refs[ref].resolvedAt && (ptr !== refs[ref].resolvedAt) && (ptr.indexOf('x-ms-examples/')<0)) {\n if (options.verbose>1) console.warn('Creating pointer to data at', ptr);\n jptr(options.openapi, ptr, { $ref: refs[ref].resolvedAt+refs[ref].extras[ptr], 'x-miro': ref+refs[ref].extras[ptr] }); // resolutionCase:E (new object)\n }\n else {\n if (refs[ref].resolvedAt) {\n if (options.verbose>1) console.warn('Avoiding circular reference');\n }\n else {\n refs[ref].resolvedAt = ptr;\n if (options.verbose>1) console.warn('Creating initial clone of data at', ptr);\n }\n let cdata = clone(data);\n jptr(options.openapi, ptr, cdata); // resolutionCase:F (cloned:yes)\n }\n }\n if (options.resolver.actions[localOptions.resolver.depth].length === 0) {\n //options.resolver.actions[localOptions.resolver.depth].push(function () { return scanExternalRefs(localOptions) });\n options.resolver.actions[localOptions.resolver.depth].push(function () { return findExternalRefs(localOptions) }); // findExternalRefs calls scanExternalRefs\n }\n });\n });\n }\n }\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n\n let result = {options:options};\n result.actions = options.resolver.actions[options.resolver.depth];\n res(result);\n });\n}\n\nconst serial = funcs =>\n funcs.reduce((promise, func) =>\n promise.then(result => func().then(Array.prototype.concat.bind(result))), Promise.resolve([]));\n\nfunction loopReferences(options, res, rej) {\n options.resolver.actions.push([]);\n findExternalRefs(options)\n .then(function (data) {\n serial(data.actions)\n .then(function () {\n if (options.resolver.depth>=options.resolver.actions.length) {\n console.warn('Ran off the end of resolver actions');\n return res(true);\n } else {\n options.resolver.depth++;\n if (options.resolver.actions[options.resolver.depth].length) {\n setTimeout(function () {\n loopReferences(data.options, res, rej);\n }, 0);\n }\n else {\n if (options.verbose>1) console.warn(common.colour.yellow+'Finished external resolution!',common.colour.normal);\n if (options.resolveInternal) {\n if (options.verbose>1) console.warn(common.colour.yellow+'Starting internal resolution!',common.colour.normal);\n options.openapi = deRef(options.openapi,options.original,{verbose:options.verbose-1});\n if (options.verbose>1) console.warn(common.colour.yellow+'Finished internal resolution!',common.colour.normal);\n }\n recurse(options.openapi,{},function(obj,key,state){\n if (isRef(obj, key)) {\n if (!options.preserveMiro) delete obj['x-miro'];\n }\n });\n res(options);\n }\n }\n })\n .catch(function (ex) {\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n })\n .catch(function(ex){\n if (options.verbose) console.warn(ex);\n rej(ex);\n });\n}\n\nfunction setupOptions(options) {\n if (!options.cache) options.cache = {};\n if (!options.fetch) options.fetch = fetch;\n\n if (options.source) {\n let srcUrl = url.parse(options.source);\n if (!srcUrl.protocol || srcUrl.protocol.length <= 2) { // windows drive-letters\n options.source = path.resolve(options.source);\n }\n }\n\n options.externals = [];\n options.externalRefs = {};\n options.rewriteRefs = true;\n options.resolver = {};\n options.resolver.depth = 0;\n options.resolver.base = options.source;\n options.resolver.actions = [[]];\n}\n\n/** compatibility function for swagger2openapi */\nfunction optionalResolve(options) {\n setupOptions(options);\n return new Promise(function (res, rej) {\n if (options.resolve)\n loopReferences(options, res, rej)\n else\n res(options);\n });\n}\n\nfunction resolve(openapi,source,options) {\n if (!options) options = {};\n options.openapi = openapi;\n options.source = source;\n options.resolve = true;\n setupOptions(options);\n return new Promise(function (res, rej) {\n loopReferences(options, res, rej)\n });\n}\n\nmodule.exports = {\n optionalResolve: optionalResolve,\n resolve: resolve\n};\n\n","'use strict';\n\n/**\n* functions to walk an OpenAPI schema object and traverse all subschemas\n* calling a callback function on each one\n*/\n\n/**\n* obtains the default starting state for the `state` object used\n* by walkSchema\n* @return the state object suitable for use in walkSchema\n*/\nfunction getDefaultState() {\n return { depth: 0, seen: new WeakMap(), top: true, combine: false, allowRefSiblings: false };\n}\n\n/**\n* begins the walk of a schema object\n* @param schema the schema object to walk\n* @param parent the parent schema, if any. Use empty object if none\n* @param state the initial starting state of the walker, usually obtained from `getDefaultState`. Use empty object to auto-initialise\n* @param callback a function taking a schema, parent and state to be called on this and all subschemas\n* @return the schema object\n*/\nfunction walkSchema(schema, parent, state, callback) {\n\n if (typeof state.depth === 'undefined') state = getDefaultState();\n if ((schema === null) || (typeof schema === 'undefined')) return schema;\n if (typeof schema.$ref !== 'undefined') {\n let temp = {$ref:schema.$ref};\n if (state.allowRefSiblings && schema.description) {\n temp.description = schema.description;\n }\n callback(temp,parent,state);\n return temp; // all other properties SHALL be ignored\n }\n\n if (state.combine) {\n if (schema.allOf && Array.isArray(schema.allOf) && schema.allOf.length === 1) {\n schema = Object.assign({},schema.allOf[0],schema);\n delete schema.allOf;\n }\n if (schema.anyOf && Array.isArray(schema.anyOf) && schema.anyOf.length === 1) {\n schema = Object.assign({},schema.anyOf[0],schema);\n delete schema.anyOf;\n }\n if (schema.oneOf && Array.isArray(schema.oneOf) && schema.oneOf.length === 1) {\n schema = Object.assign({},schema.oneOf[0],schema);\n delete schema.oneOf;\n }\n }\n\n callback(schema,parent,state);\n if (state.seen.has(schema)) {\n return schema;\n }\n //else\n if ((typeof schema === 'object') && (schema !== null)) state.seen.set(schema,true);\n state.top = false;\n state.depth++;\n\n if (typeof schema.items !== 'undefined') {\n state.property = 'items';\n walkSchema(schema.items,schema,state,callback);\n }\n if (schema.additionalItems) {\n if (typeof schema.additionalItems === 'object') {\n state.property = 'additionalItems';\n walkSchema(schema.additionalItems,schema,state,callback);\n }\n }\n if (schema.additionalProperties) {\n if (typeof schema.additionalProperties === 'object') {\n state.property = 'additionalProperties';\n walkSchema(schema.additionalProperties,schema,state,callback);\n }\n }\n if (schema.properties) {\n for (let prop in schema.properties) {\n let subSchema = schema.properties[prop];\n state.property = 'properties/'+prop;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.patternProperties) {\n for (let prop in schema.patternProperties) {\n let subSchema = schema.patternProperties[prop];\n state.property = 'patternProperties/'+prop;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.allOf) {\n for (let index in schema.allOf) {\n let subSchema = schema.allOf[index];\n state.property = 'allOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.anyOf) {\n for (let index in schema.anyOf) {\n let subSchema = schema.anyOf[index];\n state.property = 'anyOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.oneOf) {\n for (let index in schema.oneOf) {\n let subSchema = schema.oneOf[index];\n state.property = 'oneOf/'+index;\n walkSchema(subSchema,schema,state,callback);\n }\n }\n if (schema.not) {\n state.property = 'not';\n walkSchema(schema.not,schema,state,callback);\n }\n state.depth--;\n return schema;\n}\n\nmodule.exports = {\n getDefaultState: getDefaultState,\n walkSchema: walkSchema\n};\n\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","'use strict';\n\n/**\n* a collection of cloning functions\n*/\n\n/**\n* a no-op placeholder which returns the given object unchanged\n* useful for when a clone function needs to be passed but cloning is not\n* required\n* @param obj the input object\n* @return the input object, unchanged\n*/\nfunction nop(obj) {\n return obj;\n}\n\n/**\n* clones the given object using JSON.parse and JSON.stringify\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n* clones the given object's properties shallowly, ignores properties from prototype\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction shallowClone(obj) {\n let result = {};\n for (let p in obj) {\n if (obj.hasOwnProperty(p)) {\n result[p] = obj[p];\n }\n }\n return result;\n}\n\n/**\n* clones the given object's properties deeply, ignores properties from prototype\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction deepClone(obj) {\n let result = Array.isArray(obj) ? [] : {};\n for (let p in obj) {\n if (obj.hasOwnProperty(p) || Array.isArray(obj)) {\n result[p] = (typeof obj[p] === 'object') ? deepClone(obj[p]) : obj[p];\n }\n }\n return result;\n}\n\n/**\n* clones the given object's properties shallowly, using Object.assign\n* @param obj the object to clone\n* @return the cloned object\n*/\nfunction fastClone(obj) {\n return Object.assign({},obj);\n}\n\n/**\n* Source: stackoverflow http://bit.ly/2A1Kha6\n*/\n\nfunction circularClone(obj, hash) {\n if (!hash) hash = new WeakMap();\n // Do not try to clone primitives or functions\n if (Object(obj) !== obj || obj instanceof Function) return obj;\n if (hash.has(obj)) return hash.get(obj); // Cyclic reference\n try { // Try to run constructor (without arguments, as we don't know them)\n var result = new obj.constructor();\n } catch(e) { // Constructor failed, create object without running the constructor\n result = Object.create(Object.getPrototypeOf(obj));\n }\n // Optional: support for some standard constructors (extend as desired)\n /*if (obj instanceof Map)\n Array.from(obj, ([key, val]) => result.set(circularClone(key, hash),\n circularClone(val, hash)) );\n else if (obj instanceof Set)\n Array.from(obj, (key) => result.add(circularClone(key, hash)) );\n */\n // Register in hash\n hash.set(obj, result);\n // Clone and assign enumerable own properties recursively\n return Object.assign(result, ...Object.keys(obj).map (\n key => ({ [key]: circularClone(obj[key], hash) }) ));\n}\n\nmodule.exports = {\n nop : nop,\n clone : clone,\n shallowClone : shallowClone,\n deepClone : deepClone,\n fastClone : fastClone,\n circularClone : circularClone\n};\n\n","'use strict';\n\nconst recurse = require('./recurse.js').recurse;\nconst clone = require('./clone.js').shallowClone;\nconst jptr = require('./jptr.js').jptr;\nconst isRef = require('./isref.js').isRef;\n\nvar getLogger = function (options) {\n if (options && options.verbose) {\n return {\n warn: function() {\n var args = Array.prototype.slice.call(arguments);\n console.warn.apply(console, args);\n }\n }\n }\n else {\n return {\n warn: function() {\n //nop\n }\n }\n }\n}\n\n/**\n* dereferences the given object\n* @param o the object to dereference\n* @definitions a source of definitions to reference\n* @options optional settings (used recursively)\n* @return the dereferenced object\n*/\nfunction dereference(o,definitions,options) {\n if (!options) options = {};\n if (!options.cache) options.cache = {};\n if (!options.state) options.state = {};\n options.state.identityDetection = true;\n // options.depth allows us to limit cloning to the first invocation\n options.depth = (options.depth ? options.depth+1 : 1);\n let obj = (options.depth > 1 ? o : clone(o));\n let container = { data: obj };\n let defs = (options.depth > 1 ? definitions : clone(definitions));\n // options.master is the top level object, regardless of depth\n if (!options.master) options.master = obj;\n\n let logger = getLogger(options);\n\n let changes = 1;\n while (changes > 0) {\n changes = 0;\n recurse(container,options.state,function(obj,key,state){\n if (isRef(obj,key)) {\n let $ref = obj[key]; // immutable\n changes++;\n if (!options.cache[$ref]) {\n let entry = {};\n entry.path = state.path.split('/$ref')[0];\n entry.key = $ref;\n logger.warn('Dereffing %s at %s',$ref,entry.path);\n entry.source = defs;\n entry.data = jptr(entry.source,entry.key);\n if (entry.data === false) {\n entry.data = jptr(options.master,entry.key);\n entry.source = options.master;\n }\n if (entry.data === false) {\n logger.warn('Missing $ref target',entry.key);\n }\n options.cache[$ref] = entry;\n entry.data = state.parent[state.pkey] = dereference(jptr(entry.source,entry.key),entry.source,options);\n if ((options.$ref) && (typeof state.parent[state.pkey] === 'object')) state.parent[state.pkey][options.$ref] = $ref;\n entry.resolved = true;\n }\n else {\n let entry = options.cache[$ref];\n if (entry.resolved) {\n // we have already seen and resolved this reference\n logger.warn('Patching %s for %s',$ref,entry.path);\n state.parent[state.pkey] = entry.data;\n if ((options.$ref) && (typeof state.parent[state.pkey] === 'object')) state.parent[state.pkey][options.$ref] = $ref;\n }\n else if ($ref === entry.path) {\n // reference to itself, throw\n throw new Error(`Tight circle at ${entry.path}`);\n }\n else {\n // we're dealing with a circular reference here\n logger.warn('Unresolved ref');\n state.parent[state.pkey] = jptr(entry.source,entry.path);\n if (state.parent[state.pkey] === false) {\n state.parent[state.pkey] = jptr(entry.source,entry.key);\n }\n if ((options.$ref) && (typeof state.parent[state.pkey] === 'object')) state.parent[options.$ref] = $ref;\n }\n }\n }\n });\n }\n return container.data;\n}\n\nmodule.exports = {\n dereference : dereference\n};\n\n","'use strict';\n\nfunction isRef(obj,key) {\n return ((key === '$ref') && (!!obj && typeof obj[key] === 'string'));\n}\n\nmodule.exports = {\n isRef: isRef\n};\n\n","'use strict';\n\n/**\n* escapes JSON Pointer using ~0 for ~ and ~1 for /\n* @param s the string to escape\n* @return the escaped string\n*/\nfunction jpescape(s) {\n return s.replace(/\\~/g, '~0').replace(/\\//g, '~1');\n}\n\n/**\n* unescapes JSON Pointer using ~0 for ~ and ~1 for /\n* @param s the string to unescape\n* @return the unescaped string\n*/\nfunction jpunescape(s) {\n return s.replace(/\\~1/g, '/').replace(/~0/g, '~');\n}\n\n// JSON Pointer specification: http://tools.ietf.org/html/rfc6901\n\n/**\n* from obj, return the property with a JSON Pointer prop, optionally setting it\n* to newValue\n* @param obj the object to point into\n* @param prop the JSON Pointer or JSON Reference\n* @param newValue optional value to set the property to\n* @return the found property, or false\n*/\nfunction jptr(obj, prop, newValue) {\n if (typeof obj === 'undefined') return false;\n if (!prop || typeof prop !== 'string' || (prop === '#')) return (typeof newValue !== 'undefined' ? newValue : obj);\n\n if (prop.indexOf('#')>=0) {\n let parts = prop.split('#');\n let uri = parts[0];\n if (uri) return false; // we do internal resolution only\n prop = parts[1];\n prop = decodeURIComponent(prop.slice(1).split('+').join(' '));\n }\n if (prop.startsWith('/')) prop = prop.slice(1);\n\n let components = prop.split('/');\n for (let i=0;i<components.length;i++) {\n components[i] = jpunescape(components[i]);\n\n let setAndLast = (typeof newValue !== 'undefined') && (i == components.length-1);\n\n let index = parseInt(components[i],10);\n if (!Array.isArray(obj) || isNaN(index) || (index.toString() !== components[i])) {\n index = (Array.isArray(obj) && components[i] === '-') ? -2 : -1;\n }\n else {\n components[i] = (i > 0) ? components[i-1] : ''; // backtrack to indexed property name\n }\n\n if ((index != -1) || (obj && obj.hasOwnProperty(components[i]))) {\n if (index >= 0) {\n if (setAndLast) {\n obj[index] = newValue;\n }\n obj = obj[index];\n }\n else if (index === -2) {\n if (setAndLast) {\n if (Array.isArray(obj)) {\n obj.push(newValue);\n }\n return newValue;\n }\n else return undefined;\n }\n else {\n if (setAndLast) {\n obj[components[i]] = newValue;\n }\n obj = obj[components[i]];\n }\n }\n else {\n if ((typeof newValue !== 'undefined') && (typeof obj === 'object') &&\n (!Array.isArray(obj))) {\n obj[components[i]] = (setAndLast ? newValue : ((components[i+1] === '0' || components[i+1] === '-') ? [] : {}));\n obj = obj[components[i]];\n }\n else return false;\n }\n }\n return obj;\n}\n\nmodule.exports = {\n jptr : jptr,\n jpescape : jpescape,\n jpunescape : jpunescape\n};\n","'use strict';\n\nconst jpescape = require('./jptr.js').jpescape;\n\nfunction defaultState() {\n return {\n path: '#',\n depth: 0,\n pkey: '',\n parent: {},\n payload: {},\n seen: new WeakMap(),\n identity: false,\n identityDetection: false\n };\n}\n\n/**\n* recurses through the properties of an object, given an optional starting state\n* anything you pass in state.payload is passed to the callback each time\n* @param object the object to recurse through\n* @param state optional starting state, can be set to null or {}\n* @param callback the function which receives object,key,state on each property\n*/\nfunction recurse(object, state, callback) {\n if (!state) state = {depth:0};\n if (!state.depth) {\n state = Object.assign({},defaultState(),state);\n }\n if (typeof object !== 'object') return;\n let oPath = state.path;\n for (let key in object) {\n state.key = key;\n state.path = state.path + '/' + encodeURIComponent(jpescape(key));\n state.identityPath = state.seen.get(object[key]);\n state.identity = (typeof state.identityPath !== 'undefined');\n if (object.hasOwnProperty(key)) {\n callback(object, key, state);\n }\n if ((typeof object[key] === 'object') && (!state.identity)) {\n if (state.identityDetection && !Array.isArray(object[key]) && object[key] !== null) {\n state.seen.set(object[key],state.path);\n }\n let newState = {};\n newState.parent = object;\n newState.path = state.path;\n newState.depth = state.depth ? state.depth+1 : 1;\n newState.pkey = key;\n newState.payload = state.payload;\n newState.seen = state.seen;\n newState.identity = false;\n newState.identityDetection = state.identityDetection;\n recurse(object[key], newState, callback);\n }\n state.path = oPath;\n }\n}\n\nmodule.exports = {\n recurse : recurse\n};\n\n","\n import API from \"!../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../css-loader/dist/cjs.js!../../esbuild-loader/dist/index.js??ruleSet[1].rules[1].use[2]!./perfect-scrollbar.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../css-loader/dist/cjs.js!../../esbuild-loader/dist/index.js??ruleSet[1].rules[1].use[2]!./perfect-scrollbar.css\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","// @ts-check\n'use strict';\n\nconst fs = require('fs');\nconst url = require('url');\nconst pathlib = require('path');\n\nconst maybe = require('call-me-maybe');\nconst fetch = require('node-fetch-h2');\nconst yaml = require('yaml');\n\nconst jptr = require('reftools/lib/jptr.js');\nconst resolveInternal = jptr.jptr;\nconst isRef = require('reftools/lib/isref.js').isRef;\nconst clone = require('reftools/lib/clone.js').clone;\nconst cclone = require('reftools/lib/clone.js').circularClone;\nconst recurse = require('reftools/lib/recurse.js').recurse;\nconst resolver = require('oas-resolver');\nconst sw = require('oas-schema-walker');\nconst common = require('oas-kit-common');\n\nconst statusCodes = require('./lib/statusCodes.js').statusCodes;\n\nconst ourVersion = require('./package.json').version;\n\n// TODO handle specification-extensions with plugins?\n\nconst targetVersion = '3.0.0';\nlet componentNames; // initialised in main\n\nclass S2OError extends Error {\n constructor(message) {\n super(message);\n this.name = 'S2OError';\n }\n}\n\nfunction throwError(message, options) {\n let err = new S2OError(message);\n err.options = options;\n if (options.promise) {\n options.promise.reject(err);\n }\n else {\n throw err;\n }\n}\n\nfunction throwOrWarn(message, container, options) {\n if (options.warnOnly) {\n container[options.warnProperty||'x-s2o-warning'] = message;\n }\n else {\n throwError(message, options);\n }\n}\n\nfunction fixUpSubSchema(schema,parent,options) {\n if (schema.nullable) options.patches++;\n if (schema.discriminator && typeof schema.discriminator === 'string') {\n schema.discriminator = { propertyName: schema.discriminator };\n }\n if (schema.items && Array.isArray(schema.items)) {\n if (schema.items.length === 0) {\n schema.items = {};\n }\n else if (schema.items.length === 1) {\n schema.items = schema.items[0];\n }\n else schema.items = { anyOf: schema.items };\n }\n\n if (schema.type && Array.isArray(schema.type)) {\n if (options.patch) {\n options.patches++;\n if (schema.type.length === 0) {\n delete schema.type;\n }\n else {\n if (!schema.oneOf) schema.oneOf = [];\n for (let type of schema.type) {\n let newSchema = {};\n if (type === 'null') {\n schema.nullable = true;\n }\n else {\n newSchema.type = type;\n for (let prop of common.arrayProperties) {\n if (typeof schema.prop !== 'undefined') {\n newSchema[prop] = schema[prop];\n delete schema[prop];\n }\n }\n }\n if (newSchema.type) {\n schema.oneOf.push(newSchema);\n }\n }\n delete schema.type;\n if (schema.oneOf.length === 0) {\n delete schema.oneOf; // means was just null => nullable\n }\n else if (schema.oneOf.length < 2) {\n schema.type = schema.oneOf[0].type;\n if (Object.keys(schema.oneOf[0]).length > 1) {\n throwOrWarn('Lost properties from oneOf',schema,options);\n }\n delete schema.oneOf;\n }\n }\n // do not else this\n if (schema.type && Array.isArray(schema.type) && schema.type.length === 1) {\n schema.type = schema.type[0];\n }\n }\n else {\n throwError('(Patchable) schema type must not be an array', options);\n }\n }\n\n if (schema.type && schema.type === 'null') {\n delete schema.type;\n schema.nullable = true;\n }\n if ((schema.type === 'array') && (!schema.items)) {\n schema.items = {};\n }\n if (schema.type === 'file') {\n schema.type = 'string';\n schema.format = 'binary';\n }\n if (typeof schema.required === 'boolean') {\n if (schema.required && schema.name) {\n if (typeof parent.required === 'undefined') {\n parent.required = [];\n }\n if (Array.isArray(parent.required)) parent.required.push(schema.name);\n }\n delete schema.required;\n }\n\n // TODO if we have a nested properties (object inside an object) and the\n // *parent* type is not set, force it to object\n // TODO if default is set but type is not set, force type to typeof default\n\n if (schema.xml && typeof schema.xml.namespace === 'string') {\n if (!schema.xml.namespace) delete schema.xml.namespace;\n }\n if (typeof schema.allowEmptyValue !== 'undefined') {\n options.patches++;\n delete schema.allowEmptyValue;\n }\n}\n\nfunction fixUpSubSchemaExtensions(schema,parent) {\n if (schema[\"x-required\"] && Array.isArray(schema[\"x-required\"])) {\n if (!schema.required) schema.required = [];\n schema.required = schema.required.concat(schema[\"x-required\"]);\n delete schema[\"x-required\"];\n }\n if (schema[\"x-anyOf\"]) {\n schema.anyOf = schema[\"x-anyOf\"];\n delete schema[\"x-anyOf\"];\n }\n if (schema[\"x-oneOf\"]) {\n schema.oneOf = schema[\"x-oneOf\"];\n delete schema[\"x-oneOf\"];\n }\n if (schema[\"x-not\"]) {\n schema.not = schema[\"x-not\"];\n delete schema[\"x-not\"];\n }\n if (typeof schema[\"x-nullable\"] === 'boolean') {\n schema.nullable = schema[\"x-nullable\"];\n delete schema[\"x-nullable\"];\n }\n if ((typeof schema[\"x-discriminator\"] === 'object') && (typeof schema[\"x-discriminator\"].propertyName === 'string')) {\n schema.discriminator = schema[\"x-discriminator\"];\n delete schema[\"x-discriminator\"];\n for (let entry in schema.discriminator.mapping) {\n let schemaOrRef = schema.discriminator.mapping[entry];\n if (schemaOrRef.startsWith('#/definitions/')) {\n schema.discriminator.mapping[entry] = schemaOrRef.replace('#/definitions/','#/components/schemas/');\n }\n }\n }\n}\n\nfunction fixUpSchema(schema,options) {\n sw.walkSchema(schema,{},{},function(schema,parent,state){\n fixUpSubSchemaExtensions(schema,parent);\n fixUpSubSchema(schema,parent,options);\n });\n}\n\nfunction getMiroComponentName(ref) {\n if (ref.indexOf('#')>=0) {\n ref = ref.split('#')[1].split('/').pop();\n }\n else {\n ref = ref.split('/').pop().split('.')[0];\n }\n return encodeURIComponent(common.sanitise(ref));\n}\n\nfunction fixupRefs(obj, key, state) {\n let options = state.payload.options;\n if (isRef(obj,key)) {\n if (obj[key].startsWith('#/components/')) {\n // no-op\n }\n else if (obj[key] === '#/consumes') {\n // people are *so* creative\n delete obj[key];\n state.parent[state.pkey] = clone(options.openapi.consumes);\n }\n else if (obj[key] === '#/produces') {\n // and by creative, I mean devious\n delete obj[key];\n state.parent[state.pkey] = clone(options.openapi.produces);\n }\n else if (obj[key].startsWith('#/definitions/')) {\n //only the first part of a schema component name must be sanitised\n let keys = obj[key].replace('#/definitions/', '').split('/');\n const ref = jptr.jpunescape(keys[0]);\n\n let newKey = componentNames.schemas[decodeURIComponent(ref)]; // lookup, resolves a $ref\n if (newKey) {\n keys[0] = newKey;\n }\n else {\n throwOrWarn('Could not resolve reference '+obj[key],obj,options);\n }\n obj[key] = '#/components/schemas/' + keys.join('/');\n }\n else if (obj[key].startsWith('#/parameters/')) {\n // for extensions like Apigee's x-templates\n obj[key] = '#/components/parameters/' + common.sanitise(obj[key].replace('#/parameters/', ''));\n }\n else if (obj[key].startsWith('#/responses/')) {\n // for extensions like Apigee's x-templates\n obj[key] = '#/components/responses/' + common.sanitise(obj[key].replace('#/responses/', ''));\n }\n else if (obj[key].startsWith('#')) {\n // fixes up direct $refs or those created by resolvers\n let target = clone(jptr.jptr(options.openapi,obj[key]));\n if (target === false) throwOrWarn('direct $ref not found '+obj[key],obj,options)\n else if (options.refmap[obj[key]]) {\n obj[key] = options.refmap[obj[key]];\n }\n else {\n // we use a heuristic to determine what kind of thing is being referenced\n let oldRef = obj[key];\n oldRef = oldRef.replace('/properties/headers/','');\n oldRef = oldRef.replace('/properties/responses/','');\n oldRef = oldRef.replace('/properties/parameters/','');\n oldRef = oldRef.replace('/properties/schemas/','');\n let type = 'schemas';\n let schemaIndex = oldRef.lastIndexOf('/schema');\n type = (oldRef.indexOf('/headers/')>schemaIndex) ? 'headers' :\n ((oldRef.indexOf('/responses/')>schemaIndex) ? 'responses' :\n ((oldRef.indexOf('/example')>schemaIndex) ? 'examples' :\n ((oldRef.indexOf('/x-')>schemaIndex) ? 'extensions' :\n ((oldRef.indexOf('/parameters/')>schemaIndex) ? 'parameters' : 'schemas'))));\n\n // non-body/form parameters have not moved in the overall structure (like responses)\n // but extracting the requestBodies can cause the *number* of parameters to change\n\n if (type === 'schemas') {\n fixUpSchema(target,options);\n }\n\n if ((type !== 'responses') && (type !== 'extensions')) {\n let prefix = type.substr(0,type.length-1);\n if ((prefix === 'parameter') && target.name && (target.name === common.sanitise(target.name))) {\n prefix = encodeURIComponent(target.name);\n }\n\n let suffix = 1;\n if (obj['x-miro']) {\n prefix = getMiroComponentName(obj['x-miro']);\n suffix = '';\n }\n\n while (jptr.jptr(options.openapi,'#/components/'+type+'/'+prefix+suffix)) {\n suffix = (suffix === '' ? 2 : ++suffix);\n }\n\n let newRef = '#/components/'+type+'/'+prefix+suffix;\n let refSuffix = '';\n\n if (type === 'examples') {\n target = { value: target };\n refSuffix = '/value';\n }\n\n jptr.jptr(options.openapi,newRef,target);\n options.refmap[obj[key]] = newRef+refSuffix;\n obj[key] = newRef+refSuffix;\n }\n }\n }\n\n delete obj['x-miro'];\n // do this last - rework cases where $ref object has sibling properties\n if (Object.keys(obj).length > 1) {\n const tmpRef = obj[key];\n const inSchema = state.path.indexOf('/schema') >= 0; // not perfect, but in the absence of a reasonably-sized and complete OAS 2.0 parser...\n if (options.refSiblings === 'preserve') {\n // no-op\n }\n else if (inSchema && (options.refSiblings === 'allOf')) {\n delete obj.$ref;\n state.parent[state.pkey] = { allOf: [ { $ref: tmpRef }, obj ]};\n }\n else { // remove, or not 'preserve' and not in a schema\n state.parent[state.pkey] = { $ref: tmpRef };\n }\n }\n\n }\n if ((key === 'x-ms-odata') && (typeof obj[key] === 'string') && (obj[key].startsWith('#/'))) {\n let keys = obj[key].replace('#/definitions/', '').replace('#/components/schemas/','').split('/');\n let newKey = componentNames.schemas[decodeURIComponent(keys[0])]; // lookup, resolves a $ref\n if (newKey) {\n keys[0] = newKey;\n }\n else {\n throwOrWarn('Could not resolve reference '+obj[key],obj,options);\n }\n obj[key] = '#/components/schemas/' + keys.join('/');\n }\n}\n\n/*\n* This has to happen as a separate pass because multiple $refs may point\n* through elements of the same path\n*/\nfunction dedupeRefs(openapi, options) {\n for (let ref in options.refmap) {\n jptr.jptr(openapi,ref,{ $ref: options.refmap[ref] });\n }\n}\n\nfunction processSecurity(securityObject) {\n for (let s in securityObject) {\n for (let k in securityObject[s]) {\n let sname = common.sanitise(k);\n if (k !== sname) {\n securityObject[s][sname] = securityObject[s][k];\n delete securityObject[s][k];\n }\n }\n }\n}\n\nfunction processSecurityScheme(scheme, options) {\n if (scheme.type === 'basic') {\n scheme.type = 'http';\n scheme.scheme = 'basic';\n }\n if (scheme.type === 'oauth2') {\n let flow = {};\n let flowName = scheme.flow;\n if (scheme.flow === 'application') flowName = 'clientCredentials';\n if (scheme.flow === 'accessCode') flowName = 'authorizationCode';\n if (typeof scheme.authorizationUrl !== 'undefined') flow.authorizationUrl = scheme.authorizationUrl.split('?')[0].trim() || '/';\n if (typeof scheme.tokenUrl === 'string') flow.tokenUrl = scheme.tokenUrl.split('?')[0].trim() || '/';\n flow.scopes = scheme.scopes || {};\n scheme.flows = {};\n scheme.flows[flowName] = flow;\n delete scheme.flow;\n delete scheme.authorizationUrl;\n delete scheme.tokenUrl;\n delete scheme.scopes;\n if (typeof scheme.name !== 'undefined') {\n if (options.patch) {\n options.patches++;\n delete scheme.name;\n }\n else {\n throwError('(Patchable) oauth2 securitySchemes should not have name property', options);\n }\n }\n }\n}\n\nfunction keepParameters(value) {\n return (value && !value[\"x-s2o-delete\"]);\n}\n\nfunction processHeader(header, options) {\n if (header.$ref) {\n header.$ref = header.$ref.replace('#/responses/', '#/components/responses/');\n }\n else {\n if (header.type && !header.schema) {\n header.schema = {};\n }\n if (header.type) header.schema.type = header.type;\n if (header.items && header.items.type !== 'array') {\n if (header.items.collectionFormat !== header.collectionFormat) {\n throwOrWarn('Nested collectionFormats are not supported', header, options);\n }\n delete header.items.collectionFormat;\n }\n if (header.type === 'array') {\n if (header.collectionFormat === 'ssv') {\n throwOrWarn('collectionFormat:ssv is no longer supported for headers', header, options); // not lossless\n }\n else if (header.collectionFormat === 'pipes') {\n throwOrWarn('collectionFormat:pipes is no longer supported for headers', header, options); // not lossless\n }\n else if (header.collectionFormat === 'multi') {\n header.explode = true;\n }\n else if (header.collectionFormat === 'tsv') {\n throwOrWarn('collectionFormat:tsv is no longer supported', header, options); // not lossless\n header[\"x-collectionFormat\"] = 'tsv';\n }\n else { // 'csv'\n header.style = 'simple';\n }\n delete header.collectionFormat;\n }\n else if (header.collectionFormat) {\n if (options.patch) {\n options.patches++;\n delete header.collectionFormat;\n }\n else {\n throwError('(Patchable) collectionFormat is only applicable to header.type array', options);\n }\n }\n delete header.type;\n for (let prop of common.parameterTypeProperties) {\n if (typeof header[prop] !== 'undefined') {\n header.schema[prop] = header[prop];\n delete header[prop];\n }\n }\n for (let prop of common.arrayProperties) {\n if (typeof header[prop] !== 'undefined') {\n header.schema[prop] = header[prop];\n delete header[prop];\n }\n }\n }\n}\n\nfunction fixParamRef(param, options) {\n if (param.$ref.indexOf('#/parameters/') >= 0) {\n let refComponents = param.$ref.split('#/parameters/');\n param.$ref = refComponents[0] + '#/components/parameters/' + common.sanitise(refComponents[1]);\n }\n if (param.$ref.indexOf('#/definitions/') >= 0) {\n throwOrWarn('Definition used as parameter', param, options);\n }\n}\n\nfunction attachRequestBody(op,options) {\n let newOp = {};\n for (let key of Object.keys(op)) {\n newOp[key] = op[key];\n if (key === 'parameters') {\n newOp.requestBody = {};\n if (options.rbname) newOp[options.rbname] = '';\n }\n }\n newOp.requestBody = {}; // just in case there are no parameters\n return newOp;\n}\n\n/**\n * @returns op, as it may have changed\n */\nfunction processParameter(param, op, path, method, index, openapi, options) {\n let result = {};\n let singularRequestBody = true;\n let originalType;\n\n if (op && op.consumes && (typeof op.consumes === 'string')) {\n if (options.patch) {\n options.patches++;\n op.consumes = [op.consumes];\n }\n else {\n return throwError('(Patchable) operation.consumes must be an array', options);\n }\n }\n if (!Array.isArray(openapi.consumes)) delete openapi.consumes;\n let consumes = ((op ? op.consumes : null) || (openapi.consumes || [])).filter(common.uniqueOnly);\n\n if (param && param.$ref && (typeof param.$ref === 'string')) {\n // if we still have a ref here, it must be an internal one\n fixParamRef(param, options);\n let ptr = decodeURIComponent(param.$ref.replace('#/components/parameters/', ''));\n let rbody = false;\n let target = openapi.components.parameters[ptr]; // resolves a $ref, must have been sanitised already\n\n if (((!target) || (target[\"x-s2o-delete\"])) && param.$ref.startsWith('#/')) {\n // if it's gone, chances are it's a requestBody component now unless spec was broken\n param[\"x-s2o-delete\"] = true;\n rbody = true;\n }\n\n // shared formData parameters from swagger or path level could be used in any combination.\n // we dereference all op.requestBody's then hash them and pull out common ones later\n\n if (rbody) {\n let ref = param.$ref;\n let newParam = resolveInternal(openapi, param.$ref);\n if (!newParam && ref.startsWith('#/')) {\n throwOrWarn('Could not resolve reference ' + ref, param, options);\n }\n else {\n if (newParam) param = newParam; // preserve reference\n }\n }\n }\n\n if (param && (param.name || param.in)) { // if it's a real parameter OR we've dereferenced it\n\n if (typeof param['x-deprecated'] === 'boolean') {\n param.deprecated = param['x-deprecated'];\n delete param['x-deprecated'];\n }\n\n if (typeof param['x-example'] !== 'undefined') {\n param.example = param['x-example'];\n delete param['x-example'];\n }\n\n if ((param.in !== 'body') && (!param.type)) {\n if (options.patch) {\n options.patches++;\n param.type = 'string';\n }\n else {\n throwError('(Patchable) parameter.type is mandatory for non-body parameters', options);\n }\n }\n if (param.type && typeof param.type === 'object' && param.type.$ref) {\n // $ref anywhere sensibility\n param.type = resolveInternal(openapi, param.type.$ref);\n }\n if (param.type === 'file') {\n param['x-s2o-originalType'] = param.type;\n originalType = param.type;\n }\n if (param.description && typeof param.description === 'object' && param.description.$ref) {\n // $ref anywhere sensibility\n param.description = resolveInternal(openapi, param.description.$ref);\n }\n if (param.description === null) delete param.description;\n\n let oldCollectionFormat = param.collectionFormat;\n if ((param.type === 'array') && !oldCollectionFormat) {\n oldCollectionFormat = 'csv';\n }\n if (oldCollectionFormat) {\n if (param.type !== 'array') {\n if (options.patch) {\n options.patches++;\n delete param.collectionFormat;\n }\n else {\n throwError('(Patchable) collectionFormat is only applicable to param.type array', options);\n }\n }\n if ((oldCollectionFormat === 'csv') && ((param.in === 'query') || (param.in === 'cookie'))) {\n param.style = 'form';\n param.explode = false;\n }\n if ((oldCollectionFormat === 'csv') && ((param.in === 'path') || (param.in === 'header'))) {\n param.style = 'simple';\n }\n if (oldCollectionFormat === 'ssv') {\n if (param.in === 'query') {\n param.style = 'spaceDelimited';\n }\n else {\n throwOrWarn('collectionFormat:ssv is no longer supported except for in:query parameters', param, options); // not lossless\n }\n }\n if (oldCollectionFormat === 'pipes') {\n if (param.in === 'query') {\n param.style = 'pipeDelimited';\n }\n else {\n throwOrWarn('collectionFormat:pipes is no longer supported except for in:query parameters', param, options); // not lossless\n }\n }\n if (oldCollectionFormat === 'multi') {\n param.explode = true;\n }\n if (oldCollectionFormat === 'tsv') {\n throwOrWarn('collectionFormat:tsv is no longer supported', param, options); // not lossless\n param[\"x-collectionFormat\"] = 'tsv';\n }\n delete param.collectionFormat;\n }\n\n if (param.type && (param.type !== 'body') && (param.in !== 'formData')) {\n if (param.items && param.schema) {\n throwOrWarn('parameter has array,items and schema', param, options);\n }\n else {\n if (param.schema) options.patches++; // already present\n if ((!param.schema) || (typeof param.schema !== 'object')) param.schema = {};\n param.schema.type = param.type;\n if (param.items) {\n param.schema.items = param.items;\n delete param.items;\n recurse(param.schema.items, null, function (obj, key, state) {\n if ((key === 'collectionFormat') && (typeof obj[key] === 'string')) {\n if (oldCollectionFormat && obj[key] !== oldCollectionFormat) {\n throwOrWarn('Nested collectionFormats are not supported', param, options);\n }\n delete obj[key]; // not lossless\n }\n // items in 2.0 was a subset of the JSON-Schema items\n // object, it gets fixed up below\n });\n }\n for (let prop of common.parameterTypeProperties) {\n if (typeof param[prop] !== 'undefined') param.schema[prop] = param[prop];\n delete param[prop];\n }\n }\n }\n\n if (param.schema) {\n fixUpSchema(param.schema,options);\n }\n\n if (param[\"x-ms-skip-url-encoding\"]) {\n if (param.in === 'query') { // might be in:path, not allowed in OAS3\n param.allowReserved = true;\n delete param[\"x-ms-skip-url-encoding\"];\n }\n }\n }\n\n if (param && param.in === 'formData') {\n // convert to requestBody component\n singularRequestBody = false;\n result.content = {};\n let contentType = 'application/x-www-form-urlencoded';\n if ((consumes.length) && (consumes.indexOf('multipart/form-data') >= 0)) {\n contentType = 'multipart/form-data';\n }\n\n result.content[contentType] = {};\n if (param.schema) {\n result.content[contentType].schema = param.schema;\n if (param.schema.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.$ref.replace('#/components/schemas/', ''));\n }\n }\n else {\n result.content[contentType].schema = {};\n result.content[contentType].schema.type = 'object';\n result.content[contentType].schema.properties = {};\n result.content[contentType].schema.properties[param.name] = {};\n let schema = result.content[contentType].schema;\n let target = result.content[contentType].schema.properties[param.name];\n if (param.description) target.description = param.description;\n if (param.example) target.example = param.example;\n if (param.type) target.type = param.type;\n\n for (let prop of common.parameterTypeProperties) {\n if (typeof param[prop] !== 'undefined') target[prop] = param[prop];\n }\n if (param.required === true) {\n if (!schema.required) schema.required = [];\n schema.required.push(param.name);\n result.required = true;\n }\n if (typeof param.default !== 'undefined') target.default = param.default;\n if (target.properties) target.properties = param.properties;\n if (param.allOf) target.allOf = param.allOf; // new are anyOf, oneOf, not\n if ((param.type === 'array') && (param.items)) {\n target.items = param.items;\n if (target.items.collectionFormat) delete target.items.collectionFormat;\n }\n if ((originalType === 'file') || (param['x-s2o-originalType'] === 'file')) {\n target.type = 'string';\n target.format = 'binary';\n }\n\n // Copy any extensions on the form param to the target schema property.\n copyExtensions(param, target);\n }\n }\n else if (param && (param.type === 'file')) {\n // convert to requestBody\n if (param.required) result.required = param.required;\n result.content = {};\n result.content[\"application/octet-stream\"] = {};\n result.content[\"application/octet-stream\"].schema = {};\n result.content[\"application/octet-stream\"].schema.type = 'string';\n result.content[\"application/octet-stream\"].schema.format = 'binary';\n copyExtensions(param, result);\n }\n if (param && param.in === 'body') {\n result.content = {};\n if (param.name) result['x-s2o-name'] = (op && op.operationId ? common.sanitiseAll(op.operationId) : '') + ('_' + param.name).toCamelCase();\n if (param.description) result.description = param.description;\n if (param.required) result.required = param.required;\n\n // Set the \"request body name\" extension on the operation if requested.\n if (op && options.rbname && param.name) {\n op[options.rbname] = param.name;\n }\n if (param.schema && param.schema.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.$ref.replace('#/components/schemas/', ''));\n }\n else if (param.schema && (param.schema.type === 'array') && param.schema.items && param.schema.items.$ref) {\n result['x-s2o-name'] = decodeURIComponent(param.schema.items.$ref.replace('#/components/schemas/', '')) + 'Array';\n }\n\n if (!consumes.length) {\n consumes.push('application/json'); // TODO verify default\n }\n\n for (let mimetype of consumes) {\n result.content[mimetype] = {};\n result.content[mimetype].schema = clone(param.schema || {});\n fixUpSchema(result.content[mimetype].schema,options);\n }\n\n // Copy any extensions from the original parameter to the new requestBody\n copyExtensions(param, result);\n }\n\n if (Object.keys(result).length > 0) {\n param[\"x-s2o-delete\"] = true;\n // work out where to attach the requestBody\n if (op) {\n if (op.requestBody && singularRequestBody) {\n op.requestBody[\"x-s2o-overloaded\"] = true;\n let opId = op.operationId || index;\n\n throwOrWarn('Operation ' + opId + ' has multiple requestBodies', op, options);\n }\n else {\n if (!op.requestBody) {\n op = path[method] = attachRequestBody(op,options); // make sure we have one\n }\n if ((op.requestBody.content && op.requestBody.content[\"multipart/form-data\"])\n && (op.requestBody.content[\"multipart/form-data\"].schema) && (op.requestBody.content[\"multipart/form-data\"].schema.properties) && (result.content[\"multipart/form-data\"]) && (result.content[\"multipart/form-data\"].schema) && (result.content[\"multipart/form-data\"].schema.properties)) {\n op.requestBody.content[\"multipart/form-data\"].schema.properties =\n Object.assign(op.requestBody.content[\"multipart/form-data\"].schema.properties, result.content[\"multipart/form-data\"].schema.properties);\n op.requestBody.content[\"multipart/form-data\"].schema.required = (op.requestBody.content[\"multipart/form-data\"].schema.required || []).concat(result.content[\"multipart/form-data\"].schema.required||[]);\n if (!op.requestBody.content[\"multipart/form-data\"].schema.required.length) {\n delete op.requestBody.content[\"multipart/form-data\"].schema.required;\n }\n }\n else if ((op.requestBody.content && op.requestBody.content[\"application/x-www-form-urlencoded\"] && op.requestBody.content[\"application/x-www-form-urlencoded\"].schema && op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties)\n && result.content[\"application/x-www-form-urlencoded\"] && result.content[\"application/x-www-form-urlencoded\"].schema && result.content[\"application/x-www-form-urlencoded\"].schema.properties) {\n op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties =\n Object.assign(op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.properties, result.content[\"application/x-www-form-urlencoded\"].schema.properties);\n op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required = (op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required || []).concat(result.content[\"application/x-www-form-urlencoded\"].schema.required||[]);\n if (!op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required.length) {\n delete op.requestBody.content[\"application/x-www-form-urlencoded\"].schema.required;\n }\n }\n else {\n op.requestBody = Object.assign(op.requestBody, result);\n if (!op.requestBody['x-s2o-name']) {\n if (op.requestBody.schema && op.requestBody.schema.$ref) {\n op.requestBody['x-s2o-name'] = decodeURIComponent(op.requestBody.schema.$ref.replace('#/components/schemas/', '')).split('/').join('');\n }\n else if (op.operationId) {\n op.requestBody['x-s2o-name'] = common.sanitiseAll(op.operationId);\n }\n }\n }\n }\n }\n }\n\n // tidy up\n if (param && !param['x-s2o-delete']) {\n delete param.type;\n for (let prop of common.parameterTypeProperties) {\n delete param[prop];\n }\n\n if ((param.in === 'path') && ((typeof param.required === 'undefined') || (param.required !== true))) {\n if (options.patch) {\n options.patches++;\n param.required = true;\n }\n else {\n throwError('(Patchable) path parameters must be required:true ['+param.name+' in '+index+']', options);\n }\n }\n }\n\n return op;\n}\n\nfunction copyExtensions(src, tgt) {\n for (let prop in src) {\n if (prop.startsWith('x-') && !prop.startsWith('x-s2o')) {\n tgt[prop] = src[prop];\n }\n }\n}\n\nfunction processResponse(response, name, op, openapi, options) {\n if (!response) return false;\n if (response.$ref && (typeof response.$ref === 'string')) {\n if (response.$ref.indexOf('#/definitions/') >= 0) {\n //response.$ref = '#/components/schemas/'+common.sanitise(response.$ref.replace('#/definitions/',''));\n throwOrWarn('definition used as response: ' + response.$ref, response, options);\n }\n else {\n if (response.$ref.startsWith('#/responses/')) {\n response.$ref = '#/components/responses/' + common.sanitise(decodeURIComponent(response.$ref.replace('#/responses/', '')));\n }\n }\n }\n else {\n if ((typeof response.description === 'undefined') || (response.description === null)\n || ((response.description === '') && options.patch)) {\n if (options.patch) {\n if ((typeof response === 'object') && (!Array.isArray(response))) {\n options.patches++;\n response.description = (statusCodes[response] || '');\n }\n }\n else {\n throwError('(Patchable) response.description is mandatory', options);\n }\n }\n if (typeof response.schema !== 'undefined') {\n\n fixUpSchema(response.schema,options);\n\n if (response.schema.$ref && (typeof response.schema.$ref === 'string') && response.schema.$ref.startsWith('#/responses/')) {\n response.schema.$ref = '#/components/responses/' + common.sanitise(decodeURIComponent(response.schema.$ref.replace('#/responses/', '')));\n }\n\n if (op && op.produces && (typeof op.produces === 'string')) {\n if (options.patch) {\n options.patches++;\n op.produces = [op.produces];\n }\n else {\n return throwError('(Patchable) operation.produces must be an array', options);\n }\n }\n if (openapi.produces && !Array.isArray(openapi.produces)) delete openapi.produces;\n\n let produces = ((op ? op.produces : null) || (openapi.produces || [])).filter(common.uniqueOnly);\n if (!produces.length) produces.push('*/*'); // TODO verify default\n\n response.content = {};\n for (let mimetype of produces) {\n response.content[mimetype] = {};\n response.content[mimetype].schema = clone(response.schema);\n if (response.examples && response.examples[mimetype]) {\n let example = {};\n example.value = response.examples[mimetype];\n response.content[mimetype].examples = {};\n response.content[mimetype].examples.response = example;\n delete response.examples[mimetype];\n }\n if (response.content[mimetype].schema.type === 'file') {\n response.content[mimetype].schema = { type: 'string', format: 'binary' };\n }\n }\n delete response.schema;\n }\n // examples for content-types not listed in produces\n for (let mimetype in response.examples) {\n if (!response.content) response.content = {};\n if (!response.content[mimetype]) response.content[mimetype] = {};\n response.content[mimetype].examples = {};\n response.content[mimetype].examples.response = {};\n response.content[mimetype].examples.response.value = response.examples[mimetype];\n }\n delete response.examples;\n\n if (response.headers) {\n for (let h in response.headers) {\n if (h.toLowerCase() === 'status code') {\n if (options.patch) {\n options.patches++;\n delete response.headers[h];\n }\n else {\n throwError('(Patchable) \"Status Code\" is not a valid header', options);\n }\n }\n else {\n processHeader(response.headers[h], options);\n }\n }\n }\n }\n}\n\nfunction processPaths(container, containerName, options, requestBodyCache, openapi) {\n for (let p in container) {\n let path = container[p];\n // path.$ref is external only\n if (path && (path['x-trace']) && (typeof path['x-trace'] === 'object')) {\n path.trace = path['x-trace'];\n delete path['x-trace'];\n }\n if (path && (path['x-summary']) && (typeof path['x-summary'] === 'string')) {\n path.summary = path['x-summary'];\n delete path['x-summary'];\n }\n if (path && (path['x-description']) && (typeof path['x-description'] === 'string')) {\n path.description = path['x-description'];\n delete path['x-description'];\n }\n if (path && (path['x-servers']) && (Array.isArray(path['x-servers']))) {\n path.servers = path['x-servers'];\n delete path['x-servers'];\n }\n for (let method in path) {\n if ((common.httpMethods.indexOf(method) >= 0) || (method === 'x-amazon-apigateway-any-method')) {\n let op = path[method];\n\n if (op && op.parameters && Array.isArray(op.parameters)) {\n if (path.parameters) {\n for (let param of path.parameters) {\n if (typeof param.$ref === 'string') {\n fixParamRef(param, options);\n param = resolveInternal(openapi, param.$ref);\n }\n let match = op.parameters.find(function (e, i, a) {\n return ((e.name === param.name) && (e.in === param.in));\n });\n\n if (!match && ((param.in === 'formData') || (param.in === 'body') || (param.type === 'file'))) {\n op = processParameter(param, op, path, method, p, openapi, options);\n if (options.rbname && op[options.rbname] === '') {\n delete op[options.rbname];\n }\n }\n }\n }\n for (let param of op.parameters) {\n op = processParameter(param, op, path, method, method + ':' + p, openapi, options);\n }\n if (options.rbname && op[options.rbname] === '') {\n delete op[options.rbname];\n }\n if (!options.debug) {\n if (op.parameters) op.parameters = op.parameters.filter(keepParameters);\n }\n }\n\n if (op && op.security) processSecurity(op.security);\n\n //don't need to remove requestBody for non-supported ops as they \"SHALL be ignored\"\n\n // responses\n if (typeof op === 'object') {\n if (!op.responses) {\n let defaultResp = {};\n defaultResp.description = 'Default response';\n op.responses = { default: defaultResp };\n }\n for (let r in op.responses) {\n let response = op.responses[r];\n processResponse(response, r, op, openapi, options);\n }\n }\n\n if (op && (op['x-servers']) && (Array.isArray(op['x-servers']))) {\n op.servers = op['x-servers'];\n delete op['x-servers'];\n } else if (op && op.schemes && op.schemes.length) {\n for (let scheme of op.schemes) {\n if ((!openapi.schemes) || (openapi.schemes.indexOf(scheme) < 0)) {\n if (!op.servers) {\n op.servers = [];\n }\n if (Array.isArray(openapi.servers)) {\n for (let server of openapi.servers) {\n let newServer = clone(server);\n let serverUrl = url.parse(newServer.url);\n serverUrl.protocol = scheme;\n newServer.url = serverUrl.format();\n op.servers.push(newServer);\n }\n }\n }\n }\n }\n\n if (options.debug) {\n op[\"x-s2o-consumes\"] = op.consumes || [];\n op[\"x-s2o-produces\"] = op.produces || [];\n }\n if (op) {\n delete op.consumes;\n delete op.produces;\n delete op.schemes;\n\n if (op[\"x-ms-examples\"]) {\n for (let e in op[\"x-ms-examples\"]) {\n let example = op[\"x-ms-examples\"][e];\n let se = common.sanitiseAll(e);\n if (example.parameters) {\n for (let p in example.parameters) {\n let value = example.parameters[p];\n for (let param of (op.parameters||[]).concat(path.parameters||[])) {\n if (param.$ref) {\n param = jptr.jptr(openapi,param.$ref);\n }\n if ((param.name === p) && (!param.example)) {\n if (!param.examples) {\n param.examples = {};\n }\n param.examples[e] = {value: value};\n }\n }\n }\n }\n if (example.responses) {\n for (let r in example.responses) {\n if (example.responses[r].headers) {\n for (let h in example.responses[r].headers) {\n let value = example.responses[r].headers[h];\n for (let rh in op.responses[r].headers) {\n if (rh === h) {\n let header = op.responses[r].headers[rh];\n header.example = value;\n }\n }\n }\n }\n if (example.responses[r].body) {\n openapi.components.examples[se] = { value: clone(example.responses[r].body) };\n if (op.responses[r] && op.responses[r].content) {\n for (let ct in op.responses[r].content) {\n let contentType = op.responses[r].content[ct];\n if (!contentType.examples) {\n contentType.examples = {};\n }\n contentType.examples[e] = { $ref: '#/components/examples/'+se };\n }\n }\n }\n\n }\n }\n }\n delete op[\"x-ms-examples\"];\n }\n\n if (op.parameters && op.parameters.length === 0) delete op.parameters;\n if (op.requestBody) {\n let effectiveOperationId = op.operationId ? common.sanitiseAll(op.operationId) : common.sanitiseAll(method + p).toCamelCase();\n let rbName = common.sanitise(op.requestBody['x-s2o-name'] || effectiveOperationId || '');\n delete op.requestBody['x-s2o-name'];\n let rbStr = JSON.stringify(op.requestBody);\n let rbHash = common.hash(rbStr);\n if (!requestBodyCache[rbHash]) {\n let entry = {};\n entry.name = rbName;\n entry.body = op.requestBody;\n entry.refs = [];\n requestBodyCache[rbHash] = entry;\n }\n let ptr = '#/'+containerName+'/'+encodeURIComponent(jptr.jpescape(p))+'/'+method+'/requestBody';\n requestBodyCache[rbHash].refs.push(ptr);\n }\n }\n\n }\n }\n if (path && path.parameters) {\n for (let p2 in path.parameters) {\n let param = path.parameters[p2];\n processParameter(param, null, path, null, p, openapi, options); // index here is the path string\n }\n if (!options.debug && Array.isArray(path.parameters)) {\n path.parameters = path.parameters.filter(keepParameters);\n }\n }\n }\n}\n\nfunction main(openapi, options) {\n\n let requestBodyCache = {};\n componentNames = { schemas: {} };\n\n if (openapi.security) processSecurity(openapi.security);\n\n for (let s in openapi.components.securitySchemes) {\n let sname = common.sanitise(s);\n if (s !== sname) {\n if (openapi.components.securitySchemes[sname]) {\n throwError('Duplicate sanitised securityScheme name ' + sname, options);\n }\n openapi.components.securitySchemes[sname] = openapi.components.securitySchemes[s];\n delete openapi.components.securitySchemes[s];\n }\n processSecurityScheme(openapi.components.securitySchemes[sname], options);\n }\n\n for (let s in openapi.components.schemas) {\n let sname = common.sanitiseAll(s);\n let suffix = '';\n if (s !== sname) {\n while (openapi.components.schemas[sname + suffix]) {\n // @ts-ignore\n suffix = (suffix ? ++suffix : 2);\n }\n openapi.components.schemas[sname + suffix] = openapi.components.schemas[s];\n delete openapi.components.schemas[s];\n }\n componentNames.schemas[s] = sname + suffix;\n fixUpSchema(openapi.components.schemas[sname+suffix],options)\n }\n\n // fix all $refs to their new locations (and potentially new names)\n options.refmap = {};\n recurse(openapi, { payload: { options: options } }, fixupRefs);\n dedupeRefs(openapi,options);\n\n for (let p in openapi.components.parameters) {\n let sname = common.sanitise(p);\n if (p !== sname) {\n if (openapi.components.parameters[sname]) {\n throwError('Duplicate sanitised parameter name ' + sname, options);\n }\n openapi.components.parameters[sname] = openapi.components.parameters[p];\n delete openapi.components.parameters[p];\n }\n let param = openapi.components.parameters[sname];\n processParameter(param, null, null, null, sname, openapi, options);\n }\n\n for (let r in openapi.components.responses) {\n let sname = common.sanitise(r);\n if (r !== sname) {\n if (openapi.components.responses[sname]) {\n throwError('Duplicate sanitised response name ' + sname, options);\n }\n openapi.components.responses[sname] = openapi.components.responses[r];\n delete openapi.components.responses[r];\n }\n let response = openapi.components.responses[sname];\n processResponse(response, sname, null, openapi, options);\n if (response.headers) {\n for (let h in response.headers) {\n if (h.toLowerCase() === 'status code') {\n if (options.patch) {\n options.patches++;\n delete response.headers[h];\n }\n else {\n throwError('(Patchable) \"Status Code\" is not a valid header', options);\n }\n }\n else {\n processHeader(response.headers[h], options);\n }\n }\n }\n }\n\n for (let r in openapi.components.requestBodies) { // converted ones\n let rb = openapi.components.requestBodies[r];\n let rbStr = JSON.stringify(rb);\n let rbHash = common.hash(rbStr);\n let entry = {};\n entry.name = r;\n entry.body = rb;\n entry.refs = [];\n requestBodyCache[rbHash] = entry;\n }\n\n processPaths(openapi.paths, 'paths', options, requestBodyCache, openapi);\n if (openapi[\"x-ms-paths\"]) {\n processPaths(openapi[\"x-ms-paths\"], 'x-ms-paths', options, requestBodyCache, openapi);\n }\n\n if (!options.debug) {\n for (let p in openapi.components.parameters) {\n let param = openapi.components.parameters[p];\n if (param[\"x-s2o-delete\"]) {\n delete openapi.components.parameters[p];\n }\n }\n }\n\n if (options.debug) {\n openapi[\"x-s2o-consumes\"] = openapi.consumes || [];\n openapi[\"x-s2o-produces\"] = openapi.produces || [];\n }\n delete openapi.consumes;\n delete openapi.produces;\n delete openapi.schemes;\n\n let rbNamesGenerated = [];\n\n openapi.components.requestBodies = {}; // for now as we've dereffed them\n\n if (!options.resolveInternal) {\n let counter = 1;\n for (let e in requestBodyCache) {\n let entry = requestBodyCache[e];\n if (entry.refs.length > 1) {\n // create a shared requestBody\n let suffix = '';\n if (!entry.name) {\n entry.name = 'requestBody';\n // @ts-ignore\n suffix = counter++;\n }\n while (rbNamesGenerated.indexOf(entry.name + suffix) >= 0) {\n // @ts-ignore - this can happen if descriptions are not exactly the same (e.g. bitbucket)\n suffix = (suffix ? ++suffix : 2);\n }\n entry.name = entry.name + suffix;\n rbNamesGenerated.push(entry.name);\n openapi.components.requestBodies[entry.name] = clone(entry.body);\n for (let r in entry.refs) {\n let ref = {};\n ref.$ref = '#/components/requestBodies/' + entry.name;\n jptr.jptr(openapi,entry.refs[r],ref);\n }\n }\n }\n }\n\n if (openapi.components.responses && Object.keys(openapi.components.responses).length === 0) {\n delete openapi.components.responses;\n }\n if (openapi.components.parameters && Object.keys(openapi.components.parameters).length === 0) {\n delete openapi.components.parameters;\n }\n if (openapi.components.examples && Object.keys(openapi.components.examples).length === 0) {\n delete openapi.components.examples;\n }\n if (openapi.components.requestBodies && Object.keys(openapi.components.requestBodies).length === 0) {\n delete openapi.components.requestBodies;\n }\n if (openapi.components.securitySchemes && Object.keys(openapi.components.securitySchemes).length === 0) {\n delete openapi.components.securitySchemes;\n }\n if (openapi.components.headers && Object.keys(openapi.components.headers).length === 0) {\n delete openapi.components.headers;\n }\n if (openapi.components.schemas && Object.keys(openapi.components.schemas).length === 0) {\n delete openapi.components.schemas;\n }\n if (openapi.components && Object.keys(openapi.components).length === 0) {\n delete openapi.components;\n }\n\n return openapi;\n}\n\nfunction extractServerParameters(server) {\n if (!server || !server.url || (typeof server.url !== 'string')) return server;\n server.url = server.url.split('{{').join('{');\n server.url = server.url.split('}}').join('}');\n server.url.replace(/\\{(.+?)\\}/g, function (match, group1) { // TODO extend to :parameters (not port)?\n if (!server.variables) {\n server.variables = {};\n }\n server.variables[group1] = { default: 'unknown' };\n });\n return server;\n}\n\nfunction fixInfo(openapi, options, reject) {\n if ((typeof openapi.info === 'undefined') || (openapi.info === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info = { version: '', title: '' };\n }\n else {\n return reject(new S2OError('(Patchable) info object is mandatory'));\n }\n }\n if ((typeof openapi.info !== 'object') || (Array.isArray(openapi.info))) {\n return reject(new S2OError('info must be an object'));\n }\n if ((typeof openapi.info.title === 'undefined') || (openapi.info.title === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info.title = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.title cannot be null'));\n }\n }\n if ((typeof openapi.info.version === 'undefined') || (openapi.info.version === null)) {\n if (options.patch) {\n options.patches++;\n openapi.info.version = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.version cannot be null'));\n }\n }\n if (typeof openapi.info.version !== 'string') {\n if (options.patch) {\n options.patches++;\n openapi.info.version = openapi.info.version.toString();\n }\n else {\n return reject(new S2OError('(Patchable) info.version must be a string'));\n }\n }\n if (typeof openapi.info.logo !== 'undefined') {\n if (options.patch) {\n options.patches++;\n openapi.info['x-logo'] = openapi.info.logo;\n delete openapi.info.logo;\n }\n else return reject(new S2OError('(Patchable) info should not have logo property'));\n }\n if (typeof openapi.info.termsOfService !== 'undefined') {\n if (openapi.info.termsOfService === null) {\n if (options.patch) {\n options.patches++;\n openapi.info.termsOfService = '';\n }\n else {\n return reject(new S2OError('(Patchable) info.termsOfService cannot be null'));\n }\n }\n try {\n let u = new URL(openapi.info.termsOfService);\n }\n catch (ex) {\n if (options.patch) {\n options.patches++;\n delete openapi.info.termsOfService;\n }\n else return reject(new S2OError('(Patchable) info.termsOfService must be a URL'));\n }\n }\n}\n\nfunction fixPaths(openapi, options, reject) {\n if (typeof openapi.paths === 'undefined') {\n if (options.patch) {\n options.patches++;\n openapi.paths = {};\n }\n else {\n return reject(new S2OError('(Patchable) paths object is mandatory'));\n }\n }\n}\n\nfunction detectObjectReferences(obj, options) {\n const seen = new WeakSet();\n recurse(obj, {identityDetection:true}, function (obj, key, state) {\n if ((typeof obj[key] === 'object') && (obj[key] !== null)) {\n if (seen.has(obj[key])) {\n if (options.anchors) {\n obj[key] = clone(obj[key]);\n }\n else {\n throwError('YAML anchor or merge key at '+state.path, options);\n }\n }\n else {\n seen.add(obj[key]);\n }\n }\n });\n}\n\nfunction convertObj(swagger, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n if (!swagger) swagger = {};\n options.original = swagger;\n if (!options.text) options.text = yaml.stringify(swagger);\n options.externals = [];\n options.externalRefs = {};\n options.rewriteRefs = true; // avoids stack explosions\n options.preserveMiro = true;\n options.promise = {};\n options.promise.resolve = resolve;\n options.promise.reject = reject;\n options.patches = 0;\n if (!options.cache) options.cache = {};\n if (options.source) options.cache[options.source] = options.original;\n\n detectObjectReferences(swagger, options);\n\n if (swagger.openapi && (typeof swagger.openapi === 'string') && swagger.openapi.startsWith('3.')) {\n options.openapi = cclone(swagger);\n fixInfo(options.openapi, options, reject);\n fixPaths(options.openapi, options, reject);\n\n resolver.optionalResolve(options) // is a no-op if options.resolve is not set\n .then(function(){\n if (options.direct) {\n return resolve(options.openapi);\n }\n else {\n return resolve(options);\n }\n })\n .catch(function(ex){\n console.warn(ex);\n reject(ex);\n });\n return; // we should have resolved or rejected by now\n }\n\n if ((!swagger.swagger) || (swagger.swagger != \"2.0\")) {\n return reject(new S2OError('Unsupported swagger/OpenAPI version: ' + (swagger.openapi ? swagger.openapi : swagger.swagger)));\n }\n\n let openapi = options.openapi = {};\n openapi.openapi = (typeof options.targetVersion === 'string' && options.targetVersion.startsWith('3.')) ? options.targetVersion : targetVersion; // semver\n\n if (options.origin) {\n if (!openapi[\"x-origin\"]) {\n openapi[\"x-origin\"] = [];\n }\n let origin = {};\n origin.url = options.source||options.origin;\n origin.format = 'swagger';\n origin.version = swagger.swagger;\n origin.converter = {};\n origin.converter.url = 'https://github.com/mermade/oas-kit';\n origin.converter.version = ourVersion;\n openapi[\"x-origin\"].push(origin);\n }\n\n // we want the new and existing properties to appear in a sensible order. Not guaranteed\n openapi = Object.assign(openapi, cclone(swagger));\n delete openapi.swagger;\n recurse(openapi, {}, function(obj, key, state){\n if ((obj[key] === null) && (!key.startsWith('x-')) && key !== 'default' && (state.path.indexOf('/example') < 0)) delete obj[key]; // this saves *so* much grief later\n });\n\n if (swagger.host) {\n for (let s of (Array.isArray(swagger.schemes) ? swagger.schemes : [''])) {\n let server = {};\n let basePath = (swagger.basePath || '').replace(/\\/$/, '') // Trailing slashes generally shouldn't be included\n server.url = (s ? s+':' : '') + '//' + swagger.host + basePath;\n extractServerParameters(server);\n if (!openapi.servers) openapi.servers = [];\n openapi.servers.push(server);\n }\n }\n else if (swagger.basePath) {\n let server = {};\n server.url = swagger.basePath;\n extractServerParameters(server);\n if (!openapi.servers) openapi.servers = [];\n openapi.servers.push(server);\n }\n delete openapi.host;\n delete openapi.basePath;\n\n if (openapi['x-servers'] && Array.isArray(openapi['x-servers'])) {\n openapi.servers = openapi['x-servers'];\n delete openapi['x-servers'];\n }\n\n // TODO APIMatic extensions (x-server-configuration) ?\n\n if (swagger['x-ms-parameterized-host']) {\n let xMsPHost = swagger['x-ms-parameterized-host'];\n let server = {};\n server.url = xMsPHost.hostTemplate + (swagger.basePath ? swagger.basePath : '');\n server.variables = {};\n const paramNames = server.url.match(/\\{\\w+\\}/g);\n for (let msp in xMsPHost.parameters) {\n let param = xMsPHost.parameters[msp];\n if (param.$ref) {\n param = clone(resolveInternal(openapi, param.$ref));\n }\n if (!msp.startsWith('x-')) {\n delete param.required; // all true\n delete param.type; // all strings\n delete param.in; // all 'host'\n if (typeof param.default === 'undefined') {\n if (param.enum) {\n param.default = param.enum[0];\n }\n else {\n param.default = 'none';\n }\n }\n if (!param.name) {\n param.name = paramNames[msp].replace('{','').replace('}','');\n }\n server.variables[param.name] = param;\n delete param.name;\n }\n }\n if (!openapi.servers) openapi.servers = [];\n if (xMsPHost.useSchemePrefix === false) {\n // The server URL already includes a protocol scheme\n openapi.servers.push(server);\n } else {\n // Define this server once for each given protocol scheme\n swagger.schemes.forEach((scheme) => {\n openapi.servers.push(\n Object.assign({}, server, { url: scheme + '://' + server.url })\n )\n });\n }\n delete openapi['x-ms-parameterized-host'];\n }\n\n fixInfo(openapi, options, reject);\n fixPaths(openapi, options, reject);\n\n if (typeof openapi.consumes === 'string') {\n openapi.consumes = [openapi.consumes];\n }\n if (typeof openapi.produces === 'string') {\n openapi.produces = [openapi.produces];\n }\n\n openapi.components = {};\n if (openapi['x-callbacks']) {\n openapi.components.callbacks = openapi['x-callbacks'];\n delete openapi['x-callbacks'];\n }\n openapi.components.examples = {};\n openapi.components.headers = {};\n if (openapi['x-links']) {\n openapi.components.links = openapi['x-links'];\n delete openapi['x-links'];\n }\n openapi.components.parameters = openapi.parameters || {};\n openapi.components.responses = openapi.responses || {};\n openapi.components.requestBodies = {};\n openapi.components.securitySchemes = openapi.securityDefinitions || {};\n openapi.components.schemas = openapi.definitions || {};\n delete openapi.definitions;\n delete openapi.responses;\n delete openapi.parameters;\n delete openapi.securityDefinitions;\n\n resolver.optionalResolve(options) // is a no-op if options.resolve is not set\n .then(function(){\n main(options.openapi, options);\n if (options.direct) {\n resolve(options.openapi);\n }\n else {\n resolve(options);\n }\n })\n .catch(function(ex){\n console.warn(ex);\n reject(ex);\n });\n\n }));\n}\n\nfunction convertStr(str, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n let obj = null;\n let error = null;\n try {\n obj = JSON.parse(str);\n options.text = JSON.stringify(obj,null,2);\n }\n catch (ex) {\n error = ex;\n try {\n obj = yaml.parse(str, { schema: 'core', prettyErrors: true });\n options.sourceYaml = true;\n options.text = str;\n }\n catch (ex) {\n error = ex;\n }\n }\n if (obj) {\n convertObj(obj, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }\n else {\n reject(new S2OError(error ? error.message : 'Could not parse string'));\n }\n }));\n}\n\nfunction convertUrl(url, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n options.origin = true;\n if (!options.source) {\n options.source = url;\n }\n if (options.verbose) {\n console.warn('GET ' + url);\n }\n if (!options.fetch) {\n options.fetch = fetch;\n }\n const fetchOptions = Object.assign({}, options.fetchOptions, {agent:options.agent});\n options.fetch(url, fetchOptions).then(function (res) {\n if (res.status !== 200) throw new S2OError(`Received status code ${res.status}: ${url}`);\n return res.text();\n }).then(function (body) {\n convertStr(body, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }).catch(function (err) {\n reject(err);\n });\n }));\n}\n\nfunction convertFile(filename, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n fs.readFile(filename, options.encoding || 'utf8', function (err, s) {\n if (err) {\n reject(err);\n }\n else {\n options.sourceFile = filename;\n convertStr(s, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n }\n });\n }));\n}\n\nfunction convertStream(readable, options, callback) {\n return maybe(callback, new Promise(function (resolve, reject) {\n let data = '';\n readable.on('data', function (chunk) {\n data += chunk;\n })\n .on('end', function () {\n convertStr(data, options)\n .then(options => resolve(options))\n .catch(ex => reject(ex));\n });\n }));\n}\n\nmodule.exports = {\n S2OError: S2OError,\n targetVersion: targetVersion,\n convert: convertObj,\n convertObj: convertObj,\n convertUrl: convertUrl,\n convertStr: convertStr,\n convertFile: convertFile,\n convertStream: convertStream\n};\n","'use strict';\n\nconst http = require('http');\n\nconst ours = {\n \"default\": \"Default response\",\n \"1XX\": \"Informational\",\n \"103\": \"Early hints\", // not in Node < 10\n \"2XX\": \"Successful\",\n \"3XX\": \"Redirection\",\n \"4XX\": \"Client Error\",\n \"5XX\": \"Server Error\",\n \"7XX\": \"Developer Error\" // April fools RFC\n};\n\nmodule.exports = {\n statusCodes: Object.assign({},ours,http.STATUS_CODES)\n};\n\n","\n\t\t\t\tvar addMethods = require(\"../../node_modules/workerize-loader/dist/rpc-wrapper.js\")\n\t\t\t\tvar methods = [\"add\",\"done\",\"toJS\",\"fromExternalJS\",\"load\",\"dispose\",\"search\",\"Worker\"]\n\t\t\t\tmodule.exports = function() {\n\t\t\t\t\tvar w = new Worker(URL.createObjectURL(new Blob([\"/*! For license information please see 0a6ad30060afff00cb34.worker.js.LICENSE.txt */\\n!function(){var e={336:function(e,t,r){var n,i;!function(){var s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,P,b,T,O,I,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version=\\\"2.3.9\\\",R.utils={},R.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?\\\"\\\":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),n=0;n<r.length;n++){var i=r[n],s=e[i];if(Array.isArray(s))t[i]=s.slice();else{if(\\\"string\\\"!=typeof s&&\\\"number\\\"!=typeof s&&\\\"boolean\\\"!=typeof s)throw new TypeError(\\\"clone is not deep and does not support nested objects\\\");t[i]=s}}return t},R.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},R.FieldRef.joiner=\\\"/\\\",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw\\\"malformed field ref string\\\";var r=e.slice(0,t),n=e.slice(t+1);return new R.FieldRef(n,r,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,r,n,i=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,r=e):(t=e,r=this),n=Object.keys(t.elements);for(var s=0;s<n.length;s++){var o=n[s];o in r.elements&&i.push(o)}return new R.Set(i)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var r=0;for(var n in e)\\\"_index\\\"!=n&&(r+=Object.keys(e[n]).length);var i=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(i))},R.Token=function(e,t){this.str=e||\\\"\\\",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))}));for(var r=e.toString().toLowerCase(),n=r.length,i=[],s=0,o=0;s<=n;s++){var a=s-o;if(r.charAt(s).match(R.tokenizer.separator)||s==n){if(a>0){var u=R.utils.clone(t)||{};u.position=[o,a],u.index=i.length,i.push(new R.Token(r.slice(o,s),u))}o=s+1}}return i},R.tokenizer.separator=/[\\\\s\\\\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn(\\\"Overwriting existing registered function: \\\"+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn(\\\"Function is not registered with pipeline. This may cause problems when serialising the index.\\\\n\\\",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var r=R.Pipeline.registeredFunctions[e];if(!r)throw new Error(\\\"Cannot load unregistered function: \\\"+e);t.add(r)})),t},R.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error(\\\"Cannot find existingFn\\\");r+=1,this._stack.splice(r,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error(\\\"Cannot find existingFn\\\");this._stack.splice(r,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var n=this._stack[r],i=[],s=0;s<e.length;s++){var o=n(e[s],s,e);if(null!=o&&\\\"\\\"!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)i.push(o[a]);else i.push(o)}e=i}return e},R.Pipeline.prototype.runString=function(e,t){var r=new R.Token(e,t);return this.run([r]).map((function(e){return e.toString()}))},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,n=r-t,i=Math.floor(n/2),s=this.elements[2*i];n>1&&(s<e&&(t=i),s>e&&(r=i),s!=e);)n=r-t,i=t+Math.floor(n/2),s=this.elements[2*i];return s==e||s>e?2*i:s<e?2*(i+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw\\\"duplicate index\\\"}))},R.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var n=this.positionForIndex(e);this.elements[n]==e?this.elements[n+1]=r(this.elements[n+1],t):this.elements.splice(n,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var n=this.elements[r];e+=n*n}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,n=e.elements,i=r.length,s=n.length,o=0,a=0,u=0,l=0;u<i&&l<s;)(o=r[u])<(a=n[l])?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*n[l+1],u+=2,l+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(o={ational:\\\"ate\\\",tional:\\\"tion\\\",enci:\\\"ence\\\",anci:\\\"ance\\\",izer:\\\"ize\\\",bli:\\\"ble\\\",alli:\\\"al\\\",entli:\\\"ent\\\",eli:\\\"e\\\",ousli:\\\"ous\\\",ization:\\\"ize\\\",ation:\\\"ate\\\",ator:\\\"ate\\\",alism:\\\"al\\\",iveness:\\\"ive\\\",fulness:\\\"ful\\\",ousness:\\\"ous\\\",aliti:\\\"al\\\",iviti:\\\"ive\\\",biliti:\\\"ble\\\",logi:\\\"log\\\"},a={icate:\\\"ic\\\",ative:\\\"\\\",alize:\\\"al\\\",iciti:\\\"ic\\\",ical:\\\"ic\\\",ful:\\\"\\\",ness:\\\"\\\"},u=\\\"[aeiouy]\\\",l=\\\"[^aeiou][^aeiouy]*\\\",c=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*\\\"),h=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*\\\"),d=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$\\\"),f=new RegExp(\\\"^([^aeiou][^aeiouy]*)?[aeiouy]\\\"),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,x=/.$/,v=/(at|bl|iz)$/,w=new RegExp(\\\"([^aeiouylsz])\\\\\\\\1$\\\"),Q=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,P=/^(.+?)(s|t)(ion)$/,b=/^(.+?)e$/,T=/ll$/,O=new RegExp(\\\"^\\\"+l+u+\\\"[^aeiouwxy]$\\\"),I=function(e){var t,r,n,i,s,u,l;if(e.length<3)return e;if(\\\"y\\\"==(n=e.substr(0,1))&&(e=n.toUpperCase()+e.substr(1)),s=y,(i=p).test(e)?e=e.replace(i,\\\"$1$2\\\"):s.test(e)&&(e=e.replace(s,\\\"$1$2\\\")),s=g,(i=m).test(e)){var I=i.exec(e);(i=c).test(I[1])&&(i=x,e=e.replace(i,\\\"\\\"))}else s.test(e)&&(t=(I=s.exec(e))[1],(s=f).test(t)&&(u=w,l=Q,(s=v).test(e=t)?e+=\\\"e\\\":u.test(e)?(i=x,e=e.replace(i,\\\"\\\")):l.test(e)&&(e+=\\\"e\\\")));return(i=k).test(e)&&(e=(t=(I=i.exec(e))[1])+\\\"i\\\"),(i=S).test(e)&&(t=(I=i.exec(e))[1],r=I[2],(i=c).test(t)&&(e=t+o[r])),(i=E).test(e)&&(t=(I=i.exec(e))[1],r=I[2],(i=c).test(t)&&(e=t+a[r])),s=P,(i=L).test(e)?(t=(I=i.exec(e))[1],(i=h).test(t)&&(e=t)):s.test(e)&&(t=(I=s.exec(e))[1]+I[2],(s=h).test(t)&&(e=t)),(i=b).test(e)&&(t=(I=i.exec(e))[1],s=d,u=O,((i=h).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=h,(i=T).test(e)&&s.test(e)&&(i=x,e=e.replace(i,\\\"\\\")),\\\"y\\\"==n&&(e=n.toLowerCase()+e.substr(1)),e},function(e){return e.update(I)}),R.Pipeline.registerFunction(R.stemmer,\\\"stemmer\\\"),R.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter([\\\"a\\\",\\\"able\\\",\\\"about\\\",\\\"across\\\",\\\"after\\\",\\\"all\\\",\\\"almost\\\",\\\"also\\\",\\\"am\\\",\\\"among\\\",\\\"an\\\",\\\"and\\\",\\\"any\\\",\\\"are\\\",\\\"as\\\",\\\"at\\\",\\\"be\\\",\\\"because\\\",\\\"been\\\",\\\"but\\\",\\\"by\\\",\\\"can\\\",\\\"cannot\\\",\\\"could\\\",\\\"dear\\\",\\\"did\\\",\\\"do\\\",\\\"does\\\",\\\"either\\\",\\\"else\\\",\\\"ever\\\",\\\"every\\\",\\\"for\\\",\\\"from\\\",\\\"get\\\",\\\"got\\\",\\\"had\\\",\\\"has\\\",\\\"have\\\",\\\"he\\\",\\\"her\\\",\\\"hers\\\",\\\"him\\\",\\\"his\\\",\\\"how\\\",\\\"however\\\",\\\"i\\\",\\\"if\\\",\\\"in\\\",\\\"into\\\",\\\"is\\\",\\\"it\\\",\\\"its\\\",\\\"just\\\",\\\"least\\\",\\\"let\\\",\\\"like\\\",\\\"likely\\\",\\\"may\\\",\\\"me\\\",\\\"might\\\",\\\"most\\\",\\\"must\\\",\\\"my\\\",\\\"neither\\\",\\\"no\\\",\\\"nor\\\",\\\"not\\\",\\\"of\\\",\\\"off\\\",\\\"often\\\",\\\"on\\\",\\\"only\\\",\\\"or\\\",\\\"other\\\",\\\"our\\\",\\\"own\\\",\\\"rather\\\",\\\"said\\\",\\\"say\\\",\\\"says\\\",\\\"she\\\",\\\"should\\\",\\\"since\\\",\\\"so\\\",\\\"some\\\",\\\"than\\\",\\\"that\\\",\\\"the\\\",\\\"their\\\",\\\"them\\\",\\\"then\\\",\\\"there\\\",\\\"these\\\",\\\"they\\\",\\\"this\\\",\\\"tis\\\",\\\"to\\\",\\\"too\\\",\\\"twas\\\",\\\"us\\\",\\\"wants\\\",\\\"was\\\",\\\"we\\\",\\\"were\\\",\\\"what\\\",\\\"when\\\",\\\"where\\\",\\\"which\\\",\\\"while\\\",\\\"who\\\",\\\"whom\\\",\\\"why\\\",\\\"will\\\",\\\"with\\\",\\\"would\\\",\\\"yet\\\",\\\"you\\\",\\\"your\\\"]),R.Pipeline.registerFunction(R.stopWordFilter,\\\"stopWordFilter\\\"),R.trimmer=function(e){return e.update((function(e){return e.replace(/^\\\\W+/,\\\"\\\").replace(/\\\\W+$/,\\\"\\\")}))},R.Pipeline.registerFunction(R.trimmer,\\\"trimmer\\\"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,r=0,n=e.length;r<n;r++)t.insert(e[r]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return\\\"editDistance\\\"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var r=new R.TokenSet,n=[{node:r,editsRemaining:t,str:e}];n.length;){var i=n.pop();if(i.str.length>0){var s,o=i.str.charAt(0);o in i.node.edges?s=i.node.edges[o]:(s=new R.TokenSet,i.node.edges[o]=s),1==i.str.length&&(s.final=!0),n.push({node:s,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if(\\\"*\\\"in i.node.edges)var a=i.node.edges[\\\"*\\\"];else a=new R.TokenSet,i.node.edges[\\\"*\\\"]=a;if(0==i.str.length&&(a.final=!0),n.push({node:a,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&n.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if(\\\"*\\\"in i.node.edges)var u=i.node.edges[\\\"*\\\"];else u=new R.TokenSet,i.node.edges[\\\"*\\\"]=u;1==i.str.length&&(u.final=!0),n.push({node:u,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var l,c=i.str.charAt(0),h=i.str.charAt(1);h in i.node.edges?l=i.node.edges[h]:(l=new R.TokenSet,i.node.edges[h]=l),1==i.str.length&&(l.final=!0),n.push({node:l,editsRemaining:i.editsRemaining-1,str:c+i.str.slice(2)})}}}return r},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,r=t,n=0,i=e.length;n<i;n++){var s=e[n],o=n==i-1;if(\\\"*\\\"==s)t.edges[s]=t,t.final=o;else{var a=new R.TokenSet;a.final=o,t.edges[s]=a,t=a}}return r},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:\\\"\\\",node:this}];t.length;){var r=t.pop(),n=Object.keys(r.node.edges),i=n.length;r.node.final&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<i;s++){var o=n[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?\\\"1\\\":\\\"0\\\",t=Object.keys(this.edges).sort(),r=t.length,n=0;n<r;n++){var i=t[n];e=e+i+this.edges[i].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,r=void 0,n=[{qNode:e,output:t,node:this}];n.length;){r=n.pop();for(var i=Object.keys(r.qNode.edges),s=i.length,o=Object.keys(r.node.edges),a=o.length,u=0;u<s;u++)for(var l=i[u],c=0;c<a;c++){var h=o[c];if(h==l||\\\"*\\\"==l){var d=r.node.edges[h],f=r.qNode.edges[l],p=d.final&&f.final,y=void 0;h in r.output.edges?(y=r.output.edges[h]).final=y.final||p:((y=new R.TokenSet).final=p,r.output.edges[h]=y),n.push({qNode:f,output:y,node:d})}}}return t},R.TokenSet.Builder=function(){this.previousWord=\\\"\\\",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,r=0;if(e<this.previousWord)throw new Error(\\\"Out of order word insertion\\\");for(var n=0;n<e.length&&n<this.previousWord.length&&e[n]==this.previousWord[n];n++)r++;for(this.minimize(r),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child,n=r;n<e.length;n++){var i=new R.TokenSet,s=e[n];t.edges[s]=i,this.uncheckedNodes.push({parent:t,char:s,child:i}),t=i}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],n=r.child.toString();n in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[n]:(r.child._str=n,this.minimizedNodes[n]=r.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),r=Object.create(null),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)n[this.fields[a]]=new R.Vector;for(e.call(t,t),a=0;a<t.clauses.length;a++){var u,l=t.clauses[a],c=R.Set.empty;u=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var h=0;h<u.length;h++){var d=u[h];l.term=d;var f=R.TokenSet.fromClause(l),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&l.presence===R.Query.presence.REQUIRED){for(var y=0;y<l.fields.length;y++)s[F=l.fields[y]]=R.Set.empty;break}for(var m=0;m<p.length;m++){var g=p[m],x=this.invertedIndex[g],v=x._index;for(y=0;y<l.fields.length;y++){var w=x[F=l.fields[y]],Q=Object.keys(w),k=g+\\\"/\\\"+F,S=new R.Set(Q);if(l.presence==R.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[F]&&(s[F]=R.Set.complete)),l.presence!=R.Query.presence.PROHIBITED){if(n[F].upsert(v,l.boost,(function(e,t){return e+t})),!i[k]){for(var E=0;E<Q.length;E++){var L,P=Q[E],b=new R.FieldRef(P,F),T=w[P];void 0===(L=r[b])?r[b]=new R.MatchData(g,F,T):L.add(g,F,T)}i[k]=!0}}else void 0===o[F]&&(o[F]=R.Set.empty),o[F]=o[F].union(S)}}}if(l.presence===R.Query.presence.REQUIRED)for(y=0;y<l.fields.length;y++)s[F=l.fields[y]]=s[F].intersect(c)}var O=R.Set.complete,I=R.Set.empty;for(a=0;a<this.fields.length;a++){var F;s[F=this.fields[a]]&&(O=O.intersect(s[F])),o[F]&&(I=I.union(o[F]))}var C=Object.keys(r),N=[],j=Object.create(null);if(t.isNegated())for(C=Object.keys(this.fieldVectors),a=0;a<C.length;a++){b=C[a];var _=R.FieldRef.fromString(b);r[b]=new R.MatchData}for(a=0;a<C.length;a++){var D=(_=R.FieldRef.fromString(C[a])).docRef;if(O.contains(D)&&!I.contains(D)){var A,B=this.fieldVectors[_],z=n[_.fieldName].similarity(B);if(void 0!==(A=j[D]))A.score+=z,A.matchData.combine(r[_]);else{var V={ref:D,score:z,matchData:r[_]};j[D]=V,N.push(V)}}}return N.sort((function(e,t){return t.score-e.score}))},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},r={},n=e.fieldVectors,i=Object.create(null),s=e.invertedIndex,o=new R.TokenSet.Builder,a=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn(\\\"Version mismatch when loading serialised index. Current version of lunr '\\\"+R.version+\\\"' does not match serialized index '\\\"+e.version+\\\"'\\\");for(var u=0;u<n.length;u++){var l=(h=n[u])[0],c=h[1];r[l]=new R.Vector(c)}for(u=0;u<s.length;u++){var h,d=(h=s[u])[0],f=h[1];o.insert(d),i[d]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=r,t.invertedIndex=i,t.tokenSet=o.root,t.pipeline=a,new R.Index(t)},R.Builder=function(){this._ref=\\\"id\\\",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\\\\//.test(e))throw new RangeError(\\\"Field '\\\"+e+\\\"' contains illegal character '/'\\\");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var r=e[this._ref],n=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var i=0;i<n.length;i++){var s=n[i],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new R.FieldRef(r,s),h=Object.create(null);this.fieldTermFrequencies[c]=h,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var d=0;d<l.length;d++){var f=l[d];if(null==h[f]&&(h[f]=0),h[f]+=1,null==this.invertedIndex[f]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var y=0;y<n.length;y++)p[n[y]]=Object.create(null);this.invertedIndex[f]=p}null==this.invertedIndex[f][s][r]&&(this.invertedIndex[f][s][r]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var g=this.metadataWhitelist[m],x=f.metadata[g];null==this.invertedIndex[f][s][r][g]&&(this.invertedIndex[f][s][r][g]=[]),this.invertedIndex[f][s][r][g].push(x)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},n={},i=0;i<t;i++){var s=R.FieldRef.fromString(e[i]),o=s.fieldName;n[o]||(n[o]=0),n[o]+=1,r[o]||(r[o]=0),r[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(i=0;i<a.length;i++){var u=a[i];r[u]=r[u]/n[u]}this.averageFieldLength=r},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),r=t.length,n=Object.create(null),i=0;i<r;i++){for(var s=R.FieldRef.fromString(t[i]),o=s.fieldName,a=this.fieldLengths[s],u=new R.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),h=c.length,d=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,p=0;p<h;p++){var y,m,g,x=c[p],v=l[x],w=this.invertedIndex[x]._index;void 0===n[x]?(y=R.idf(this.invertedIndex[x],this.documentCount),n[x]=y):y=n[x],m=y*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+v),m*=d,m*=f,g=Math.round(1e3*m)/1e3,u.insert(w,g)}e[s]=u}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,r){for(var n=Object.create(null),i=Object.keys(r||{}),s=0;s<i.length;s++){var o=i[s];n[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=n)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var n=t[r],i=Object.keys(e.metadata[n]);null==this.metadata[n]&&(this.metadata[n]=Object.create(null));for(var s=0;s<i.length;s++){var o=i[s],a=Object.keys(e.metadata[n][o]);null==this.metadata[n][o]&&(this.metadata[n][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];null==this.metadata[n][o][l]?this.metadata[n][o][l]=e.metadata[n][o][l]:this.metadata[n][o][l]=this.metadata[n][o][l].concat(e.metadata[n][o][l])}}}},R.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(t in this.metadata[e])for(var n=Object.keys(r),i=0;i<n.length;i++){var s=n[i];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}else this.metadata[e][t]=r},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String(\\\"*\\\"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return\\\"fields\\\"in e||(e.fields=this.allFields),\\\"boost\\\"in e||(e.boost=1),\\\"usePipeline\\\"in e||(e.usePipeline=!0),\\\"wildcard\\\"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term=\\\"*\\\"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+\\\"*\\\"),\\\"presence\\\"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,R.utils.clone(t))}),this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},R.QueryParseError=function(e,t,r){this.name=\\\"QueryParseError\\\",this.message=e,this.start=t,this.end=r},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,n=0;n<this.escapeCharPositions.length;n++)r=this.escapeCharPositions[n],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join(\\\"\\\")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS=\\\"EOS\\\",R.QueryLexer.FIELD=\\\"FIELD\\\",R.QueryLexer.TERM=\\\"TERM\\\",R.QueryLexer.EDIT_DISTANCE=\\\"EDIT_DISTANCE\\\",R.QueryLexer.BOOST=\\\"BOOST\\\",R.QueryLexer.PRESENCE=\\\"PRESENCE\\\",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(\\\":\\\"==t)return R.QueryLexer.lexField;if(\\\"~\\\"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if(\\\"^\\\"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if(\\\"+\\\"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(\\\"-\\\"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var r=\\\"expected either a field or a term, found \\\"+t.type;throw t.str.length>=1&&(r+=\\\" with value '\\\"+t.str+\\\"'\\\"),new R.QueryParseError(r,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case\\\"-\\\":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case\\\"+\\\":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var r=\\\"unrecognised presence operator'\\\"+t.str+\\\"'\\\";throw new R.QueryParseError(r,t.start,t.end)}var n=e.peekLexeme();if(null==n)throw r=\\\"expecting term or field, found nothing\\\",new R.QueryParseError(r,t.start,t.end);switch(n.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:throw r=\\\"expecting term or field, found '\\\"+n.type+\\\"'\\\",new R.QueryParseError(r,n.start,n.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return\\\"'\\\"+e+\\\"'\\\"})).join(\\\", \\\"),n=\\\"unrecognised field '\\\"+t.str+\\\"', possible fields: \\\"+r;throw new R.QueryParseError(n,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i)throw n=\\\"expecting term, found nothing\\\",new R.QueryParseError(n,t.start,t.end);if(i.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;throw n=\\\"expecting term, found '\\\"+i.type+\\\"'\\\",new R.QueryParseError(n,i.start,i.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf(\\\"*\\\")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var n=\\\"Unexpected lexeme type '\\\"+r.type+\\\"'\\\";throw new R.QueryParseError(n,r.start,r.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n=\\\"edit distance must be numeric\\\";throw new R.QueryParseError(n,t.start,t.end)}e.currentClause.editDistance=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new R.QueryParseError(n,i.start,i.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n=\\\"boost must be numeric\\\";throw new R.QueryParseError(n,t.start,t.end)}e.currentClause.boost=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:throw n=\\\"Unexpected lexeme type '\\\"+i.type+\\\"'\\\",new R.QueryParseError(n,i.start,i.end)}else e.nextClause()}},void 0===(i=\\\"function\\\"==typeof(n=function(){return R})?n.call(t,r,t,e):n)||(e.exports=i)}()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var n={};!function(){\\\"use strict\\\";r.d(n,{add:function(){return l},dispose:function(){return p},done:function(){return c},fromExternalJS:function(){return d},load:function(){return f},search:function(){return y},toJS:function(){return h}});var e=r(336),t=(e,t,r)=>new Promise(((n,i)=>{var s=e=>{try{a(r.next(e))}catch(e){i(e)}},o=e=>{try{a(r.throw(e))}catch(e){i(e)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(s,o);a((r=r.apply(e,t)).next())}));let i,s,o,a=[];function u(){i=new e.Builder,i.field(\\\"title\\\"),i.field(\\\"description\\\"),i.ref(\\\"ref\\\"),i.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),o=new Promise((e=>{s=e}))}function l(e,t,r){const n=a.push(r)-1,s={title:e.toLowerCase(),description:t.toLowerCase(),ref:n};i.add(s)}function c(){return t(this,null,(function*(){s(i.build())}))}function h(){return t(this,null,(function*(){return{store:a,index:(yield o).toJSON()}}))}function d(e,r){return t(this,null,(function*(){try{if(importScripts(e),!self[r])throw new Error(\\\"Broken index file format\\\");f(self[r])}catch(e){console.error(\\\"Failed to load search index: \\\"+e.message)}}))}function f(r){return t(this,null,(function*(){a=r.store,s(e.Index.load(r.index))}))}function p(){return t(this,null,(function*(){a=[],u()}))}function y(r,n=0){return t(this,null,(function*(){if(0===r.trim().length)return[];let t=(yield o).query((t=>{r.trim().toLowerCase().split(/\\\\s+/).forEach((r=>{if(1===r.length)return;const n=(t=>{const r=e.trimmer(new e.Token(t,{}));return\\\"*\\\"+e.stemmer(r)+\\\"*\\\"})(r);t.term(n,{})}))}));return n>0&&(t=t.slice(0,n)),t.map((e=>({meta:a[e.ref],score:e.score})))}))}e.tokenizer.separator=/\\\\s+/,u(),addEventListener(\\\"message\\\",(function(e){var t,r=e.data,i=r.type,s=r.method,o=r.id,a=r.params;\\\"RPC\\\"===i&&s&&((t=n[s])?Promise.resolve().then((function(){return t.apply(n,a)})):Promise.reject(\\\"No such method\\\")).then((function(e){postMessage({type:\\\"RPC\\\",id:o,result:e})})).catch((function(e){var t={message:e};e.stack&&(t.message=e.message,t.stack=e.stack,t.name=e.name),postMessage({type:\\\"RPC\\\",id:o,error:t})}))})),postMessage({type:\\\"RPC\\\",method:\\\"ready\\\"})}()}();\\n//# sourceMappingURL=0a6ad30060afff00cb34.worker.js.map\"])), { name: \"[fullhash].worker.js\" })\n\t\t\t\t\taddMethods(w, methods)\n\t\t\t\t\t\n\t\t\t\t\treturn w\n\t\t\t\t}\n\t\t\t","function addMethods(worker, methods) {\n var c = 0;\n var callbacks = {};\n worker.addEventListener('message', function (e) {\n var d = e.data;\n if (d.type !== 'RPC') return;\n\n if (d.id) {\n var f = callbacks[d.id];\n\n if (f) {\n delete callbacks[d.id];\n\n if (d.error) {\n f[1](Object.assign(Error(d.error.message), d.error));\n } else {\n f[0](d.result);\n }\n }\n } else {\n var evt = document.createEvent('Event');\n evt.initEvent(d.method, false, false);\n evt.data = d.params;\n worker.dispatchEvent(evt);\n }\n });\n methods.forEach(function (method) {\n worker[method] = function () {\n var _arguments = arguments;\n return new Promise(function (a, b) {\n var id = ++c;\n callbacks[id] = [a, b];\n worker.postMessage({\n type: 'RPC',\n id: id,\n method: method,\n params: [].slice.call(_arguments)\n });\n });\n };\n });\n}\n\nmodule.exports = addMethods;\n//# sourceMappingURL=rpc-wrapper.js.map\n","module.exports = require(\"call-me-maybe\");","module.exports = require(\"fast-safe-stringify\");","module.exports = require(\"stickyfill\");","module.exports = require(\"yaml\");","module.exports = undefined;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"polished\");","import { darken, desaturate, lighten, readableColor, transparentize } from 'polished';\n\nconst defaultTheme: ThemeInterface = {\n spacing: {\n unit: 5,\n sectionHorizontal: ({ spacing }) => spacing.unit * 8,\n sectionVertical: ({ spacing }) => spacing.unit * 8,\n },\n breakpoints: {\n small: '50rem',\n medium: '75rem',\n large: '105rem',\n },\n colors: {\n tonalOffset: 0.2,\n primary: {\n main: '#32329f',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.primary.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.primary.main),\n contrastText: ({ colors }) => readableColor(colors.primary.main),\n },\n success: {\n main: '#1d8127',\n light: ({ colors }) => lighten(colors.tonalOffset * 2, colors.success.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.success.main),\n contrastText: ({ colors }) => readableColor(colors.success.main),\n },\n warning: {\n main: '#ffa500',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.warning.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.warning.main),\n contrastText: '#ffffff',\n },\n error: {\n main: '#d41f1c',\n light: ({ colors }) => lighten(colors.tonalOffset, colors.error.main),\n dark: ({ colors }) => darken(colors.tonalOffset, colors.error.main),\n contrastText: ({ colors }) => readableColor(colors.error.main),\n },\n gray: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n },\n text: {\n primary: '#333333',\n secondary: ({ colors }) => lighten(colors.tonalOffset, colors.text.primary),\n },\n border: {\n dark: 'rgba(0,0,0, 0.1)',\n light: '#ffffff',\n },\n responses: {\n success: {\n color: ({ colors }) => colors.success.main,\n backgroundColor: ({ colors }) => transparentize(0.93, colors.success.main),\n tabTextColor: ({ colors }) => colors.responses.success.color,\n },\n error: {\n color: ({ colors }) => colors.error.main,\n backgroundColor: ({ colors }) => transparentize(0.93, colors.error.main),\n tabTextColor: ({ colors }) => colors.responses.error.color,\n },\n redirect: {\n color: ({ colors }) => colors.warning.main,\n backgroundColor: ({ colors }) => transparentize(0.9, colors.responses.redirect.color),\n tabTextColor: ({ colors }) => colors.responses.redirect.color,\n },\n info: {\n color: '#87ceeb',\n backgroundColor: ({ colors }) => transparentize(0.9, colors.responses.info.color),\n tabTextColor: ({ colors }) => colors.responses.info.color,\n },\n },\n http: {\n get: '#2F8132',\n post: '#186FAF',\n put: '#95507c',\n options: '#947014',\n patch: '#bf581d',\n delete: '#cc3333',\n basic: '#707070',\n link: '#07818F',\n head: '#A23DAD',\n },\n },\n schema: {\n linesColor: theme =>\n lighten(\n theme.colors.tonalOffset,\n desaturate(theme.colors.tonalOffset, theme.colors.primary.main),\n ),\n defaultDetailsWidth: '75%',\n typeNameColor: theme => theme.colors.text.secondary,\n typeTitleColor: theme => theme.schema.typeNameColor,\n requireLabelColor: theme => theme.colors.error.main,\n labelsTextSize: '0.9em',\n nestingSpacing: '1em',\n nestedBackground: '#fafafa',\n arrow: {\n size: '1.1em',\n color: theme => theme.colors.text.secondary,\n },\n },\n typography: {\n fontSize: '14px',\n lineHeight: '1.5em',\n fontWeightRegular: '400',\n fontWeightBold: '600',\n fontWeightLight: '300',\n fontFamily: 'Roboto, sans-serif',\n smoothing: 'antialiased',\n optimizeSpeed: true,\n headings: {\n fontFamily: 'Montserrat, sans-serif',\n fontWeight: '400',\n lineHeight: '1.6em',\n },\n code: {\n fontSize: '13px',\n fontFamily: 'Courier, monospace',\n lineHeight: ({ typography }) => typography.lineHeight,\n fontWeight: ({ typography }) => typography.fontWeightRegular,\n color: '#e53935',\n backgroundColor: 'rgba(38, 50, 56, 0.05)',\n wrap: false,\n },\n links: {\n color: ({ colors }) => colors.primary.main,\n visited: ({ typography }) => typography.links.color,\n hover: ({ typography }) => lighten(0.2, typography.links.color),\n textDecoration: 'auto',\n hoverTextDecoration: 'auto',\n },\n },\n sidebar: {\n width: '260px',\n backgroundColor: '#fafafa',\n textColor: '#333333',\n activeTextColor: theme =>\n theme.sidebar.textColor !== defaultTheme.sidebar!.textColor\n ? theme.sidebar.textColor\n : theme.colors.primary.main,\n groupItems: {\n activeBackgroundColor: theme => darken(0.1, theme.sidebar.backgroundColor),\n activeTextColor: theme => theme.sidebar.activeTextColor,\n textTransform: 'uppercase',\n },\n level1Items: {\n activeBackgroundColor: theme => darken(0.05, theme.sidebar.backgroundColor),\n activeTextColor: theme => theme.sidebar.activeTextColor,\n textTransform: 'none',\n },\n arrow: {\n size: '1.5em',\n color: theme => theme.sidebar.textColor,\n },\n },\n logo: {\n maxHeight: ({ sidebar }) => sidebar.width,\n maxWidth: ({ sidebar }) => sidebar.width,\n gutter: '2px',\n },\n rightPanel: {\n backgroundColor: '#263238',\n width: '40%',\n textColor: '#ffffff',\n servers: {\n overlay: {\n backgroundColor: '#fafafa',\n textColor: '#263238',\n },\n url: {\n backgroundColor: '#fff',\n },\n },\n },\n codeBlock: {\n backgroundColor: ({ rightPanel }) => darken(0.1, rightPanel.backgroundColor),\n },\n fab: {\n backgroundColor: '#f2f2f2',\n color: '#0065FB',\n },\n};\n\nexport default defaultTheme;\n\nexport function resolveTheme(theme: ThemeInterface): ResolvedThemeInterface {\n const resolvedValues = {};\n let counter = 0;\n const setProxy = (obj, path: string) => {\n Object.keys(obj).forEach(k => {\n const currentPath = (path ? path + '.' : '') + k;\n const val = obj[k];\n if (typeof val === 'function') {\n Object.defineProperty(obj, k, {\n get() {\n if (!resolvedValues[currentPath]) {\n counter++;\n if (counter > 1000) {\n throw new Error(\n `Theme probably contains circular dependency at ${currentPath}: ${val.toString()}`,\n );\n }\n\n resolvedValues[currentPath] = val(theme);\n }\n return resolvedValues[currentPath];\n },\n enumerable: true,\n });\n } else if (typeof val === 'object') {\n setProxy(val, currentPath);\n }\n });\n };\n\n setProxy(theme, '');\n return JSON.parse(JSON.stringify(theme));\n}\n\nexport interface ColorSetting {\n main: string;\n light: string;\n dark: string;\n contrastText: string;\n}\n\nexport interface HTTPResponseColos {\n color: string;\n backgroundColor: string;\n tabTextColor: string;\n}\n\nexport interface FontSettings {\n fontSize: string;\n fontWeight: string;\n fontFamily: string;\n lineHeight: string;\n color: string;\n}\n\nexport interface Servers {\n overlay: {\n backgroundColor: string;\n textColor: string;\n };\n url: {\n backgroundColor: string;\n };\n}\n\nexport interface ResolvedThemeInterface {\n spacing: {\n unit: number;\n sectionHorizontal: number;\n sectionVertical: number;\n };\n breakpoints: {\n small: string;\n medium: string;\n large: string;\n };\n colors: {\n tonalOffset: number;\n primary: ColorSetting;\n success: ColorSetting;\n warning: ColorSetting;\n error: ColorSetting;\n gray: {\n 50: string;\n 100: string;\n };\n border: {\n light: string;\n dark: string;\n };\n text: {\n primary: string;\n secondary: string;\n };\n responses: {\n success: HTTPResponseColos;\n error: HTTPResponseColos;\n redirect: HTTPResponseColos;\n info: HTTPResponseColos;\n };\n http: {\n get: string;\n post: string;\n put: string;\n options: string;\n patch: string;\n delete: string;\n basic: string;\n link: string;\n head: string;\n };\n };\n schema: {\n linesColor: string;\n defaultDetailsWidth: string;\n typeNameColor: string;\n typeTitleColor: string;\n requireLabelColor: string;\n labelsTextSize: string;\n nestingSpacing: string;\n nestedBackground: string;\n arrow: {\n size: string;\n color: string;\n };\n };\n typography: {\n fontSize: string;\n lineHeight: string;\n fontWeightLight: string;\n fontWeightRegular: string;\n fontWeightBold: string;\n fontFamily: string;\n\n smoothing: string;\n optimizeSpeed: boolean;\n\n code: FontSettings & {\n backgroundColor: string;\n wrap: boolean;\n };\n headings: {\n fontFamily: string;\n fontWeight: string;\n lineHeight: string;\n };\n\n links: {\n color: string;\n visited: string;\n hover: string;\n textDecoration: string;\n hoverTextDecoration: string;\n };\n };\n sidebar: {\n width: string;\n backgroundColor: string;\n textColor: string;\n activeTextColor: string;\n groupItems: {\n activeBackgroundColor: string;\n activeTextColor: string;\n textTransform: string;\n };\n level1Items: {\n activeBackgroundColor: string;\n activeTextColor: string;\n textTransform: string;\n };\n arrow: {\n size: string;\n color: string;\n };\n };\n logo: {\n maxHeight: string;\n maxWidth: string;\n gutter: string;\n };\n rightPanel: {\n backgroundColor: string;\n textColor: string;\n width: string;\n servers: Servers;\n };\n codeBlock: {\n backgroundColor: string;\n };\n fab: {\n backgroundColor: string;\n color: string;\n };\n\n extensionsHook?: (name: string, props: any) => string;\n}\n\nexport type primitive = string | number | boolean | undefined | null;\nexport type AdvancedThemeDeep<T> = T extends primitive\n ? T | ((theme: ResolvedThemeInterface) => T)\n : AdvancedThemeObject<T>;\nexport type AdvancedThemeObject<T> = { [P in keyof T]?: AdvancedThemeDeep<T[P]> };\nexport type ThemeInterface = AdvancedThemeObject<ResolvedThemeInterface>;\n","export const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport function querySelector(selector: string): Element | null {\n if (typeof document !== 'undefined') {\n return document.querySelector(selector);\n }\n return null;\n}\n\n/**\n * Drop everything inside <...> (i.e., tags/elements), and keep the text.\n * Unlike browser innerText, this removes newlines; it also doesn't handle\n * un-encoded `<` or `>` characters very well, so don't feed it malformed HTML\n */\nexport function html2Str(html: string): string {\n return html\n .split(/<[^>]+>/)\n .map(chunk => {\n return chunk.trim();\n })\n .filter(trimmedChunk => {\n return trimmedChunk.length > 0;\n })\n .join(' ');\n}\n\n// Alternate scrollIntoViewIfNeeded implementation.\n// Used in all cases, since it seems Chrome's implementation is buggy\n// when \"Experimental Web Platform Features\" is enabled (at least of version 96).\n// See #1714, #1742\n\nexport function scrollIntoViewIfNeeded(el: HTMLElement, centerIfNeeded = true) {\n const parent = el.parentNode as HTMLElement | null;\n if (!parent) {\n return;\n }\n const parentComputedStyle = window.getComputedStyle(parent, undefined);\n const parentBorderTopWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-top-width'),\n 10,\n );\n const parentBorderLeftWidth = parseInt(\n parentComputedStyle.getPropertyValue('border-left-width'),\n 10,\n );\n const overTop = el.offsetTop - parent.offsetTop < parent.scrollTop;\n const overBottom =\n el.offsetTop - parent.offsetTop + el.clientHeight - parentBorderTopWidth >\n parent.scrollTop + parent.clientHeight;\n const overLeft = el.offsetLeft - parent.offsetLeft < parent.scrollLeft;\n const overRight =\n el.offsetLeft - parent.offsetLeft + el.clientWidth - parentBorderLeftWidth >\n parent.scrollLeft + parent.clientWidth;\n const alignWithTop = overTop && !overBottom;\n\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop =\n el.offsetTop -\n parent.offsetTop -\n parent.clientHeight / 2 -\n parentBorderTopWidth +\n el.clientHeight / 2;\n }\n\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft =\n el.offsetLeft -\n parent.offsetLeft -\n parent.clientWidth / 2 -\n parentBorderLeftWidth +\n el.clientWidth / 2;\n }\n\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n el.scrollIntoView(alignWithTop);\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"slugify\");","import slugify from 'slugify';\n\n/**\n * Maps over array passing `isLast` bool to iterator as the second argument\n */\nexport function mapWithLast<T, P>(array: T[], iteratee: (item: T, isLast: boolean) => P) {\n const res: P[] = [];\n for (let i = 0; i < array.length - 1; i++) {\n res.push(iteratee(array[i], false));\n }\n if (array.length !== 0) {\n res.push(iteratee(array[array.length - 1], true));\n }\n return res;\n}\n\n/**\n * Creates an object with the same keys as object and values generated by running each\n * own enumerable string keyed property of object thru iteratee.\n * The iteratee is invoked with three arguments: (value, key, object).\n *\n * @param object the object to iterate over\n * @param iteratee the function invoked per iteration.\n */\nexport function mapValues<T, P>(\n object: Record<string, T>,\n iteratee: (val: T, key: string, obj: Record<string, T>) => P,\n): Record<string, P> {\n const res: { [key: string]: P } = {};\n for (const key in object) {\n if (object.hasOwnProperty(key)) {\n res[key] = iteratee(object[key], key, object);\n }\n }\n return res;\n}\n\n/**\n * flattens collection using `prop` field as a children\n * @param collectionItems collection items\n * @param prop item property with child elements\n */\nexport function flattenByProp<T extends object, P extends keyof T>(\n collectionItems: T[],\n prop: P,\n): T[] {\n const res: T[] = [];\n const iterate = (items: T[]) => {\n for (const item of items) {\n res.push(item);\n if (item[prop]) {\n iterate(item[prop] as any as T[]);\n }\n }\n };\n iterate(collectionItems);\n return res;\n}\n\nexport function stripTrailingSlash(path: string): string {\n if (path.endsWith('/')) {\n return path.substring(0, path.length - 1);\n }\n return path;\n}\n\nexport function isNumeric(n: any): n is number {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nexport function appendToMdHeading(md: string, heading: string, content: string) {\n // if heading is already in md and append to the end of it\n const testRegex = new RegExp(`(^|\\\\n)#\\\\s?${heading}\\\\s*\\\\n`, 'i');\n const replaceRegex = new RegExp(`((\\\\n|^)#\\\\s*${heading}\\\\s*(\\\\n|$)(?:.|\\\\n)*?)(\\\\n#|$)`, 'i');\n if (testRegex.test(md)) {\n return md.replace(replaceRegex, `$1\\n\\n${content}\\n$4`);\n } else {\n // else append heading itself\n const br = md === '' || md.endsWith('\\n\\n') ? '' : md.endsWith('\\n') ? '\\n' : '\\n\\n';\n return `${md}${br}# ${heading}\\n\\n${content}`;\n }\n}\n\n// credits https://stackoverflow.com/a/46973278/1749888\nexport const mergeObjects = (target: any, ...sources: any[]): any => {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n if (source === undefined) {\n return target;\n }\n\n if (isMergebleObject(target) && isMergebleObject(source)) {\n Object.keys(source).forEach((key: string) => {\n if (isMergebleObject(source[key])) {\n if (!target[key]) {\n target[key] = {};\n }\n mergeObjects(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n });\n }\n\n return mergeObjects(target, ...sources);\n};\n\nexport const isObject = (item: unknown): item is Record<string, unknown> => {\n return item !== null && typeof item === 'object';\n};\n\nconst isMergebleObject = (item): boolean => {\n return isObject(item) && !isArray(item);\n};\n\n/**\n * slugify() returns empty string when failed to slugify.\n * so try to return minimum slugified-string with failed one which keeps original value\n * the regex codes are referenced with https://gist.github.com/mathewbyrne/1280286\n */\nexport function safeSlugify(value: string): string {\n return (\n slugify(value) ||\n value\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/&/g, '-and-') // Replace & with 'and'\n .replace(/\\--+/g, '-') // Replace multiple - with single -\n .replace(/^-+/, '') // Trim - from start of text\n .replace(/-+$/, '')\n ); // Trim - from end of text\n}\n\nexport function isAbsoluteUrl(url: string) {\n return /(?:^[a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url);\n}\n\n/**\n * simple resolve URL which doesn't break on strings with url fragments\n * e.g. resolveUrl('http://test.com:{port}', 'path') results in http://test.com:{port}/path\n */\nexport function resolveUrl(url: string, to: string) {\n let res;\n if (to.startsWith('//')) {\n try {\n res = `${new URL(url).protocol || 'https:'}${to}`;\n } catch {\n res = `https:${to}`;\n }\n } else if (isAbsoluteUrl(to)) {\n res = to;\n } else if (!to.startsWith('/')) {\n res = stripTrailingSlash(url) + '/' + to;\n } else {\n try {\n const urlObj = new URL(url);\n urlObj.pathname = to;\n res = urlObj.href;\n } catch {\n res = to;\n }\n }\n return stripTrailingSlash(res);\n}\n\nexport function getBasePath(serverUrl: string): string {\n try {\n return parseURL(serverUrl).pathname;\n } catch (e) {\n // when using with redoc-cli serverUrl can be empty resulting in crash\n return serverUrl;\n }\n}\n\nexport function titleize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nexport function removeQueryStringAndHash(serverUrl: string): string {\n try {\n const url = parseURL(serverUrl);\n url.search = '';\n url.hash = '';\n return url.toString();\n } catch (e) {\n // when using with redoc-cli serverUrl can be empty resulting in crash\n return serverUrl;\n }\n}\n\nfunction parseURL(url: string) {\n if (typeof URL === 'undefined') {\n // node\n return new (require('url').URL)(url);\n } else {\n return new URL(url);\n }\n}\n\nexport function escapeHTMLAttrChars(str: string): string {\n return str.replace(/[\"\\\\]/g, '\\\\$&');\n}\n\nexport function unescapeHTMLChars(str: string): string {\n return str\n .replace(/&#(\\d+);/g, (_m, code) => String.fromCharCode(parseInt(code, 10)))\n .replace(/&amp;/g, '&')\n .replace(/&quot;/g, '\"');\n}\n\nexport function isArray(value: unknown): value is any[] {\n return Array.isArray(value);\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean';\n}\n","import type { LabelsConfig, LabelsConfigRaw } from './types';\n\nconst labels: LabelsConfig = {\n enum: 'Enum',\n enumSingleValue: 'Value',\n enumArray: 'Items',\n default: 'Default',\n deprecated: 'Deprecated',\n example: 'Example',\n examples: 'Examples',\n recursive: 'Recursive',\n arrayOf: 'Array of ',\n webhook: 'Event',\n const: 'Value',\n noResultsFound: 'No results found',\n download: 'Download',\n downloadSpecification: 'Download OpenAPI specification',\n responses: 'Responses',\n callbackResponses: 'Callback responses',\n requestSamples: 'Request samples',\n responseSamples: 'Response samples',\n};\n\nexport function setRedocLabels(_labels?: LabelsConfigRaw) {\n Object.assign(labels, _labels);\n}\n\nexport function l(key: keyof LabelsConfig, idx?: number): string {\n const label = labels[key];\n if (idx !== undefined) {\n return label[idx];\n }\n return label;\n}\n","import {\n OpenAPIOperation,\n OpenAPIParameter,\n OpenAPISchema,\n OpenAPIServer,\n OpenAPITag,\n Referenced,\n} from '../types';\nimport { AppStore } from './AppStore';\nimport { GroupModel } from './models';\nimport { OperationModel } from './models/Operation';\nimport { RedocRawOptions } from './RedocNormalizedOptions';\n\nexport interface StoreState {\n menu: {\n activeItemIdx: number;\n };\n spec: {\n url?: string;\n data: any;\n };\n searchIndex: any;\n options: RedocRawOptions;\n}\n\nexport interface LabelsConfig {\n enum: string;\n enumSingleValue: string;\n enumArray: string;\n default: string;\n deprecated: string;\n example: string;\n examples: string;\n recursive: string;\n arrayOf: string;\n webhook: string;\n const: string;\n noResultsFound: string;\n download: string;\n downloadSpecification: string;\n responses: string;\n callbackResponses: string;\n requestSamples: string;\n responseSamples: string;\n}\n\nexport type LabelsConfigRaw = Partial<LabelsConfig>;\n\nexport interface MDXComponentMeta {\n component: React.ComponentType;\n propsSelector: (store?: AppStore) => any;\n props?: object;\n}\n\nexport interface MarkdownHeading {\n id: string;\n name: string;\n level: number;\n items?: MarkdownHeading[];\n description?: string;\n}\n\nexport type ContentItemModel = GroupModel | OperationModel;\n\nexport type TagInfo = OpenAPITag & {\n operations: ExtendedOpenAPIOperation[];\n used?: boolean;\n};\n\nexport type ExtendedOpenAPIOperation = {\n pointer: string;\n pathName: string;\n httpVerb: string;\n pathParameters: Array<Referenced<OpenAPIParameter>>;\n pathServers: Array<OpenAPIServer> | undefined;\n isWebhook: boolean;\n} & OpenAPIOperation;\n\nexport type TagsInfoMap = Record<string, TagInfo>;\n\nexport interface TagGroup {\n name: string;\n tags: string[];\n}\n\nexport type MenuItemGroupType = 'group' | 'tag' | 'section';\nexport type MenuItemType = MenuItemGroupType | 'operation';\n\nexport interface IMenuItem {\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n depth: number;\n active: boolean;\n expanded: boolean;\n items: IMenuItem[];\n parent?: IMenuItem;\n deprecated?: boolean;\n type: MenuItemType;\n\n deactivate(): void;\n activate(): void;\n\n collapse(): void;\n expand(): void;\n}\n\nexport interface SearchDocument {\n title: string;\n description: string;\n id: string;\n}\n\nexport interface SearchResult<T = string> {\n meta: T;\n score: number;\n}\n\nexport enum SideNavStyleEnum {\n SummaryOnly = 'summary-only',\n PathOnly = 'path-only',\n IdOnly = 'id-only',\n}\n\nexport type MergedOpenAPISchema = OpenAPISchema & {\n 'x-refsStack'?: string[];\n 'x-parentRefs'?: string[];\n 'x-circular-ref'?: boolean;\n};\n","import defaultTheme, { ResolvedThemeInterface, resolveTheme, ThemeInterface } from '../theme';\nimport { querySelector } from '../utils/dom';\nimport { isArray, isNumeric, mergeObjects } from '../utils/helpers';\n\nimport { setRedocLabels } from './Labels';\nimport { SideNavStyleEnum } from './types';\nimport type { LabelsConfigRaw, MDXComponentMeta } from './types';\n\nexport interface RedocRawOptions {\n theme?: ThemeInterface;\n scrollYOffset?: number | string | (() => number);\n hideHostname?: boolean | string;\n expandResponses?: string | 'all';\n requiredPropsFirst?: boolean | string;\n sortPropsAlphabetically?: boolean | string;\n sortEnumValuesAlphabetically?: boolean | string;\n sortOperationsAlphabetically?: boolean | string;\n sortTagsAlphabetically?: boolean | string;\n nativeScrollbars?: boolean | string;\n pathInMiddlePanel?: boolean | string;\n untrustedSpec?: boolean | string;\n hideLoading?: boolean | string;\n hideDownloadButton?: boolean | string;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n disableSearch?: boolean | string;\n onlyRequiredInSamples?: boolean | string;\n showExtensions?: boolean | string | string[];\n sideNavStyle?: SideNavStyleEnum;\n hideSingleRequestSampleTab?: boolean | string;\n menuToggle?: boolean | string;\n jsonSampleExpandLevel?: number | string | 'all';\n hideSchemaTitles?: boolean | string;\n simpleOneOfTypeLabel?: boolean | string;\n payloadSampleIdx?: number;\n expandSingleSchemaField?: boolean | string;\n schemaExpansionLevel?: number | string | 'all';\n showObjectSchemaExamples?: boolean | string;\n showSecuritySchemeType?: boolean;\n hideSecuritySection?: boolean;\n\n unstable_ignoreMimeParameters?: boolean;\n\n allowedMdComponents?: Record<string, MDXComponentMeta>;\n\n labels?: LabelsConfigRaw;\n\n enumSkipQuotes?: boolean | string;\n\n expandDefaultServerVariables?: boolean;\n maxDisplayedEnumValues?: number;\n ignoreNamedSchemas?: string[] | string;\n hideSchemaPattern?: boolean;\n generatedPayloadSamplesMaxDepth?: number;\n nonce?: string;\n hideFab?: boolean;\n minCharacterLengthToInitSearch?: number;\n showWebhookVerb?: boolean;\n}\n\nexport function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean {\n if (val === undefined) {\n return defaultValue || false;\n }\n if (typeof val === 'string') {\n return val !== 'false';\n }\n return val;\n}\n\nfunction argValueToNumber(value: number | string | undefined): number | undefined {\n if (typeof value === 'string') {\n return parseInt(value, 10);\n }\n\n if (typeof value === 'number') {\n return value;\n }\n}\n\nfunction argValueToExpandLevel(value?: number | string | undefined, defaultValue = 0): number {\n if (value === 'all') return Infinity;\n\n return argValueToNumber(value) || defaultValue;\n}\n\nexport class RedocNormalizedOptions {\n static normalizeExpandResponses(value: RedocRawOptions['expandResponses']) {\n if (value === 'all') {\n return 'all';\n }\n if (typeof value === 'string') {\n const res = {};\n value.split(',').forEach(code => {\n res[code.trim()] = true;\n });\n return res;\n } else if (value !== undefined) {\n console.warn(\n `expandResponses must be a string but received value \"${value}\" of type ${typeof value}`,\n );\n }\n return {};\n }\n\n static normalizeHideHostname(value: RedocRawOptions['hideHostname']): boolean {\n return !!value;\n }\n\n static normalizeScrollYOffset(value: RedocRawOptions['scrollYOffset']): () => number {\n // just number is not valid selector and leads to crash so checking if isNumeric here\n if (typeof value === 'string' && !isNumeric(value)) {\n const el = querySelector(value);\n if (!el) {\n console.warn(\n 'scrollYOffset value is a selector to non-existing element. Using offset 0 by default',\n );\n }\n const bottom = (el && el.getBoundingClientRect().bottom) || 0;\n return () => bottom;\n } else if (typeof value === 'number' || isNumeric(value)) {\n return () => (typeof value === 'number' ? value : parseFloat(value));\n } else if (typeof value === 'function') {\n return () => {\n const res = value();\n if (typeof res !== 'number') {\n console.warn(\n `scrollYOffset should return number but returned value \"${res}\" of type ${typeof res}`,\n );\n }\n return res;\n };\n } else if (value !== undefined) {\n console.warn(\n 'Wrong value for scrollYOffset ReDoc option: should be string, number or function',\n );\n }\n\n return () => 0;\n }\n\n static normalizeShowExtensions(value: RedocRawOptions['showExtensions']): string[] | boolean {\n if (typeof value === 'undefined') {\n return false;\n }\n if (value === '') {\n return true;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n switch (value) {\n case 'true':\n return true;\n case 'false':\n return false;\n default:\n return value.split(',').map(ext => ext.trim());\n }\n }\n\n static normalizeSideNavStyle(value: RedocRawOptions['sideNavStyle']): SideNavStyleEnum {\n const defaultValue = SideNavStyleEnum.SummaryOnly;\n if (typeof value !== 'string') {\n return defaultValue;\n }\n\n switch (value) {\n case defaultValue:\n return value;\n case SideNavStyleEnum.PathOnly:\n return SideNavStyleEnum.PathOnly;\n case SideNavStyleEnum.IdOnly:\n return SideNavStyleEnum.IdOnly;\n default:\n return defaultValue;\n }\n }\n\n static normalizePayloadSampleIdx(value: RedocRawOptions['payloadSampleIdx']): number {\n if (typeof value === 'number') {\n return Math.max(0, value); // always greater or equal than 0\n }\n\n if (typeof value === 'string') {\n return isFinite(value) ? parseInt(value, 10) : 0;\n }\n\n return 0;\n }\n\n private static normalizeJsonSampleExpandLevel(level?: number | string | 'all'): number {\n if (level === 'all') {\n return +Infinity;\n }\n if (!isNaN(Number(level))) {\n return Math.ceil(Number(level));\n }\n return 2;\n }\n\n private static normalizeGeneratedPayloadSamplesMaxDepth(\n value?: number | string | undefined,\n ): number {\n if (!isNaN(Number(value))) {\n return Math.max(0, Number(value));\n }\n\n return 10;\n }\n\n theme: ResolvedThemeInterface;\n scrollYOffset: () => number;\n hideHostname: boolean;\n expandResponses: { [code: string]: boolean } | 'all';\n requiredPropsFirst: boolean;\n sortPropsAlphabetically: boolean;\n sortEnumValuesAlphabetically: boolean;\n sortOperationsAlphabetically: boolean;\n sortTagsAlphabetically: boolean;\n nativeScrollbars: boolean;\n pathInMiddlePanel: boolean;\n untrustedSpec: boolean;\n hideDownloadButton: boolean;\n downloadFileName?: string;\n downloadDefinitionUrl?: string;\n disableSearch: boolean;\n onlyRequiredInSamples: boolean;\n showExtensions: boolean | string[];\n sideNavStyle: SideNavStyleEnum;\n hideSingleRequestSampleTab: boolean;\n menuToggle: boolean;\n jsonSampleExpandLevel: number;\n enumSkipQuotes: boolean;\n hideSchemaTitles: boolean;\n simpleOneOfTypeLabel: boolean;\n payloadSampleIdx: number;\n expandSingleSchemaField: boolean;\n schemaExpansionLevel: number;\n showObjectSchemaExamples: boolean;\n showSecuritySchemeType?: boolean;\n hideSecuritySection?: boolean;\n\n /* tslint:disable-next-line */\n unstable_ignoreMimeParameters: boolean;\n allowedMdComponents: Record<string, MDXComponentMeta>;\n\n expandDefaultServerVariables: boolean;\n maxDisplayedEnumValues?: number;\n\n ignoreNamedSchemas: Set<string>;\n hideSchemaPattern: boolean;\n generatedPayloadSamplesMaxDepth: number;\n hideFab: boolean;\n minCharacterLengthToInitSearch: number;\n showWebhookVerb: boolean;\n\n nonce?: string;\n\n constructor(raw: RedocRawOptions, defaults: RedocRawOptions = {}) {\n raw = { ...defaults, ...raw };\n const hook = raw.theme && raw.theme.extensionsHook;\n\n // migrate from old theme\n if ((raw.theme as any)?.menu && !raw.theme?.sidebar) {\n console.warn('Theme setting \"menu\" is deprecated. Rename to \"sidebar\"');\n raw.theme!.sidebar = (raw.theme as any).menu;\n }\n\n if ((raw.theme as any)?.codeSample && !raw.theme?.codeBlock) {\n console.warn('Theme setting \"codeSample\" is deprecated. Rename to \"codeBlock\"');\n raw.theme!.codeBlock = (raw.theme as any).codeSample;\n }\n\n this.theme = resolveTheme(\n mergeObjects({} as any, defaultTheme, { ...raw.theme, extensionsHook: undefined }),\n );\n\n this.theme.extensionsHook = hook as any;\n\n // do not support dynamic labels changes. Labels should be configured before\n setRedocLabels(raw.labels);\n\n this.scrollYOffset = RedocNormalizedOptions.normalizeScrollYOffset(raw.scrollYOffset);\n this.hideHostname = RedocNormalizedOptions.normalizeHideHostname(raw.hideHostname);\n this.expandResponses = RedocNormalizedOptions.normalizeExpandResponses(raw.expandResponses);\n this.requiredPropsFirst = argValueToBoolean(raw.requiredPropsFirst);\n this.sortPropsAlphabetically = argValueToBoolean(raw.sortPropsAlphabetically);\n this.sortEnumValuesAlphabetically = argValueToBoolean(raw.sortEnumValuesAlphabetically);\n this.sortOperationsAlphabetically = argValueToBoolean(raw.sortOperationsAlphabetically);\n this.sortTagsAlphabetically = argValueToBoolean(raw.sortTagsAlphabetically);\n this.nativeScrollbars = argValueToBoolean(raw.nativeScrollbars);\n this.pathInMiddlePanel = argValueToBoolean(raw.pathInMiddlePanel);\n this.untrustedSpec = argValueToBoolean(raw.untrustedSpec);\n this.hideDownloadButton = argValueToBoolean(raw.hideDownloadButton);\n this.downloadFileName = raw.downloadFileName;\n this.downloadDefinitionUrl = raw.downloadDefinitionUrl;\n this.disableSearch = argValueToBoolean(raw.disableSearch);\n this.onlyRequiredInSamples = argValueToBoolean(raw.onlyRequiredInSamples);\n this.showExtensions = RedocNormalizedOptions.normalizeShowExtensions(raw.showExtensions);\n this.sideNavStyle = RedocNormalizedOptions.normalizeSideNavStyle(raw.sideNavStyle);\n this.hideSingleRequestSampleTab = argValueToBoolean(raw.hideSingleRequestSampleTab);\n this.menuToggle = argValueToBoolean(raw.menuToggle, true);\n this.jsonSampleExpandLevel = RedocNormalizedOptions.normalizeJsonSampleExpandLevel(\n raw.jsonSampleExpandLevel,\n );\n this.enumSkipQuotes = argValueToBoolean(raw.enumSkipQuotes);\n this.hideSchemaTitles = argValueToBoolean(raw.hideSchemaTitles);\n this.simpleOneOfTypeLabel = argValueToBoolean(raw.simpleOneOfTypeLabel);\n this.payloadSampleIdx = RedocNormalizedOptions.normalizePayloadSampleIdx(raw.payloadSampleIdx);\n this.expandSingleSchemaField = argValueToBoolean(raw.expandSingleSchemaField);\n this.schemaExpansionLevel = argValueToExpandLevel(raw.schemaExpansionLevel);\n this.showObjectSchemaExamples = argValueToBoolean(raw.showObjectSchemaExamples);\n this.showSecuritySchemeType = argValueToBoolean(raw.showSecuritySchemeType);\n this.hideSecuritySection = argValueToBoolean(raw.hideSecuritySection);\n\n this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters);\n\n this.allowedMdComponents = raw.allowedMdComponents || {};\n\n this.expandDefaultServerVariables = argValueToBoolean(raw.expandDefaultServerVariables);\n this.maxDisplayedEnumValues = argValueToNumber(raw.maxDisplayedEnumValues);\n const ignoreNamedSchemas = isArray(raw.ignoreNamedSchemas)\n ? raw.ignoreNamedSchemas\n : raw.ignoreNamedSchemas?.split(',').map(s => s.trim());\n this.ignoreNamedSchemas = new Set(ignoreNamedSchemas);\n this.hideSchemaPattern = argValueToBoolean(raw.hideSchemaPattern);\n this.generatedPayloadSamplesMaxDepth =\n RedocNormalizedOptions.normalizeGeneratedPayloadSamplesMaxDepth(\n raw.generatedPayloadSamplesMaxDepth,\n );\n this.nonce = raw.nonce;\n this.hideFab = argValueToBoolean(raw.hideFab);\n this.minCharacterLengthToInitSearch = argValueToNumber(raw.minCharacterLengthToInitSearch) || 3;\n this.showWebhookVerb = argValueToBoolean(raw.showWebhookVerb);\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"styled-components\");","import * as styledComponents from 'styled-components';\n\nimport type { ResolvedThemeInterface } from './theme';\n\nexport type { ResolvedThemeInterface };\n\nconst {\n default: styled,\n css,\n createGlobalStyle,\n keyframes,\n ThemeProvider,\n} = styledComponents as unknown as styledComponents.ThemedStyledComponentsModule<ResolvedThemeInterface>;\n\nexport const media = {\n lessThan(breakpoint, print?: boolean, extra?: string) {\n return (...args) => css`\n @media ${print ? 'print, ' : ''} screen and (max-width: ${props =>\n props.theme.breakpoints[breakpoint]}) ${extra || ''} {\n ${(css as any)(...args)};\n }\n `;\n },\n\n greaterThan(breakpoint) {\n return (...args) => css`\n @media (min-width: ${props => props.theme.breakpoints[breakpoint]}) {\n ${(css as any)(...args)};\n }\n `;\n },\n\n between(firstBreakpoint, secondBreakpoint) {\n return (...args) => css`\n @media (min-width: ${props =>\n props.theme.breakpoints[firstBreakpoint]}) and (max-width: ${props =>\n props.theme.breakpoints[secondBreakpoint]}) {\n ${(css as any)(...args)};\n }\n `;\n },\n};\n\nexport { css, createGlobalStyle, keyframes, ThemeProvider };\nexport default styled;\n\nexport function extensionsHook(styledName: string) {\n return props => {\n if (!props.theme.extensionsHook) {\n return;\n }\n return props.theme.extensionsHook(styledName, props);\n };\n}\n","import * as React from 'react';\nimport styled from '../styled-components';\n\nconst ErrorWrapper = styled.div`\n padding: 20px;\n color: red;\n`;\n\nexport class ErrorBoundary extends React.Component<\n React.PropsWithChildren<unknown>,\n { error?: Error }\n> {\n constructor(props) {\n super(props);\n this.state = { error: undefined };\n }\n\n componentDidCatch(error) {\n this.setState({ error });\n return false;\n }\n\n render() {\n if (this.state.error) {\n return (\n <ErrorWrapper>\n <h1>Something went wrong...</h1>\n <small> {this.state.error.message} </small>\n <p>\n <details>\n <summary>Stack trace</summary>\n <pre>{this.state.error.stack}</pre>\n </details>\n </p>\n <small> ReDoc Version: {__REDOC_VERSION__}</small> <br />\n <small> Commit: {__REDOC_REVISION__}</small>\n </ErrorWrapper>\n );\n }\n return <React.Fragment>{React.Children.only(this.props.children)}</React.Fragment>;\n }\n}\n","import * as React from 'react';\nimport styled, { keyframes } from '../../styled-components';\n\nconst _Spinner = (props: { className?: string; color: string }) => (\n <svg className={props.className} version=\"1.1\" width=\"512\" height=\"512\" viewBox=\"0 0 512 512\">\n <path d=\"M275.682 147.999c0 10.864-8.837 19.661-19.682 19.661v0c-10.875 0-19.681-8.796-19.681-19.661v-96.635c0-10.885 8.806-19.661 19.681-19.661v0c10.844 0 19.682 8.776 19.682 19.661v96.635z\" />\n <path d=\"M275.682 460.615c0 10.865-8.837 19.682-19.682 19.682v0c-10.875 0-19.681-8.817-19.681-19.682v-96.604c0-10.885 8.806-19.681 19.681-19.681v0c10.844 0 19.682 8.796 19.682 19.682v96.604z\" />\n <path d=\"M147.978 236.339c10.885 0 19.681 8.755 19.681 19.641v0c0 10.885-8.796 19.702-19.681 19.702h-96.624c-10.864 0-19.661-8.817-19.661-19.702v0c0-10.885 8.796-19.641 19.661-19.641h96.624z\" />\n <path d=\"M460.615 236.339c10.865 0 19.682 8.755 19.682 19.641v0c0 10.885-8.817 19.702-19.682 19.702h-96.584c-10.885 0-19.722-8.817-19.722-19.702v0c0-10.885 8.837-19.641 19.722-19.641h96.584z\" />\n <path d=\"M193.546 165.703c7.69 7.66 7.68 20.142 0 27.822v0c-7.701 7.701-20.162 7.701-27.853 0.020l-68.311-68.322c-7.68-7.701-7.68-20.142 0-27.863v0c7.68-7.68 20.121-7.68 27.822 0l68.342 68.342z\" />\n <path d=\"M414.597 386.775c7.7 7.68 7.7 20.163 0.021 27.863v0c-7.7 7.659-20.142 7.659-27.843-0.062l-68.311-68.26c-7.68-7.7-7.68-20.204 0-27.863v0c7.68-7.7 20.163-7.7 27.842 0l68.291 68.322z\" />\n <path d=\"M165.694 318.464c7.69-7.7 20.153-7.7 27.853 0v0c7.68 7.659 7.69 20.163 0 27.863l-68.342 68.322c-7.67 7.659-20.142 7.659-27.822-0.062v0c-7.68-7.68-7.68-20.122 0-27.801l68.311-68.322z\" />\n <path d=\"M386.775 97.362c7.7-7.68 20.142-7.68 27.822 0v0c7.7 7.68 7.7 20.183 0.021 27.863l-68.322 68.311c-7.68 7.68-20.163 7.68-27.843-0.020v0c-7.68-7.68-7.68-20.162 0-27.822l68.322-68.332z\" />\n </svg>\n);\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0deg); }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const Spinner = styled(_Spinner)`\n animation: 2s ${rotate} linear infinite;\n width: 50px;\n height: 50px;\n content: '';\n display: inline-block;\n margin-left: -25px;\n\n path {\n fill: ${props => props.color};\n }\n`;\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { Spinner } from './Spinner.svg';\n\nconst LoadingMessage = styled.div<{ color: string }>`\n font-family: helvetica, sans;\n width: 100%;\n text-align: center;\n font-size: 25px;\n margin: 30px 0 20px 0;\n color: ${props => props.color};\n`;\n\nexport interface LoadingProps {\n color: string;\n}\n\nexport class Loading extends React.PureComponent<LoadingProps> {\n render() {\n return (\n <div style={{ textAlign: 'center' }}>\n <LoadingMessage color={this.props.color}>Loading ...</LoadingMessage>\n <Spinner color={this.props.color} />\n </div>\n );\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prop-types\");","import * as React from 'react';\n\nimport { RedocNormalizedOptions } from '../services/RedocNormalizedOptions';\n\nexport const OptionsContext = React.createContext(new RedocNormalizedOptions({}));\nexport const OptionsProvider = OptionsContext.Provider;\nexport const OptionsConsumer = OptionsContext.Consumer;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@redocly/openapi-core/lib/bundle\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@redocly/openapi-core/lib/config/config\");","import type { Source, Document } from '@redocly/openapi-core';\n// eslint-disable-next-line import/no-internal-modules\nimport type { ResolvedConfig } from '@redocly/openapi-core/lib/config';\n\n// eslint-disable-next-line import/no-internal-modules\nimport { bundle } from '@redocly/openapi-core/lib/bundle';\n// eslint-disable-next-line import/no-internal-modules\nimport { Config } from '@redocly/openapi-core/lib/config/config';\n\n/* tslint:disable-next-line:no-implicit-dependencies */\nimport { convertObj } from 'swagger2openapi';\nimport { OpenAPISpec } from '../types';\nimport { IS_BROWSER } from './dom';\n\nexport async function loadAndBundleSpec(specUrlOrObject: object | string): Promise<OpenAPISpec> {\n const config = new Config({} as ResolvedConfig);\n const bundleOpts = {\n config,\n base: IS_BROWSER ? window.location.href : process.cwd(),\n };\n\n if (IS_BROWSER) {\n config.resolve.http.customFetch = global.fetch;\n }\n\n if (typeof specUrlOrObject === 'object' && specUrlOrObject !== null) {\n bundleOpts['doc'] = {\n source: { absoluteRef: '' } as Source,\n parsed: specUrlOrObject,\n } as Document;\n } else {\n bundleOpts['ref'] = specUrlOrObject;\n }\n\n const {\n bundle: { parsed },\n } = await bundle(bundleOpts);\n return parsed.swagger !== undefined ? convertSwagger2OpenAPI(parsed) : parsed;\n}\n\nexport function convertSwagger2OpenAPI(spec: any): Promise<OpenAPISpec> {\n console.warn('[ReDoc Compatibility mode]: Converting OpenAPI 2.0 to OpenAPI 3.0');\n return new Promise<OpenAPISpec>((resolve, reject) =>\n convertObj(spec, { patch: true, warnOnly: true, text: '{}', anchors: true }, (err, res) => {\n // TODO: log any warnings\n if (err) {\n return reject(err);\n }\n resolve(res && (res.openapi as any));\n }),\n );\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"decko\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"eventemitter3\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"json-pointer\");","'use strict';\nimport * as JsonPointerLib from 'json-pointer';\n\nconst origParse = JsonPointerLib.parse;\n/**\n * Wrapper for JsonPointer. Provides common operations\n */\n\nexport class JsonPointer {\n /**\n * returns last JsonPointer token\n * if level > 1 returns levels last (second last/third last)\n * @example\n * // returns subpath\n * JsonPointerHelper.baseName('/path/0/subpath')\n * // returns foo\n * JsonPointerHelper.baseName('/path/foo/subpath', 2)\n */\n static baseName(pointer, level = 1) {\n const tokens = JsonPointer.parse(pointer);\n return tokens[tokens.length - level];\n }\n\n /**\n * returns dirname of pointer\n * if level > 1 returns corresponding dirname in the hierarchy\n * @example\n * // returns /path/0\n * JsonPointerHelper.dirName('/path/0/subpath')\n * // returns /path\n * JsonPointerHelper.dirName('/path/foo/subpath', 2)\n */\n static dirName(pointer, level = 1) {\n const tokens = JsonPointer.parse(pointer);\n return JsonPointerLib.compile(tokens.slice(0, tokens.length - level));\n }\n\n /**\n * returns relative path tokens\n * @example\n * // returns ['subpath']\n * JsonPointerHelper.relative('/path/0', '/path/0/subpath')\n * // returns ['foo', 'subpath']\n * JsonPointerHelper.relative('/path', '/path/foo/subpath')\n */\n static relative(from, to): string[] {\n const fromTokens = JsonPointer.parse(from);\n const toTokens = JsonPointer.parse(to);\n return toTokens.slice(fromTokens.length);\n }\n\n /**\n * overridden JsonPointer original parse to take care of prefixing '#' symbol\n * that is not valid JsonPointer\n */\n static parse(pointer) {\n let ptr = pointer;\n if (ptr.charAt(0) === '#') {\n ptr = ptr.substring(1);\n }\n return origParse(ptr);\n }\n\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param {string} base - The base path\n * @param {string|string[]} tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns {string}\n */\n static join(base, tokens) {\n // TODO: optimize\n const baseTokens = JsonPointer.parse(base);\n const resTokens = baseTokens.concat(tokens);\n return JsonPointerLib.compile(resTokens);\n }\n\n static get(object: object, pointer: string) {\n return JsonPointerLib.get(object, pointer);\n }\n\n static compile(tokens: string[]) {\n return JsonPointerLib.compile(tokens);\n }\n\n static escape(pointer: string) {\n return JsonPointerLib.escape(pointer);\n }\n}\n(JsonPointerLib as any).parse = JsonPointer.parse;\nObject.assign(JsonPointer, JsonPointerLib);\nexport default JsonPointer;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"url-template\");","import { dirname } from 'path';\nimport * as URLtemplate from 'url-template';\n\nimport { ExtendedOpenAPIOperation } from '../services';\nimport { FieldModel } from '../services/models';\nimport { OpenAPIParser } from '../services/OpenAPIParser';\nimport {\n OpenAPIEncoding,\n OpenAPIMediaType,\n OpenAPIParameter,\n OpenAPIParameterStyle,\n OpenAPIRequestBody,\n OpenAPIResponse,\n OpenAPISchema,\n OpenAPIServer,\n Referenced,\n} from '../types';\nimport { IS_BROWSER } from './dom';\nimport { isNumeric, removeQueryStringAndHash, resolveUrl, isArray, isBoolean } from './helpers';\n\nfunction isWildcardStatusCode(statusCode: string | number): statusCode is string {\n return typeof statusCode === 'string' && /\\dxx/i.test(statusCode);\n}\n\nexport function isStatusCode(statusCode: string) {\n return statusCode === 'default' || isNumeric(statusCode) || isWildcardStatusCode(statusCode);\n}\n\nexport function getStatusCodeType(statusCode: string | number, defaultAsError = false): string {\n if (statusCode === 'default') {\n return defaultAsError ? 'error' : 'success';\n }\n\n let code = typeof statusCode === 'string' ? parseInt(statusCode, 10) : statusCode;\n if (isWildcardStatusCode(statusCode)) {\n code *= 100; // parseInt('2xx') parses to 2\n }\n\n if (code < 100 || code > 599) {\n throw new Error('invalid HTTP code');\n }\n let res = 'success';\n if (code >= 300 && code < 400) {\n res = 'redirect';\n } else if (code >= 400) {\n res = 'error';\n } else if (code < 200) {\n res = 'info';\n }\n return res;\n}\n\nconst operationNames = {\n get: true,\n post: true,\n put: true,\n head: true,\n patch: true,\n delete: true,\n options: true,\n $ref: true,\n};\n\nexport function isOperationName(key: string): boolean {\n return key in operationNames;\n}\n\nexport function getOperationSummary(operation: ExtendedOpenAPIOperation): string {\n return (\n operation.summary ||\n operation.operationId ||\n (operation.description && operation.description.substring(0, 50)) ||\n operation.pathName ||\n '<no summary>'\n );\n}\n\nconst schemaKeywordTypes = {\n multipleOf: 'number',\n maximum: 'number',\n exclusiveMaximum: 'number',\n minimum: 'number',\n exclusiveMinimum: 'number',\n\n maxLength: 'string',\n minLength: 'string',\n pattern: 'string',\n contentEncoding: 'string',\n contentMediaType: 'string',\n\n items: 'array',\n maxItems: 'array',\n minItems: 'array',\n uniqueItems: 'array',\n\n maxProperties: 'object',\n minProperties: 'object',\n required: 'object',\n additionalProperties: 'object',\n unevaluatedProperties: 'object',\n properties: 'object',\n patternProperties: 'object',\n};\n\nexport function detectType(schema: OpenAPISchema): string {\n if (schema.type !== undefined && !isArray(schema.type)) {\n return schema.type;\n }\n const keywords = Object.keys(schemaKeywordTypes);\n for (const keyword of keywords) {\n const type = schemaKeywordTypes[keyword];\n if (schema[keyword] !== undefined) {\n return type;\n }\n }\n\n return 'any';\n}\n\nexport function isPrimitiveType(\n schema: OpenAPISchema,\n type: string | string[] | undefined = schema.type,\n) {\n if (schema['x-circular-ref']) {\n return true;\n }\n\n if (schema.oneOf !== undefined || schema.anyOf !== undefined) {\n return false;\n }\n\n if ((schema.if && schema.then) || (schema.if && schema.else)) {\n return false;\n }\n\n let isPrimitive = true;\n const isArrayType = isArray(type);\n\n if (type === 'object' || (isArrayType && type?.includes('object'))) {\n isPrimitive =\n schema.properties !== undefined\n ? Object.keys(schema.properties).length === 0\n : schema.additionalProperties === undefined &&\n schema.unevaluatedProperties === undefined &&\n schema.patternProperties === undefined;\n }\n\n if (isArray(schema.items) || isArray(schema.prefixItems)) {\n return false;\n }\n\n if (\n schema.items !== undefined &&\n !isBoolean(schema.items) &&\n (type === 'array' || (isArrayType && type?.includes('array')))\n ) {\n isPrimitive = isPrimitiveType(schema.items, schema.items.type);\n }\n\n return isPrimitive;\n}\n\nexport function isJsonLike(contentType: string): boolean {\n return contentType.search(/json/i) !== -1;\n}\n\nexport function isFormUrlEncoded(contentType: string): boolean {\n return contentType === 'application/x-www-form-urlencoded';\n}\n\nfunction delimitedEncodeField(fieldVal: any, fieldName: string, delimiter: string): string {\n if (isArray(fieldVal)) {\n return fieldVal.map(v => v.toString()).join(delimiter);\n } else if (typeof fieldVal === 'object') {\n return Object.keys(fieldVal)\n .map(k => `${k}${delimiter}${fieldVal[k]}`)\n .join(delimiter);\n } else {\n return fieldName + '=' + fieldVal.toString();\n }\n}\n\nfunction deepObjectEncodeField(fieldVal: any, fieldName: string): string {\n if (isArray(fieldVal)) {\n console.warn('deepObject style cannot be used with array value:' + fieldVal.toString());\n return '';\n } else if (typeof fieldVal === 'object') {\n return Object.keys(fieldVal)\n .map(k => `${fieldName}[${k}]=${fieldVal[k]}`)\n .join('&');\n } else {\n console.warn('deepObject style cannot be used with non-object value:' + fieldVal.toString());\n return '';\n }\n}\n\nfunction serializeFormValue(name: string, explode: boolean, value: any) {\n // Use RFC6570 safe name ([a-zA-Z0-9_]) and replace with our name later\n // e.g. URI.template doesn't parse names with hyphen (-) which are valid query param names\n const safeName = '__redoc_param_name__';\n const suffix = explode ? '*' : '';\n const template = URLtemplate.parse(`{?${safeName}${suffix}}`);\n return template\n .expand({ [safeName]: value })\n .substring(1)\n .replace(/__redoc_param_name__/g, name);\n}\n\n/*\n * Should be used only for url-form-encoded body payloads\n * To be used for parameters should be extended with other style values\n */\nexport function urlFormEncodePayload(\n payload: object,\n encoding: { [field: string]: OpenAPIEncoding } = {},\n) {\n if (isArray(payload)) {\n throw new Error('Payload must have fields: ' + payload.toString());\n } else {\n return Object.keys(payload)\n .map(fieldName => {\n const fieldVal = payload[fieldName];\n const { style = 'form', explode = true } = encoding[fieldName] || {};\n switch (style) {\n case 'form':\n return serializeFormValue(fieldName, explode, fieldVal);\n case 'spaceDelimited':\n return delimitedEncodeField(fieldVal, fieldName, '%20');\n case 'pipeDelimited':\n return delimitedEncodeField(fieldVal, fieldName, '|');\n case 'deepObject':\n return deepObjectEncodeField(fieldVal, fieldName);\n default:\n // TODO implement rest of styles for path parameters\n console.warn('Incorrect or unsupported encoding style: ' + style);\n return '';\n }\n })\n .join('&');\n }\n}\n\nfunction serializePathParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n const suffix = explode ? '*' : '';\n let prefix = '';\n\n if (style === 'label') {\n prefix = '.';\n } else if (style === 'matrix') {\n prefix = ';';\n }\n\n // Use RFC6570 safe name ([a-zA-Z0-9_]) and replace with our name later\n // e.g. URI.template doesn't parse names with hyphen (-) which are valid query param names\n const safeName = '__redoc_param_name__';\n const template = URLtemplate.parse(`{${prefix}${safeName}${suffix}}`);\n\n return template.expand({ [safeName]: value }).replace(/__redoc_param_name__/g, name);\n}\n\nfunction serializeQueryParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'form':\n return serializeFormValue(name, explode, value);\n case 'spaceDelimited':\n if (!isArray(value)) {\n console.warn('The style spaceDelimited is only applicable to arrays');\n return '';\n }\n if (explode) {\n return serializeFormValue(name, explode, value);\n }\n\n return `${name}=${value.join('%20')}`;\n case 'pipeDelimited':\n if (!isArray(value)) {\n console.warn('The style pipeDelimited is only applicable to arrays');\n return '';\n }\n if (explode) {\n return serializeFormValue(name, explode, value);\n }\n\n return `${name}=${value.join('|')}`;\n case 'deepObject':\n if (!explode || isArray(value) || typeof value !== 'object') {\n console.warn('The style deepObject is only applicable for objects with explode=true');\n return '';\n }\n\n return deepObjectEncodeField(value, name);\n default:\n console.warn('Unexpected style for query: ' + style);\n return '';\n }\n}\n\nfunction serializeHeaderParameter(\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'simple':\n const suffix = explode ? '*' : '';\n\n // name is not important here, so use RFC6570 safe name ([a-zA-Z0-9_])\n const name = '__redoc_param_name__';\n const template = URLtemplate.parse(`{${name}${suffix}}`);\n return decodeURIComponent(template.expand({ [name]: value }));\n default:\n console.warn('Unexpected style for header: ' + style);\n return '';\n }\n}\n\nfunction serializeCookieParameter(\n name: string,\n style: OpenAPIParameterStyle,\n explode: boolean,\n value: any,\n): string {\n switch (style) {\n case 'form':\n return serializeFormValue(name, explode, value);\n default:\n console.warn('Unexpected style for cookie: ' + style);\n return '';\n }\n}\n\nexport function serializeParameterValueWithMime(value: any, mime: string): string {\n if (isJsonLike(mime)) {\n return JSON.stringify(value);\n } else {\n console.warn(`Parameter serialization as ${mime} is not supported`);\n return '';\n }\n}\n\nexport function serializeParameterValue(\n parameter: (OpenAPIParameter & { serializationMime?: string }) | FieldModel,\n value: any,\n): string {\n const { name, style, explode = false, serializationMime } = parameter;\n\n if (serializationMime) {\n switch (parameter.in) {\n case 'path':\n case 'header':\n return serializeParameterValueWithMime(value, serializationMime);\n case 'cookie':\n case 'query':\n return `${name}=${serializeParameterValueWithMime(value, serializationMime)}`;\n default:\n console.warn('Unexpected parameter location: ' + parameter.in);\n return '';\n }\n }\n\n if (!style) {\n console.warn(`Missing style attribute or content for parameter ${name}`);\n return '';\n }\n\n switch (parameter.in) {\n case 'path':\n return serializePathParameter(name, style, explode, value);\n case 'query':\n return serializeQueryParameter(name, style, explode, value);\n case 'header':\n return serializeHeaderParameter(style, explode, value);\n case 'cookie':\n return serializeCookieParameter(name, style, explode, value);\n default:\n console.warn('Unexpected parameter location: ' + parameter.in);\n return '';\n }\n}\n\nexport function getSerializedValue(field: FieldModel, example: any) {\n if (field.in) {\n // decode for better readability in examples: see https://github.com/Redocly/redoc/issues/1138\n return decodeURIComponent(serializeParameterValue(field, example));\n } else {\n return example;\n }\n}\n\nexport function langFromMime(contentType: string): string {\n if (contentType.search(/xml/i) !== -1) {\n return 'xml';\n }\n\n if (contentType.search(/csv/i) !== -1) {\n return 'csv';\n }\n\n if (contentType.search(/plain/i) !== -1) {\n return 'tex';\n }\n\n return 'clike';\n}\n\nconst DEFINITION_NAME_REGEX = /^#\\/components\\/(schemas|pathItems)\\/([^/]+)$/;\n\nexport function isNamedDefinition(pointer?: string): boolean {\n return DEFINITION_NAME_REGEX.test(pointer || '');\n}\n\nexport function getDefinitionName(pointer?: string): string | undefined {\n const [name] = pointer?.match(DEFINITION_NAME_REGEX)?.reverse() || [];\n return name;\n}\n\nfunction humanizeMultipleOfConstraint(multipleOf: number | undefined): string | undefined {\n if (multipleOf === undefined) {\n return;\n }\n const strigifiedMultipleOf = multipleOf.toString(10);\n if (!/^0\\.0*1$/.test(strigifiedMultipleOf)) {\n return `multiple of ${strigifiedMultipleOf}`;\n }\n return `decimal places <= ${strigifiedMultipleOf.split('.')[1].length}`;\n}\n\nfunction humanizeRangeConstraint(\n description: string,\n min: number | undefined,\n max: number | undefined,\n): string | undefined {\n let stringRange;\n if (min !== undefined && max !== undefined) {\n if (min === max) {\n stringRange = `= ${min} ${description}`;\n } else {\n stringRange = `[ ${min} .. ${max} ] ${description}`;\n }\n } else if (max !== undefined) {\n stringRange = `<= ${max} ${description}`;\n } else if (min !== undefined) {\n if (min === 1) {\n stringRange = 'non-empty';\n } else {\n stringRange = `>= ${min} ${description}`;\n }\n }\n\n return stringRange;\n}\n\nexport function humanizeNumberRange(schema: OpenAPISchema): string | undefined {\n const minimum =\n typeof schema.exclusiveMinimum === 'number'\n ? Math.min(schema.exclusiveMinimum, schema.minimum ?? Infinity)\n : schema.minimum;\n const maximum =\n typeof schema.exclusiveMaximum === 'number'\n ? Math.max(schema.exclusiveMaximum, schema.maximum ?? -Infinity)\n : schema.maximum;\n const exclusiveMinimum = typeof schema.exclusiveMinimum === 'number' || schema.exclusiveMinimum;\n const exclusiveMaximum = typeof schema.exclusiveMaximum === 'number' || schema.exclusiveMaximum;\n\n if (minimum !== undefined && maximum !== undefined) {\n return `${exclusiveMinimum ? '( ' : '[ '}${minimum} .. ${maximum}${\n exclusiveMaximum ? ' )' : ' ]'\n }`;\n } else if (maximum !== undefined) {\n return `${exclusiveMaximum ? '< ' : '<= '}${maximum}`;\n } else if (minimum !== undefined) {\n return `${exclusiveMinimum ? '> ' : '>= '}${minimum}`;\n }\n}\n\nexport function humanizeConstraints(schema: OpenAPISchema): string[] {\n const res: string[] = [];\n\n const stringRange = humanizeRangeConstraint('characters', schema.minLength, schema.maxLength);\n if (stringRange !== undefined) {\n res.push(stringRange);\n }\n\n const arrayRange = humanizeRangeConstraint('items', schema.minItems, schema.maxItems);\n if (arrayRange !== undefined) {\n res.push(arrayRange);\n }\n\n const propertiesRange = humanizeRangeConstraint(\n 'properties',\n schema.minProperties,\n schema.maxProperties,\n );\n if (propertiesRange !== undefined) {\n res.push(propertiesRange);\n }\n\n const multipleOfConstraint = humanizeMultipleOfConstraint(schema.multipleOf);\n if (multipleOfConstraint !== undefined) {\n res.push(multipleOfConstraint);\n }\n\n const numberRange = humanizeNumberRange(schema);\n if (numberRange !== undefined) {\n res.push(numberRange);\n }\n\n if (schema.uniqueItems) {\n res.push('unique');\n }\n\n return res;\n}\n\nexport function sortByRequired(fields: FieldModel[], order: string[] = []) {\n const unrequiredFields: FieldModel[] = [];\n const orderedFields: FieldModel[] = [];\n const unorderedFields: FieldModel[] = [];\n\n fields.forEach(field => {\n if (field.required) {\n order.includes(field.name) ? orderedFields.push(field) : unorderedFields.push(field);\n } else {\n unrequiredFields.push(field);\n }\n });\n\n orderedFields.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));\n\n return [...orderedFields, ...unorderedFields, ...unrequiredFields];\n}\n\nexport function sortByField(\n fields: FieldModel[],\n param: keyof Pick<FieldModel, 'name' | 'description' | 'kind'>,\n) {\n return [...fields].sort((a, b) => {\n return a[param].localeCompare(b[param]);\n });\n}\n\nexport function mergeParams(\n parser: OpenAPIParser,\n pathParams: Array<Referenced<OpenAPIParameter>> = [],\n operationParams: Array<Referenced<OpenAPIParameter>> = [],\n): Array<Referenced<OpenAPIParameter>> {\n const operationParamNames = {};\n operationParams.forEach(param => {\n ({ resolved: param } = parser.deref(param));\n operationParamNames[param.name + '_' + param.in] = true;\n });\n\n // filter out path params overridden by operation ones with the same name\n pathParams = pathParams.filter(param => {\n ({ resolved: param } = parser.deref(param));\n return !operationParamNames[param.name + '_' + param.in];\n });\n\n return pathParams.concat(operationParams);\n}\n\nexport function mergeSimilarMediaTypes(\n types: Record<string, OpenAPIMediaType>,\n): Record<string, OpenAPIMediaType> {\n const mergedTypes = {};\n Object.keys(types).forEach(name => {\n const mime = types[name];\n // ignore content type parameters (e.g. charset) and merge\n const normalizedMimeName = name.split(';')[0].trim();\n if (!mergedTypes[normalizedMimeName]) {\n mergedTypes[normalizedMimeName] = mime;\n return;\n }\n mergedTypes[normalizedMimeName] = { ...mergedTypes[normalizedMimeName], ...mime };\n });\n\n return mergedTypes;\n}\n\nexport function expandDefaultServerVariables(url: string, variables: object = {}) {\n return url.replace(\n /(?:{)([\\w-.]+)(?:})/g,\n (match, name) => (variables[name] && variables[name].default) || match,\n );\n}\n\nexport function normalizeServers(\n specUrl: string | undefined,\n servers: OpenAPIServer[],\n): OpenAPIServer[] {\n const getHref = () => {\n if (!IS_BROWSER) {\n return '';\n }\n const href = window.location.href;\n return href.endsWith('.html') ? dirname(href) : href;\n };\n\n const baseUrl = specUrl === undefined ? removeQueryStringAndHash(getHref()) : dirname(specUrl);\n\n if (servers.length === 0) {\n // Behaviour defined in OpenAPI spec: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#openapi-object\n servers = [\n {\n url: '/',\n },\n ];\n }\n\n function normalizeUrl(url: string): string {\n return resolveUrl(baseUrl, url);\n }\n\n return servers.map(server => {\n return {\n ...server,\n url: normalizeUrl(server.url),\n description: server.description || '',\n };\n });\n}\n\nexport const SECURITY_DEFINITIONS_JSX_NAME = 'SecurityDefinitions';\nexport const OLD_SECURITY_DEFINITIONS_JSX_NAME = 'security-definitions';\nexport const SCHEMA_DEFINITION_JSX_NAME = 'SchemaDefinition';\n\nexport let SECURITY_SCHEMES_SECTION_PREFIX = 'section/Authentication/';\nexport function setSecuritySchemePrefix(prefix: string) {\n SECURITY_SCHEMES_SECTION_PREFIX = prefix;\n}\n\nexport const shortenHTTPVerb = verb =>\n ({\n delete: 'del',\n options: 'opts',\n }[verb] || verb);\n\nexport function isRedocExtension(key: string): boolean {\n const redocExtensions = {\n 'x-circular-ref': true,\n 'x-parentRefs': true,\n 'x-refsStack': true,\n 'x-code-samples': true, // deprecated\n 'x-codeSamples': true,\n 'x-displayName': true,\n 'x-examples': true,\n 'x-ignoredHeaderParameters': true,\n 'x-logo': true,\n 'x-nullable': true,\n 'x-servers': true,\n 'x-tagGroups': true,\n 'x-traitTag': true,\n 'x-additionalPropertiesName': true,\n 'x-explicitMappingOnly': true,\n };\n\n return key in redocExtensions;\n}\n\nexport function extractExtensions(\n obj: object,\n showExtensions: string[] | true,\n): Record<string, any> {\n return Object.keys(obj)\n .filter(key => {\n if (showExtensions === true) {\n return key.startsWith('x-') && !isRedocExtension(key);\n }\n return key.startsWith('x-') && showExtensions.indexOf(key) > -1;\n })\n .reduce((acc, key) => {\n acc[key] = obj[key];\n return acc;\n }, {});\n}\n\nexport function pluralizeType(displayType: string): string {\n return displayType\n .split(' or ')\n .map(type => type.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/, '$1s$2'))\n .join(' or ');\n}\n\nexport function getContentWithLegacyExamples(\n info: OpenAPIRequestBody | OpenAPIResponse,\n): { [mime: string]: OpenAPIMediaType } | undefined {\n let mediaContent = info.content;\n const xExamples = info['x-examples']; // converted from OAS2 body param\n const xExample = info['x-example']; // converted from OAS2 body param\n\n if (xExamples) {\n mediaContent = { ...mediaContent };\n for (const mime of Object.keys(xExamples)) {\n const examples = xExamples[mime];\n mediaContent[mime] = {\n ...mediaContent[mime],\n examples,\n };\n }\n } else if (xExample) {\n mediaContent = { ...mediaContent };\n for (const mime of Object.keys(xExample)) {\n const example = xExample[mime];\n mediaContent[mime] = {\n ...mediaContent[mime],\n example,\n };\n }\n }\n\n return mediaContent;\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-bash.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-c.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-clike.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-coffeescript.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-cpp.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-csharp.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-go.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-http.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-java.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-lua.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-markup-templating.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-markup.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-objectivec.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-perl.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-php.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-python.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-q.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-ruby.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-scala.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-sql.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-swift.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-yaml.js\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"prismjs/components/prism-csv.js\");","import * as Prism from 'prismjs';\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-c.js';\nimport 'prismjs/components/prism-clike.js';\nimport 'prismjs/components/prism-coffeescript.js';\nimport 'prismjs/components/prism-cpp.js';\nimport 'prismjs/components/prism-csharp.js';\nimport 'prismjs/components/prism-go.js';\nimport 'prismjs/components/prism-http.js';\nimport 'prismjs/components/prism-java.js';\nimport 'prismjs/components/prism-lua.js';\nimport 'prismjs/components/prism-markup-templating.js'; // dep of php\nimport 'prismjs/components/prism-markup.js'; // xml\nimport 'prismjs/components/prism-objectivec.js';\nimport 'prismjs/components/prism-perl.js';\nimport 'prismjs/components/prism-php.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-q.js';\nimport 'prismjs/components/prism-ruby.js';\nimport 'prismjs/components/prism-scala.js';\nimport 'prismjs/components/prism-sql.js';\nimport 'prismjs/components/prism-swift.js';\nimport 'prismjs/components/prism-yaml.js';\nimport 'prismjs/components/prism-csv.js';\n\nconst DEFAULT_LANG = 'clike';\n\nPrism.languages.insertBefore(\n 'javascript',\n 'string',\n {\n 'property string': {\n pattern: /([{,]\\s*)\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/i,\n lookbehind: true,\n },\n } as any,\n undefined as any,\n);\n\nPrism.languages.insertBefore(\n 'javascript',\n 'punctuation',\n {\n property: {\n pattern: /([{,]\\s*)[a-z]\\w*(?=\\s*:)/i,\n lookbehind: true,\n },\n },\n undefined as any,\n);\n\n/**\n * map language names to Prism.js names\n */\nexport function mapLang(lang: string): string {\n return (\n {\n json: 'js',\n 'c++': 'cpp',\n 'c#': 'csharp',\n 'objective-c': 'objectivec',\n shell: 'bash',\n viml: 'vim',\n }[lang] || DEFAULT_LANG\n );\n}\n\n/**\n * Highlight source code string using Prism.js\n * @param source source code to highlight\n * @param lang highlight language\n * @return highlighted source code as **html string**\n */\nexport function highlight(source: string | number | boolean, lang: string = DEFAULT_LANG): string {\n lang = lang.toLowerCase();\n let grammar = Prism.languages[lang];\n if (!grammar) {\n grammar = Prism.languages[mapLang(lang)];\n }\n return Prism.highlight(source.toString(), grammar, lang);\n}\n","function throttle(func, wait) {\n let context;\n let args;\n let result;\n let timeout: any = null;\n let previous = 0;\n const later = () => {\n previous = new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n return function () {\n const now = new Date().getTime();\n const remaining = wait - (now - previous);\n context = this;\n // eslint-disable-next-line prefer-rest-params\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n\nexport function Throttle(delay: number) {\n return (_, _2, desc: PropertyDescriptor) => {\n desc.value = throttle(desc.value, delay);\n };\n}\n","export function debugTime(label: string) {\n if (process.env.NODE_ENV !== 'production') {\n console.time(label);\n }\n}\n\nexport function debugTimeEnd(label: string) {\n if (process.env.NODE_ENV !== 'production') {\n console.timeEnd(label);\n }\n}\n","// source: https://github.com/andreypopp/memoize-decorator\nconst SENTINEL = {};\n\nexport function memoize<T>(target: any, name: string, descriptor: TypedPropertyDescriptor<T>) {\n if (typeof descriptor.value === 'function') {\n return _memoizeMethod(target, name, descriptor) as any as TypedPropertyDescriptor<T>;\n } else if (typeof descriptor.get === 'function') {\n return _memoizeGetter(target, name, descriptor) as TypedPropertyDescriptor<T>;\n } else {\n throw new Error(\n '@memoize decorator can be applied to methods or getters, got ' +\n String(descriptor.value) +\n ' instead',\n );\n }\n}\n\nfunction _memoizeGetter(target: any, name: string, descriptor: PropertyDescriptor) {\n const memoizedName = `_memoized_${name}`;\n const get = descriptor.get!;\n target[memoizedName] = SENTINEL;\n return {\n ...descriptor,\n get() {\n if (this[memoizedName] === SENTINEL) {\n this[memoizedName] = get.call(this);\n }\n return this[memoizedName];\n },\n };\n}\n\nfunction _memoizeMethod<T>(target: any, name: string, descriptor: TypedPropertyDescriptor<T>) {\n if (!descriptor.value || (descriptor.value as any).length > 0) {\n throw new Error('@memoize decorator can only be applied to methods of zero arguments');\n }\n const memoizedName = `_memoized_${name}`;\n const value = descriptor.value;\n target[memoizedName] = SENTINEL;\n return {\n ...descriptor,\n value() {\n if (this[memoizedName] === SENTINEL) {\n this[memoizedName] = (value as any).call(this);\n }\n return this[memoizedName] as any;\n },\n };\n}\n","/**\n * Function that returns a comparator for sorting objects by some specific key alphabetically.\n *\n * @param {String} property key of the object to sort, if starts from `-` - reverse\n */\nexport function alphabeticallyByProp<T>(property: string): (a: T, b: T) => number {\n let sortOrder = 1;\n\n if (property[0] === '-') {\n sortOrder = -1;\n property = property.substr(1);\n }\n\n return (a: T, b: T) => {\n if (sortOrder == -1) {\n return b[property].localeCompare(a[property]);\n } else {\n return a[property].localeCompare(b[property]);\n }\n };\n}\n","import { bind, debounce } from 'decko';\nimport { EventEmitter } from 'eventemitter3';\nimport { IS_BROWSER } from '../utils/';\n\nconst EVENT = 'hashchange';\n\nexport class HistoryService {\n private _emiter;\n\n constructor() {\n this._emiter = new EventEmitter();\n this.bind();\n }\n\n get currentId(): string {\n return IS_BROWSER ? decodeURIComponent(window.location.hash.substring(1)) : '';\n }\n\n linkForId(id: string) {\n if (!id) {\n return '';\n }\n return '#' + id;\n }\n\n subscribe(cb): () => void {\n const emmiter = this._emiter.addListener(EVENT, cb);\n return () => emmiter.removeListener(EVENT, cb);\n }\n\n emit = () => {\n this._emiter.emit(EVENT, this.currentId);\n };\n\n bind() {\n if (IS_BROWSER) {\n window.addEventListener('hashchange', this.emit, false);\n }\n }\n\n dispose() {\n if (IS_BROWSER) {\n window.removeEventListener('hashchange', this.emit);\n }\n }\n\n @bind\n @debounce\n replace(id: string | null, rewriteHistory: boolean = false) {\n if (!IS_BROWSER) {\n return;\n }\n\n if (id == null || id === this.currentId) {\n return;\n }\n if (rewriteHistory) {\n window.history.replaceState(\n null,\n '',\n window.location.href.split('#')[0] + this.linkForId(id),\n );\n\n return;\n }\n window.history.pushState(null, '', window.location.href.split('#')[0] + this.linkForId(id));\n this.emit();\n }\n}\n\nexport const history = new HistoryService();\n\nif (module.hot) {\n module.hot.dispose(() => {\n history.dispose();\n });\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mark.js\");","import * as Mark from 'mark.js';\n\nexport class MarkerService {\n map: Map<Element, Mark> = new Map();\n\n private prevTerm: string = '';\n\n add(el: HTMLElement) {\n this.map.set(el, new Mark(el));\n }\n\n delete(el: Element) {\n this.map.delete(el);\n }\n\n addOnly(elements: Element[]) {\n this.map.forEach((inst, elem) => {\n if (elements.indexOf(elem) === -1) {\n inst.unmark();\n this.map.delete(elem);\n }\n });\n\n for (const el of elements) {\n if (!this.map.has(el)) {\n this.map.set(el, new Mark(el as HTMLElement));\n }\n }\n }\n\n clearAll() {\n this.unmark();\n this.map.clear();\n }\n\n mark(term?: string) {\n if (!term && !this.prevTerm) {\n return;\n }\n this.map.forEach(val => {\n val.unmark();\n val.mark(term || this.prevTerm);\n });\n this.prevTerm = term || this.prevTerm;\n }\n\n unmark() {\n this.map.forEach(val => val.unmark());\n this.prevTerm = '';\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n/**\n * @param {string} html\n */\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\n\n/**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n/**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n/**\n * @param {string} base\n * @param {string} href\n */\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\n/**\n * @param {string} pattern\n * @param {number} count\n */\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, nextLine, rawLine, itemContents, endEarly;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n\n // Check if current bullet point can start a new List Item\n while (src) {\n endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n\n // Check if following lines should be included in List Item\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(line)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) { // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) { // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else { // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) { // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.every(t => {\n const chars = t.raw.split('');\n let lineBreaks = 0;\n for (const char of chars) {\n if (char === '\\n') {\n lineBreaks += 1;\n }\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inlineTokens(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n const token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link || !link.href) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = src.slice(1, lLength + match.index + rLength);\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?<?([^\\s>]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n});\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^([\\spunctuation])/\n};\n\n// list of punctuation marks from CommonMark spec\n// without * and _ to handle the different emphasis markers * and _\ninline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\ninline.escapedEmSt = /\\\\\\*|\\\\_/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\n\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n});\n\n/**\n * smartypants text replacement\n * @param {string} text\n */\nfunction smartypants(text) {\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n}\n\n/**\n * mangle email addresses\n * @param {string} text\n */\nfunction mangle(text) {\n let out = '',\n i,\n ch;\n\n const l = text.length;\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens) {\n this.inlineQueue.push({ src, tokens });\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n\n /**\n * @param {string} quote\n */\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n\n html(html) {\n return html;\n }\n\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n const id = this.options.headerPrefix + slugger.slug(raw);\n return `<h${level} id=\"${id}\">${text}</h${level}>\\n`;\n }\n\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n\n hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n\n /**\n * @param {string} text\n */\n listitem(text) {\n return `<li>${text}</li>\\n`;\n }\n\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"'\n + (this.options.xhtml ? ' /' : '')\n + '> ';\n }\n\n /**\n * @param {string} text\n */\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n\n /**\n * @param {string} header\n * @param {string} body\n */\n table(header, body) {\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n\n /**\n * @param {string} content\n */\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n\n /**\n * span level renderer\n * @param {string} text\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n\n /**\n * @param {string} text\n */\n em(text) {\n return `<em>${text}</em>`;\n }\n\n /**\n * @param {string} text\n */\n codespan(text) {\n return `<code>${text}</code>`;\n }\n\n br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n }\n\n /**\n * @param {string} text\n */\n del(text) {\n return `<del>${text}</del>`;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '<a href=\"' + escape(href) + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n /**\n * @param {string} value\n */\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n const tokens = Lexer.lex(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parse(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n const opts = merge({}, ...args);\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n let hasExtensions;\n\n args.forEach((pack) => {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n pack.walkTokens.call(this, token);\n if (walkTokens) {\n walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n for (const token of tokens) {\n callback.call(marked, token);\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n marked.walkTokens(cell.tokens, callback);\n }\n for (const row of token.rows) {\n for (const cell of row) {\n marked.walkTokens(cell.tokens, callback);\n }\n }\n break;\n }\n case 'list': {\n marked.walkTokens(token.items, callback);\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n};\n\n/**\n * Parse Inline\n * @param {string} src\n */\nmarked.parseInline = function(src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n const tokens = Lexer.lexInline(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n};\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","import { marked } from 'marked';\n\nimport { highlight, safeSlugify, unescapeHTMLChars } from '../utils';\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { MarkdownHeading, MDXComponentMeta } from './types';\n\nconst renderer = new marked.Renderer();\n\nmarked.setOptions({\n renderer,\n highlight: (str, lang) => {\n return highlight(str, lang);\n },\n});\n\nexport const LEGACY_REGEXP = '^ {0,3}<!-- ReDoc-Inject:\\\\s+?<({component}).*?/?>\\\\s+?-->\\\\s*$';\n\n// prettier-ignore\nexport const MDX_COMPONENT_REGEXP = '(?:^ {0,3}<({component})([\\\\s\\\\S]*?)>([\\\\s\\\\S]*?)</\\\\2>' // with children\n + '|^ {0,3}<({component})([\\\\s\\\\S]*?)(?:/>|\\\\n{2,}))'; // self-closing\n\nexport const COMPONENT_REGEXP = '(?:' + LEGACY_REGEXP + '|' + MDX_COMPONENT_REGEXP + ')';\n\nexport function buildComponentComment(name: string) {\n return `<!-- ReDoc-Inject: <${name}> -->`;\n}\n\nexport class MarkdownRenderer {\n static containsComponent(rawText: string, componentName: string) {\n const compRegexp = new RegExp(COMPONENT_REGEXP.replace(/{component}/g, componentName), 'gmi');\n return compRegexp.test(rawText);\n }\n\n static getTextBeforeHading(md: string, heading: string): string {\n const headingLinePos = md.search(new RegExp(`^##?\\\\s+${heading}`, 'm'));\n if (headingLinePos > -1) {\n return md.substring(0, headingLinePos);\n }\n return md;\n }\n\n headings: MarkdownHeading[] = [];\n currentTopHeading: MarkdownHeading;\n\n public parser: marked.Parser; // required initialization, `parser` is used by `marked.Renderer` instance under the hood\n private headingEnhanceRenderer: marked.Renderer;\n private originalHeadingRule: typeof marked.Renderer.prototype.heading;\n\n constructor(public options?: RedocNormalizedOptions, public parentId?: string) {\n this.parentId = parentId;\n this.parser = new marked.Parser();\n this.headingEnhanceRenderer = new marked.Renderer();\n this.originalHeadingRule = this.headingEnhanceRenderer.heading.bind(\n this.headingEnhanceRenderer,\n );\n this.headingEnhanceRenderer.heading = this.headingRule;\n }\n\n saveHeading(\n name: string,\n level: number,\n container: MarkdownHeading[] = this.headings,\n parentId?: string,\n ): MarkdownHeading {\n name = unescapeHTMLChars(name);\n const item: MarkdownHeading = {\n id: parentId\n ? `${parentId}/${safeSlugify(name)}`\n : `${this.parentId || 'section'}/${safeSlugify(name)}`,\n name,\n level,\n items: [],\n };\n container.push(item);\n return item;\n }\n\n flattenHeadings(container?: MarkdownHeading[]): MarkdownHeading[] {\n if (container === undefined) {\n return [];\n }\n const res: MarkdownHeading[] = [];\n for (const heading of container) {\n res.push(heading);\n res.push(...this.flattenHeadings(heading.items));\n }\n return res;\n }\n\n attachHeadingsDescriptions(rawText: string) {\n const buildRegexp = (heading: MarkdownHeading) => {\n return new RegExp(\n `##?\\\\s+${heading.name.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')}\\s*(\\n|\\r\\n|$|\\s*)`,\n );\n };\n\n const flatHeadings = this.flattenHeadings(this.headings);\n if (flatHeadings.length < 1) {\n return;\n }\n let prevHeading = flatHeadings[0];\n let prevRegexp = buildRegexp(prevHeading);\n let prevPos = rawText.search(prevRegexp);\n for (let i = 1; i < flatHeadings.length; i++) {\n const heading = flatHeadings[i];\n const regexp = buildRegexp(heading);\n const currentPos = rawText.substr(prevPos + 1).search(regexp) + prevPos + 1;\n prevHeading.description = rawText\n .substring(prevPos, currentPos)\n .replace(prevRegexp, '')\n .trim();\n\n prevHeading = heading;\n prevRegexp = regexp;\n prevPos = currentPos;\n }\n prevHeading.description = rawText.substring(prevPos).replace(prevRegexp, '').trim();\n }\n\n headingRule = (\n text: string,\n level: 1 | 2 | 3 | 4 | 5 | 6,\n raw: string,\n slugger: marked.Slugger,\n ): string => {\n if (level === 1) {\n this.currentTopHeading = this.saveHeading(text, level);\n } else if (level === 2) {\n this.saveHeading(\n text,\n level,\n this.currentTopHeading && this.currentTopHeading.items,\n this.currentTopHeading && this.currentTopHeading.id,\n );\n }\n return this.originalHeadingRule(text, level, raw, slugger);\n };\n\n renderMd(rawText: string, extractHeadings: boolean = false): string {\n const opts = extractHeadings ? { renderer: this.headingEnhanceRenderer } : undefined;\n\n const res = marked(rawText.toString(), opts);\n\n return res;\n }\n\n extractHeadings(rawText: string): MarkdownHeading[] {\n this.renderMd(rawText, true);\n this.attachHeadingsDescriptions(rawText);\n const res = this.headings;\n this.headings = [];\n return res;\n }\n\n // regexp-based 👎: remark is slow and too big so for now using marked + regexps soup\n renderMdWithComponents(rawText: string): Array<string | MDXComponentMeta> {\n const components = this.options && this.options.allowedMdComponents;\n if (!components || Object.keys(components).length === 0) {\n return [this.renderMd(rawText)];\n }\n\n const names = Object.keys(components).join('|');\n const componentsRegexp = new RegExp(COMPONENT_REGEXP.replace(/{component}/g, names), 'mig');\n\n const htmlParts: string[] = [];\n const componentDefs: MDXComponentMeta[] = [];\n\n let match = componentsRegexp.exec(rawText);\n let lasxtIdx = 0;\n while (match) {\n htmlParts.push(rawText.substring(lasxtIdx, match.index));\n lasxtIdx = componentsRegexp.lastIndex;\n const compName = match[1] || match[2] || match[5];\n const componentMeta = components[compName];\n\n const props = match[3] || match[6];\n const children = match[4];\n\n if (componentMeta) {\n componentDefs.push({\n component: componentMeta.component,\n propsSelector: componentMeta.propsSelector,\n props: { ...parseProps(props), ...componentMeta.props, children },\n });\n }\n match = componentsRegexp.exec(rawText);\n }\n htmlParts.push(rawText.substring(lasxtIdx));\n\n const res: any[] = [];\n for (let i = 0; i < htmlParts.length; i++) {\n const htmlPart = htmlParts[i];\n if (htmlPart) {\n res.push(this.renderMd(htmlPart));\n }\n if (componentDefs[i]) {\n res.push(componentDefs[i]);\n }\n }\n return res;\n }\n}\n\nfunction parseProps(props: string): object {\n if (!props) {\n return {};\n }\n\n const regex = /([\\w-]+)\\s*=\\s*(?:{([^}]+?)}|\"([^\"]+?)\")/gim;\n const parsed = {};\n let match;\n // tslint:disable-next-line\n while ((match = regex.exec(props)) !== null) {\n if (match[3]) {\n // string prop match (in double quotes)\n parsed[match[1]] = match[3];\n } else if (match[2]) {\n // jsx prop match (in curly braces)\n let val;\n try {\n val = JSON.parse(match[2]);\n } catch (e) {\n /* noop */\n }\n parsed[match[1]] = val;\n }\n }\n\n return parsed;\n}\n","import type { OpenAPIContact, OpenAPIInfo, OpenAPILicense } from '../../types';\nimport { IS_BROWSER } from '../../utils/';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nexport class ApiInfoModel implements OpenAPIInfo {\n title: string;\n version: string;\n\n description: string;\n summary: string;\n termsOfService?: string;\n contact?: OpenAPIContact;\n license?: OpenAPILicense;\n\n downloadLink?: string;\n downloadFileName?: string;\n\n constructor(\n private parser: OpenAPIParser,\n private options: RedocNormalizedOptions = new RedocNormalizedOptions({}),\n ) {\n Object.assign(this, parser.spec.info);\n this.description = parser.spec.info.description || '';\n this.summary = parser.spec.info.summary || '';\n\n const firstHeadingLinePos = this.description.search(/^\\s*##?\\s+/m);\n if (firstHeadingLinePos > -1) {\n this.description = this.description.substring(0, firstHeadingLinePos);\n }\n\n this.downloadLink = this.getDownloadLink();\n this.downloadFileName = this.getDownloadFileName();\n }\n\n private getDownloadLink(): string | undefined {\n if (this.options.downloadDefinitionUrl) {\n return this.options.downloadDefinitionUrl;\n }\n\n if (this.parser.specUrl) {\n return this.parser.specUrl;\n }\n\n if (IS_BROWSER && window.Blob && window.URL && window.URL.createObjectURL) {\n const blob = new Blob([JSON.stringify(this.parser.spec, null, 2)], {\n type: 'application/json',\n });\n return window.URL.createObjectURL(blob);\n }\n }\n\n private getDownloadFileName(): string | undefined {\n if (!this.parser.specUrl && !this.options.downloadDefinitionUrl) {\n return this.options.downloadFileName || 'openapi.json';\n }\n return this.options.downloadFileName;\n }\n}\n","import type { OpenAPISecurityRequirement, OpenAPISecurityScheme } from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nexport interface SecurityScheme extends OpenAPISecurityScheme {\n id: string;\n sectionId: string;\n displayName: string;\n scopes: string[];\n}\n\nexport class SecurityRequirementModel {\n schemes: SecurityScheme[];\n\n constructor(requirement: OpenAPISecurityRequirement, parser: OpenAPIParser) {\n const schemes = (parser.spec.components && parser.spec.components.securitySchemes) || {};\n\n this.schemes = Object.keys(requirement || {})\n .map(id => {\n const { resolved: scheme } = parser.deref(schemes[id]);\n const scopes = requirement[id] || [];\n\n if (!scheme) {\n console.warn(`Non existing security scheme referenced: ${id}. Skipping`);\n return undefined;\n }\n const displayName = scheme['x-displayName'] || id;\n\n return {\n ...scheme,\n id,\n sectionId: id,\n displayName,\n scopes,\n };\n })\n .filter(scheme => scheme !== undefined) as SecurityScheme[];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport { isOperationName, JsonPointer } from '../../utils';\nimport { OperationModel } from './Operation';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { OpenAPICallback, Referenced } from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nexport class CallbackModel {\n @observable\n expanded: boolean = false;\n\n name: string;\n operations: OperationModel[] = [];\n\n constructor(\n parser: OpenAPIParser,\n name: string,\n infoOrRef: Referenced<OpenAPICallback>,\n pointer: string,\n options: RedocNormalizedOptions,\n ) {\n makeObservable(this);\n\n this.name = name;\n const { resolved: paths } = parser.deref<OpenAPICallback>(infoOrRef);\n\n for (const pathName of Object.keys(paths)) {\n const path = paths[pathName];\n const operations = Object.keys(path).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = path[operationName];\n\n const operation = new OperationModel(\n parser,\n {\n ...operationInfo,\n pathName,\n pointer: JsonPointer.compile([pointer, name, pathName, operationName]),\n httpVerb: operationName,\n pathParameters: path.parameters || [],\n pathServers: path.servers,\n },\n undefined,\n options,\n true,\n );\n\n this.operations.push(operation);\n }\n }\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n}\n","import type { OpenAPIRef, OpenAPISchema, OpenAPISpec } from '../types';\nimport { IS_BROWSER, getDefinitionName } from '../utils/';\nimport { JsonPointer } from '../utils/JsonPointer';\n\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { MergedOpenAPISchema } from './types';\n\nconst MAX_DEREF_DEPTH = 999; // prevent circular detection crashes by adding hard limit on deref depth\n\n/**\n * Loads and keeps spec. Provides raw spec operations\n */\n\nexport function pushRef(stack: string[], ref?: string): string[] {\n return ref && stack[stack.length - 1] !== ref ? [...stack, ref] : stack;\n}\n\nexport function concatRefStacks(base: string[], stack?: string[]): string[] {\n return stack ? base.concat(stack) : base;\n}\n\nexport class OpenAPIParser {\n specUrl?: string;\n spec: OpenAPISpec;\n\n private readonly allowMergeRefs: boolean = false;\n\n constructor(\n spec: OpenAPISpec,\n specUrl?: string,\n private options: RedocNormalizedOptions = new RedocNormalizedOptions({}),\n ) {\n this.validate(spec);\n\n this.spec = spec;\n this.allowMergeRefs = spec.openapi.startsWith('3.1');\n\n const href = IS_BROWSER ? window.location.href : '';\n if (typeof specUrl === 'string') {\n this.specUrl = href ? new URL(specUrl, href).href : specUrl;\n }\n }\n\n validate(spec: GenericObject): void {\n if (spec.openapi === undefined) {\n throw new Error('Document must be valid OpenAPI 3.0.0 definition');\n }\n }\n\n /**\n * get spec part by JsonPointer ($ref)\n */\n byRef = <T extends any = any>(ref: string): T | undefined => {\n let res;\n if (!this.spec) {\n return;\n }\n if (ref.charAt(0) !== '#') {\n ref = '#' + ref;\n }\n ref = decodeURIComponent(ref);\n try {\n res = JsonPointer.get(this.spec, ref);\n } catch (e) {\n // do nothing\n }\n return res || {};\n };\n\n /**\n * checks if the object is OpenAPI reference (contains $ref property)\n */\n isRef<T extends unknown>(obj: OpenAPIRef | T): obj is OpenAPIRef {\n if (!obj) {\n return false;\n }\n obj = <OpenAPIRef>obj;\n return obj.$ref !== undefined && obj.$ref !== null;\n }\n\n /**\n * Resolve given reference object or return as is if it is not a reference\n * @param obj object to dereference\n * @param forceCircular whether to dereference even if it is circular ref\n * @param mergeAsAllOf\n */\n deref<T extends unknown>(\n obj: OpenAPIRef | T,\n baseRefsStack: string[] = [],\n mergeAsAllOf = false,\n ): { resolved: T; refsStack: string[] } {\n // this can be set by all of when it mergers props from different sources\n const objRefsStack = obj?.['x-refsStack'];\n baseRefsStack = concatRefStacks(baseRefsStack, objRefsStack);\n\n if (this.isRef(obj)) {\n const schemaName = getDefinitionName(obj.$ref);\n if (schemaName && this.options.ignoreNamedSchemas.has(schemaName)) {\n return { resolved: { type: 'object', title: schemaName } as T, refsStack: baseRefsStack };\n }\n\n let resolved = this.byRef<T>(obj.$ref);\n if (!resolved) {\n throw new Error(`Failed to resolve $ref \"${obj.$ref}\"`);\n }\n\n let refsStack = baseRefsStack;\n if (baseRefsStack.includes(obj.$ref) || baseRefsStack.length > MAX_DEREF_DEPTH) {\n resolved = Object.assign({}, resolved, { 'x-circular-ref': true });\n } else if (this.isRef(resolved)) {\n const res = this.deref(resolved, baseRefsStack, mergeAsAllOf);\n refsStack = res.refsStack;\n resolved = res.resolved;\n }\n\n refsStack = pushRef(baseRefsStack, obj.$ref);\n resolved = this.allowMergeRefs ? this.mergeRefs(obj, resolved, mergeAsAllOf) : resolved;\n\n return { resolved, refsStack };\n }\n return {\n resolved: obj,\n refsStack: concatRefStacks(baseRefsStack, objRefsStack),\n };\n }\n\n mergeRefs<T extends unknown>(ref: OpenAPIRef, resolved: T, mergeAsAllOf: boolean): T {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { $ref, ...rest } = ref;\n const keys = Object.keys(rest);\n if (keys.length === 0) {\n return resolved;\n }\n if (\n mergeAsAllOf &&\n keys.some(\n k =>\n ![\n 'description',\n 'title',\n 'externalDocs',\n 'x-refsStack',\n 'x-parentRefs',\n 'readOnly',\n 'writeOnly',\n ].includes(k),\n )\n ) {\n const { description, title, readOnly, writeOnly, ...restSchema } = rest as OpenAPISchema;\n return {\n allOf: [{ description, title, readOnly, writeOnly }, resolved, restSchema],\n } as T;\n } else {\n // small optimization\n return {\n ...(resolved as GenericObject),\n ...rest,\n } as T;\n }\n }\n\n /**\n * Merge allOf constraints.\n * @param schema schema with allOF\n * @param $ref pointer of the schema\n * @param forceCircular whether to dereference children even if it is a circular ref\n * @param used$Refs\n */\n mergeAllOf(\n schema: MergedOpenAPISchema,\n $ref: string | undefined,\n refsStack: string[],\n ): MergedOpenAPISchema {\n if (schema['x-circular-ref']) {\n return schema;\n }\n\n schema = this.hoistOneOfs(schema, refsStack);\n\n if (schema.allOf === undefined) {\n return schema;\n }\n\n let receiver: MergedOpenAPISchema = {\n ...schema,\n 'x-parentRefs': [],\n allOf: undefined,\n title: schema.title || getDefinitionName($ref),\n };\n\n // avoid mutating inner objects\n if (receiver.properties !== undefined && typeof receiver.properties === 'object') {\n receiver.properties = { ...receiver.properties };\n }\n if (receiver.items !== undefined && typeof receiver.items === 'object') {\n receiver.items = { ...receiver.items };\n }\n\n const allOfSchemas = uniqByPropIncludeMissing(\n schema.allOf\n .map((subSchema: OpenAPISchema) => {\n const { resolved, refsStack: subRefsStack } = this.deref(subSchema, refsStack, true);\n\n const subRef = subSchema.$ref || undefined;\n const subMerged = this.mergeAllOf(resolved, subRef, subRefsStack);\n if (subMerged['x-circular-ref'] && subMerged.allOf) {\n // if mergeAllOf is circular and still contains allOf, we should ignore it\n return undefined;\n }\n if (subRef) {\n // collect information for implicit descriminator lookup\n receiver['x-parentRefs']?.push(...(subMerged['x-parentRefs'] || []), subRef);\n }\n return {\n $ref: subRef,\n refsStack: pushRef(subRefsStack, subRef),\n schema: subMerged,\n };\n })\n .filter(child => child !== undefined) as Array<{\n schema: MergedOpenAPISchema;\n refsStack: string[];\n $ref?: string;\n }>,\n '$ref',\n );\n\n for (const { schema: subSchema, refsStack: subRefsStack } of allOfSchemas) {\n const {\n type,\n enum: enumProperty,\n properties,\n items,\n required,\n title,\n description,\n readOnly,\n writeOnly,\n oneOf,\n anyOf,\n 'x-circular-ref': isCircular,\n ...otherConstraints\n } = subSchema;\n\n if (receiver.type !== type && receiver.type !== undefined && type !== undefined) {\n console.warn(`Incompatible types in allOf at \"${$ref}\": \"${receiver.type}\" and \"${type}\"`);\n }\n\n if (type !== undefined) {\n if (Array.isArray(type) && Array.isArray(receiver.type)) {\n receiver.type = [...type, ...receiver.type];\n } else {\n receiver.type = type;\n }\n }\n\n if (enumProperty !== undefined) {\n if (Array.isArray(enumProperty) && Array.isArray(receiver.enum)) {\n receiver.enum = Array.from(new Set([...enumProperty, ...receiver.enum]));\n } else {\n receiver.enum = enumProperty;\n }\n }\n\n if (properties !== undefined && typeof properties === 'object') {\n receiver.properties = receiver.properties || {};\n for (const prop in properties) {\n const propRefsStack = concatRefStacks(subRefsStack, properties[prop]?.['x-refsStack']);\n if (!receiver.properties[prop]) {\n receiver.properties[prop] = {\n ...properties[prop],\n 'x-refsStack': propRefsStack,\n } as MergedOpenAPISchema;\n } else if (!isCircular) {\n // merge inner properties\n const mergedProp = this.mergeAllOf(\n {\n allOf: [\n receiver.properties[prop],\n { ...properties[prop], 'x-refsStack': propRefsStack } as any,\n ],\n 'x-refsStack': propRefsStack,\n },\n $ref + '/properties/' + prop,\n propRefsStack,\n );\n receiver.properties[prop] = mergedProp;\n }\n }\n }\n\n if (items !== undefined && !isCircular) {\n const receiverItems =\n typeof receiver.items === 'boolean'\n ? {}\n : (Object.assign({}, receiver.items) as OpenAPISchema);\n const subSchemaItems =\n typeof subSchema.items === 'boolean'\n ? {}\n : (Object.assign({}, subSchema.items) as OpenAPISchema);\n // merge inner properties\n receiver.items = this.mergeAllOf(\n {\n allOf: [receiverItems, subSchemaItems],\n },\n $ref + '/items',\n subRefsStack,\n );\n }\n if (oneOf !== undefined) {\n receiver.oneOf = oneOf;\n }\n\n if (anyOf !== undefined) {\n receiver.anyOf = anyOf;\n }\n\n if (required !== undefined) {\n receiver.required = [...(receiver.required || []), ...required];\n }\n\n // merge rest of constraints\n // TODO: do more intelligent merge\n receiver = {\n ...receiver,\n title: receiver.title || title,\n description: receiver.description || description,\n readOnly: receiver.readOnly !== undefined ? receiver.readOnly : readOnly,\n writeOnly: receiver.writeOnly !== undefined ? receiver.writeOnly : writeOnly,\n 'x-circular-ref': receiver['x-circular-ref'] || isCircular,\n ...otherConstraints,\n };\n }\n\n return receiver;\n }\n\n /**\n * Find all derived definitions among #/components/schemas from any of $refs\n * returns map of definition pointer to definition name\n * @param $refs array of references to find derived from\n */\n findDerived($refs: string[]): Record<string, string[] | string> {\n const res: Record<string, string[]> = {};\n const schemas = (this.spec.components && this.spec.components.schemas) || {};\n for (const defName in schemas) {\n const { resolved: def } = this.deref(schemas[defName]);\n if (\n def.allOf !== undefined &&\n def.allOf.find(\n (obj: OpenAPISchema) => obj.$ref !== undefined && $refs.indexOf(obj.$ref) > -1,\n )\n ) {\n res['#/components/schemas/' + defName] = [def['x-discriminator-value'] || defName];\n }\n }\n return res;\n }\n\n private hoistOneOfs(schema: OpenAPISchema, refsStack: string[]) {\n if (schema.allOf === undefined) {\n return schema;\n }\n\n const allOf = schema.allOf;\n for (let i = 0; i < allOf.length; i++) {\n const sub = allOf[i];\n if (Array.isArray(sub.oneOf)) {\n const beforeAllOf = allOf.slice(0, i);\n const afterAllOf = allOf.slice(i + 1);\n return {\n oneOf: sub.oneOf.map((part: OpenAPISchema) => {\n return {\n allOf: [...beforeAllOf, part, ...afterAllOf],\n 'x-refsStack': refsStack,\n };\n }),\n };\n }\n }\n\n return schema;\n }\n}\n\n/**\n * Unique array by property, missing properties are included\n */\nfunction uniqByPropIncludeMissing<T extends object>(arr: T[], prop: keyof T): T[] {\n const seen = new Set();\n return arr.filter(item => {\n const k = item[prop];\n if (!k) return true;\n return k && !seen.has(k) && seen.add(k);\n });\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIExternalDocumentation, OpenAPISchema, Referenced } from '../../types';\n\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { pushRef } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { FieldModel } from './Field';\n\nimport { MergedOpenAPISchema } from '../types';\nimport {\n detectType,\n extractExtensions,\n humanizeConstraints,\n isArray,\n isBoolean,\n isNamedDefinition,\n isObject,\n isPrimitiveType,\n JsonPointer,\n pluralizeType,\n sortByField,\n sortByRequired,\n} from '../../utils/';\n\nimport { l } from '../Labels';\n\n// TODO: refactor this model, maybe use getters instead of copying all the values\nexport class SchemaModel {\n pointer: string;\n\n type: string | string[];\n displayType: string;\n typePrefix: string = '';\n title: string;\n description: string;\n externalDocs?: OpenAPIExternalDocumentation;\n\n isPrimitive: boolean;\n isCircular: boolean = false;\n\n format?: string;\n displayFormat?: string;\n nullable: boolean;\n deprecated: boolean;\n pattern?: string;\n example?: any;\n examples?: any[];\n enum: any[];\n default?: any;\n readOnly: boolean;\n writeOnly: boolean;\n\n constraints: string[];\n\n fields?: FieldModel[];\n items?: SchemaModel;\n\n oneOf?: SchemaModel[];\n oneOfType: string;\n discriminatorProp: string;\n @observable\n activeOneOf: number = 0;\n\n rawSchema: OpenAPISchema;\n schema: MergedOpenAPISchema;\n extensions?: Record<string, any>;\n const: any;\n contentEncoding?: string;\n contentMediaType?: string;\n minItems?: number;\n maxItems?: number;\n\n /**\n * @param isChild if schema discriminator Child\n * When true forces dereferencing in allOfs even if circular\n */\n constructor(\n parser: OpenAPIParser,\n schemaOrRef: Referenced<OpenAPISchema>,\n pointer: string,\n private options: RedocNormalizedOptions,\n isChild: boolean = false,\n private refsStack: string[] = [],\n ) {\n makeObservable(this);\n\n this.pointer = schemaOrRef.$ref || pointer || '';\n\n const { resolved, refsStack: newRefsStack } = parser.deref(schemaOrRef, refsStack, true);\n this.refsStack = pushRef(newRefsStack, this.pointer);\n this.rawSchema = resolved;\n\n this.schema = parser.mergeAllOf(this.rawSchema, this.pointer, this.refsStack);\n this.init(parser, isChild);\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(this.schema, options.showExtensions);\n }\n }\n\n /**\n * Set specified alternative schema as active\n * @param idx oneOf index\n */\n @action\n activateOneOf(idx: number) {\n this.activeOneOf = idx;\n }\n\n hasType(type: string) {\n return this.type === type || (isArray(this.type) && this.type.includes(type));\n }\n\n init(parser: OpenAPIParser, isChild: boolean) {\n const schema = this.schema;\n this.isCircular = !!schema['x-circular-ref'];\n\n this.title =\n schema.title || (isNamedDefinition(this.pointer) && JsonPointer.baseName(this.pointer)) || '';\n this.description = schema.description || '';\n this.type = schema.type || detectType(schema);\n this.format = schema.format;\n this.enum = schema.enum || [];\n this.example = schema.example;\n this.examples = schema.examples;\n this.deprecated = !!schema.deprecated;\n this.pattern = schema.pattern;\n this.externalDocs = schema.externalDocs;\n\n this.constraints = humanizeConstraints(schema);\n this.displayFormat = this.format;\n this.isPrimitive = isPrimitiveType(schema, this.type);\n this.default = schema.default;\n this.readOnly = !!schema.readOnly;\n this.writeOnly = !!schema.writeOnly;\n this.const = schema.const || '';\n this.contentEncoding = schema.contentEncoding;\n this.contentMediaType = schema.contentMediaType;\n this.minItems = schema.minItems;\n this.maxItems = schema.maxItems;\n\n if (!!schema.nullable || schema['x-nullable']) {\n if (isArray(this.type) && !this.type.some(value => value === null || value === 'null')) {\n this.type = [...this.type, 'null'];\n } else if (!isArray(this.type) && (this.type !== null || this.type !== 'null')) {\n this.type = [this.type, 'null'];\n }\n }\n\n this.displayType = isArray(this.type)\n ? this.type.map(item => (item === null ? 'null' : item)).join(' or ')\n : this.type;\n\n if (this.isCircular) {\n return;\n }\n\n if ((schema.if && schema.then) || (schema.if && schema.else)) {\n this.initConditionalOperators(schema, parser);\n return;\n }\n\n if (!isChild && getDiscriminator(schema) !== undefined) {\n this.initDiscriminator(schema, parser);\n return;\n } else if (\n isChild &&\n isArray(schema.oneOf) &&\n schema.oneOf.find(s => s.$ref === this.pointer)\n ) {\n // we hit allOf of the schema with the parent discriminator\n delete schema.oneOf;\n }\n\n if (schema.oneOf !== undefined) {\n this.initOneOf(schema.oneOf, parser);\n this.oneOfType = 'One of';\n if (schema.anyOf !== undefined) {\n console.warn(\n `oneOf and anyOf are not supported on the same level. Skipping anyOf at ${this.pointer}`,\n );\n }\n return;\n }\n\n if (schema.anyOf !== undefined) {\n this.initOneOf(schema.anyOf, parser);\n this.oneOfType = 'Any of';\n return;\n }\n\n if (this.hasType('object')) {\n this.fields = buildFields(parser, schema, this.pointer, this.options, this.refsStack);\n } else if (this.hasType('array')) {\n if (isArray(schema.items) || isArray(schema.prefixItems)) {\n this.fields = buildFields(parser, schema, this.pointer, this.options, this.refsStack);\n } else if (schema.items) {\n this.items = new SchemaModel(\n parser,\n schema.items as OpenAPISchema,\n this.pointer + '/items',\n this.options,\n false,\n this.refsStack,\n );\n }\n\n this.displayType =\n schema.prefixItems || isArray(schema.items)\n ? 'items'\n : pluralizeType(this.items?.displayType || this.displayType);\n this.displayFormat = this.items?.format || '';\n this.typePrefix = this.items?.typePrefix || '' + l('arrayOf');\n this.title = this.title || this.items?.title || '';\n this.isPrimitive =\n this.items?.isPrimitive !== undefined ? this.items?.isPrimitive : this.isPrimitive;\n\n if (this.example === undefined && this.items?.example !== undefined) {\n this.example = [this.items.example];\n }\n if (this.items?.isPrimitive) {\n this.enum = this.items.enum;\n }\n if (isArray(this.type)) {\n const filteredType = this.type.filter(item => item !== 'array');\n if (filteredType.length) this.displayType += ` or ${filteredType.join(' or ')}`;\n }\n }\n\n if (this.enum.length && this.options.sortEnumValuesAlphabetically) {\n this.enum.sort();\n }\n }\n\n private initOneOf(oneOf: OpenAPISchema[], parser: OpenAPIParser) {\n this.oneOf = oneOf!.map((variant, idx) => {\n const { resolved: derefVariant, refsStack } = parser.deref(variant, this.refsStack, true);\n\n const merged = parser.mergeAllOf(derefVariant, this.pointer + '/oneOf/' + idx, refsStack);\n\n // try to infer title\n const title =\n isNamedDefinition(variant.$ref) && !merged.title\n ? JsonPointer.baseName(variant.$ref)\n : `${merged.title || ''}${(merged.const && JSON.stringify(merged.const)) || ''}`;\n\n const schema = new SchemaModel(\n parser,\n // merge base schema into each of oneOf's subschemas\n {\n // variant may already have allOf so merge it to not get overwritten\n ...merged,\n title,\n allOf: [{ ...this.schema, oneOf: undefined, anyOf: undefined }],\n // if specific child schemas are listed in oneOf/anyOf, they are not supposed to be discriminated\n discriminator: derefVariant.allOf ? undefined : merged.discriminator,\n } as OpenAPISchema,\n variant.$ref || this.pointer + '/oneOf/' + idx,\n this.options,\n false,\n refsStack,\n );\n\n return schema;\n });\n\n if (this.options.simpleOneOfTypeLabel) {\n const types = collectUniqueOneOfTypesDeep(this);\n this.displayType = types.join(' or ');\n } else {\n this.displayType = this.oneOf\n .map(schema => {\n let name =\n schema.typePrefix +\n (schema.title ? `${schema.title} (${schema.displayType})` : schema.displayType);\n if (name.indexOf(' or ') > -1) {\n name = `(${name})`;\n }\n return name;\n })\n .join(' or ');\n }\n }\n\n private initDiscriminator(schema: OpenAPISchema, parser: OpenAPIParser) {\n const discriminator = getDiscriminator(schema)!;\n this.discriminatorProp = discriminator.propertyName;\n const implicitInversedMapping = parser.findDerived([\n ...(this.schema['x-parentRefs'] || []),\n this.pointer,\n ]);\n\n if (schema.oneOf) {\n for (const variant of schema.oneOf) {\n if (variant.$ref === undefined) {\n continue;\n }\n const name = JsonPointer.baseName(variant.$ref);\n implicitInversedMapping[variant.$ref] = name;\n }\n }\n\n const mapping = discriminator.mapping || {};\n\n // Defines if the mapping is exhaustive. This avoids having references\n // that overlap with the mapping entries\n let isLimitedToMapping = discriminator['x-explicitMappingOnly'] || false;\n // if there are no mappings, assume non-exhaustive\n if (Object.keys(mapping).length === 0) {\n isLimitedToMapping = false;\n }\n\n const explicitInversedMapping = {};\n for (const name in mapping) {\n const $ref = mapping[name];\n\n if (isArray(explicitInversedMapping[$ref])) {\n explicitInversedMapping[$ref].push(name);\n } else {\n // overrides implicit mapping here\n explicitInversedMapping[$ref] = [name];\n }\n }\n\n const inversedMapping = isLimitedToMapping\n ? { ...explicitInversedMapping }\n : { ...implicitInversedMapping, ...explicitInversedMapping };\n\n let refs: Array<{ $ref; name }> = [];\n\n for (const $ref of Object.keys(inversedMapping)) {\n const names = inversedMapping[$ref];\n if (isArray(names)) {\n for (const name of names) {\n refs.push({ $ref, name });\n }\n } else {\n refs.push({ $ref, name: names });\n }\n }\n\n // Make the listing respects the mapping\n // in case a mapping is defined, the user usually wants to have the order shown\n // as it was defined in the yaml. This will sort the names given the provided\n // mapping (if provided).\n // The logic is:\n // - If a name is among the mapping, promote it to first\n // - Names among the mapping are sorted by their order in the mapping\n // - Names outside the mapping are sorted alphabetically\n const names = Object.keys(mapping);\n if (names.length !== 0) {\n refs = refs.sort((left, right) => {\n const indexLeft = names.indexOf(left.name);\n const indexRight = names.indexOf(right.name);\n\n if (indexLeft < 0 && indexRight < 0) {\n // out of mapping, order by name\n return left.name.localeCompare(right.name);\n } else if (indexLeft < 0) {\n // the right is found, so mapping wins\n return 1;\n } else if (indexRight < 0) {\n // left wins as it's in mapping\n return -1;\n } else {\n return indexLeft - indexRight;\n }\n });\n }\n\n this.oneOf = refs.map(({ $ref, name }) => {\n const innerSchema = new SchemaModel(\n parser,\n { $ref },\n $ref,\n this.options,\n true,\n this.refsStack.slice(0, -1),\n );\n innerSchema.title = name;\n return innerSchema;\n });\n }\n\n private initConditionalOperators(schema: OpenAPISchema, parser: OpenAPIParser) {\n const {\n if: ifOperator,\n else: elseOperator = {},\n then: thenOperator = {},\n ...restSchema\n } = schema;\n const groupedOperators = [\n {\n allOf: [restSchema, thenOperator, ifOperator],\n title: (ifOperator && ifOperator['x-displayName']) || ifOperator?.title || 'case 1',\n },\n {\n allOf: [restSchema, elseOperator],\n title: (elseOperator && elseOperator['x-displayName']) || elseOperator?.title || 'case 2',\n },\n ];\n\n this.oneOf = groupedOperators.map(\n (variant, idx) =>\n new SchemaModel(\n parser,\n {\n ...variant,\n } as OpenAPISchema,\n this.pointer + '/oneOf/' + idx,\n this.options,\n false,\n this.refsStack,\n ),\n );\n this.oneOfType = 'One of';\n }\n}\n\nfunction buildFields(\n parser: OpenAPIParser,\n schema: OpenAPISchema,\n $ref: string,\n options: RedocNormalizedOptions,\n refsStack: string[],\n): FieldModel[] {\n const props = schema.properties || schema.prefixItems || schema.items || {};\n const patternProps = schema.patternProperties || {};\n const additionalProps = schema.additionalProperties || schema.unevaluatedProperties;\n const itemsProps = schema.prefixItems ? schema.items : schema.additionalItems;\n const defaults = schema.default;\n let fields = Object.keys(props || []).map(fieldName => {\n let field = props[fieldName];\n\n if (!field) {\n console.warn(\n `Field \"${fieldName}\" is invalid, skipping.\\n Field must be an object but got ${typeof field} at \"${$ref}\"`,\n );\n field = {};\n }\n\n const required =\n schema.required === undefined ? false : schema.required.indexOf(fieldName) > -1;\n\n return new FieldModel(\n parser,\n {\n name: schema.properties ? fieldName : `[${fieldName}]`,\n required,\n schema: {\n ...field,\n default: field.default === undefined && defaults ? defaults[fieldName] : field.default,\n },\n },\n $ref + '/properties/' + fieldName,\n options,\n refsStack,\n );\n });\n\n if (options.sortPropsAlphabetically) {\n fields = sortByField(fields, 'name');\n }\n if (options.requiredPropsFirst) {\n // if not sort alphabetically sort in the order from required keyword\n fields = sortByRequired(fields, !options.sortPropsAlphabetically ? schema.required : undefined);\n }\n\n fields.push(\n ...Object.keys(patternProps).map(fieldName => {\n let field = patternProps[fieldName];\n\n if (!field) {\n console.warn(\n `Field \"${fieldName}\" is invalid, skipping.\\n Field must be an object but got ${typeof field} at \"${$ref}\"`,\n );\n field = {};\n }\n\n return new FieldModel(\n parser,\n {\n name: fieldName,\n required: false,\n schema: field,\n kind: 'patternProperties',\n },\n `${$ref}/patternProperties/${fieldName}`,\n options,\n refsStack,\n );\n }),\n );\n\n if (typeof additionalProps === 'object' || additionalProps === true) {\n fields.push(\n new FieldModel(\n parser,\n {\n name: (typeof additionalProps === 'object'\n ? additionalProps['x-additionalPropertiesName'] || 'property name'\n : 'property name'\n ).concat('*'),\n required: false,\n schema: additionalProps === true ? {} : additionalProps,\n kind: 'additionalProperties',\n },\n $ref + '/additionalProperties',\n options,\n refsStack,\n ),\n );\n }\n\n fields.push(\n ...buildAdditionalItems({\n parser,\n schema: itemsProps,\n fieldsCount: fields.length,\n $ref,\n options,\n refsStack,\n }),\n );\n\n return fields;\n}\n\nfunction buildAdditionalItems({\n parser,\n schema = false,\n fieldsCount,\n $ref,\n options,\n refsStack,\n}: {\n parser: OpenAPIParser;\n schema?: OpenAPISchema | OpenAPISchema[] | boolean;\n fieldsCount: number;\n $ref: string;\n options: RedocNormalizedOptions;\n refsStack: string[];\n}) {\n if (isBoolean(schema)) {\n return schema\n ? [\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount}...]`,\n schema: {},\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ]\n : [];\n }\n\n if (isArray(schema)) {\n return [\n ...schema.map(\n (field, idx) =>\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount + idx}]`,\n schema: field,\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ),\n ];\n }\n\n if (isObject(schema)) {\n return [\n new FieldModel(\n parser,\n {\n name: `[${fieldsCount}...]`,\n schema: schema,\n },\n `${$ref}/additionalItems`,\n options,\n refsStack,\n ),\n ];\n }\n\n return [];\n}\n\nfunction getDiscriminator(schema: OpenAPISchema): OpenAPISchema['discriminator'] {\n return schema.discriminator || schema['x-discriminator'];\n}\n\nfunction collectUniqueOneOfTypesDeep(schema: SchemaModel) {\n const uniqueTypes = new Set();\n\n function crawl(schema: SchemaModel) {\n for (const oneOfType of schema.oneOf || []) {\n if (oneOfType.oneOf) {\n crawl(oneOfType);\n continue;\n }\n\n if (oneOfType.type) {\n uniqueTypes.add(oneOfType.type);\n }\n }\n }\n\n crawl(schema);\n return Array.from(uniqueTypes.values());\n}\n","import type { OpenAPIEncoding, OpenAPIExample, Referenced } from '../../types';\nimport { isFormUrlEncoded, isJsonLike, urlFormEncodePayload } from '../../utils/openapi';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nconst externalExamplesCache: { [url: string]: Promise<any> } = {};\n\nexport class ExampleModel {\n value: any;\n summary?: string;\n description?: string;\n externalValueUrl?: string;\n\n constructor(\n parser: OpenAPIParser,\n infoOrRef: Referenced<OpenAPIExample>,\n public mime: string,\n encoding?: { [field: string]: OpenAPIEncoding },\n ) {\n const { resolved: example } = parser.deref(infoOrRef);\n this.value = example.value;\n this.summary = example.summary;\n this.description = example.description;\n if (example.externalValue) {\n this.externalValueUrl = new URL(example.externalValue, parser.specUrl).href;\n }\n\n if (isFormUrlEncoded(mime) && this.value && typeof this.value === 'object') {\n this.value = urlFormEncodePayload(this.value, encoding);\n }\n }\n\n getExternalValue(mimeType: string): Promise<any> {\n if (!this.externalValueUrl) {\n return Promise.resolve(undefined);\n }\n\n if (this.externalValueUrl in externalExamplesCache) {\n return externalExamplesCache[this.externalValueUrl];\n }\n\n externalExamplesCache[this.externalValueUrl] = fetch(this.externalValueUrl).then(res => {\n return res.text().then(txt => {\n if (!res.ok) {\n return Promise.reject(new Error(txt));\n }\n\n if (isJsonLike(mimeType)) {\n try {\n return JSON.parse(txt);\n } catch (e) {\n return txt;\n }\n } else {\n return txt;\n }\n });\n });\n\n return externalExamplesCache[this.externalValueUrl];\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type {\n OpenAPIParameter,\n OpenAPIParameterLocation,\n OpenAPIParameterStyle,\n Referenced,\n} from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\nimport { extractExtensions } from '../../utils/openapi';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { SchemaModel } from './Schema';\nimport { ExampleModel } from './Example';\nimport { isArray, mapValues } from '../../utils/helpers';\n\nconst DEFAULT_SERIALIZATION: Record<\n OpenAPIParameterLocation,\n { explode: boolean; style: OpenAPIParameterStyle }\n> = {\n path: {\n style: 'simple',\n explode: false,\n },\n query: {\n style: 'form',\n explode: true,\n },\n header: {\n style: 'simple',\n explode: false,\n },\n cookie: {\n style: 'form',\n explode: true,\n },\n};\n\n/**\n * Field or Parameter model ready to be used by components\n */\nexport class FieldModel {\n @observable\n expanded: boolean | undefined = undefined;\n\n schema: SchemaModel;\n name: string;\n required: boolean;\n description: string;\n example?: string;\n examples?: Record<string, ExampleModel> | any[];\n deprecated: boolean;\n in?: OpenAPIParameterLocation;\n kind: string;\n extensions?: Record<string, any>;\n explode: boolean;\n style?: OpenAPIParameterStyle;\n const?: any;\n\n serializationMime?: string;\n\n constructor(\n parser: OpenAPIParser,\n infoOrRef: Referenced<OpenAPIParameter> & { name?: string; kind?: string },\n pointer: string,\n options: RedocNormalizedOptions,\n refsStack?: string[],\n ) {\n makeObservable(this);\n\n const { resolved: info } = parser.deref<OpenAPIParameter>(infoOrRef);\n this.kind = infoOrRef.kind || 'field';\n this.name = infoOrRef.name || info.name;\n this.in = info.in;\n this.required = !!info.required;\n\n let fieldSchema = info.schema;\n let serializationMime = '';\n if (!fieldSchema && info.in && info.content) {\n serializationMime = Object.keys(info.content)[0];\n fieldSchema = info.content[serializationMime] && info.content[serializationMime].schema;\n }\n\n this.schema = new SchemaModel(parser, fieldSchema || {}, pointer, options, false, refsStack);\n this.description =\n info.description === undefined ? this.schema.description || '' : info.description;\n this.example = info.example || this.schema.example;\n\n if (info.examples !== undefined || this.schema.examples !== undefined) {\n const exampleValue = info.examples || this.schema.examples;\n this.examples = isArray(exampleValue)\n ? exampleValue\n : mapValues(\n exampleValue!,\n (example, name) => new ExampleModel(parser, example, name, info.encoding),\n );\n }\n\n if (serializationMime) {\n this.serializationMime = serializationMime;\n } else if (info.style) {\n this.style = info.style;\n } else if (this.in) {\n this.style = DEFAULT_SERIALIZATION[this.in]?.style ?? 'form'; // fallback to from in case \"in\" is invalid\n }\n\n if (info.explode === undefined && this.in) {\n this.explode = DEFAULT_SERIALIZATION[this.in]?.explode ?? true;\n } else {\n this.explode = !!info.explode;\n }\n\n this.deprecated = info.deprecated === undefined ? !!this.schema.deprecated : info.deprecated;\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(info, options.showExtensions);\n }\n\n this.const = this.schema?.const || info?.const || '';\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n\n @action\n collapse(): void {\n this.expanded = false;\n }\n\n @action\n expand(): void {\n this.expanded = true;\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"openapi-sampler\");","import * as Sampler from 'openapi-sampler';\n\nimport type { OpenAPIMediaType } from '../../types';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { SchemaModel } from './Schema';\n\nimport { isJsonLike, mapValues } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { ExampleModel } from './Example';\n\nexport class MediaTypeModel {\n examples?: { [name: string]: ExampleModel };\n schema?: SchemaModel;\n name: string;\n isRequestType: boolean;\n onlyRequiredInSamples: boolean;\n generatedPayloadSamplesMaxDepth: number;\n\n /**\n * @param isRequestType needed to know if skipe RO/RW fields in objects\n */\n constructor(\n parser: OpenAPIParser,\n name: string,\n isRequestType: boolean,\n info: OpenAPIMediaType,\n options: RedocNormalizedOptions,\n ) {\n this.name = name;\n this.isRequestType = isRequestType;\n this.schema = info.schema && new SchemaModel(parser, info.schema, '', options);\n this.onlyRequiredInSamples = options.onlyRequiredInSamples;\n this.generatedPayloadSamplesMaxDepth = options.generatedPayloadSamplesMaxDepth;\n if (info.examples !== undefined) {\n this.examples = mapValues(\n info.examples,\n example => new ExampleModel(parser, example, name, info.encoding),\n );\n } else if (info.example !== undefined) {\n this.examples = {\n default: new ExampleModel(\n parser,\n { value: parser.deref(info.example).resolved },\n name,\n info.encoding,\n ),\n };\n } else if (isJsonLike(name)) {\n this.generateExample(parser, info);\n }\n }\n\n generateExample(parser: OpenAPIParser, info: OpenAPIMediaType) {\n const samplerOptions = {\n skipReadOnly: this.isRequestType,\n skipWriteOnly: !this.isRequestType,\n skipNonRequired: this.isRequestType && this.onlyRequiredInSamples,\n maxSampleDepth: this.generatedPayloadSamplesMaxDepth,\n };\n if (this.schema && this.schema.oneOf) {\n this.examples = {};\n for (const subSchema of this.schema.oneOf) {\n const sample = Sampler.sample(subSchema.rawSchema as any, samplerOptions, parser.spec);\n\n if (this.schema.discriminatorProp && typeof sample === 'object' && sample) {\n sample[this.schema.discriminatorProp] = subSchema.title;\n }\n\n this.examples[subSchema.title] = new ExampleModel(\n parser,\n {\n value: sample,\n },\n this.name,\n info.encoding,\n );\n }\n } else if (this.schema) {\n this.examples = {\n default: new ExampleModel(\n parser,\n {\n value: Sampler.sample(info.schema as any, samplerOptions, parser.spec),\n },\n this.name,\n info.encoding,\n ),\n };\n }\n }\n}\n","import { action, computed, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIMediaType } from '../../types';\nimport { MediaTypeModel } from './MediaType';\n\nimport { mergeSimilarMediaTypes } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\n\n/**\n * MediaContent model ready to be sued by React components\n * Contains multiple MediaTypes and keeps track of the currently active one\n */\nexport class MediaContentModel {\n mediaTypes: MediaTypeModel[];\n\n @observable\n activeMimeIdx = 0;\n\n /**\n * @param isRequestType needed to know if skipe RO/RW fields in objects\n */\n constructor(\n parser: OpenAPIParser,\n info: Record<string, OpenAPIMediaType>,\n public isRequestType: boolean,\n options: RedocNormalizedOptions,\n ) {\n makeObservable(this);\n\n if (options.unstable_ignoreMimeParameters) {\n info = mergeSimilarMediaTypes(info);\n }\n this.mediaTypes = Object.keys(info).map(name => {\n const mime = info[name];\n // reset deref cache just in case something is left there\n return new MediaTypeModel(parser, name, isRequestType, mime, options);\n });\n }\n\n /**\n * Set active media type by index\n * @param idx media type index\n */\n @action\n activate(idx: number) {\n this.activeMimeIdx = idx;\n }\n\n @computed\n get active() {\n return this.mediaTypes[this.activeMimeIdx];\n }\n\n get hasSample(): boolean {\n return this.mediaTypes.filter(mime => !!mime.examples).length > 0;\n }\n}\n","import type { OpenAPIRequestBody, Referenced } from '../../types';\n\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { MediaContentModel } from './MediaContent';\nimport { getContentWithLegacyExamples } from '../../utils';\n\ntype RequestBodyProps = {\n parser: OpenAPIParser;\n infoOrRef: Referenced<OpenAPIRequestBody>;\n options: RedocNormalizedOptions;\n isEvent: boolean;\n};\n\nexport class RequestBodyModel {\n description: string;\n required: boolean;\n content?: MediaContentModel;\n\n constructor({ parser, infoOrRef, options, isEvent }: RequestBodyProps) {\n const isRequest = !isEvent;\n const { resolved: info } = parser.deref(infoOrRef);\n this.description = info.description || '';\n this.required = !!info.required;\n\n const mediaContent = getContentWithLegacyExamples(info);\n if (mediaContent !== undefined) {\n this.content = new MediaContentModel(parser, mediaContent, isRequest, options);\n }\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIResponse, Referenced } from '../../types';\n\nimport { getStatusCodeType, extractExtensions } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { FieldModel } from './Field';\nimport { MediaContentModel } from './MediaContent';\n\ntype ResponseProps = {\n parser: OpenAPIParser;\n code: string;\n defaultAsError: boolean;\n infoOrRef: Referenced<OpenAPIResponse>;\n options: RedocNormalizedOptions;\n isEvent: boolean;\n};\n\nexport class ResponseModel {\n @observable\n expanded: boolean = false;\n\n content?: MediaContentModel;\n code: string;\n summary: string;\n description: string;\n type: string;\n headers: FieldModel[] = [];\n extensions: Record<string, any>;\n\n constructor({\n parser,\n code,\n defaultAsError,\n infoOrRef,\n options,\n isEvent: isRequest,\n }: ResponseProps) {\n makeObservable(this);\n\n this.expanded = options.expandResponses === 'all' || options.expandResponses[code];\n\n const { resolved: info } = parser.deref(infoOrRef);\n this.code = code;\n if (info.content !== undefined) {\n this.content = new MediaContentModel(parser, info.content, isRequest, options);\n }\n\n if (info['x-summary'] !== undefined) {\n this.summary = info['x-summary'];\n this.description = info.description || '';\n } else {\n this.summary = info.description || '';\n this.description = '';\n }\n\n this.type = getStatusCodeType(code, defaultAsError);\n\n const headers = info.headers;\n if (headers !== undefined) {\n this.headers = Object.keys(headers).map(name => {\n const header = headers[name];\n return new FieldModel(parser, { ...header, name }, '', options);\n });\n }\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(info, options.showExtensions);\n }\n }\n\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport {\n extractExtensions,\n getOperationSummary,\n getStatusCodeType,\n isStatusCode,\n memoize,\n mergeParams,\n normalizeServers,\n sortByField,\n sortByRequired,\n} from '../../utils';\n\nimport { GroupModel } from './Group.model';\nimport { SecurityRequirementModel } from './SecurityRequirement';\nimport { CallbackModel } from './Callback';\nimport { FieldModel } from './Field';\nimport { RequestBodyModel } from './RequestBody';\nimport { ResponseModel } from './Response';\nimport { SideNavStyleEnum } from '../types';\n\nimport type { OpenAPIExternalDocumentation, OpenAPIServer, OpenAPIXCodeSample } from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport type { MediaContentModel } from './MediaContent';\nimport type { ContentItemModel, ExtendedOpenAPIOperation, IMenuItem } from '../types';\n\nexport interface XPayloadSample {\n lang: 'payload';\n label: string;\n requestBodyContent: MediaContentModel;\n source: string;\n}\n\nexport function isPayloadSample(\n sample: XPayloadSample | OpenAPIXCodeSample,\n): sample is XPayloadSample {\n return sample.lang === 'payload' && (sample as any).requestBodyContent;\n}\n\nlet isCodeSamplesWarningPrinted = false;\n\n/**\n * Operation model ready to be used by components\n */\nexport class OperationModel implements IMenuItem {\n //#region IMenuItem fields\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n type = 'operation' as const;\n\n parent?: GroupModel;\n externalDocs?: OpenAPIExternalDocumentation;\n items: ContentItemModel[] = [];\n\n depth: number;\n\n @observable\n ready?: boolean = true;\n @observable\n active: boolean = false;\n @observable\n expanded: boolean = false;\n //#endregion\n\n pointer: string;\n operationId?: string;\n operationHash?: string;\n httpVerb: string;\n deprecated: boolean;\n path: string;\n servers: OpenAPIServer[];\n security: SecurityRequirementModel[];\n extensions: Record<string, any>;\n isCallback: boolean;\n isWebhook: boolean;\n isEvent: boolean;\n\n constructor(\n private parser: OpenAPIParser,\n private operationSpec: ExtendedOpenAPIOperation,\n parent: GroupModel | undefined,\n private options: RedocNormalizedOptions,\n isCallback: boolean = false,\n ) {\n makeObservable(this);\n\n this.pointer = operationSpec.pointer;\n\n this.description = operationSpec.description;\n this.parent = parent;\n this.externalDocs = operationSpec.externalDocs;\n\n this.deprecated = !!operationSpec.deprecated;\n this.httpVerb = operationSpec.httpVerb;\n this.deprecated = !!operationSpec.deprecated;\n this.operationId = operationSpec.operationId;\n this.path = operationSpec.pathName;\n this.isCallback = isCallback;\n this.isWebhook = operationSpec.isWebhook;\n this.isEvent = this.isCallback || this.isWebhook;\n\n this.name = getOperationSummary(operationSpec);\n\n this.sidebarLabel =\n options.sideNavStyle === SideNavStyleEnum.IdOnly\n ? this.operationId || this.path\n : options.sideNavStyle === SideNavStyleEnum.PathOnly\n ? this.path\n : this.name;\n\n if (this.isCallback) {\n // NOTE: Callbacks by default should not inherit the specification's global `security` definition.\n // Can be defined individually per-callback in the specification. Defaults to none.\n this.security = (operationSpec.security || []).map(\n security => new SecurityRequirementModel(security, parser),\n );\n\n // TODO: update getting pathInfo for overriding servers on path level\n this.servers = normalizeServers('', operationSpec.servers || operationSpec.pathServers || []);\n } else {\n this.operationHash = operationSpec.operationId && 'operation/' + operationSpec.operationId;\n this.id =\n operationSpec.operationId !== undefined\n ? (parent ? parent.id + '/' : '') + this.operationHash\n : parent !== undefined\n ? parent.id + this.pointer\n : this.pointer;\n\n this.security = (operationSpec.security || parser.spec.security || []).map(\n security => new SecurityRequirementModel(security, parser),\n );\n\n this.servers = normalizeServers(\n parser.specUrl,\n operationSpec.servers || operationSpec.pathServers || parser.spec.servers || [],\n );\n }\n\n if (options.showExtensions) {\n this.extensions = extractExtensions(operationSpec, options.showExtensions);\n }\n }\n\n /**\n * set operation as active (used by side menu)\n */\n @action\n activate() {\n this.active = true;\n }\n\n /**\n * set operation as inactive (used by side menu)\n */\n @action\n deactivate() {\n this.active = false;\n }\n\n /**\n * Toggle expansion in middle panel (for callbacks, which are operations)\n */\n @action\n toggle() {\n this.expanded = !this.expanded;\n }\n\n expand() {\n if (this.parent) {\n this.parent.expand();\n }\n }\n\n collapse() {\n /* do nothing */\n }\n\n @memoize\n get requestBody() {\n return (\n this.operationSpec.requestBody &&\n new RequestBodyModel({\n parser: this.parser,\n infoOrRef: this.operationSpec.requestBody,\n options: this.options,\n isEvent: this.isEvent,\n })\n );\n }\n\n @memoize\n get codeSamples() {\n let samples: Array<OpenAPIXCodeSample | XPayloadSample> =\n this.operationSpec['x-codeSamples'] || this.operationSpec['x-code-samples'] || [];\n\n if (this.operationSpec['x-code-samples'] && !isCodeSamplesWarningPrinted) {\n isCodeSamplesWarningPrinted = true;\n console.warn('\"x-code-samples\" is deprecated. Use \"x-codeSamples\" instead');\n }\n\n const requestBodyContent = this.requestBody && this.requestBody.content;\n if (requestBodyContent && requestBodyContent.hasSample) {\n const insertInx = Math.min(samples.length, this.options.payloadSampleIdx);\n\n samples = [\n ...samples.slice(0, insertInx),\n {\n lang: 'payload',\n label: 'Payload',\n source: '',\n requestBodyContent,\n },\n ...samples.slice(insertInx),\n ];\n }\n\n return samples;\n }\n\n @memoize\n get parameters() {\n const _parameters = mergeParams(\n this.parser,\n this.operationSpec.pathParameters,\n this.operationSpec.parameters,\n // TODO: fix pointer\n ).map(paramOrRef => new FieldModel(this.parser, paramOrRef, this.pointer, this.options));\n\n if (this.options.sortPropsAlphabetically) {\n return sortByField(_parameters, 'name');\n }\n if (this.options.requiredPropsFirst) {\n return sortByRequired(_parameters);\n }\n\n return _parameters;\n }\n\n @memoize\n get responses() {\n let hasSuccessResponses = false;\n return Object.keys(this.operationSpec.responses || [])\n .filter(code => {\n if (code === 'default') {\n return true;\n }\n\n if (getStatusCodeType(code) === 'success') {\n hasSuccessResponses = true;\n }\n\n return isStatusCode(code);\n }) // filter out other props (e.g. x-props)\n .map(code => {\n return new ResponseModel({\n parser: this.parser,\n code,\n defaultAsError: hasSuccessResponses,\n infoOrRef: this.operationSpec.responses[code],\n options: this.options,\n isEvent: this.isEvent,\n });\n });\n }\n\n @memoize\n get callbacks() {\n return Object.keys(this.operationSpec.callbacks || []).map(callbackEventName => {\n return new CallbackModel(\n this.parser,\n callbackEventName,\n this.operationSpec.callbacks![callbackEventName],\n this.pointer,\n this.options,\n );\n });\n }\n}\n","import type { OpenAPIPath, Referenced } from '../../types';\nimport type { OpenAPIParser } from '../OpenAPIParser';\nimport { OperationModel } from './Operation';\nimport type { RedocNormalizedOptions } from '../RedocNormalizedOptions';\nimport { isOperationName } from '../..';\n\nexport class WebhookModel {\n operations: OperationModel[] = [];\n\n constructor(\n parser: OpenAPIParser,\n options: RedocNormalizedOptions,\n infoOrRef?: Referenced<OpenAPIPath>,\n ) {\n const { resolved: webhooks } = parser.deref<OpenAPIPath>(infoOrRef || {});\n this.initWebhooks(parser, webhooks, options);\n }\n\n initWebhooks(parser: OpenAPIParser, webhooks: OpenAPIPath, options: RedocNormalizedOptions) {\n for (const webhookName of Object.keys(webhooks)) {\n const webhook = webhooks[webhookName];\n const operations = Object.keys(webhook).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = webhook[operationName];\n if (webhook.$ref) {\n const resolvedWebhook = parser.deref<OpenAPIPath>(webhook || {});\n this.initWebhooks(parser, { [operationName]: resolvedWebhook }, options);\n }\n\n if (!operationInfo) continue;\n const operation = new OperationModel(\n parser,\n {\n ...operationInfo,\n httpVerb: operationName,\n },\n undefined,\n options,\n false,\n );\n\n this.operations.push(operation);\n }\n }\n }\n}\n","import type { OpenAPISecurityScheme, Referenced } from '../../types';\nimport { SECURITY_SCHEMES_SECTION_PREFIX } from '../../utils';\nimport type { OpenAPIParser } from '../OpenAPIParser';\n\nexport class SecuritySchemeModel {\n id: string;\n sectionId: string;\n type: OpenAPISecurityScheme['type'];\n description: string;\n displayName: string;\n apiKey?: {\n name: string;\n in: OpenAPISecurityScheme['in'];\n };\n\n http?: {\n scheme: string;\n bearerFormat?: string;\n };\n\n flows: OpenAPISecurityScheme['flows'];\n openId?: {\n connectUrl: string;\n };\n\n constructor(parser: OpenAPIParser, id: string, scheme: Referenced<OpenAPISecurityScheme>) {\n const { resolved: info } = parser.deref(scheme);\n this.id = id;\n this.sectionId = SECURITY_SCHEMES_SECTION_PREFIX + id;\n this.type = info.type;\n this.displayName = info['x-displayName'] || id;\n this.description = info.description || '';\n if (info.type === 'apiKey') {\n this.apiKey = {\n name: info.name!,\n in: info.in,\n };\n }\n\n if (info.type === 'http') {\n this.http = {\n scheme: info.scheme!,\n bearerFormat: info.bearerFormat,\n };\n }\n\n if (info.type === 'openIdConnect') {\n this.openId = {\n connectUrl: info.openIdConnectUrl!,\n };\n }\n\n if (info.type === 'oauth2' && info.flows) {\n this.flows = info.flows;\n }\n }\n}\n\nexport class SecuritySchemesModel {\n schemes: SecuritySchemeModel[];\n\n constructor(parser: OpenAPIParser) {\n const schemes = (parser.spec.components && parser.spec.components.securitySchemes) || {};\n this.schemes = Object.keys(schemes).map(\n name => new SecuritySchemeModel(parser, name, schemes[name]),\n );\n }\n}\n","import type { OpenAPIExternalDocumentation, OpenAPIPath, OpenAPISpec, Referenced } from '../types';\n\nimport { MenuBuilder } from './MenuBuilder';\nimport { ApiInfoModel } from './models/ApiInfo';\nimport { WebhookModel } from './models/Webhook';\nimport { SecuritySchemesModel } from './models/SecuritySchemes';\nimport { OpenAPIParser } from './OpenAPIParser';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { ContentItemModel } from './types';\n/**\n * Store that contains all the specification related information in the form of tree\n */\nexport class SpecStore {\n parser: OpenAPIParser;\n\n info: ApiInfoModel;\n externalDocs?: OpenAPIExternalDocumentation;\n contentItems: ContentItemModel[];\n securitySchemes: SecuritySchemesModel;\n webhooks?: WebhookModel;\n\n constructor(\n spec: OpenAPISpec,\n specUrl: string | undefined,\n private options: RedocNormalizedOptions,\n ) {\n this.parser = new OpenAPIParser(spec, specUrl, options);\n this.info = new ApiInfoModel(this.parser, this.options);\n this.externalDocs = this.parser.spec.externalDocs;\n this.contentItems = MenuBuilder.buildStructure(this.parser, this.options);\n this.securitySchemes = new SecuritySchemesModel(this.parser);\n const webhookPath: Referenced<OpenAPIPath> = {\n ...this.parser?.spec?.['x-webhooks'],\n ...this.parser?.spec.webhooks,\n };\n this.webhooks = new WebhookModel(this.parser, options, webhookPath);\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\n\nimport type { OpenAPIExternalDocumentation, OpenAPITag } from '../../types';\nimport { safeSlugify } from '../../utils';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport type { ContentItemModel, IMenuItem, MarkdownHeading, MenuItemGroupType } from '../types';\n\n/**\n * Operations Group model ready to be used by components\n */\nexport class GroupModel implements IMenuItem {\n //#region IMenuItem fields\n id: string;\n absoluteIdx?: number;\n name: string;\n sidebarLabel: string;\n description?: string;\n type: MenuItemGroupType;\n\n items: ContentItemModel[] = [];\n parent?: GroupModel;\n externalDocs?: OpenAPIExternalDocumentation;\n\n @observable\n active: boolean = false;\n @observable\n expanded: boolean = false;\n\n depth: number;\n level: number;\n //#endregion\n\n constructor(\n type: MenuItemGroupType,\n tagOrGroup: OpenAPITag | MarkdownHeading,\n parent?: GroupModel,\n ) {\n makeObservable(this);\n\n // markdown headings already have ids calculated as they are needed for heading anchors\n this.id = (tagOrGroup as MarkdownHeading).id || type + '/' + safeSlugify(tagOrGroup.name);\n this.type = type;\n this.name = tagOrGroup['x-displayName'] || tagOrGroup.name;\n this.level = (tagOrGroup as MarkdownHeading).level || 1;\n\n this.sidebarLabel = this.name;\n\n // remove sections from markdown, same as in ApiInfo\n this.description = tagOrGroup.description || '';\n\n const items = (tagOrGroup as MarkdownHeading).items;\n if (items && items.length) {\n this.description = MarkdownRenderer.getTextBeforeHading(this.description, items[0].name);\n }\n\n this.parent = parent;\n this.externalDocs = (tagOrGroup as OpenAPITag).externalDocs;\n\n // groups are active (expanded) by default\n if (this.type === 'group') {\n this.expanded = true;\n }\n }\n\n @action\n activate() {\n this.active = true;\n }\n\n @action\n expand() {\n if (this.parent) {\n this.parent.expand();\n }\n this.expanded = true;\n }\n\n @action\n collapse() {\n // disallow collapsing groups\n if (this.type === 'group') {\n return;\n }\n this.expanded = false;\n }\n\n @action\n deactivate() {\n this.active = false;\n }\n}\n","import type { OpenAPISpec, OpenAPIPaths } from '../types';\nimport { isOperationName, JsonPointer, alphabeticallyByProp } from '../utils';\nimport { MarkdownRenderer } from './MarkdownRenderer';\nimport { GroupModel, OperationModel } from './models';\nimport type { OpenAPIParser } from './OpenAPIParser';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { ContentItemModel, TagGroup, TagInfo, TagsInfoMap } from './types';\n\nexport const GROUP_DEPTH = 0;\n\nexport class MenuBuilder {\n /**\n * Builds page content structure based on tags\n */\n static buildStructure(\n parser: OpenAPIParser,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n const spec = parser.spec;\n\n const items: ContentItemModel[] = [];\n const tagsMap = MenuBuilder.getTagsWithOperations(parser, spec);\n items.push(...MenuBuilder.addMarkdownItems(spec.info.description || '', undefined, 1, options));\n if (spec['x-tagGroups'] && spec['x-tagGroups'].length > 0) {\n items.push(\n ...MenuBuilder.getTagGroupsItems(parser, undefined, spec['x-tagGroups'], tagsMap, options),\n );\n } else {\n items.push(...MenuBuilder.getTagsItems(parser, tagsMap, undefined, undefined, options));\n }\n return items;\n }\n\n /**\n * extracts items from markdown description\n * @param description - markdown source\n */\n static addMarkdownItems(\n description: string,\n parent: GroupModel | undefined,\n initialDepth: number,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n const renderer = new MarkdownRenderer(options, parent?.id);\n const headings = renderer.extractHeadings(description || '');\n\n if (headings.length && parent && parent.description) {\n parent.description = MarkdownRenderer.getTextBeforeHading(\n parent.description,\n headings[0].name,\n );\n }\n\n const mapHeadingsDeep = (_parent, items, depth = 1) =>\n items.map(heading => {\n const group = new GroupModel('section', heading, _parent);\n group.depth = depth;\n if (heading.items) {\n group.items = mapHeadingsDeep(group, heading.items, depth + 1);\n }\n\n return group;\n });\n\n return mapHeadingsDeep(parent, headings, initialDepth);\n }\n\n /**\n * Returns array of OperationsGroup items for the tag groups (x-tagGroups vendor extension)\n * @param tags value of `x-tagGroups` vendor extension\n */\n static getTagGroupsItems(\n parser: OpenAPIParser,\n parent: GroupModel | undefined,\n groups: TagGroup[],\n tags: TagsInfoMap,\n options: RedocNormalizedOptions,\n ): GroupModel[] {\n const res: GroupModel[] = [];\n for (const group of groups) {\n const item = new GroupModel('group', group, parent);\n item.depth = GROUP_DEPTH;\n item.items = MenuBuilder.getTagsItems(parser, tags, item, group, options);\n res.push(item);\n }\n // TODO checkAllTagsUsedInGroups\n return res;\n }\n\n /**\n * Returns array of OperationsGroup items for the tags of the group or for all tags\n * @param parser\n * @param tagsMap tags info returned from `getTagsWithOperations`\n * @param parent parent item\n * @param group group which this tag belongs to. if not provided gets all tags\n * @param options normalized options\n */\n static getTagsItems(\n parser: OpenAPIParser,\n tagsMap: TagsInfoMap,\n parent: GroupModel | undefined,\n group: TagGroup | undefined,\n options: RedocNormalizedOptions,\n ): ContentItemModel[] {\n let tagNames;\n\n if (group === undefined) {\n tagNames = Object.keys(tagsMap); // all tags\n } else {\n tagNames = group.tags;\n }\n\n const tags = tagNames.map(tagName => {\n if (!tagsMap[tagName]) {\n console.warn(`Non-existing tag \"${tagName}\" is added to the group \"${group!.name}\"`);\n return null;\n }\n tagsMap[tagName].used = true;\n return tagsMap[tagName];\n });\n\n const res: Array<GroupModel | OperationModel> = [];\n for (const tag of tags) {\n if (!tag) {\n continue;\n }\n const item = new GroupModel('tag', tag, parent);\n item.depth = GROUP_DEPTH + 1;\n\n // don't put empty tag into content, instead put its operations\n if (tag.name === '') {\n const items = [\n ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options),\n ...this.getOperationsItems(parser, undefined, tag, item.depth + 1, options),\n ];\n res.push(...items);\n continue;\n }\n\n item.items = [\n ...MenuBuilder.addMarkdownItems(tag.description || '', item, item.depth + 1, options),\n ...this.getOperationsItems(parser, item, tag, item.depth + 1, options),\n ];\n\n res.push(item);\n }\n\n if (options.sortTagsAlphabetically) {\n res.sort(alphabeticallyByProp<GroupModel | OperationModel>('name'));\n }\n\n return res;\n }\n\n /**\n * Returns array of Operation items for the tag\n * @param parser\n * @param parent parent OperationsGroup\n * @param tag tag info returned from `getTagsWithOperations`\n * @param depth items depth\n * @param options - normalized options\n */\n static getOperationsItems(\n parser: OpenAPIParser,\n parent: GroupModel | undefined,\n tag: TagInfo,\n depth: number,\n options: RedocNormalizedOptions,\n ): OperationModel[] {\n if (tag.operations.length === 0) {\n return [];\n }\n\n const res: OperationModel[] = [];\n for (const operationInfo of tag.operations) {\n const operation = new OperationModel(parser, operationInfo, parent, options);\n operation.depth = depth;\n res.push(operation);\n }\n\n if (options.sortOperationsAlphabetically) {\n res.sort(alphabeticallyByProp<OperationModel>('name'));\n }\n\n return res;\n }\n\n /**\n * collects tags and maps each tag to list of operations belonging to this tag\n */\n static getTagsWithOperations(parser: OpenAPIParser, spec: OpenAPISpec): TagsInfoMap {\n const tags: TagsInfoMap = {};\n const webhooks = spec['x-webhooks'] || spec.webhooks;\n for (const tag of spec.tags || []) {\n tags[tag.name] = { ...tag, operations: [] };\n }\n\n if (webhooks) {\n getTags(parser, webhooks, true);\n }\n\n if (spec.paths) {\n getTags(parser, spec.paths);\n }\n\n function getTags(parser: OpenAPIParser, paths: OpenAPIPaths, isWebhook?: boolean) {\n for (const pathName of Object.keys(paths)) {\n const path = paths[pathName];\n const operations = Object.keys(path).filter(isOperationName);\n for (const operationName of operations) {\n const operationInfo = path[operationName];\n if (path.$ref) {\n const { resolved: resolvedPaths } = parser.deref<OpenAPIPaths>(path as OpenAPIPaths);\n getTags(parser, { [pathName]: resolvedPaths }, isWebhook);\n continue;\n }\n let operationTags = operationInfo?.tags;\n\n if (!operationTags || !operationTags.length) {\n // empty tag\n operationTags = [''];\n }\n\n for (const tagName of operationTags) {\n let tag = tags[tagName];\n if (tag === undefined) {\n tag = {\n name: tagName,\n operations: [],\n };\n tags[tagName] = tag;\n }\n if (tag['x-traitTag']) {\n continue;\n }\n tag.operations.push({\n ...operationInfo,\n pathName,\n pointer: JsonPointer.compile(['paths', pathName, operationName]),\n httpVerb: operationName,\n pathParameters: path.parameters || [],\n pathServers: path.servers,\n isWebhook: !!isWebhook,\n });\n }\n }\n }\n }\n return tags;\n }\n}\n","import { action, observable, makeObservable } from 'mobx';\nimport { querySelector } from '../utils/dom';\nimport { escapeHTMLAttrChars, flattenByProp, SECURITY_SCHEMES_SECTION_PREFIX } from '../utils';\n\nimport { history as historyInst, HistoryService } from './HistoryService';\nimport { GROUP_DEPTH } from './MenuBuilder';\n\nimport type { SpecStore } from './models';\nimport type { ScrollService } from './ScrollService';\nimport type { IMenuItem } from './types';\n\n/** Generic interface for MenuItems */\n\nexport const SECTION_ATTR = 'data-section-id';\n\n/**\n * Stores all side-menu related information\n */\nexport class MenuStore {\n /**\n * Statically try update scroll position\n * Used before hydrating from server-side rendered html to scroll page faster\n */\n static updateOnHistory(id: string = historyInst.currentId, scroll: ScrollService) {\n if (!id) {\n return;\n }\n scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(id)}\"]`);\n }\n\n /**\n * active item absolute index (when flattened). -1 means nothing is selected\n */\n @observable\n activeItemIdx: number = -1;\n\n /**\n * whether sidebar with menu is opened or not\n */\n @observable\n sideBarOpened: boolean = false;\n\n items: IMenuItem[];\n flatItems: IMenuItem[];\n\n /**\n * cached flattened menu items to support absolute indexing\n */\n private _unsubscribe: () => void;\n private _hashUnsubscribe: () => void;\n\n /**\n *\n * @param spec [SpecStore](#SpecStore) which contains page content structure\n * @param scroll scroll service instance used by this menu\n */\n constructor(spec: SpecStore, public scroll: ScrollService, public history: HistoryService) {\n makeObservable(this);\n\n this.items = spec.contentItems;\n\n this.flatItems = flattenByProp(this.items || [], 'items');\n this.flatItems.forEach((item, idx) => (item.absoluteIdx = idx));\n\n this.subscribe();\n }\n\n subscribe() {\n this._unsubscribe = this.scroll.subscribe(this.updateOnScroll);\n this._hashUnsubscribe = this.history.subscribe(this.updateOnHistory);\n }\n\n @action\n toggleSidebar() {\n this.sideBarOpened = this.sideBarOpened ? false : true;\n }\n\n @action\n closeSidebar() {\n this.sideBarOpened = false;\n }\n\n /**\n * update active items on scroll\n * @param isScrolledDown whether last scroll was downside\n */\n updateOnScroll = (isScrolledDown: boolean): void => {\n const step = isScrolledDown ? 1 : -1;\n let itemIdx = this.activeItemIdx;\n while (true) {\n if (itemIdx === -1 && !isScrolledDown) {\n break;\n }\n\n if (itemIdx >= this.flatItems.length - 1 && isScrolledDown) {\n break;\n }\n\n if (isScrolledDown) {\n const el = this.getElementAtOrFirstChild(itemIdx + 1);\n if (this.scroll.isElementBellow(el)) {\n break;\n }\n } else {\n const el = this.getElementAt(itemIdx);\n if (this.scroll.isElementAbove(el)) {\n break;\n }\n }\n itemIdx += step;\n }\n\n this.activate(this.flatItems[itemIdx], true, true);\n };\n\n /**\n * update active items on hash change\n * @param id current hash\n */\n updateOnHistory = (id: string = this.history.currentId) => {\n if (!id) {\n return;\n }\n let item: IMenuItem | undefined;\n\n item = this.flatItems.find(i => i.id === id);\n\n if (item) {\n this.activateAndScroll(item, false);\n } else {\n if (id.startsWith(SECURITY_SCHEMES_SECTION_PREFIX)) {\n item = this.flatItems.find(i => SECURITY_SCHEMES_SECTION_PREFIX.startsWith(i.id));\n this.activateAndScroll(item, false);\n }\n this.scroll.scrollIntoViewBySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(id)}\"]`);\n }\n };\n\n /**\n * get section/operation DOM Node related to the item or null if it doesn't exist\n * @param idx item absolute index\n */\n getElementAt(idx: number): Element | null {\n const item = this.flatItems[idx];\n return (item && querySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(item.id)}\"]`)) || null;\n }\n\n /**\n * get section/operation DOM Node related to the item or if it is group item, returns first item of the group\n * @param idx item absolute index\n */\n getElementAtOrFirstChild(idx: number): Element | null {\n let item = this.flatItems[idx];\n if (item && item.type === 'group') {\n item = item.items[0];\n }\n return (item && querySelector(`[${SECTION_ATTR}=\"${escapeHTMLAttrChars(item.id)}\"]`)) || null;\n }\n\n /**\n * current active item\n */\n get activeItem(): IMenuItem {\n return this.flatItems[this.activeItemIdx] || undefined;\n }\n\n getItemById = (id: string) => {\n return this.flatItems.find(item => item.id === id);\n };\n\n /**\n * activate menu item\n * @param item item to activate\n * @param updateLocation [true] whether to update location\n * @param rewriteHistory [false] whether to rewrite browser history (do not create new entry)\n */\n @action\n activate(\n item: IMenuItem | undefined,\n updateLocation: boolean = true,\n rewriteHistory: boolean = false,\n ) {\n if ((this.activeItem && this.activeItem.id) === (item && item.id)) {\n return;\n }\n\n if (item && item.type === 'group') {\n return;\n }\n\n this.deactivate(this.activeItem);\n if (!item) {\n this.activeItemIdx = -1;\n this.history.replace('', rewriteHistory);\n return;\n }\n\n // do not allow activating group items\n // TODO: control over options\n if (item.depth <= GROUP_DEPTH) {\n return;\n }\n\n this.activeItemIdx = item.absoluteIdx!;\n if (updateLocation) {\n this.history.replace(encodeURI(item.id), rewriteHistory);\n }\n\n item.activate();\n item.expand();\n }\n\n /**\n * makes item and all the parents not active\n * @param item item to deactivate\n */\n deactivate(item: IMenuItem | undefined) {\n if (item === undefined) {\n return;\n }\n item.deactivate();\n while (item !== undefined) {\n item.collapse();\n item = item.parent;\n }\n }\n\n /**\n * activate menu item and scroll to it\n * @see MenuStore.activate\n */\n @action.bound\n activateAndScroll(\n item: IMenuItem | undefined,\n updateLocation?: boolean,\n rewriteHistory?: boolean,\n ) {\n // item here can be a copy from search results so find corresponding item from menu\n const menuItem = (item && this.getItemById(item.id)) || item;\n this.activate(menuItem, updateLocation, rewriteHistory);\n this.scrollToActive();\n if (!menuItem || !menuItem.items.length) {\n this.closeSidebar();\n }\n }\n\n /**\n * scrolls to active section\n */\n scrollToActive(): void {\n this.scroll.scrollIntoView(this.getElementAt(this.activeItemIdx));\n }\n\n dispose() {\n this._unsubscribe();\n this._hashUnsubscribe();\n }\n}\n","import { bind } from 'decko';\nimport * as EventEmitter from 'eventemitter3';\n\nimport { IS_BROWSER, querySelector, Throttle } from '../utils';\nimport type { RedocNormalizedOptions } from './RedocNormalizedOptions';\n\nconst EVENT = 'scroll';\n\nexport class ScrollService {\n private _scrollParent: Window | HTMLElement | undefined;\n private _emiter: EventEmitter;\n private _prevOffsetY = 0;\n constructor(private options: RedocNormalizedOptions) {\n this._scrollParent = IS_BROWSER ? window : undefined;\n this._emiter = new EventEmitter();\n this.bind();\n }\n\n bind() {\n this._prevOffsetY = this.scrollY();\n if (this._scrollParent) {\n this._scrollParent.addEventListener('scroll', this.handleScroll);\n }\n }\n\n dispose() {\n if (this._scrollParent) {\n this._scrollParent.removeEventListener('scroll', this.handleScroll);\n }\n this._emiter.removeAllListeners(EVENT);\n }\n\n scrollY(): number {\n if (typeof HTMLElement !== 'undefined' && this._scrollParent instanceof HTMLElement) {\n return this._scrollParent.scrollTop;\n } else if (this._scrollParent !== undefined) {\n return (this._scrollParent as Window).pageYOffset;\n } else {\n return 0;\n }\n }\n\n isElementBellow(el: Element | null) {\n if (el === null) {\n return;\n }\n return el.getBoundingClientRect().top > this.options.scrollYOffset();\n }\n\n isElementAbove(el: Element | null) {\n if (el === null) {\n return;\n }\n const top = el.getBoundingClientRect().top;\n return (top > 0 ? Math.floor(top) : Math.ceil(top)) <= this.options.scrollYOffset();\n }\n\n subscribe(cb): () => void {\n const emmiter = this._emiter.addListener(EVENT, cb);\n return () => emmiter.removeListener(EVENT, cb);\n }\n\n scrollIntoView(element: Element | null) {\n if (element === null) {\n return;\n }\n element.scrollIntoView();\n if (this._scrollParent && this._scrollParent.scrollBy) {\n // adding 1 account rounding errors in case scrollYOffset is float-number\n (this._scrollParent.scrollBy as any)(0, -this.options.scrollYOffset() + 1);\n }\n }\n\n scrollIntoViewBySelector(selector: string) {\n const element = querySelector(selector);\n this.scrollIntoView(element);\n }\n\n @bind\n @Throttle(100)\n handleScroll() {\n const scrollY = this.scrollY();\n const isScrolledDown = scrollY - this._prevOffsetY > 0;\n this._prevOffsetY = this.scrollY();\n this._emiter.emit(EVENT, isScrolledDown);\n }\n}\n","import { IS_BROWSER } from '../utils/';\nimport type { IMenuItem } from './types';\nimport type { OperationModel } from './models';\n\nimport Worker from './SearchWorker.worker';\n\nfunction getWorker() {\n let worker: new () => Worker;\n if (IS_BROWSER) {\n try {\n // tslint:disable-next-line\n worker = require('workerize-loader?inline&fallback=false!./SearchWorker.worker');\n } catch (e) {\n worker = require('./SearchWorker.worker').default;\n }\n } else {\n worker = require('./SearchWorker.worker').default;\n }\n return new worker();\n}\n\nexport class SearchStore<T> {\n searchWorker = getWorker();\n\n indexItems(groups: Array<IMenuItem | OperationModel>) {\n const recurse = items => {\n items.forEach(group => {\n if (group.type !== 'group') {\n this.add(group.name, (group.description || '').concat(' ', group.path || ''), group.id);\n }\n recurse(group.items);\n });\n };\n\n recurse(groups);\n this.searchWorker.done();\n }\n\n add(title: string, body: string, meta?: T) {\n this.searchWorker.add(title, body, meta);\n }\n\n dispose() {\n (this.searchWorker as any).terminate();\n (this.searchWorker as any).dispose();\n }\n\n search(q: string) {\n return this.searchWorker.search<T>(q);\n }\n\n async toJS() {\n return this.searchWorker.toJS();\n }\n\n load(state: any) {\n this.searchWorker.load(state);\n }\n\n fromExternalJS(path?: string, exportName?: string) {\n if (path && exportName) {\n this.searchWorker.fromExternalJS(path, exportName);\n }\n }\n}\n","import { SECTION_ATTR } from '../services/MenuStore';\nimport styled, { media } from '../styled-components';\n\nexport const MiddlePanel = styled.div<{ compact?: boolean }>`\n width: calc(100% - ${props => props.theme.rightPanel.width});\n padding: 0 ${props => props.theme.spacing.sectionHorizontal}px;\n\n ${({ compact, theme }) =>\n media.lessThan('medium', true)`\n width: 100%;\n padding: ${`${compact ? 0 : theme.spacing.sectionVertical}px ${\n theme.spacing.sectionHorizontal\n }px`};\n `};\n`;\n\nexport const Section = styled.div.attrs(props => ({\n [SECTION_ATTR]: props.id,\n}))<{ underlined?: boolean }>`\n padding: ${props => props.theme.spacing.sectionVertical}px 0;\n\n &:last-child {\n min-height: calc(100vh + 1px);\n }\n\n & > &:last-child {\n min-height: initial;\n }\n\n ${media.lessThan('medium', true)`\n padding: 0;\n `}\n ${(props: any) =>\n (props.underlined &&\n `\n position: relative;\n\n &:not(:last-of-type):after {\n position: absolute;\n bottom: 0;\n width: 100%;\n display: block;\n content: '';\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n }\n `) ||\n ''}\n`;\n\nexport const RightPanel = styled.div`\n width: ${props => props.theme.rightPanel.width};\n color: ${({ theme }) => theme.rightPanel.textColor};\n background-color: ${props => props.theme.rightPanel.backgroundColor};\n padding: 0 ${props => props.theme.spacing.sectionHorizontal}px;\n\n ${media.lessThan('medium', true)`\n width: 100%;\n padding: ${props =>\n `${props.theme.spacing.sectionVertical}px ${props.theme.spacing.sectionHorizontal}px`};\n `};\n`;\n\nexport const DarkRightPanel = styled(RightPanel)`\n background-color: ${props => props.theme.rightPanel.backgroundColor};\n`;\n\nexport const Row = styled.div`\n display: flex;\n width: 100%;\n padding: 0;\n\n ${media.lessThan('medium', true)`\n flex-direction: column;\n `};\n`;\n","import styled, { css, extensionsHook } from '../styled-components';\n\nconst headerFontSize = {\n 1: '1.85714em',\n 2: '1.57143em',\n 3: '1.27em',\n};\n\nexport const headerCommonMixin = level => css`\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-weight: ${({ theme }) => theme.typography.headings.fontWeight};\n font-size: ${headerFontSize[level]};\n line-height: ${({ theme }) => theme.typography.headings.lineHeight};\n`;\n\nexport const H1 = styled.h1`\n ${headerCommonMixin(1)};\n color: ${({ theme }) => theme.colors.text.primary};\n\n ${extensionsHook('H1')};\n`;\n\nexport const H2 = styled.h2`\n ${headerCommonMixin(2)};\n color: ${({ theme }) => theme.colors.text.primary};\n margin: 0 0 20px;\n\n ${extensionsHook('H2')};\n`;\n\nexport const H3 = styled.h2`\n ${headerCommonMixin(3)};\n color: ${({ theme }) => theme.colors.text.primary};\n\n ${extensionsHook('H3')};\n`;\n\nexport const RightPanelHeader = styled.h3`\n color: ${({ theme }) => theme.rightPanel.textColor};\n\n ${extensionsHook('RightPanelHeader')};\n`;\n\nexport const UnderlinedHeader = styled.h5`\n border-bottom: 1px solid rgba(38, 50, 56, 0.3);\n margin: 1em 0 1em 0;\n color: rgba(38, 50, 56, 0.5);\n font-weight: normal;\n text-transform: uppercase;\n font-size: 0.929em;\n line-height: 20px;\n\n ${extensionsHook('UnderlinedHeader')};\n`;\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\n\nimport { AppStore } from '../services/';\nimport { RedocRawOptions } from '../services/RedocNormalizedOptions';\nimport { loadAndBundleSpec } from '../utils';\n\nexport interface StoreBuilderProps {\n specUrl?: string;\n spec?: object;\n store?: AppStore;\n\n options?: RedocRawOptions;\n\n onLoaded?: (e?: Error) => void;\n\n children: (props: { loading: boolean; store: AppStore | null }) => any;\n}\n\nexport interface StoreBuilderState {\n error?: Error;\n loading: boolean;\n resolvedSpec?: any;\n prevSpec?: any;\n prevSpecUrl?: string;\n}\n\nconst StoreContext = createContext<AppStore | undefined>(undefined);\nconst { Provider, Consumer } = StoreContext;\nexport { Provider as StoreProvider, Consumer as StoreConsumer, StoreContext };\n\nexport function StoreBuilder(props: StoreBuilderProps) {\n const { spec, specUrl, options, onLoaded, children } = props;\n\n const [resolvedSpec, setResolvedSpec] = React.useState<any>(null);\n const [error, setError] = React.useState<Error | null>(null);\n if (error) {\n throw error;\n }\n\n React.useEffect(() => {\n async function load() {\n if (!spec && !specUrl) {\n return undefined;\n }\n setResolvedSpec(null);\n try {\n const resolved = await loadAndBundleSpec(spec || specUrl!);\n setResolvedSpec(resolved);\n } catch (e) {\n setError(e);\n throw e;\n }\n }\n load();\n }, [spec, specUrl]);\n\n const store = React.useMemo(() => {\n if (!resolvedSpec) return null;\n try {\n return new AppStore(resolvedSpec, specUrl, options);\n } catch (e) {\n if (onLoaded) {\n onLoaded(e);\n }\n throw e;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolvedSpec, specUrl, options]);\n\n React.useEffect(() => {\n if (store && onLoaded) {\n onLoaded();\n }\n }, [store, onLoaded]);\n\n return children({\n loading: !store,\n store,\n });\n}\n\nexport function useStore(): AppStore | undefined {\n return useContext(StoreContext);\n}\n","import * as React from 'react';\n\nimport { StoreContext } from '../components/StoreBuilder';\nimport styled, { css } from '../styled-components';\n\nimport { HistoryService } from '../services';\n\n// tslint:disable-next-line\nexport const linkifyMixin = className => css`\n ${className} {\n cursor: pointer;\n margin-left: -20px;\n padding: 0;\n line-height: 1;\n width: 20px;\n display: inline-block;\n outline: 0;\n }\n ${className}:before {\n content: '';\n width: 15px;\n height: 15px;\n background-size: contain;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjUxMiIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjMDEwMTAxIiBkPSJNNDU5LjcgMjMzLjRsLTkwLjUgOTAuNWMtNTAgNTAtMTMxIDUwLTE4MSAwIC03LjktNy44LTE0LTE2LjctMTkuNC0yNS44bDQyLjEtNDIuMWMyLTIgNC41LTMuMiA2LjgtNC41IDIuOSA5LjkgOCAxOS4zIDE1LjggMjcuMiAyNSAyNSA2NS42IDI0LjkgOTAuNSAwbDkwLjUtOTAuNWMyNS0yNSAyNS02NS42IDAtOTAuNSAtMjQuOS0yNS02NS41LTI1LTkwLjUgMGwtMzIuMiAzMi4yYy0yNi4xLTEwLjItNTQuMi0xMi45LTgxLjYtOC45bDY4LjYtNjguNmM1MC01MCAxMzEtNTAgMTgxIDBDNTA5LjYgMTAyLjMgNTA5LjYgMTgzLjQgNDU5LjcgMjMzLjR6TTIyMC4zIDM4Mi4ybC0zMi4yIDMyLjJjLTI1IDI0LjktNjUuNiAyNC45LTkwLjUgMCAtMjUtMjUtMjUtNjUuNiAwLTkwLjVsOTAuNS05MC41YzI1LTI1IDY1LjUtMjUgOTAuNSAwIDcuOCA3LjggMTIuOSAxNy4yIDE1LjggMjcuMSAyLjQtMS40IDQuOC0yLjUgNi44LTQuNWw0Mi4xLTQyYy01LjQtOS4yLTExLjYtMTgtMTkuNC0yNS44IC01MC01MC0xMzEtNTAtMTgxIDBsLTkwLjUgOTAuNWMtNTAgNTAtNTAgMTMxIDAgMTgxIDUwIDUwIDEzMSA1MCAxODEgMGw2OC42LTY4LjZDMjc0LjYgMzk1LjEgMjQ2LjQgMzkyLjMgMjIwLjMgMzgyLjJ6Ii8+PC9zdmc+Cg==');\n opacity: 0.5;\n visibility: hidden;\n display: inline-block;\n vertical-align: middle;\n }\n\n h1:hover > ${className}::before, h2:hover > ${className}::before, ${className}:hover::before {\n visibility: visible;\n }\n`;\n\nconst isModifiedEvent = event =>\n !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n\nexport function Link(props: { to: string; className?: string; children?: any }) {\n const store = React.useContext(StoreContext);\n const clickHandler = React.useCallback(\n (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (!store) return;\n navigate(store.menu.history, event, props.to);\n },\n [store, props.to],\n );\n\n if (!store) return null;\n\n return (\n <a\n className={props.className}\n href={store!.menu.history.linkForId(props.to)}\n onClick={clickHandler}\n aria-label={props.to}\n >\n {props.children}\n </a>\n );\n}\n\nfunction navigate(history: HistoryService, event: React.MouseEvent<HTMLAnchorElement>, to: string) {\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n history.replace(encodeURI(to));\n }\n}\n\nconst StyledShareLink = styled(Link)`\n ${linkifyMixin('&')};\n`;\n\nexport function ShareLink(props: { to: string }) {\n return <StyledShareLink to={props.to} />;\n}\n","import * as React from 'react';\nimport styled from '../styled-components';\n\nconst directionMap = {\n left: '90deg',\n right: '-90deg',\n up: '-180deg',\n down: '0',\n};\n\nconst IntShelfIcon = (props: {\n className?: string;\n float?: 'left' | 'right';\n size?: string;\n color?: string;\n direction: 'left' | 'right' | 'up' | 'down';\n style?: React.CSSProperties;\n}): JSX.Element => {\n return (\n <svg\n className={props.className}\n style={props.style}\n version=\"1.1\"\n viewBox=\"0 0 24 24\"\n x=\"0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0\"\n aria-hidden=\"true\"\n >\n <polygon points=\"17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 \" />\n </svg>\n );\n};\n\nexport const ShelfIcon = styled(IntShelfIcon)`\n height: ${props => props.size || '18px'};\n width: ${props => props.size || '18px'};\n min-width: ${props => props.size || '18px'};\n vertical-align: middle;\n float: ${props => props.float || ''};\n transition: transform 0.2s ease-out;\n transform: rotateZ(${props => directionMap[props.direction || 'down']});\n\n polygon {\n fill: ${({ color, theme }) =>\n (color && theme.colors.responses[color] && theme.colors.responses[color].color) || color};\n }\n`;\n\nexport const Badge = styled.span<{ type: string }>`\n display: inline-block;\n padding: 2px 8px;\n margin: 0;\n background-color: ${props => props.theme.colors[props.type].main};\n color: ${props => props.theme.colors[props.type].contrastText};\n font-size: ${props => props.theme.typography.code.fontSize};\n vertical-align: middle;\n line-height: 1.6;\n border-radius: 4px;\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n font-size: 12px;\n + span[type] {\n margin-left: 4px;\n }\n`;\n","import { css } from '../styled-components';\n\nexport const deprecatedCss = css`\n text-decoration: line-through;\n color: #707070;\n`;\n","import styled, { extensionsHook, media, css } from '../styled-components';\nimport { deprecatedCss } from './mixins';\n\nexport const PropertiesTableCaption = styled.caption`\n text-align: right;\n font-size: 0.9em;\n font-weight: normal;\n color: ${props => props.theme.colors.text.secondary};\n`;\n\nexport const PropertyCell = styled.td<{ kind?: string }>`\n border-left: 1px solid ${props => props.theme.schema.linesColor};\n box-sizing: border-box;\n position: relative;\n padding: 10px 10px 10px 0;\n\n ${media.lessThan('small')`\n display: block;\n overflow: hidden;\n `}\n\n tr:first-of-type > &,\n tr.last > & {\n border-left-width: 0;\n background-position: top left;\n background-repeat: no-repeat;\n background-size: 1px 100%;\n }\n\n tr:first-of-type > & {\n background-image: linear-gradient(\n to bottom,\n transparent 0%,\n transparent 22px,\n ${props => props.theme.schema.linesColor} 22px,\n ${props => props.theme.schema.linesColor} 100%\n );\n }\n\n tr.last > & {\n background-image: linear-gradient(\n to bottom,\n ${props => props.theme.schema.linesColor} 0%,\n ${props => props.theme.schema.linesColor} 22px,\n transparent 22px,\n transparent 100%\n );\n }\n\n tr.last + tr > & {\n border-left-color: transparent;\n }\n\n tr.last:first-child > & {\n background: none;\n border-left-color: transparent;\n }\n`;\n\nexport const PropertyCellWithInner = styled(PropertyCell)`\n padding: 0;\n`;\n\nexport const PropertyNameCell = styled(PropertyCell)`\n vertical-align: top;\n line-height: 20px;\n white-space: nowrap;\n font-size: 13px;\n font-family: ${props => props.theme.typography.code.fontFamily};\n\n &.deprecated {\n ${deprecatedCss};\n }\n\n ${({ kind }) =>\n kind === 'patternProperties' &&\n css`\n > span.property-name {\n display: inline-table;\n white-space: break-spaces;\n margin-right: 20px;\n\n ::before,\n ::after {\n content: '/';\n filter: opacity(0.2);\n }\n }\n `}\n\n ${({ kind = '' }) =>\n ['field', 'additionalProperties', 'patternProperties'].includes(kind)\n ? ''\n : 'font-style: italic'};\n\n ${extensionsHook('PropertyNameCell')};\n`;\n\nexport const PropertyDetailsCell = styled.td`\n border-bottom: 1px solid #9fb4be;\n padding: 10px 0;\n width: ${props => props.theme.schema.defaultDetailsWidth};\n box-sizing: border-box;\n\n tr.expanded & {\n border-bottom: none;\n }\n\n ${media.lessThan('small')`\n padding: 0 20px;\n border-bottom: none;\n border-left: 1px solid ${props => props.theme.schema.linesColor};\n\n tr.last > & {\n border-left: none;\n }\n `}\n\n ${extensionsHook('PropertyDetailsCell')};\n`;\n\nexport const PropertyBullet = styled.span`\n color: ${props => props.theme.schema.linesColor};\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin-right: 10px;\n\n &::before {\n content: '';\n display: inline-block;\n vertical-align: middle;\n width: 10px;\n height: 1px;\n background: ${props => props.theme.schema.linesColor};\n }\n\n &::after {\n content: '';\n display: inline-block;\n vertical-align: middle;\n width: 1px;\n background: ${props => props.theme.schema.linesColor};\n height: 7px;\n }\n`;\n\nexport const InnerPropertiesWrap = styled.div`\n padding: ${({ theme }) => theme.schema.nestingSpacing};\n`;\n\nexport const PropertiesTable = styled.table`\n border-collapse: separate;\n border-radius: 3px;\n font-size: ${props => props.theme.typography.fontSize};\n\n border-spacing: 0;\n width: 100%;\n\n > tr {\n vertical-align: middle;\n }\n\n ${media.lessThan('small')`\n display: block;\n > tr, > tbody > tr {\n display: block;\n }\n `}\n\n ${media.lessThan('small', false, ' and (-ms-high-contrast:none)')`\n td {\n float: left;\n width: 100%;\n }\n `}\n\n &\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap} {\n margin: ${({ theme }) => theme.schema.nestingSpacing};\n margin-right: 0;\n background: ${({ theme }) => theme.schema.nestedBackground};\n }\n\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap},\n &\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap}\n ${InnerPropertiesWrap} {\n background: #ffffff;\n }\n`;\n","import styled from '../styled-components';\nimport { darken } from 'polished';\nimport { deprecatedCss } from './mixins';\n\nexport const OneOfList = styled.div`\n margin: 0 0 3px 0;\n display: inline-block;\n`;\n\nexport const OneOfLabel = styled.span`\n font-size: 0.9em;\n margin-right: 10px;\n color: ${props => props.theme.colors.primary.main};\n font-family: ${props => props.theme.typography.headings.fontFamily};\n}\n`;\n\nexport const OneOfButton = styled.button<{ active: boolean; deprecated: boolean }>`\n display: inline-block;\n margin-right: 10px;\n margin-bottom: 5px;\n font-size: 0.8em;\n cursor: pointer;\n border: 1px solid ${props => props.theme.colors.primary.main};\n padding: 2px 10px;\n line-height: 1.5em;\n outline: none;\n &:focus {\n box-shadow: 0 0 0 1px ${props => props.theme.colors.primary.main};\n }\n\n ${({ deprecated }) => (deprecated && deprecatedCss) || ''};\n\n ${props => {\n if (props.active) {\n return `\n color: white;\n background-color: ${props.theme.colors.primary.main};\n &:focus {\n box-shadow: none;\n background-color: ${darken(0.15, props.theme.colors.primary.main)};\n }\n `;\n } else {\n return `\n color: ${props.theme.colors.primary.main};\n background-color: white;\n `;\n }\n }}\n`;\n\nexport const ArrayOpenningLabel = styled.div`\n font-size: 0.9em;\n font-family: ${props => props.theme.typography.code.fontFamily};\n &::after {\n content: ' [';\n }\n`;\n\nexport const ArrayClosingLabel = styled.div`\n font-size: 0.9em;\n font-family: ${props => props.theme.typography.code.fontFamily};\n &::after {\n content: ']';\n }\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-tabs\");","import { darken } from 'polished';\nimport { Tabs as ReactTabs } from 'react-tabs';\n\nimport styled from '../styled-components';\n\nexport { Tab, TabList, TabPanel } from 'react-tabs';\n\nexport const Tabs = styled(ReactTabs)`\n > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n margin: 0 -5px;\n\n > li {\n padding: 5px 10px;\n display: inline-block;\n\n background-color: ${({ theme }) => theme.codeBlock.backgroundColor};\n border-bottom: 1px solid rgba(0, 0, 0, 0.5);\n cursor: pointer;\n text-align: center;\n outline: none;\n color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.rightPanel.textColor)};\n margin: 0\n ${({ theme }) => `${theme.spacing.unit}px ${theme.spacing.unit}px ${theme.spacing.unit}px`};\n border: 1px solid ${({ theme }) => darken(0.05, theme.codeBlock.backgroundColor)};\n border-radius: 5px;\n min-width: 60px;\n font-size: 0.9em;\n font-weight: bold;\n\n &.react-tabs__tab--selected {\n color: ${props => props.theme.colors.text.primary};\n background: ${({ theme }) => theme.rightPanel.textColor};\n &:focus {\n outline: auto;\n }\n }\n\n &:only-child {\n flex: none;\n min-width: 100px;\n }\n\n &.tab-success {\n color: ${props => props.theme.colors.responses.success.tabTextColor};\n }\n\n &.tab-redirect {\n color: ${props => props.theme.colors.responses.redirect.tabTextColor};\n }\n\n &.tab-info {\n color: ${props => props.theme.colors.responses.info.tabTextColor};\n }\n\n &.tab-error {\n color: ${props => props.theme.colors.responses.error.tabTextColor};\n }\n }\n }\n > .react-tabs__tab-panel {\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 4}px;\n margin: 0;\n }\n\n & > div > pre {\n padding: 0;\n }\n }\n`;\n\nexport const SmallTabs = styled(Tabs)`\n > ul {\n display: block;\n > li {\n padding: 2px 5px;\n min-width: auto;\n margin: 0 15px 0 0;\n font-size: 13px;\n font-weight: normal;\n border-bottom: 1px dashed;\n color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.rightPanel.textColor)};\n border-radius: 0;\n background: none;\n\n &:last-child {\n margin-right: 0;\n }\n\n &.react-tabs__tab--selected {\n color: ${({ theme }) => theme.rightPanel.textColor};\n background: none;\n }\n }\n }\n > .react-tabs__tab-panel {\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 2}px 0;\n }\n }\n`;\n","import styled, { extensionsHook } from '../styled-components';\n\nexport const PrismDiv = styled.div`\n /**\n * Based on prism-dark.css\n */\n\n code[class*='language-'],\n pre[class*='language-'] {\n /* color: white;\n background: none; */\n text-shadow: 0 -0.1em 0.2em black;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n }\n\n @media print {\n code[class*='language-'],\n pre[class*='language-'] {\n text-shadow: none;\n }\n }\n\n /* Code blocks */\n pre[class*='language-'] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n }\n\n .token.comment,\n .token.prolog,\n .token.doctype,\n .token.cdata {\n color: hsl(30, 20%, 50%);\n }\n\n .token.punctuation {\n opacity: 0.7;\n }\n\n .namespace {\n opacity: 0.7;\n }\n\n .token.property,\n .token.tag,\n .token.number,\n .token.constant,\n .token.symbol {\n color: #4a8bb3;\n }\n\n .token.boolean {\n color: #e64441;\n }\n\n .token.selector,\n .token.attr-name,\n .token.string,\n .token.char,\n .token.builtin,\n .token.inserted {\n color: #a0fbaa;\n & + a,\n & + a:visited {\n color: #4ed2ba;\n text-decoration: underline;\n }\n }\n\n .token.property.string {\n color: white;\n }\n\n .token.operator,\n .token.entity,\n .token.url,\n .token.variable {\n color: hsl(40, 90%, 60%);\n }\n\n .token.atrule,\n .token.attr-value,\n .token.keyword {\n color: hsl(350, 40%, 70%);\n }\n\n .token.regex,\n .token.important {\n color: #e90;\n }\n\n .token.important,\n .token.bold {\n font-weight: bold;\n }\n .token.italic {\n font-style: italic;\n }\n\n .token.entity {\n cursor: help;\n }\n\n .token.deleted {\n color: red;\n }\n\n ${extensionsHook('Prism')};\n`;\n","import styled from '../styled-components';\nimport { PrismDiv } from './PrismDiv';\n\nexport const SampleControls = styled.div`\n opacity: 0.7;\n transition: opacity 0.3s ease;\n text-align: right;\n &:focus-within {\n opacity: 1;\n }\n > button {\n background-color: transparent;\n border: 0;\n color: inherit;\n padding: 2px 10px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n font-size: ${({ theme }) => theme.typography.fontSize};\n line-height: ${({ theme }) => theme.typography.lineHeight};\n cursor: pointer;\n outline: 0;\n\n :hover,\n :focus {\n background: rgba(255, 255, 255, 0.1);\n }\n }\n`;\n\nexport const SampleControlsWrap = styled.div`\n &:hover ${SampleControls} {\n opacity: 1;\n }\n`;\n\nexport const StyledPre = styled(PrismDiv.withComponent('pre'))`\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n overflow-x: auto;\n margin: 0;\n\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"perfect-scrollbar\");","import * as React from 'react';\n\nimport PerfectScrollbarType, * as PerfectScrollbarNamespace from 'perfect-scrollbar';\n\nimport { OptionsContext } from '../components/OptionsProvider';\nimport styled, { createGlobalStyle } from '../styled-components';\nimport { IS_BROWSER } from '../utils';\n\n/*\n * perfect scrollbar umd bundle uses exports assignment while module uses default export\n * so when bundled with webpack default export works but with jest it crashes\n * That's why the following ugly fix is required\n */\nconst PerfectScrollbarConstructor =\n PerfectScrollbarNamespace.default || (PerfectScrollbarNamespace as any as PerfectScrollbarType);\n\nlet psStyles = '';\nif (IS_BROWSER) {\n psStyles = require('perfect-scrollbar/css/perfect-scrollbar.css');\n psStyles = (typeof psStyles.toString === 'function' && psStyles.toString()) || '';\n psStyles = psStyles === '[object Object]' ? '' : psStyles;\n}\n\nconst PSStyling = createGlobalStyle`${psStyles}`;\n\nconst StyledScrollWrapper = styled.div`\n position: relative;\n`;\n\nexport interface PerfectScrollbarProps {\n options?: PerfectScrollbarType.Options;\n className?: string;\n updateFn?: (fn) => void;\n}\n\nexport class PerfectScrollbar extends React.Component<PerfectScrollbarProps> {\n private _container: HTMLElement;\n private inst: PerfectScrollbarType;\n\n componentDidMount() {\n const offset = (this._container.parentElement && this._container.parentElement.scrollTop) || 0;\n this.inst = new PerfectScrollbarConstructor(this._container, this.props.options || {});\n if (this._container.scrollTo) {\n this._container.scrollTo(0, offset);\n }\n }\n\n componentDidUpdate() {\n this.inst.update();\n }\n\n componentWillUnmount() {\n this.inst.destroy();\n }\n\n handleRef = ref => {\n this._container = ref;\n };\n\n render() {\n const { children, className, updateFn } = this.props;\n\n if (updateFn) {\n updateFn(this.componentDidUpdate.bind(this));\n }\n\n return (\n <>\n {psStyles && <PSStyling />}\n <StyledScrollWrapper className={`scrollbar-container ${className}`} ref={this.handleRef}>\n {children}\n </StyledScrollWrapper>\n </>\n );\n }\n}\n\nexport function PerfectScrollbarWrap(\n props: PerfectScrollbarProps & { children: JSX.Element[] | JSX.Element },\n) {\n return (\n <OptionsContext.Consumer>\n {options =>\n !options.nativeScrollbars ? (\n <PerfectScrollbar {...props}>{props.children}</PerfectScrollbar>\n ) : (\n <div\n style={{\n overflow: 'auto',\n overscrollBehavior: 'contain',\n msOverflowStyle: '-ms-autohiding-scrollbar',\n }}\n >\n {props.children}\n </div>\n )\n }\n </OptionsContext.Consumer>\n );\n}\n","import * as React from 'react';\nimport styled from '../../styled-components';\nimport { ArrowIconProps, DropdownProps, DropdownOption } from './types';\n\nconst ArrowSvg = ({ className, style }: ArrowIconProps): JSX.Element => (\n <svg\n className={className}\n style={style}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n);\n\nconst ArrowIcon = styled(ArrowSvg)`\n position: absolute;\n pointer-events: none;\n z-index: 1;\n top: 50%;\n -webkit-transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n transform: translateY(-50%);\n right: 8px;\n margin: auto;\n text-align: center;\n polyline {\n color: ${props => props.variant === 'dark' && 'white'};\n }\n`;\n\nconst DropdownComponent = (props: DropdownProps): JSX.Element => {\n const { options, onChange, placeholder, value = '', variant, className } = props;\n\n const handleOnChange = event => {\n const { selectedIndex } = event.target;\n const index = placeholder ? selectedIndex - 1 : selectedIndex;\n onChange(options[index]);\n };\n\n return (\n <div className={className}>\n <ArrowIcon variant={variant} />\n <select onChange={handleOnChange} value={value} className=\"dropdown-select\">\n {placeholder && (\n <option disabled hidden value={placeholder}>\n {placeholder}\n </option>\n )}\n {options.map(({ idx, value, title }: DropdownOption, index) => (\n <option key={idx || value + index} value={value}>\n {title || value}\n </option>\n ))}\n </select>\n <label>{value}</label>\n </div>\n );\n};\n\nexport const Dropdown = React.memo<DropdownProps>(DropdownComponent);\n","import styled from 'styled-components';\n\nimport { Dropdown as DropdownComponent } from './Dropdown';\n\nexport const Dropdown = styled(DropdownComponent)<{\n fullWidth?: boolean;\n}>`\n label {\n box-sizing: border-box;\n min-width: 100px;\n outline: none;\n display: inline-block;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n color: ${({ theme }) => theme.colors.text.primary};\n vertical-align: bottom;\n width: ${({ fullWidth }) => (fullWidth ? '100%' : 'auto')};\n text-transform: none;\n padding: 0 22px 0 4px;\n\n font-size: 0.929em;\n line-height: 1.5em;\n font-family: inherit;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n .dropdown-select {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n border: none;\n appearance: none;\n cursor: pointer;\n\n color: ${({ theme }) => theme.colors.text.primary};\n line-height: inherit;\n font-family: inherit;\n }\n box-sizing: border-box;\n min-width: 100px;\n outline: none;\n display: inline-block;\n border-radius: 2px;\n border: 1px solid rgba(38, 50, 56, 0.5);\n vertical-align: bottom;\n padding: 2px 0px 2px 6px;\n position: relative;\n width: auto;\n background: white;\n color: #263238;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n font-size: 0.929em;\n line-height: 1.5em;\n cursor: pointer;\n transition: border 0.25s ease, color 0.25s ease, box-shadow 0.25s ease;\n\n &:hover,\n &:focus-within {\n border: 1px solid ${props => props.theme.colors.primary.main};\n color: ${props => props.theme.colors.primary.main};\n box-shadow: 0px 0px 0px 1px ${props => props.theme.colors.primary.main};\n }\n`;\n\nexport const SimpleDropdown = styled(Dropdown)`\n margin-left: 10px;\n text-transform: none;\n font-size: 0.969em;\n\n font-size: 1em;\n border: none;\n padding: 0 1.2em 0 0;\n background: transparent;\n\n &:hover,\n &:focus-within {\n border: none;\n box-shadow: none;\n label {\n color: ${props => props.theme.colors.primary.main};\n text-shadow: 0px 0px 0px ${props => props.theme.colors.primary.main};\n }\n }\n`;\n\nexport const MimeLabel = styled.span`\n margin-left: 10px;\n text-transform: none;\n font-size: 0.929em;\n color: black;\n`;\n","import * as React from 'react';\nimport { StyledComponent } from 'styled-components';\n\nimport { DropdownProps, MimeLabel, SimpleDropdown } from '../../common-elements/Dropdown';\n\nexport interface DropdownOrLabelProps extends DropdownProps {\n Label?: StyledComponent<any, any, GenericObject, never>;\n Dropdown?: StyledComponent<\n React.NamedExoticComponent<DropdownProps>,\n any,\n {\n fullWidth?: boolean | undefined;\n },\n never\n >;\n}\n\nexport function DropdownOrLabel(props: DropdownOrLabelProps): JSX.Element {\n const { Label = MimeLabel, Dropdown = SimpleDropdown } = props;\n if (props.options.length === 1) {\n return <Label>{props.options[0].value}</Label>;\n }\n return <Dropdown {...props} />;\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"dompurify\");","import { headerCommonMixin, linkifyMixin } from '../../common-elements';\nimport { PrismDiv } from '../../common-elements/PrismDiv';\nimport styled, { css, extensionsHook, ResolvedThemeInterface } from '../../styled-components';\n\nimport { StyledComponent } from 'styled-components';\n\nexport const linksCss = css`\n a {\n text-decoration: ${props => props.theme.typography.links.textDecoration};\n color: ${props => props.theme.typography.links.color};\n\n &:visited {\n color: ${props => props.theme.typography.links.visited};\n }\n\n &:hover {\n color: ${props => props.theme.typography.links.hover};\n text-decoration: ${props => props.theme.typography.links.hoverTextDecoration};\n }\n }\n`;\n\nexport const StyledMarkdownBlock = styled(\n PrismDiv as StyledComponent<\n 'div',\n ResolvedThemeInterface,\n { compact?: boolean; inline?: boolean }\n >,\n)`\n font-family: ${props => props.theme.typography.fontFamily};\n font-weight: ${props => props.theme.typography.fontWeightRegular};\n line-height: ${props => props.theme.typography.lineHeight};\n\n p {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n ${({ compact }) =>\n compact &&\n `\n p:first-child {\n margin-top: 0;\n }\n p:last-child {\n margin-bottom: 0;\n }\n `}\n\n ${({ inline }) =>\n inline &&\n ` p {\n display: inline-block;\n }`}\n\n h1 {\n ${headerCommonMixin(1)};\n color: ${props => props.theme.colors.primary.main};\n margin-top: 0;\n }\n\n h2 {\n ${headerCommonMixin(2)};\n color: ${props => props.theme.colors.text.primary};\n }\n\n code {\n color: ${({ theme }) => theme.typography.code.color};\n background-color: ${({ theme }) => theme.typography.code.backgroundColor};\n\n font-family: ${props => props.theme.typography.code.fontFamily};\n border-radius: 2px;\n border: 1px solid rgba(38, 50, 56, 0.1);\n padding: 0 ${({ theme }) => theme.spacing.unit}px;\n font-size: ${props => props.theme.typography.code.fontSize};\n font-weight: ${({ theme }) => theme.typography.code.fontWeight};\n\n word-break: break-word;\n }\n\n pre {\n font-family: ${props => props.theme.typography.code.fontFamily};\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n background-color: ${({ theme }) => theme.codeBlock.backgroundColor};\n color: white;\n padding: ${props => props.theme.spacing.unit * 4}px;\n overflow-x: auto;\n line-height: normal;\n border-radius: 0px;\n border: 1px solid rgba(38, 50, 56, 0.1);\n\n code {\n background-color: transparent;\n color: white;\n padding: 0;\n\n &:before,\n &:after {\n content: none;\n }\n }\n }\n\n blockquote {\n margin: 0;\n margin-bottom: 1em;\n padding: 0 15px;\n color: #777;\n border-left: 4px solid #ddd;\n }\n\n img {\n max-width: 100%;\n box-sizing: content-box;\n }\n\n ul,\n ol {\n padding-left: 2em;\n margin: 0;\n margin-bottom: 1em;\n\n ul,\n ol {\n margin-bottom: 0;\n margin-top: 0;\n }\n }\n\n table {\n display: block;\n width: 100%;\n overflow: auto;\n word-break: normal;\n word-break: keep-all;\n border-collapse: collapse;\n border-spacing: 0;\n margin-top: 1.5em;\n margin-bottom: 1.5em;\n }\n\n table tr {\n background-color: #fff;\n border-top: 1px solid #ccc;\n\n &:nth-child(2n) {\n background-color: ${({ theme }) => theme.schema.nestedBackground};\n }\n }\n\n table th,\n table td {\n padding: 6px 13px;\n border: 1px solid #ddd;\n }\n\n table th {\n text-align: left;\n font-weight: bold;\n }\n\n ${linkifyMixin('.share-link')};\n\n ${linksCss}\n\n ${extensionsHook('Markdown')};\n`;\n","import * as DOMPurify from 'dompurify';\nimport * as React from 'react';\n\nimport { OptionsConsumer } from '../OptionsProvider';\nimport { StylingMarkdownProps } from './Markdown';\nimport { StyledMarkdownBlock } from './styled.elements';\n\nconst StyledMarkdownSpan = StyledMarkdownBlock.withComponent('span');\n\nconst sanitize = (untrustedSpec, html) => (untrustedSpec ? DOMPurify.sanitize(html) : html);\n\nexport function SanitizedMarkdownHTML(\n props: StylingMarkdownProps & { html: string; className?: string; 'data-role'?: string },\n) {\n const Wrap = props.inline ? StyledMarkdownSpan : StyledMarkdownBlock;\n\n return (\n <OptionsConsumer>\n {options => (\n <Wrap\n className={'redoc-markdown ' + (props.className || '')}\n dangerouslySetInnerHTML={{\n __html: sanitize(options.untrustedSpec, props.html),\n }}\n data-role={props['data-role']}\n {...props}\n />\n )}\n </OptionsConsumer>\n );\n}\n","import * as React from 'react';\n\nimport { MarkdownRenderer } from '../../services';\nimport { SanitizedMarkdownHTML } from './SanitizedMdBlock';\n\nexport interface StylingMarkdownProps {\n compact?: boolean;\n inline?: boolean;\n}\n\nexport interface BaseMarkdownProps {\n sanitize?: boolean;\n source: string;\n}\n\nexport type MarkdownProps = BaseMarkdownProps &\n StylingMarkdownProps & {\n source: string;\n className?: string;\n 'data-role'?: string;\n };\n\nexport class Markdown extends React.Component<MarkdownProps> {\n render() {\n const { source, inline, compact, className, 'data-role': dataRole } = this.props;\n const renderer = new MarkdownRenderer();\n return (\n <SanitizedMarkdownHTML\n html={renderer.renderMd(source)}\n inline={inline}\n compact={compact}\n className={className}\n data-role={dataRole}\n />\n );\n }\n}\n","import * as React from 'react';\n\nimport styled from '../styled-components';\n\nconst Wrapper = styled.div`\n position: relative;\n`;\n\nconst Tip = styled.div`\n position: absolute;\n min-width: 80px;\n max-width: 500px;\n background: #fff;\n bottom: 100%;\n left: 50%;\n margin-bottom: 10px;\n transform: translateX(-50%);\n\n border-radius: 4px;\n padding: 0.3em 0.6em;\n text-align: center;\n box-shadow: 0px 0px 5px 0px rgba(204, 204, 204, 1);\n`;\n\nconst Content = styled.div`\n background: #fff;\n color: #000;\n display: inline;\n font-size: 0.85em;\n white-space: nowrap;\n`;\n\nconst Arrow = styled.div`\n position: absolute;\n width: 0;\n height: 0;\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n border-left: solid transparent 5px;\n border-right: solid transparent 5px;\n border-top: solid #fff 5px;\n`;\n\nconst Gap = styled.div`\n position: absolute;\n width: 100%;\n height: 20px;\n bottom: -20px;\n`;\n\nexport interface TooltipProps {\n open: boolean;\n title: string;\n}\n\nexport class Tooltip extends React.Component<TooltipProps> {\n render() {\n const { open, title, children } = this.props;\n return (\n <Wrapper>\n {children}\n {open && (\n <Tip>\n <Content>{title}</Content>\n <Arrow />\n <Gap />\n </Tip>\n )}\n </Wrapper>\n );\n }\n}\n","const isSupported =\n typeof document !== 'undefined' &&\n document.queryCommandSupported &&\n document.queryCommandSupported('copy');\n\nexport class ClipboardService {\n static isSupported(): boolean {\n return isSupported;\n }\n\n static selectElement(element: any): void {\n let range;\n let selection;\n if ((document.body as any).createTextRange) {\n range = (document.body as any).createTextRange();\n range.moveToElementText(element);\n range.select();\n } else if (document.createRange && window.getSelection) {\n selection = window.getSelection();\n range = document.createRange();\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n static deselect(): void {\n if ((document as any).selection) {\n (document as any).selection.empty();\n } else if (window.getSelection) {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n }\n }\n\n static copySelected(): boolean {\n let result;\n try {\n result = document.execCommand('copy');\n } catch (err) {\n result = false;\n }\n return result;\n }\n\n static copyElement(element: any): boolean {\n ClipboardService.selectElement(element);\n const res = ClipboardService.copySelected();\n if (res) {\n ClipboardService.deselect();\n }\n return res;\n }\n\n static copyCustom(text: string): boolean {\n const textArea = document.createElement('textarea');\n textArea.style.position = 'fixed';\n textArea.style.top = '0';\n textArea.style.left = '0';\n\n // Ensure it has a small width and height. Setting to 1px / 1em\n // doesn't work as this gives a negative w/h on some browsers.\n textArea.style.width = '2em';\n textArea.style.height = '2em';\n\n // We don't need padding, reducing the size if it does flash render.\n textArea.style.padding = '0';\n\n // Clean up any borders.\n textArea.style.border = 'none';\n textArea.style.outline = 'none';\n textArea.style.boxShadow = 'none';\n\n // Avoid flash of white box if rendered for any reason.\n textArea.style.background = 'transparent';\n\n textArea.value = text;\n\n document.body.appendChild(textArea);\n\n textArea.select();\n\n const res = ClipboardService.copySelected();\n\n document.body.removeChild(textArea);\n return res;\n }\n}\n","import * as React from 'react';\nimport { Tooltip } from '../common-elements/Tooltip';\n\nimport { ClipboardService } from '../services/ClipboardService';\n\nexport interface CopyButtonWrapperProps {\n data: any;\n children: (props: { renderCopyButton: () => React.ReactNode }) => React.ReactNode;\n}\n\nexport const CopyButtonWrapper = (\n props: CopyButtonWrapperProps & { tooltipShown?: boolean },\n): JSX.Element => {\n const [tooltipShown, setTooltipShown] = React.useState(false);\n\n const copy = () => {\n const content =\n typeof props.data === 'string' ? props.data : JSON.stringify(props.data, null, 2);\n ClipboardService.copyCustom(content);\n showTooltip();\n };\n\n const renderCopyButton = () => {\n return (\n <button onClick={copy}>\n <Tooltip\n title={ClipboardService.isSupported() ? 'Copied' : 'Not supported in your browser'}\n open={tooltipShown}\n >\n Copy\n </Tooltip>\n </button>\n );\n };\n\n const showTooltip = () => {\n setTooltipShown(true);\n\n setTimeout(() => {\n setTooltipShown(false);\n }, 1500);\n };\n return props.children({ renderCopyButton: renderCopyButton }) as JSX.Element;\n};\n","let level = 1;\n\nexport function jsonToHTML(json, maxExpandLevel) {\n level = 1;\n let output = '';\n output += '<div class=\"redoc-json\">';\n output += '<code>';\n output += valueToHTML(json, maxExpandLevel);\n output += '</code>';\n output += '</div>';\n return output;\n}\n\nfunction htmlEncode(t) {\n return t !== undefined\n ? t\n .toString()\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n : '';\n}\n\nfunction stringifyStringLiteral(str: string) {\n return JSON.stringify(str).slice(1, -1);\n}\n\nfunction decorateWithSpan(value, className) {\n return '<span class=\"' + className + '\">' + htmlEncode(value) + '</span>';\n}\n\nfunction punctuation(val) {\n return '<span class=\"token punctuation\">' + val + '</span>';\n}\n\nfunction valueToHTML(value, maxExpandLevel: number) {\n const valueType = typeof value;\n let output = '';\n if (value === undefined || value === null) {\n output += decorateWithSpan('null', 'token keyword');\n } else if (value && value.constructor === Array) {\n level++;\n output += arrayToHTML(value, maxExpandLevel);\n level--;\n } else if (value && value.constructor === Date) {\n output += decorateWithSpan('\"' + value.toISOString() + '\"', 'token string');\n } else if (valueType === 'object') {\n level++;\n output += objectToHTML(value, maxExpandLevel);\n level--;\n } else if (valueType === 'number') {\n output += decorateWithSpan(value, 'token number');\n } else if (valueType === 'string') {\n if (/^(http|https):\\/\\/[^\\s]+$/.test(value)) {\n output +=\n decorateWithSpan('\"', 'token string') +\n '<a href=\"' +\n encodeURI(value) +\n '\">' +\n htmlEncode(stringifyStringLiteral(value)) +\n '</a>' +\n decorateWithSpan('\"', 'token string');\n } else {\n output += decorateWithSpan('\"' + stringifyStringLiteral(value) + '\"', 'token string');\n }\n } else if (valueType === 'boolean') {\n output += decorateWithSpan(value, 'token boolean');\n }\n\n return output;\n}\n\nfunction arrayToHTML(json, maxExpandLevel: number) {\n const collapsed = level > maxExpandLevel ? 'collapsed' : '';\n let output = `<button class=\"collapser\" aria-label=\"${\n level > maxExpandLevel + 1 ? 'expand' : 'collapse'\n }\"></button>${punctuation('[')}<span class=\"ellipsis\"></span><ul class=\"array collapsible\">`;\n let hasContents = false;\n const length = json.length;\n for (let i = 0; i < length; i++) {\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += valueToHTML(json[i], maxExpandLevel);\n if (i < length - 1) {\n output += ',';\n }\n output += '</div></li>';\n }\n output += `</ul>${punctuation(']')}`;\n if (!hasContents) {\n output = punctuation('[ ]');\n }\n return output;\n}\n\nfunction objectToHTML(json, maxExpandLevel: number) {\n const collapsed = level > maxExpandLevel ? 'collapsed' : '';\n const keys = Object.keys(json);\n const length = keys.length;\n let output = `<button class=\"collapser\" aria-label=\"${\n level > maxExpandLevel + 1 ? 'expand' : 'collapse'\n }\"></button>${punctuation('{')}<span class=\"ellipsis\"></span><ul class=\"obj collapsible\">`;\n let hasContents = false;\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n hasContents = true;\n output += '<li><div class=\"hoverable ' + collapsed + '\">';\n output += '<span class=\"property token string\">\"' + htmlEncode(key) + '\"</span>: ';\n output += valueToHTML(json[key], maxExpandLevel);\n if (i < length - 1) {\n output += punctuation(',');\n }\n output += '</div></li>';\n }\n output += `</ul>${punctuation('}')}`;\n if (!hasContents) {\n output = punctuation('{ }');\n }\n return output;\n}\n","import { css } from '../../styled-components';\n\nexport const jsonStyles = css`\n .redoc-json code > .collapser {\n display: none;\n pointer-events: none;\n }\n\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n\n white-space: ${({ theme }) => (theme.typography.code.wrap ? 'pre-wrap' : 'pre')};\n contain: content;\n overflow-x: auto;\n\n .callback-function {\n color: gray;\n }\n\n .collapser:after {\n content: '-';\n cursor: pointer;\n }\n\n .collapsed > .collapser:after {\n content: '+';\n cursor: pointer;\n }\n\n .ellipsis:after {\n content: ' … ';\n }\n\n .collapsible {\n margin-left: 2em;\n }\n\n .hoverable {\n padding-top: 1px;\n padding-bottom: 1px;\n padding-left: 2px;\n padding-right: 2px;\n border-radius: 2px;\n }\n\n .hovered {\n background-color: rgba(235, 238, 249, 1);\n }\n\n .collapser {\n background-color: transparent;\n border: 0;\n color: #fff;\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: ${props => props.theme.typography.code.fontSize};\n padding-right: 6px;\n padding-left: 6px;\n padding-top: 0;\n padding-bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15px;\n height: 15px;\n position: absolute;\n top: 4px;\n left: -1.5em;\n cursor: default;\n user-select: none;\n -webkit-user-select: none;\n padding: 2px;\n &:focus {\n outline-color: #fff;\n outline-style: dotted;\n outline-width: 1px;\n }\n }\n\n ul {\n list-style-type: none;\n padding: 0px;\n margin: 0px 0px 0px 26px;\n }\n\n li {\n position: relative;\n display: block;\n }\n\n .hoverable {\n display: inline-block;\n }\n\n .selected {\n outline-style: solid;\n outline-width: 1px;\n outline-style: dotted;\n }\n\n .collapsed > .collapsible {\n display: none;\n }\n\n .ellipsis {\n display: none;\n }\n\n .collapsed > .ellipsis {\n display: inherit;\n }\n`;\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nimport { SampleControls } from '../../common-elements';\nimport { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper';\nimport { PrismDiv } from '../../common-elements/PrismDiv';\nimport { jsonToHTML } from '../../utils/jsonToHtml';\nimport { OptionsContext } from '../OptionsProvider';\nimport { jsonStyles } from './style';\n\nexport interface JsonProps {\n data: any;\n className?: string;\n}\n\nconst JsonViewerWrap = styled.div`\n &:hover > ${SampleControls} {\n opacity: 1;\n }\n`;\n\nconst Json = (props: JsonProps) => {\n const [node, setNode] = React.useState<HTMLDivElement>();\n\n const renderInner = ({ renderCopyButton }) => {\n const showFoldingButtons =\n props.data &&\n Object.values(props.data).some(value => typeof value === 'object' && value !== null);\n\n return (\n <JsonViewerWrap>\n <SampleControls>\n {renderCopyButton()}\n {showFoldingButtons && (\n <>\n <button onClick={expandAll}> Expand all </button>\n <button onClick={collapseAll}> Collapse all </button>\n </>\n )}\n </SampleControls>\n <OptionsContext.Consumer>\n {options => (\n <PrismDiv\n className={props.className}\n // tslint:disable-next-line\n ref={node => setNode(node!)}\n dangerouslySetInnerHTML={{\n __html: jsonToHTML(props.data, options.jsonSampleExpandLevel),\n }}\n />\n )}\n </OptionsContext.Consumer>\n </JsonViewerWrap>\n );\n };\n\n const expandAll = () => {\n const elements = node?.getElementsByClassName('collapsible');\n for (const collapsed of Array.prototype.slice.call(elements)) {\n const parentNode = collapsed.parentNode as Element;\n parentNode.classList.remove('collapsed');\n parentNode.querySelector('.collapser')!.setAttribute('aria-label', 'collapse');\n }\n };\n\n const collapseAll = () => {\n const elements = node?.getElementsByClassName('collapsible');\n // skip first item to avoid collapsing whole object/array\n const elementsArr = Array.prototype.slice.call(elements, 1);\n\n for (const expanded of elementsArr) {\n const parentNode = expanded.parentNode as Element;\n parentNode.classList.add('collapsed');\n parentNode.querySelector('.collapser')!.setAttribute('aria-label', 'expand');\n }\n };\n\n const collapseElement = (target: HTMLElement) => {\n let collapsed;\n if (target.className === 'collapser') {\n collapsed = target.parentElement!.getElementsByClassName('collapsible')[0];\n if (collapsed.parentElement.classList.contains('collapsed')) {\n collapsed.parentElement.classList.remove('collapsed');\n target.setAttribute('aria-label', 'collapse');\n } else {\n collapsed.parentElement.classList.add('collapsed');\n target.setAttribute('aria-label', 'expand');\n }\n }\n };\n\n const clickListener = React.useCallback((event: MouseEvent) => {\n collapseElement(event.target as HTMLElement);\n }, []);\n\n const focusListener = React.useCallback((event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n collapseElement(event.target as HTMLElement);\n }\n }, []);\n\n React.useEffect(() => {\n node?.addEventListener('click', clickListener);\n node?.addEventListener('focus', focusListener);\n return () => {\n node?.removeEventListener('click', clickListener);\n node?.removeEventListener('focus', focusListener);\n };\n }, [clickListener, focusListener, node]);\n\n return <CopyButtonWrapper data={props.data}>{renderInner}</CopyButtonWrapper>;\n};\n\nexport const JsonViewer = styled(Json)`\n ${jsonStyles};\n`;\n","import * as React from 'react';\nimport { highlight } from '../../utils';\n\nimport { SampleControls, SampleControlsWrap, StyledPre } from '../../common-elements';\nimport { CopyButtonWrapper } from '../../common-elements/CopyButtonWrapper';\n\nexport interface SourceCodeProps {\n source: string;\n lang: string;\n}\n\nexport const SourceCode = (props: SourceCodeProps) => {\n const { source, lang } = props;\n return <StyledPre dangerouslySetInnerHTML={{ __html: highlight(source, lang) }} />;\n};\n\nexport const SourceCodeWithCopy = (props: SourceCodeProps) => {\n const { source, lang } = props;\n return (\n <CopyButtonWrapper data={source}>\n {({ renderCopyButton }) => (\n <SampleControlsWrap>\n <SampleControls>{renderCopyButton()}</SampleControls>\n <SourceCode lang={lang} source={source} />\n </SampleControlsWrap>\n )}\n </CopyButtonWrapper>\n );\n};\n","import * as React from 'react';\n\nimport { isJsonLike, langFromMime } from '../../utils/openapi';\nimport { JsonViewer } from '../JsonViewer/JsonViewer';\nimport { SourceCodeWithCopy } from '../SourceCode/SourceCode';\n\nexport interface ExampleValueProps {\n value: any;\n mimeType: string;\n}\n\nexport function ExampleValue({ value, mimeType }: ExampleValueProps) {\n if (isJsonLike(mimeType)) {\n return <JsonViewer data={value} />;\n } else {\n if (typeof value === 'object') {\n // just in case example was cached as json but used as non-json\n value = JSON.stringify(value, null, 2);\n }\n return <SourceCodeWithCopy lang={langFromMime(mimeType)} source={value} />;\n }\n}\n","import * as React from 'react';\n\nimport { StyledPre } from '../../common-elements/samples';\nimport { ExampleModel } from '../../services/models';\nimport { ExampleValue } from './ExampleValue';\nimport { useExternalExample } from './exernalExampleHook';\n\nexport interface ExampleProps {\n example: ExampleModel;\n mimeType: string;\n}\n\nexport function Example({ example, mimeType }: ExampleProps) {\n if (example.value === undefined && example.externalValueUrl) {\n return <ExternalExample example={example} mimeType={mimeType} />;\n } else {\n return <ExampleValue value={example.value} mimeType={mimeType} />;\n }\n}\n\nexport function ExternalExample({ example, mimeType }: ExampleProps) {\n const value = useExternalExample(example, mimeType);\n\n if (value === undefined) {\n return <span>Loading...</span>;\n }\n\n if (value instanceof Error) {\n return (\n <StyledPre>\n Error loading external example: <br />\n <a\n className={'token string'}\n href={example.externalValueUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {example.externalValueUrl}\n </a>\n </StyledPre>\n );\n }\n\n return <ExampleValue value={value} mimeType={mimeType} />;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { ExampleModel } from '../../services/models/Example';\n\nexport function useExternalExample(example: ExampleModel, mimeType: string) {\n const [, setIsLoading] = useState(true); // to trigger component reload\n\n const value = useRef<any>(undefined);\n const prevRef = useRef<ExampleModel | undefined>(undefined);\n\n if (prevRef.current !== example) {\n value.current = undefined;\n }\n\n prevRef.current = example;\n\n useEffect(() => {\n const load = async () => {\n setIsLoading(true);\n try {\n value.current = await example.getExternalValue(mimeType);\n } catch (e) {\n value.current = e;\n }\n setIsLoading(false);\n };\n\n load();\n }, [example, mimeType]);\n\n return value.current;\n}\n","import { transparentize } from 'polished';\nimport styled from '../../styled-components';\nimport { Dropdown } from '../../common-elements/Dropdown';\n\nexport const MimeLabel = styled.div`\n padding: 0.9em;\n background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)};\n margin: 0 0 10px 0;\n display: block;\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-size: 0.929em;\n line-height: 1.5em;\n`;\n\nexport const DropdownLabel = styled.span`\n font-family: ${({ theme }) => theme.typography.headings.fontFamily};\n font-size: 12px;\n position: absolute;\n z-index: 1;\n top: -11px;\n left: 12px;\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n color: ${({ theme }) => transparentize(0.3, theme.rightPanel.textColor)};\n`;\n\nexport const DropdownWrapper = styled.div`\n position: relative;\n`;\n\nexport const InvertedSimpleDropdown = styled(Dropdown)`\n label {\n color: ${({ theme }) => theme.rightPanel.textColor};\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n font-size: 1em;\n text-transform: none;\n border: none;\n }\n margin: 0 0 10px 0;\n display: block;\n background-color: ${({ theme }) => transparentize(0.6, theme.rightPanel.backgroundColor)};\n border: none;\n padding: 0.9em 1.6em 0.9em 0.9em;\n box-shadow: none;\n &:hover,\n &:focus-within {\n border: none;\n box-shadow: none;\n background-color: ${({ theme }) => transparentize(0.3, theme.rightPanel.backgroundColor)};\n }\n`;\n\nexport const NoSampleLabel = styled.div`\n font-family: ${props => props.theme.typography.code.fontFamily};\n font-size: 12px;\n color: #ee807f;\n`;\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nimport { DropdownOption, DropdownProps } from '../../common-elements';\nimport { MediaTypeModel } from '../../services/models';\nimport { Markdown } from '../Markdown/Markdown';\nimport { Example } from './Example';\nimport { DropdownLabel, DropdownWrapper, NoSampleLabel } from './styled.elements';\n\nexport interface PayloadSamplesProps {\n mediaType: MediaTypeModel;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n}\n\ninterface MediaTypeSamplesState {\n activeIdx: number;\n}\n\nexport class MediaTypeSamples extends React.Component<PayloadSamplesProps, MediaTypeSamplesState> {\n state = {\n activeIdx: 0,\n };\n switchMedia = ({ idx }: DropdownOption) => {\n if (idx !== undefined) {\n this.setState({\n activeIdx: idx,\n });\n }\n };\n render() {\n const { activeIdx } = this.state;\n const examples = this.props.mediaType.examples || {};\n const mimeType = this.props.mediaType.name;\n\n const noSample = <NoSampleLabel>No sample</NoSampleLabel>;\n\n const examplesNames = Object.keys(examples);\n if (examplesNames.length === 0) {\n return noSample;\n }\n\n if (examplesNames.length > 1) {\n const options = examplesNames.map((name, idx) => {\n return {\n value: examples[name].summary || name,\n idx,\n };\n });\n\n const example = examples[examplesNames[activeIdx]];\n const description = example.description;\n\n return (\n <SamplesWrapper>\n <DropdownWrapper>\n <DropdownLabel>Example</DropdownLabel>\n {this.props.renderDropdown({\n value: options[activeIdx].value,\n options,\n onChange: this.switchMedia,\n ariaLabel: 'Example',\n })}\n </DropdownWrapper>\n <div>\n {description && <Markdown source={description} />}\n <Example example={example} mimeType={mimeType} />\n </div>\n </SamplesWrapper>\n );\n } else {\n const example = examples[examplesNames[0]];\n return (\n <SamplesWrapper>\n {example.description && <Markdown source={example.description} />}\n <Example example={example} mimeType={mimeType} />\n </SamplesWrapper>\n );\n }\n }\n}\n\nconst SamplesWrapper = styled.div`\n margin-top: 15px;\n`;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx-react\");","import { transparentize } from 'polished';\n\nimport styled, { extensionsHook, css } from '../styled-components';\nimport { PropertyNameCell } from './fields-layout';\nimport { ShelfIcon } from './shelfs';\n\nexport const ClickablePropertyNameCell = styled(PropertyNameCell)`\n button {\n background-color: transparent;\n border: 0;\n outline: 0;\n font-size: 13px;\n font-family: ${props => props.theme.typography.code.fontFamily};\n cursor: pointer;\n padding: 0;\n color: ${props => props.theme.colors.text.primary};\n &:focus {\n font-weight: ${({ theme }) => theme.typography.fontWeightBold};\n }\n ${({ kind }) =>\n kind === 'patternProperties' &&\n css`\n display: inline-flex;\n margin-right: 20px;\n\n > span.property-name {\n white-space: break-spaces;\n text-align: left;\n\n ::before,\n ::after {\n content: '/';\n filter: opacity(0.2);\n }\n }\n\n > svg {\n align-self: center;\n }\n `}\n }\n ${ShelfIcon} {\n height: ${({ theme }) => theme.schema.arrow.size};\n width: ${({ theme }) => theme.schema.arrow.size};\n polygon {\n fill: ${({ theme }) => theme.schema.arrow.color};\n }\n }\n`;\n\nexport const FieldLabel = styled.span`\n vertical-align: middle;\n font-size: ${({ theme }) => theme.typography.code.fontSize};\n line-height: 20px;\n`;\n\nexport const TypePrefix = styled(FieldLabel)`\n color: ${props => transparentize(0.1, props.theme.schema.typeNameColor)};\n`;\n\nexport const TypeName = styled(FieldLabel)`\n color: ${props => props.theme.schema.typeNameColor};\n`;\n\nexport const TypeTitle = styled(FieldLabel)`\n color: ${props => props.theme.schema.typeTitleColor};\n word-break: break-word;\n`;\n\nexport const TypeFormat = TypeName;\n\nexport const RequiredLabel = styled(FieldLabel.withComponent('div'))`\n color: ${props => props.theme.schema.requireLabelColor};\n font-size: ${props => props.theme.schema.labelsTextSize};\n font-weight: normal;\n margin-left: 20px;\n line-height: 1;\n`;\n\nexport const PropertyLabel = styled(RequiredLabel)`\n color: ${props => props.theme.colors.primary.light};\n`;\n\nexport const RecursiveLabel = styled(FieldLabel)`\n color: ${({ theme }) => theme.colors.warning.main};\n font-size: 13px;\n`;\n\nexport const PatternLabel = styled(FieldLabel)`\n color: #0e7c86;\n &::before,\n &::after {\n font-weight: bold;\n }\n`;\n\nexport const ExampleValue = styled(FieldLabel)`\n border-radius: 2px;\n word-break: break-word;\n ${({ theme }) => `\n background-color: ${transparentize(0.95, theme.colors.text.primary)};\n color: ${transparentize(0.1, theme.colors.text.primary)};\n\n padding: 0 ${theme.spacing.unit}px;\n border: 1px solid ${transparentize(0.9, theme.colors.text.primary)};\n font-family: ${theme.typography.code.fontFamily};\n}`};\n & + & {\n margin-left: 0;\n }\n ${extensionsHook('ExampleValue')};\n`;\n\nexport const ExtensionValue = styled(ExampleValue)``;\n\nexport const ConstraintItem = styled(FieldLabel)`\n border-radius: 2px;\n ${({ theme }) => `\n background-color: ${transparentize(0.95, theme.colors.primary.light)};\n color: ${transparentize(0.1, theme.colors.primary.main)};\n\n margin: 0 ${theme.spacing.unit}px;\n padding: 0 ${theme.spacing.unit}px;\n border: 1px solid ${transparentize(0.9, theme.colors.primary.main)};\n}`};\n & + & {\n margin-left: 0;\n }\n ${extensionsHook('ConstraintItem')};\n`;\n\nexport const ToggleButton = styled.button`\n background-color: transparent;\n border: 0;\n color: ${({ theme }) => theme.colors.text.secondary};\n margin-left: ${({ theme }) => theme.spacing.unit}px;\n border-radius: 2px;\n cursor: pointer;\n outline-color: ${({ theme }) => theme.colors.text.secondary};\n font-size: 12px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport styled from '../../styled-components';\nimport { OpenAPIExternalDocumentation } from '../../types';\nimport { linksCss } from '../Markdown/styled.elements';\n\nconst LinkWrap = styled.div<{ compact?: boolean }>`\n ${linksCss};\n ${({ compact }) => (!compact ? 'margin: 1em 0' : '')}\n`;\n\n@observer\nexport class ExternalDocumentation extends React.Component<{\n externalDocs: OpenAPIExternalDocumentation;\n compact?: boolean;\n}> {\n render() {\n const { externalDocs } = this.props;\n if (!externalDocs || !externalDocs.url) {\n return null;\n }\n\n return (\n <LinkWrap compact={this.props.compact}>\n <a href={externalDocs.url}>{externalDocs.description || externalDocs.url}</a>\n </LinkWrap>\n );\n }\n}\n","import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nimport { l } from '../../services/Labels';\nimport { OptionsContext } from '../OptionsProvider';\nimport styled from '../../styled-components';\nimport { RedocRawOptions } from '../../services/RedocNormalizedOptions';\n\nexport interface EnumValuesProps {\n values: string[];\n isArrayType: boolean;\n}\n\nexport interface EnumValuesState {\n collapsed: boolean;\n}\n\nexport class EnumValues extends React.PureComponent<EnumValuesProps, EnumValuesState> {\n state: EnumValuesState = {\n collapsed: true,\n };\n\n static contextType = OptionsContext;\n\n private toggle() {\n this.setState({ collapsed: !this.state.collapsed });\n }\n\n render() {\n const { values, isArrayType } = this.props;\n const { collapsed } = this.state;\n\n // TODO: provide context interface in more elegant way\n const { enumSkipQuotes, maxDisplayedEnumValues } = this.context as RedocRawOptions;\n\n if (!values.length) {\n return null;\n }\n\n const displayedItems =\n this.state.collapsed && maxDisplayedEnumValues\n ? values.slice(0, maxDisplayedEnumValues)\n : values;\n\n const showToggleButton = maxDisplayedEnumValues\n ? values.length > maxDisplayedEnumValues\n : false;\n\n const toggleButtonText = maxDisplayedEnumValues\n ? collapsed\n ? `… ${values.length - maxDisplayedEnumValues} more`\n : 'Hide'\n : '';\n\n return (\n <div>\n <FieldLabel>\n {isArrayType ? l('enumArray') : ''}{' '}\n {values.length === 1 ? l('enumSingleValue') : l('enum')}:\n </FieldLabel>{' '}\n {displayedItems.map((value, idx) => {\n const exampleValue = enumSkipQuotes ? String(value) : JSON.stringify(value);\n return (\n <React.Fragment key={idx}>\n <ExampleValue>{exampleValue}</ExampleValue>{' '}\n </React.Fragment>\n );\n })}\n {showToggleButton ? (\n <ToggleButton\n onClick={() => {\n this.toggle();\n }}\n >\n {toggleButtonText}\n </ToggleButton>\n ) : null}\n </div>\n );\n }\n}\n\nconst ToggleButton = styled.span`\n color: ${props => props.theme.colors.primary.main};\n vertical-align: middle;\n font-size: 13px;\n line-height: 20px;\n padding: 0 5px;\n cursor: pointer;\n`;\n","import * as React from 'react';\n\nimport { ExtensionValue, FieldLabel } from '../../common-elements/fields';\n\nimport styled from '../../styled-components';\n\nimport { OptionsContext } from '../OptionsProvider';\n\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\n\nconst Extension = styled(StyledMarkdownBlock)`\n margin: 2px 0;\n`;\n\nexport interface ExtensionsProps {\n extensions: {\n [k: string]: any;\n };\n}\n\nexport class Extensions extends React.PureComponent<ExtensionsProps> {\n render() {\n const exts = this.props.extensions;\n return (\n <OptionsContext.Consumer>\n {options => (\n <>\n {options.showExtensions &&\n Object.keys(exts).map(key => (\n <Extension key={key}>\n <FieldLabel> {key.substring(2)}: </FieldLabel>{' '}\n <ExtensionValue>\n {typeof exts[key] === 'string' ? exts[key] : JSON.stringify(exts[key])}\n </ExtensionValue>\n </Extension>\n ))}\n </>\n )}\n </OptionsContext.Consumer>\n );\n }\n}\n","import * as React from 'react';\n\nimport { FieldLabel, ExampleValue } from '../../common-elements/fields';\nimport { getSerializedValue, isArray } from '../../utils';\n\nimport { l } from '../../services/Labels';\nimport { FieldModel } from '../../services';\nimport styled from '../../styled-components';\n\nexport function Examples({ field }: { field: FieldModel }) {\n if (!field.examples) {\n return null;\n }\n\n return (\n <>\n <FieldLabel> {l('examples')}: </FieldLabel>\n {isArray(field.examples) ? (\n field.examples.map((example, idx) => {\n const value = getSerializedValue(field, example);\n const stringifyValue = field.in ? String(value) : JSON.stringify(value);\n return (\n <React.Fragment key={idx}>\n <ExampleValue>{stringifyValue}</ExampleValue>{' '}\n </React.Fragment>\n );\n })\n ) : (\n <ExamplesList>\n {Object.values(field.examples).map((example, idx) => (\n <li key={idx + example.value}>\n <ExampleValue>{getSerializedValue(field, example.value)}</ExampleValue> -{' '}\n {example.summary || example.description}\n </li>\n ))}\n </ExamplesList>\n )}\n </>\n );\n}\n\nconst ExamplesList = styled.ul`\n margin-top: 1em;\n list-style-position: outside;\n`;\n","import * as React from 'react';\nimport { ConstraintItem } from '../../common-elements/fields';\n\nexport interface ConstraintsViewProps {\n constraints: string[];\n}\n\nexport class ConstraintsView extends React.PureComponent<ConstraintsViewProps> {\n render() {\n if (this.props.constraints.length === 0) {\n return null;\n }\n return (\n <span>\n {' '}\n {this.props.constraints.map(constraint => (\n <ConstraintItem key={constraint}> {constraint} </ConstraintItem>\n ))}\n </span>\n );\n }\n}\n","import * as React from 'react';\nimport { ExampleValue, FieldLabel } from '../../common-elements/fields';\n\nexport interface FieldDetailProps {\n value?: any;\n label: string;\n raw?: boolean;\n}\n\nfunction FieldDetailComponent({ value, label, raw }: FieldDetailProps) {\n if (value === undefined) {\n return null;\n }\n\n const stringifyValue = raw ? String(value) : JSON.stringify(value);\n\n return (\n <div>\n <FieldLabel> {label} </FieldLabel> <ExampleValue>{stringifyValue}</ExampleValue>\n </div>\n );\n}\n\nexport const FieldDetail = React.memo<FieldDetailProps>(FieldDetailComponent);\n","import * as React from 'react';\nimport { PatternLabel, ToggleButton } from '../../common-elements/fields';\nimport { OptionsContext } from '../OptionsProvider';\nimport { SchemaModel } from '../../services';\n\nconst MAX_PATTERN_LENGTH = 45;\n\nexport function Pattern(props: { schema: SchemaModel }) {\n const pattern = props.schema.pattern;\n const { hideSchemaPattern } = React.useContext(OptionsContext);\n const [isPatternShown, setIsPatternShown] = React.useState(false);\n const togglePattern = React.useCallback(\n () => setIsPatternShown(!isPatternShown),\n [isPatternShown],\n );\n\n if (!pattern || hideSchemaPattern) return null;\n\n return (\n <>\n <PatternLabel>\n {isPatternShown || pattern.length < MAX_PATTERN_LENGTH\n ? pattern\n : `${pattern.substr(0, MAX_PATTERN_LENGTH)}...`}\n </PatternLabel>\n {pattern.length > MAX_PATTERN_LENGTH && (\n <ToggleButton onClick={togglePattern}>\n {isPatternShown ? 'Hide pattern' : 'Show pattern'}\n </ToggleButton>\n )}\n </>\n );\n}\n","import * as React from 'react';\nimport { TypeFormat, TypePrefix } from '../../common-elements/fields';\nimport { ConstraintsView } from './FieldContstraints';\nimport { Pattern } from './Pattern';\nimport { SchemaModel } from '../../services';\nimport styled from '../../styled-components';\nimport { OptionsContext } from '../OptionsProvider';\n\nexport function ArrayItemDetails({ schema }: { schema: SchemaModel }) {\n const { hideSchemaPattern } = React.useContext(OptionsContext);\n if (\n !schema ||\n (schema.type === 'string' && !schema.constraints.length) ||\n ((!schema?.pattern || hideSchemaPattern) &&\n !schema.items &&\n !schema.displayFormat &&\n !schema.constraints.length) // return null for cases where all constraints are empty\n ) {\n return null;\n }\n\n return (\n <Wrapper>\n [ items\n {schema.displayFormat && <TypeFormat> &lt;{schema.displayFormat} &gt;</TypeFormat>}\n <ConstraintsView constraints={schema.constraints} />\n <Pattern schema={schema} />\n {schema.items && <ArrayItemDetails schema={schema.items} />} ]\n </Wrapper>\n );\n}\n\nconst Wrapper = styled(TypePrefix)`\n margin: 0 5px;\n vertical-align: text-top;\n`;\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport {\n RecursiveLabel,\n TypeFormat,\n TypeName,\n TypePrefix,\n TypeTitle,\n} from '../../common-elements/fields';\nimport { getSerializedValue } from '../../utils';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Markdown } from '../Markdown/Markdown';\nimport { EnumValues } from './EnumValues';\nimport { Extensions } from './Extensions';\nimport { FieldProps } from './Field';\nimport { Examples } from './Examples';\nimport { ConstraintsView } from './FieldContstraints';\nimport { FieldDetail } from './FieldDetail';\n\nimport { Badge } from '../../common-elements/';\n\nimport { l } from '../../services/Labels';\nimport { OptionsContext } from '../OptionsProvider';\nimport { Pattern } from './Pattern';\nimport { ArrayItemDetails } from './ArrayItemDetails';\n\nexport const FieldDetailsComponent = observer((props: FieldProps) => {\n const { enumSkipQuotes, hideSchemaTitles } = React.useContext(OptionsContext);\n\n const { showExamples, field, renderDiscriminatorSwitch } = props;\n const { schema, description, deprecated, extensions, in: _in, const: _const } = field;\n const isArrayType = schema.type === 'array';\n\n const rawDefault = enumSkipQuotes || _in === 'header'; // having quotes around header field default values is confusing and inappropriate\n\n const renderedExamples = React.useMemo<JSX.Element | null>(() => {\n if (showExamples && (field.example !== undefined || field.examples !== undefined)) {\n if (field.examples !== undefined) {\n return <Examples field={field} />;\n } else {\n return (\n <FieldDetail\n label={l('example') + ':'}\n value={getSerializedValue(field, field.example)}\n raw={Boolean(field.in)}\n />\n );\n }\n }\n\n return null;\n }, [field, showExamples]);\n\n return (\n <div>\n <div>\n <TypePrefix>{schema.typePrefix}</TypePrefix>\n <TypeName>{schema.displayType}</TypeName>\n {schema.displayFormat && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.displayFormat}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.contentEncoding && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.contentEncoding}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.contentMediaType && (\n <TypeFormat>\n {' '}\n &lt;\n {schema.contentMediaType}\n &gt;{' '}\n </TypeFormat>\n )}\n {schema.title && !hideSchemaTitles && <TypeTitle> ({schema.title}) </TypeTitle>}\n <ConstraintsView constraints={schema.constraints} />\n <Pattern schema={schema} />\n {schema.isCircular && <RecursiveLabel> {l('recursive')} </RecursiveLabel>}\n {isArrayType && schema.items && <ArrayItemDetails schema={schema.items} />}\n </div>\n {deprecated && (\n <div>\n <Badge type=\"warning\"> {l('deprecated')} </Badge>\n </div>\n )}\n <FieldDetail raw={rawDefault} label={l('default') + ':'} value={schema.default} />\n {!renderDiscriminatorSwitch && (\n <EnumValues isArrayType={isArrayType} values={schema.enum} />\n )}{' '}\n {renderedExamples}\n <Extensions extensions={{ ...extensions, ...schema.extensions }} />\n <div>\n <Markdown compact={true} source={description} />\n </div>\n {schema.externalDocs && (\n <ExternalDocumentation externalDocs={schema.externalDocs} compact={true} />\n )}\n {(renderDiscriminatorSwitch && renderDiscriminatorSwitch(props)) || null}\n {(_const && <FieldDetail label={l('const') + ':'} value={_const} />) || null}\n </div>\n );\n});\n\nexport const FieldDetails = React.memo<FieldProps>(FieldDetailsComponent);\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ClickablePropertyNameCell,\n PropertyLabel,\n RequiredLabel,\n} from '../../common-elements/fields';\nimport { FieldDetails } from './FieldDetails';\nimport {\n InnerPropertiesWrap,\n PropertyBullet,\n PropertyCellWithInner,\n PropertyDetailsCell,\n PropertyNameCell,\n} from '../../common-elements/fields-layout';\nimport { ShelfIcon } from '../../common-elements/';\nimport { Schema } from '../Schema/Schema';\n\nimport type { SchemaOptions } from '../Schema/Schema';\nimport type { FieldModel } from '../../services/models';\n\nexport interface FieldProps extends SchemaOptions {\n className?: string;\n isLast?: boolean;\n showExamples?: boolean;\n\n field: FieldModel;\n expandByDefault?: boolean;\n\n renderDiscriminatorSwitch?: (opts: FieldProps) => JSX.Element;\n}\n\n@observer\nexport class Field extends React.Component<FieldProps> {\n toggle = () => {\n if (this.props.field.expanded === undefined && this.props.expandByDefault) {\n this.props.field.collapse();\n } else {\n this.props.field.toggle();\n }\n };\n\n handleKeyPress = e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n this.toggle();\n }\n };\n\n render() {\n const { className = '', field, isLast, expandByDefault } = this.props;\n const { name, deprecated, required, kind } = field;\n const withSubSchema = !field.schema.isPrimitive && !field.schema.isCircular;\n\n const expanded = field.expanded === undefined ? expandByDefault : field.expanded;\n\n const labels = (\n <>\n {kind === 'additionalProperties' && <PropertyLabel>additional property</PropertyLabel>}\n {kind === 'patternProperties' && <PropertyLabel>pattern property</PropertyLabel>}\n {required && <RequiredLabel>required</RequiredLabel>}\n </>\n );\n\n const paramName = withSubSchema ? (\n <ClickablePropertyNameCell\n className={deprecated ? 'deprecated' : ''}\n kind={kind}\n title={name}\n >\n <PropertyBullet />\n <button\n onClick={this.toggle}\n onKeyPress={this.handleKeyPress}\n aria-label=\"expand properties\"\n >\n <span className=\"property-name\">{name}</span>\n <ShelfIcon direction={expanded ? 'down' : 'right'} />\n </button>\n {labels}\n </ClickablePropertyNameCell>\n ) : (\n <PropertyNameCell className={deprecated ? 'deprecated' : undefined} kind={kind} title={name}>\n <PropertyBullet />\n <span className=\"property-name\">{name}</span>\n {labels}\n </PropertyNameCell>\n );\n\n return (\n <>\n <tr className={isLast ? 'last ' + className : className}>\n {paramName}\n <PropertyDetailsCell>\n <FieldDetails {...this.props} />\n </PropertyDetailsCell>\n </tr>\n {expanded && withSubSchema && (\n <tr key={field.name + 'inner'}>\n <PropertyCellWithInner colSpan={2}>\n <InnerPropertiesWrap>\n <Schema\n schema={field.schema}\n skipReadOnly={this.props.skipReadOnly}\n skipWriteOnly={this.props.skipWriteOnly}\n showTitle={this.props.showTitle}\n level={this.props.level}\n />\n </InnerPropertiesWrap>\n </PropertyCellWithInner>\n </tr>\n )}\n </>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, Dropdown } from '../../common-elements/Dropdown';\nimport { SchemaModel } from '../../services/models';\n\n@observer\nexport class DiscriminatorDropdown extends React.Component<{\n parent: SchemaModel;\n enumValues: string[];\n}> {\n sortOptions(options: DropdownOption[], enumValues: string[]): void {\n if (enumValues.length === 0) {\n return;\n }\n\n const enumOrder = {};\n\n enumValues.forEach((enumItem, idx) => {\n enumOrder[enumItem] = idx;\n });\n\n options.sort((a, b) => {\n return enumOrder[a.value] > enumOrder[b.value] ? 1 : -1;\n });\n }\n\n render() {\n const { parent, enumValues } = this.props;\n if (parent.oneOf === undefined) {\n return null;\n }\n\n const options = parent.oneOf.map((subSchema, idx) => {\n return {\n value: subSchema.title,\n idx,\n };\n });\n\n const activeValue = options[parent.activeOneOf].value;\n\n this.sortOptions(options, enumValues);\n\n return (\n <Dropdown\n value={activeValue}\n options={options}\n onChange={this.changeActiveChild}\n ariaLabel=\"Example\"\n />\n );\n }\n\n changeActiveChild = (option: DropdownOption) => {\n if (option.idx !== undefined) {\n this.props.parent.activateOneOf(option.idx);\n }\n };\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SchemaModel } from '../../services/models';\n\nimport { PropertiesTable, PropertiesTableCaption } from '../../common-elements/fields-layout';\nimport { Field } from '../Fields/Field';\nimport { DiscriminatorDropdown } from './DiscriminatorDropdown';\nimport { SchemaProps } from './Schema';\n\nimport { mapWithLast } from '../../utils';\nimport { OptionsContext } from '../OptionsProvider';\n\nexport interface ObjectSchemaProps extends SchemaProps {\n discriminator?: {\n fieldName: string;\n parentSchema: SchemaModel;\n };\n}\n\nexport const ObjectSchema = observer(\n ({\n schema: { fields = [], title },\n showTitle,\n discriminator,\n skipReadOnly,\n skipWriteOnly,\n level,\n }: ObjectSchemaProps) => {\n const { expandSingleSchemaField, showObjectSchemaExamples, schemaExpansionLevel } =\n React.useContext(OptionsContext);\n\n const filteredFields = React.useMemo(\n () =>\n skipReadOnly || skipWriteOnly\n ? fields.filter(\n item =>\n !(\n (skipReadOnly && item.schema.readOnly) ||\n (skipWriteOnly && item.schema.writeOnly)\n ),\n )\n : fields,\n [skipReadOnly, skipWriteOnly, fields],\n );\n\n const expandByDefault =\n (expandSingleSchemaField && filteredFields.length === 1) || schemaExpansionLevel >= level!;\n\n return (\n <PropertiesTable>\n {showTitle && <PropertiesTableCaption>{title}</PropertiesTableCaption>}\n <tbody>\n {mapWithLast(filteredFields, (field, isLast) => {\n return (\n <Field\n key={field.name}\n isLast={isLast}\n field={field}\n expandByDefault={expandByDefault}\n renderDiscriminatorSwitch={\n discriminator?.fieldName === field.name\n ? () => (\n <DiscriminatorDropdown\n parent={discriminator!.parentSchema}\n enumValues={field.schema.enum}\n />\n )\n : undefined\n }\n className={field.expanded ? 'expanded' : undefined}\n showExamples={showObjectSchemaExamples}\n skipReadOnly={skipReadOnly}\n skipWriteOnly={skipWriteOnly}\n showTitle={showTitle}\n level={level}\n />\n );\n })}\n </tbody>\n </PropertiesTable>\n );\n },\n);\n","import * as React from 'react';\n\nimport { Schema, SchemaProps } from './Schema';\n\nimport { ArrayClosingLabel, ArrayOpenningLabel } from '../../common-elements';\nimport styled from '../../styled-components';\nimport { humanizeConstraints } from '../../utils';\nimport { TypeName } from '../../common-elements/fields';\nimport { ObjectSchema } from './ObjectSchema';\n\nconst PaddedSchema = styled.div`\n padding-left: ${({ theme }) => theme.spacing.unit * 2}px;\n`;\n\nexport class ArraySchema extends React.PureComponent<SchemaProps> {\n render() {\n const schema = this.props.schema;\n const itemsSchema = schema.items;\n\n const minMaxItems =\n schema.minItems === undefined && schema.maxItems === undefined\n ? ''\n : `(${humanizeConstraints(schema)})`;\n\n if (schema.fields) {\n return <ObjectSchema {...(this.props as any)} level={this.props.level} />;\n }\n if (schema.displayType && !itemsSchema && !minMaxItems.length) {\n return (\n <div>\n <TypeName>{schema.displayType}</TypeName>\n </div>\n );\n }\n\n return (\n <div>\n <ArrayOpenningLabel> Array {minMaxItems}</ArrayOpenningLabel>\n <PaddedSchema>\n <Schema {...this.props} schema={itemsSchema} />\n </PaddedSchema>\n <ArrayClosingLabel />\n </div>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n OneOfButton as StyledOneOfButton,\n OneOfLabel,\n OneOfList,\n} from '../../common-elements/schema';\nimport { Badge } from '../../common-elements/shelfs';\nimport { SchemaModel } from '../../services/models';\nimport { ConstraintsView } from '../Fields/FieldContstraints';\nimport { Schema, SchemaProps } from './Schema';\n\nexport interface OneOfButtonProps {\n subSchema: SchemaModel;\n idx: number;\n schema: SchemaModel;\n}\n\n@observer\nexport class OneOfButton extends React.Component<OneOfButtonProps> {\n render() {\n const { idx, schema, subSchema } = this.props;\n return (\n <StyledOneOfButton\n deprecated={subSchema.deprecated}\n active={idx === schema.activeOneOf}\n onClick={this.activateOneOf}\n >\n {subSchema.title || subSchema.typePrefix + subSchema.displayType}\n </StyledOneOfButton>\n );\n }\n\n activateOneOf = () => {\n this.props.schema.activateOneOf(this.props.idx);\n };\n}\n\n@observer\nexport class OneOfSchema extends React.Component<SchemaProps> {\n render() {\n const {\n schema: { oneOf },\n schema,\n } = this.props;\n\n if (oneOf === undefined) {\n return null;\n }\n const activeSchema = oneOf[schema.activeOneOf];\n\n return (\n <div>\n <OneOfLabel> {schema.oneOfType} </OneOfLabel>\n <OneOfList>\n {oneOf.map((subSchema, idx) => (\n <OneOfButton key={subSchema.pointer} schema={schema} subSchema={subSchema} idx={idx} />\n ))}\n </OneOfList>\n <div>\n {oneOf[schema.activeOneOf].deprecated && <Badge type=\"warning\">Deprecated</Badge>}\n </div>\n <ConstraintsView constraints={activeSchema.constraints} />\n <Schema {...this.props} schema={activeSchema} />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport { RecursiveLabel, TypeName, TypeTitle } from '../../common-elements/fields';\nimport { l } from '../../services/Labels';\nimport type { SchemaProps } from '.';\n\nexport const RecursiveSchema = observer(({ schema }: SchemaProps) => {\n return (\n <div>\n <TypeName>{schema.displayType}</TypeName>\n {schema.title && <TypeTitle> {schema.title} </TypeTitle>}\n <RecursiveLabel> {l('recursive')} </RecursiveLabel>\n </div>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { FieldDetails } from '../Fields/FieldDetails';\n\nimport { FieldModel, SchemaModel } from '../../services/models';\n\nimport { ArraySchema } from './ArraySchema';\nimport { ObjectSchema } from './ObjectSchema';\nimport { OneOfSchema } from './OneOfSchema';\nimport { RecursiveSchema } from './RecursiveSchema';\n\nimport { isArray } from '../../utils/helpers';\n\nexport interface SchemaOptions {\n showTitle?: boolean;\n skipReadOnly?: boolean;\n skipWriteOnly?: boolean;\n level?: number;\n}\n\nexport interface SchemaProps extends SchemaOptions {\n schema: SchemaModel;\n}\n\n@observer\nexport class Schema extends React.Component<Partial<SchemaProps>> {\n render() {\n const { schema, ...rest } = this.props;\n const level = (rest.level || 0) + 1;\n\n if (!schema) {\n return <em> Schema not provided </em>;\n }\n const { type, oneOf, discriminatorProp, isCircular } = schema;\n\n if (isCircular) {\n return <RecursiveSchema schema={schema} />;\n }\n\n if (discriminatorProp !== undefined) {\n if (!oneOf || !oneOf.length) {\n console.warn(\n `Looks like you are using discriminator wrong: you don't have any definition inherited from the ${schema.title}`,\n );\n return null;\n }\n const activeSchema = oneOf[schema.activeOneOf];\n return activeSchema.isCircular ? (\n <RecursiveSchema schema={activeSchema} />\n ) : (\n <ObjectSchema\n {...rest}\n level={level}\n schema={activeSchema}\n discriminator={{\n fieldName: discriminatorProp,\n parentSchema: schema,\n }}\n />\n );\n }\n\n if (oneOf !== undefined) {\n return <OneOfSchema schema={schema} {...rest} />;\n }\n\n const types = isArray(type) ? type : [type];\n if (types.includes('object')) {\n if (schema.fields?.length) {\n return <ObjectSchema {...(this.props as any)} level={level} />;\n }\n } else if (types.includes('array')) {\n return <ArraySchema {...(this.props as any)} level={level} />;\n }\n\n // TODO: maybe adjust FieldDetails to accept schema\n const field = {\n schema,\n name: '',\n required: false,\n description: schema.description,\n externalDocs: schema.externalDocs,\n deprecated: false,\n toggle: () => null,\n expanded: false,\n } as any as FieldModel; // cast needed for hot-loader to not fail\n\n return (\n <div>\n <FieldDetails field={field} />\n </div>\n );\n }\n}\n","import * as React from 'react';\n\nimport { DarkRightPanel, MiddlePanel, MimeLabel, Row, Section } from '../../common-elements';\nimport { MediaTypeModel, OpenAPIParser, RedocNormalizedOptions } from '../../services';\nimport styled from '../../styled-components';\nimport { OpenAPIMediaType } from '../../types';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypeSamples } from '../PayloadSamples/MediaTypeSamples';\nimport { InvertedSimpleDropdown } from '../PayloadSamples/styled.elements';\nimport { Schema } from '../Schema';\n\nexport interface ObjectDescriptionProps {\n schemaRef: string;\n exampleRef?: string;\n showReadOnly?: boolean;\n showWriteOnly?: boolean;\n parser: OpenAPIParser;\n options: RedocNormalizedOptions;\n}\n\nexport class SchemaDefinition extends React.PureComponent<ObjectDescriptionProps> {\n private static getMediaType(schemaRef: string, exampleRef?: string): OpenAPIMediaType {\n if (!schemaRef) {\n return {};\n }\n\n const info: OpenAPIMediaType = {\n schema: { $ref: schemaRef },\n };\n\n if (exampleRef) {\n info.examples = { example: { $ref: exampleRef } };\n }\n\n return info;\n }\n\n private _mediaModel: MediaTypeModel;\n\n private get mediaModel() {\n const { parser, schemaRef, exampleRef, options } = this.props;\n if (!this._mediaModel) {\n this._mediaModel = new MediaTypeModel(\n parser,\n 'json',\n false,\n SchemaDefinition.getMediaType(schemaRef, exampleRef),\n options,\n );\n }\n\n return this._mediaModel;\n }\n\n render() {\n const { showReadOnly = true, showWriteOnly = false } = this.props;\n return (\n <Section>\n <Row>\n <MiddlePanel>\n <Schema\n skipWriteOnly={!showWriteOnly}\n skipReadOnly={!showReadOnly}\n schema={this.mediaModel.schema}\n />\n </MiddlePanel>\n <DarkRightPanel>\n <MediaSamplesWrap>\n <MediaTypeSamples renderDropdown={this.renderDropdown} mediaType={this.mediaModel} />\n </MediaSamplesWrap>\n </DarkRightPanel>\n </Row>\n </Section>\n );\n }\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n}\n\nconst MediaSamplesWrap = styled.div`\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n & > div,\n & > pre {\n padding: ${props => props.theme.spacing.unit * 4}px;\n margin: 0;\n }\n\n & > div > pre {\n padding: 0;\n }\n`;\n","import styled from 'styled-components';\nimport { linksCss } from '../Markdown/styled.elements';\nimport { media } from '../../styled-components';\nimport { UnderlinedHeader } from '../../common-elements';\n\nexport const Header = styled.div`\n background-color: #e4e7eb;\n`;\n\nexport const ScopeNameList = styled.ul`\n display: inline;\n list-style: none;\n padding: 0;\n\n li {\n display: inherit;\n\n &:after {\n content: ',';\n }\n &:last-child:after {\n content: none;\n }\n }\n`;\n\nexport const ScopeName = styled.code`\n font-size: ${props => props.theme.typography.code.fontSize};\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin: 0 3px;\n padding: 0.2em;\n display: inline-block;\n line-height: 1;\n\n &:after {\n content: ',';\n font-weight: normal;\n }\n\n &:last-child:after {\n content: none;\n }\n`;\n\nexport const SecurityRequirementAndWrap = styled.span`\n &:after {\n content: ' and ';\n font-weight: normal;\n }\n\n &:last-child:after {\n content: none;\n }\n\n ${linksCss};\n`;\n\nexport const SecurityRequirementOrWrap = styled.span<{ expanded?: boolean }>`\n ${p => !p.expanded && `white-space: nowrap;`}\n &:after {\n content: ' or ';\n ${p => p.expanded && `content: ' or \\\\a';`}\n white-space: pre;\n }\n\n &:last-child:after,\n &:only-child:after {\n content: none;\n }\n\n ${linksCss};\n`;\n\nexport const AuthHeaderColumn = styled.div`\n flex: 1 1 auto;\n cursor: pointer;\n`;\n\nexport const SecuritiesColumn = styled.div<{ expanded?: boolean }>`\n width: ${props => props.theme.schema.defaultDetailsWidth};\n text-overflow: ellipsis;\n border-radius: 4px;\n overflow: hidden;\n ${p =>\n p.expanded &&\n `background: ${p.theme.colors.gray['100']};\n padding: 8px 9.6px;\n margin: 20px 0;\n width: 100%;\n `};\n ${media.lessThan('small')`\n margin-top: 10px;\n `}\n`;\n\nexport const AuthHeader = styled(UnderlinedHeader)`\n display: inline-block;\n margin: 0;\n`;\n\nexport const Wrap = styled.div<{ expanded?: boolean }>`\n width: 100%;\n display: flex;\n margin: 1em 0;\n flex-direction: ${p => (p.expanded ? 'column' : 'row')};\n ${media.lessThan('small')`\n flex-direction: column;\n `}\n`;\n\nexport const SecurityRow = styled.div`\n margin: 0.5em 0;\n`;\n\nexport const SecurityDetailsStyle = styled.div`\n border-bottom: 1px solid ${({ theme }) => theme.colors.border.dark};\n margin-bottom: 1.5em;\n padding-bottom: 0.7em;\n\n h5 {\n line-height: 1em;\n margin: 0 0 0.6em;\n font-size: ${({ theme }) => theme.typography.fontSize};\n }\n\n .redoc-markdown p:first-child {\n display: inline;\n }\n`;\n","import * as React from 'react';\nimport styled from 'styled-components';\n\nconst TOLERANCE_PX = 20;\n\ninterface SeeMoreProps {\n children?: React.ReactNode;\n height: string;\n}\n\nexport function SeeMore({ children, height }: SeeMoreProps): JSX.Element {\n const ref = React.createRef() as React.RefObject<HTMLDivElement>;\n const [showMore, setShowMore] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n\n React.useEffect(() => {\n if (ref.current && ref.current.clientHeight + TOLERANCE_PX < ref.current.scrollHeight) {\n setShowLink(true);\n }\n }, [ref]);\n\n const onClickMore = () => {\n setShowMore(!showMore);\n };\n\n return (\n <>\n <Container\n ref={ref}\n className={showMore ? '' : 'container'}\n style={{ height: showMore ? 'auto' : height }}\n >\n {children}\n </Container>\n <ButtonContainer dimmed={!showMore}>\n {showLink && (\n <ButtonLinkStyled onClick={onClickMore}>\n {showMore ? 'See less' : 'See more'}\n </ButtonLinkStyled>\n )}\n </ButtonContainer>\n </>\n );\n}\n\nconst Container = styled.div`\n overflow-y: hidden;\n`;\n\nconst ButtonContainer = styled.div<{ dimmed?: boolean }>`\n text-align: center;\n line-height: 1.5em;\n ${({ dimmed }) =>\n dimmed &&\n `background-image: linear-gradient(to bottom, transparent,rgb(255 255 255));\n position: relative;\n top: -0.5em;\n padding-top: 0.5em;\n background-position-y: -1em;\n `}\n`;\n\nconst ButtonLinkStyled = styled.a`\n cursor: pointer;\n`;\n","import * as React from 'react';\nimport { OpenAPISecurityScheme } from '../../types';\nimport { SecurityRow } from './styled.elements';\nimport { SeeMore } from '../SeeMore/SeeMore';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface OAuthFlowProps {\n type: string;\n flow: OpenAPISecurityScheme['flows'][keyof OpenAPISecurityScheme['flows']];\n RequiredScopes?: JSX.Element;\n}\n\nexport function OAuthFlowComponent(props: OAuthFlowProps) {\n const { type, flow, RequiredScopes } = props;\n const scopesNames = Object.keys(flow?.scopes || {});\n\n return (\n <>\n <SecurityRow>\n <b>Flow type: </b>\n <code>{type} </code>\n </SecurityRow>\n {(type === 'implicit' || type === 'authorizationCode') && (\n <SecurityRow>\n <strong> Authorization URL: </strong>\n <code>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href={(flow as any).authorizationUrl}>\n {(flow as any).authorizationUrl}\n </a>\n </code>\n </SecurityRow>\n )}\n {(type === 'password' || type === 'clientCredentials' || type === 'authorizationCode') && (\n <SecurityRow>\n <b> Token URL: </b>\n <code>{(flow as any).tokenUrl}</code>\n </SecurityRow>\n )}\n {flow!.refreshUrl && (\n <SecurityRow>\n <strong> Refresh URL: </strong>\n {flow!.refreshUrl}\n </SecurityRow>\n )}\n {!!scopesNames.length && (\n <>\n {RequiredScopes || null}\n <SecurityRow>\n <b> Scopes: </b>\n </SecurityRow>\n <SeeMore height=\"4em\">\n <ul>\n {scopesNames.map(scope => (\n <li key={scope}>\n <code>{scope}</code> -{' '}\n <Markdown\n className={'redoc-markdown'}\n inline={true}\n source={flow!.scopes[scope] || ''}\n />\n </li>\n ))}\n </ul>\n </SeeMore>\n </>\n )}\n </>\n );\n}\n\nexport const OAuthFlow = React.memo<OAuthFlowProps>(OAuthFlowComponent);\n","import * as React from 'react';\nimport { SecuritySchemeModel } from '../../services';\nimport { titleize } from '../../utils';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport { SecurityRow } from './styled.elements';\nimport { OAuthFlow } from './OAuthFlow';\n\ninterface SecuritySchemaProps {\n RequiredScopes?: JSX.Element;\n scheme: SecuritySchemeModel;\n}\nexport function SecurityDetails(props: SecuritySchemaProps) {\n const { RequiredScopes, scheme } = props;\n\n return (\n <StyledMarkdownBlock>\n {scheme.apiKey ? (\n <>\n <SecurityRow>\n <b>{titleize(scheme.apiKey.in || '')} parameter name: </b>\n <code>{scheme.apiKey.name}</code>\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.http ? (\n <>\n <SecurityRow>\n <b>HTTP Authorization Scheme: </b>\n <code>{scheme.http.scheme}</code>\n </SecurityRow>\n <SecurityRow>\n {scheme.http.scheme === 'bearer' && scheme.http.bearerFormat && (\n <>\n <b>Bearer format: </b>\n <code>{scheme.http.bearerFormat}</code>\n </>\n )}\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.openId ? (\n <>\n <SecurityRow>\n <b>Connect URL: </b>\n <code>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href={scheme.openId.connectUrl}>\n {scheme.openId.connectUrl}\n </a>\n </code>\n </SecurityRow>\n {RequiredScopes}\n </>\n ) : scheme.flows ? (\n Object.keys(scheme.flows).map(type => (\n <OAuthFlow\n key={type}\n type={type}\n RequiredScopes={RequiredScopes}\n flow={scheme.flows[type]}\n />\n ))\n ) : null}\n </StyledMarkdownBlock>\n );\n}\n","import * as React from 'react';\n\nimport { SecuritySchemesModel } from '../../services';\nimport { H2, Row, ShareLink, MiddlePanel, Section } from '../../common-elements';\nimport { Markdown } from '../Markdown/Markdown';\nimport { SecurityDetails } from '../SecurityRequirement/SecurityDetails';\nimport { SecurityDetailsStyle, SecurityRow } from '../SecurityRequirement/styled.elements';\n\nexport const AUTH_TYPES = {\n oauth2: 'OAuth2',\n apiKey: 'API Key',\n http: 'HTTP',\n openIdConnect: 'OpenID Connect',\n};\n\nexport interface SecurityDefsProps {\n securitySchemes: SecuritySchemesModel;\n}\n\nexport class SecurityDefs extends React.PureComponent<SecurityDefsProps> {\n render() {\n return this.props.securitySchemes.schemes.map(scheme => (\n <Section id={scheme.sectionId} key={scheme.id}>\n <Row>\n <MiddlePanel>\n <H2>\n <ShareLink to={scheme.sectionId} />\n {scheme.displayName}\n </H2>\n <Markdown source={scheme.description || ''} />\n <SecurityDetailsStyle>\n <SecurityRow>\n <b>Security Scheme Type: </b>\n <span>{AUTH_TYPES[scheme.type] || scheme.type}</span>\n </SecurityRow>\n <SecurityDetails scheme={scheme} />\n </SecurityDetailsStyle>\n </MiddlePanel>\n </Row>\n </Section>\n ));\n }\n}\n","import { Lambda, observe } from 'mobx';\n\nimport type { OpenAPISpec } from '../types';\nimport { loadAndBundleSpec } from '../utils/loadAndBundleSpec';\nimport { history } from './HistoryService';\nimport { MarkerService } from './MarkerService';\nimport { MenuStore } from './MenuStore';\nimport { SpecStore } from './models';\nimport { RedocNormalizedOptions } from './RedocNormalizedOptions';\nimport type { RedocRawOptions } from './RedocNormalizedOptions';\nimport { ScrollService } from './ScrollService';\nimport { SearchStore } from './SearchStore';\n\nimport { SchemaDefinition } from '../components/SchemaDefinition/SchemaDefinition';\nimport { SecurityDefs } from '../components/SecuritySchemes/SecuritySchemes';\nimport {\n SCHEMA_DEFINITION_JSX_NAME,\n SECURITY_DEFINITIONS_JSX_NAME,\n OLD_SECURITY_DEFINITIONS_JSX_NAME,\n} from '../utils/openapi';\n\nimport { IS_BROWSER } from '../utils';\nimport type { StoreState } from './types';\n\nexport async function createStore(\n spec: object,\n specUrl: string | undefined,\n options: RedocRawOptions = {},\n) {\n const resolvedSpec = await loadAndBundleSpec(spec || specUrl);\n return new AppStore(resolvedSpec, specUrl, options);\n}\n\nexport class AppStore {\n /**\n * deserialize store\n * **SUPER HACKY AND NOT OPTIMAL IMPLEMENTATION**\n */\n // TODO:\n static fromJS(state: StoreState): AppStore {\n const inst = new AppStore(state.spec.data, state.spec.url, state.options, false);\n inst.menu.activeItemIdx = state.menu.activeItemIdx || 0;\n inst.menu.activate(inst.menu.flatItems[inst.menu.activeItemIdx]);\n if (!inst.options.disableSearch) {\n inst.search!.load(state.searchIndex);\n }\n return inst;\n }\n\n menu: MenuStore;\n spec: SpecStore;\n rawOptions: RedocRawOptions;\n options: RedocNormalizedOptions;\n search?: SearchStore<string>;\n marker = new MarkerService();\n\n private scroll: ScrollService;\n private disposer: Lambda | null = null;\n\n constructor(\n spec: OpenAPISpec,\n specUrl?: string,\n options: RedocRawOptions = {},\n createSearchIndex: boolean = true,\n ) {\n this.rawOptions = options;\n this.options = new RedocNormalizedOptions(options, DEFAULT_OPTIONS);\n this.scroll = new ScrollService(this.options);\n\n // update position statically based on hash (in case of SSR)\n MenuStore.updateOnHistory(history.currentId, this.scroll);\n\n this.spec = new SpecStore(spec, specUrl, this.options);\n this.menu = new MenuStore(this.spec, this.scroll, history);\n\n if (!this.options.disableSearch) {\n this.search = new SearchStore();\n if (createSearchIndex) {\n this.search.indexItems(this.menu.items);\n }\n\n this.disposer = observe(this.menu, 'activeItemIdx', change => {\n this.updateMarkOnMenu(change.newValue as number);\n });\n }\n }\n\n onDidMount() {\n this.menu.updateOnHistory();\n this.updateMarkOnMenu(this.menu.activeItemIdx);\n }\n\n dispose() {\n this.scroll.dispose();\n this.menu.dispose();\n if (this.search) {\n this.search.dispose();\n }\n if (this.disposer != null) {\n this.disposer();\n }\n }\n\n /**\n * serializes store\n * **SUPER HACKY AND NOT OPTIMAL IMPLEMENTATION**\n */\n // TODO: improve\n async toJS(): Promise<StoreState> {\n return {\n menu: {\n activeItemIdx: this.menu.activeItemIdx,\n },\n spec: {\n url: this.spec.parser.specUrl,\n data: this.spec.parser.spec,\n },\n searchIndex: this.search ? await this.search.toJS() : undefined,\n options: this.rawOptions,\n };\n }\n\n private updateMarkOnMenu(idx: number) {\n const start = Math.max(0, idx);\n const end = Math.min(this.menu.flatItems.length, start + 5);\n\n const elements: Element[] = [];\n for (let i = start; i < end; i++) {\n const elem = this.menu.getElementAt(i);\n if (!elem) {\n continue;\n }\n elements.push(elem);\n }\n\n if (idx === -1 && IS_BROWSER) {\n const $description = document.querySelector('[data-role=\"redoc-description\"]');\n const $summary = document.querySelector('[data-role=\"redoc-summary\"]');\n\n if ($description) elements.push($description);\n if ($summary) elements.push($summary);\n }\n\n this.marker.addOnly(elements);\n this.marker.mark();\n }\n}\n\nconst DEFAULT_OPTIONS: RedocRawOptions = {\n allowedMdComponents: {\n [SECURITY_DEFINITIONS_JSX_NAME]: {\n component: SecurityDefs,\n propsSelector: (store: AppStore) => ({\n securitySchemes: store.spec.securitySchemes,\n }),\n },\n [OLD_SECURITY_DEFINITIONS_JSX_NAME]: {\n component: SecurityDefs,\n propsSelector: (store: AppStore) => ({\n securitySchemes: store.spec.securitySchemes,\n }),\n },\n [SCHEMA_DEFINITION_JSX_NAME]: {\n component: SchemaDefinition,\n propsSelector: (store: AppStore) => ({\n parser: store.spec.parser,\n options: store.options,\n }),\n },\n },\n};\n","import { H1, MiddlePanel } from '../../common-elements';\nimport styled, { extensionsHook } from '../../styled-components';\n\nconst delimiterWidth = 15;\n\nexport const ApiInfoWrap = MiddlePanel;\n\nexport const ApiHeader = styled(H1)`\n margin-top: 0;\n margin-bottom: 0.5em;\n\n ${extensionsHook('ApiHeader')};\n`;\n\nexport const DownloadButton = styled.a`\n border: 1px solid ${props => props.theme.colors.primary.main};\n color: ${props => props.theme.colors.primary.main};\n font-weight: normal;\n margin-left: 0.5em;\n padding: 4px 8px 4px;\n display: inline-block;\n text-decoration: none;\n cursor: pointer;\n\n ${extensionsHook('DownloadButton')};\n`;\n\nexport const InfoSpan = styled.span`\n &::before {\n content: '|';\n display: inline-block;\n opacity: 0.5;\n width: ${delimiterWidth}px;\n text-align: center;\n }\n\n &:last-child::after {\n display: none;\n }\n`;\n\nexport const InfoSpanBoxWrap = styled.div`\n overflow: hidden;\n`;\n\nexport const InfoSpanBox = styled.div`\n display: flex;\n flex-wrap: wrap;\n // hide separator on new lines: idea from https://stackoverflow.com/a/31732902/1749888\n margin-left: -${delimiterWidth}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AppStore } from '../../services/AppStore';\n\nimport { MiddlePanel, Row, Section } from '../../common-elements/';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Markdown } from '../Markdown/Markdown';\nimport { StyledMarkdownBlock } from '../Markdown/styled.elements';\nimport {\n ApiHeader,\n DownloadButton,\n InfoSpan,\n InfoSpanBox,\n InfoSpanBoxWrap,\n} from './styled.elements';\nimport { l } from '../../services/Labels';\n\nexport interface ApiInfoProps {\n store: AppStore;\n}\n\n@observer\nexport class ApiInfo extends React.Component<ApiInfoProps> {\n handleDownloadClick = e => {\n if (!e.target.href) {\n e.target.href = this.props.store.spec.info.downloadLink;\n }\n };\n\n render() {\n const { store } = this.props;\n const { info, externalDocs } = store.spec;\n const hideDownloadButton = store.options.hideDownloadButton;\n\n const downloadFilename = info.downloadFileName;\n const downloadLink = info.downloadLink;\n\n const license =\n (info.license && (\n <InfoSpan>\n License:{' '}\n {info.license.identifier ? (\n info.license.identifier\n ) : (\n <a href={info.license.url}>{info.license.name}</a>\n )}\n </InfoSpan>\n )) ||\n null;\n\n const website =\n (info.contact && info.contact.url && (\n <InfoSpan>\n URL: <a href={info.contact.url}>{info.contact.url}</a>\n </InfoSpan>\n )) ||\n null;\n\n const email =\n (info.contact && info.contact.email && (\n <InfoSpan>\n {info.contact.name || 'E-mail'}:{' '}\n <a href={'mailto:' + info.contact.email}>{info.contact.email}</a>\n </InfoSpan>\n )) ||\n null;\n\n const terms =\n (info.termsOfService && (\n <InfoSpan>\n <a href={info.termsOfService}>Terms of Service</a>\n </InfoSpan>\n )) ||\n null;\n\n const version = (info.version && <span>({info.version})</span>) || null;\n\n return (\n <Section>\n <Row>\n <MiddlePanel className=\"api-info\">\n <ApiHeader>\n {info.title} {version}\n </ApiHeader>\n {!hideDownloadButton && (\n <p>\n {l('downloadSpecification')}:\n <DownloadButton\n download={downloadFilename || true}\n target=\"_blank\"\n href={downloadLink}\n onClick={this.handleDownloadClick}\n >\n {l('download')}\n </DownloadButton>\n </p>\n )}\n <StyledMarkdownBlock>\n {((info.license || info.contact || info.termsOfService) && (\n <InfoSpanBoxWrap>\n <InfoSpanBox>\n {email} {website} {license} {terms}\n </InfoSpanBox>\n </InfoSpanBoxWrap>\n )) ||\n null}\n </StyledMarkdownBlock>\n <Markdown source={store.spec.info.summary} data-role=\"redoc-summary\" />\n <Markdown source={store.spec.info.description} data-role=\"redoc-description\" />\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </MiddlePanel>\n </Row>\n </Section>\n );\n }\n}\n","import * as React from 'react';\nimport styled from '../../styled-components';\n\nexport const LogoImgEl = styled.img`\n max-height: ${props => props.theme.logo.maxHeight};\n max-width: ${props => props.theme.logo.maxWidth};\n padding: ${props => props.theme.logo.gutter};\n width: 100%;\n display: block;\n`;\n\nexport const LogoWrap = styled.div`\n text-align: center;\n`;\n\nconst Link = styled.a`\n display: inline-block;\n`;\n\n// eslint-disable-next-line react/display-name\nexport const LinkWrap = url => Component => <Link href={url}>{Component}</Link>;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { OpenAPIInfo } from '../../types';\nimport { LinkWrap, LogoImgEl, LogoWrap } from './styled.elements';\n\n@observer\nexport class ApiLogo extends React.Component<{ info: OpenAPIInfo }> {\n render() {\n const { info } = this.props;\n const logoInfo = info['x-logo'];\n if (!logoInfo || !logoInfo.url) {\n return null;\n }\n\n const logoHref = logoInfo.href || (info.contact && info.contact.url);\n\n // Use the english word logo if no alt text is provided\n const altText = logoInfo.altText ? logoInfo.altText : 'logo';\n\n const logo = <LogoImgEl src={logoInfo.url} alt={altText} />;\n return (\n <LogoWrap style={{ backgroundColor: logoInfo.backgroundColor }}>\n {logoHref ? LinkWrap(logoHref)(logo) : logo}\n </LogoWrap>\n );\n }\n}\n","import * as React from 'react';\n\nimport { AppStore, MarkdownRenderer, RedocNormalizedOptions } from '../../services';\nimport { BaseMarkdownProps } from './Markdown';\nimport { SanitizedMarkdownHTML } from './SanitizedMdBlock';\n\nimport { OptionsConsumer } from '../OptionsProvider';\nimport { StoreConsumer } from '../StoreBuilder';\n\nexport interface AdvancedMarkdownProps extends BaseMarkdownProps {\n htmlWrap?: (part: JSX.Element) => JSX.Element;\n parentId?: string;\n}\n\nexport class AdvancedMarkdown extends React.Component<AdvancedMarkdownProps> {\n render() {\n return (\n <OptionsConsumer>\n {options => (\n <StoreConsumer>{store => this.renderWithOptionsAndStore(options, store)}</StoreConsumer>\n )}\n </OptionsConsumer>\n );\n }\n\n renderWithOptionsAndStore(options: RedocNormalizedOptions, store?: AppStore) {\n const { source, htmlWrap = i => i } = this.props;\n if (!store) {\n throw new Error('When using components in markdown, store prop must be provided');\n }\n\n const renderer = new MarkdownRenderer(options, this.props.parentId);\n const parts = renderer.renderMdWithComponents(source);\n\n if (!parts.length) {\n return null;\n }\n\n return parts.map((part, idx) => {\n if (typeof part === 'string') {\n return React.cloneElement(\n htmlWrap(<SanitizedMarkdownHTML html={part} inline={false} compact={false} />),\n { key: idx },\n );\n }\n const PartComponent = part.component as React.FunctionComponent;\n return <PartComponent key={idx} {...{ ...part.props, ...part.propsSelector(store) }} />;\n });\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"classnames\");","import { default as classnames } from 'classnames';\nimport { darken } from 'polished';\n\nimport { deprecatedCss, ShelfIcon } from '../../common-elements';\nimport styled, { css, media, ResolvedThemeInterface } from '../../styled-components';\n\nexport const OperationBadge = styled.span.attrs((props: { type: string }) => ({\n className: `operation-type ${props.type}`,\n}))<{ type: string }>`\n width: 9ex;\n display: inline-block;\n height: ${props => props.theme.typography.code.fontSize};\n line-height: ${props => props.theme.typography.code.fontSize};\n background-color: #333;\n border-radius: 3px;\n background-repeat: no-repeat;\n background-position: 6px 4px;\n font-size: 7px;\n font-family: Verdana, sans-serif; // web-safe\n color: white;\n text-transform: uppercase;\n text-align: center;\n font-weight: bold;\n vertical-align: middle;\n margin-right: 6px;\n margin-top: 2px;\n\n &.get {\n background-color: ${props => props.theme.colors.http.get};\n }\n\n &.post {\n background-color: ${props => props.theme.colors.http.post};\n }\n\n &.put {\n background-color: ${props => props.theme.colors.http.put};\n }\n\n &.options {\n background-color: ${props => props.theme.colors.http.options};\n }\n\n &.patch {\n background-color: ${props => props.theme.colors.http.patch};\n }\n\n &.delete {\n background-color: ${props => props.theme.colors.http.delete};\n }\n\n &.basic {\n background-color: ${props => props.theme.colors.http.basic};\n }\n\n &.link {\n background-color: ${props => props.theme.colors.http.link};\n }\n\n &.head {\n background-color: ${props => props.theme.colors.http.head};\n }\n\n &.hook {\n background-color: ${props => props.theme.colors.primary.main};\n }\n`;\n\nfunction menuItemActive(\n depth,\n { theme }: { theme: ResolvedThemeInterface },\n option: string,\n): string {\n if (depth > 1) {\n return theme.sidebar.level1Items[option];\n } else if (depth === 1) {\n return theme.sidebar.groupItems[option];\n } else {\n return '';\n }\n}\n\nexport const MenuItemUl = styled.ul<{ expanded: boolean }>`\n margin: 0;\n padding: 0;\n\n &:first-child {\n padding-bottom: 32px;\n }\n\n & & {\n font-size: 0.929em;\n }\n\n ${props => (props.expanded ? '' : 'display: none;')};\n`;\n\nexport const MenuItemLi = styled.li<{ depth: number }>`\n list-style: none inside none;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n ${props => (props.depth === 0 ? 'margin-top: 15px' : '')};\n`;\n\nexport const menuItemDepth = {\n 0: css`\n opacity: 0.7;\n text-transform: ${({ theme }) => theme.sidebar.groupItems.textTransform};\n font-size: 0.8em;\n padding-bottom: 0;\n cursor: default;\n `,\n 1: css`\n font-size: 0.929em;\n text-transform: ${({ theme }) => theme.sidebar.level1Items.textTransform};\n `,\n};\n\nexport interface MenuItemLabelType {\n depth: number;\n active: boolean;\n deprecated?: boolean;\n type?: string;\n}\n\nexport const MenuItemLabel = styled.label.attrs((props: MenuItemLabelType) => ({\n role: 'menuitem',\n className: classnames('-depth' + props.depth, {\n active: props.active,\n }),\n}))<MenuItemLabelType>`\n cursor: pointer;\n color: ${props =>\n props.active\n ? menuItemActive(props.depth, props, 'activeTextColor')\n : props.theme.sidebar.textColor};\n margin: 0;\n padding: 12.5px ${props => props.theme.spacing.unit * 4}px;\n ${({ depth, type, theme }) =>\n (type === 'section' && depth > 1 && 'padding-left: ' + theme.spacing.unit * 8 + 'px;') || ''}\n display: flex;\n justify-content: space-between;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n ${props => menuItemDepth[props.depth]};\n background-color: ${props =>\n props.active\n ? menuItemActive(props.depth, props, 'activeBackgroundColor')\n : props.theme.sidebar.backgroundColor};\n\n ${props => (props.deprecated && deprecatedCss) || ''};\n\n &:hover {\n color: ${props => menuItemActive(props.depth, props, 'activeTextColor')};\n background-color: ${props => menuItemActive(props.depth, props, 'activeBackgroundColor')};\n }\n\n ${ShelfIcon} {\n height: ${({ theme }) => theme.sidebar.arrow.size};\n width: ${({ theme }) => theme.sidebar.arrow.size};\n polygon {\n fill: ${({ theme }) => theme.sidebar.arrow.color};\n }\n }\n`;\n\nexport const MenuItemTitle = styled.span<{ width?: string }>`\n display: inline-block;\n vertical-align: middle;\n width: ${props => (props.width ? props.width : 'auto')};\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const RedocAttribution = styled.div`\n ${({ theme }) => css`\n font-size: 0.8em;\n margin-top: ${theme.spacing.unit * 2}px;\n text-align: center;\n position: fixed;\n width: ${theme.sidebar.width};\n bottom: 0;\n background: ${theme.sidebar.backgroundColor};\n\n a,\n a:visited,\n a:hover {\n color: ${theme.sidebar.textColor} !important;\n padding: ${theme.spacing.unit}px 0;\n border-top: 1px solid ${darken(0.1, theme.sidebar.backgroundColor)};\n text-decoration: none;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n `};\n img {\n width: 15px;\n margin-right: 5px;\n }\n\n ${media.lessThan('small')`\n width: 100%;\n `};\n`;\n","import * as React from 'react';\n\nimport { darken } from 'polished';\nimport { ShelfIcon } from '../../common-elements';\nimport { OperationBadge } from '../SideMenu/styled.elements';\nimport { shortenHTTPVerb } from '../../utils/openapi';\nimport styled from '../../styled-components';\nimport { Badge } from '../../common-elements/';\nimport { l } from '../../services/Labels';\n\nexport interface CallbackTitleProps {\n name: string;\n opened?: boolean;\n httpVerb: string;\n deprecated?: boolean;\n className?: string;\n onClick?: () => void;\n}\n\nexport const CallbackTitle = (props: CallbackTitleProps) => {\n const { name, opened, className, onClick, httpVerb, deprecated } = props;\n\n return (\n <CallbackTitleWrapper className={className} onClick={onClick || undefined}>\n <OperationBadgeStyled type={httpVerb}>{shortenHTTPVerb(httpVerb)}</OperationBadgeStyled>\n <ShelfIcon size={'1.5em'} direction={opened ? 'down' : 'right'} float={'left'} />\n <CallbackName deprecated={deprecated}>{name}</CallbackName>\n {deprecated ? <Badge type=\"warning\"> {l('deprecated')} </Badge> : null}\n </CallbackTitleWrapper>\n );\n};\n\nconst CallbackTitleWrapper = styled.button`\n border: 0;\n width: 100%;\n text-align: left;\n & > * {\n vertical-align: middle;\n }\n\n ${ShelfIcon} {\n polygon {\n fill: ${({ theme }) => darken(theme.colors.tonalOffset, theme.colors.gray[100])};\n }\n }\n`;\n\nconst CallbackName = styled.span<{ deprecated?: boolean }>`\n text-decoration: ${props => (props.deprecated ? 'line-through' : 'none')};\n margin-right: 8px;\n`;\n\nconst OperationBadgeStyled = styled(OperationBadge)`\n margin: 0 5px 0 0;\n`;\n","import styled from '../../styled-components';\nimport { CallbackTitle } from './CallbackTitle';\nimport { darken } from 'polished';\n\nexport const StyledCallbackTitle = styled(CallbackTitle)`\n padding: 10px;\n border-radius: 2px;\n margin-bottom: 4px;\n line-height: 1.5em;\n background-color: ${({ theme }) => theme.colors.gray[100]};\n cursor: pointer;\n outline-color: ${({ theme }) => darken(theme.colors.tonalOffset, theme.colors.gray[100])};\n`;\n\nexport const CallbackDetailsWrap = styled.div`\n padding: 10px 25px;\n background-color: ${({ theme }) => theme.colors.gray[50]};\n margin-bottom: 5px;\n margin-top: 5px;\n`;\n","import * as React from 'react';\n\nimport { ClipboardService } from '../../services';\n\nexport class SelectOnClick extends React.PureComponent {\n private child: HTMLDivElement | null;\n selectElement = () => {\n ClipboardService.selectElement(this.child);\n };\n\n render() {\n const { children } = this.props;\n return (\n <div\n ref={el => (this.child = el)}\n onClick={this.selectElement}\n onFocus={this.selectElement}\n tabIndex={0}\n role=\"button\"\n >\n {children}\n </div>\n );\n }\n}\n","import styled from '../../styled-components';\n\nexport const OperationEndpointWrap = styled.div`\n cursor: pointer;\n position: relative;\n margin-bottom: 5px;\n`;\n\nexport const ServerRelativeURL = styled.span`\n font-family: ${props => props.theme.typography.code.fontFamily};\n margin-left: 10px;\n flex: 1;\n overflow-x: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const EndpointInfo = styled.button<{ expanded?: boolean; inverted?: boolean }>`\n outline: 0;\n color: inherit;\n width: 100%;\n text-align: left;\n cursor: pointer;\n padding: 10px 30px 10px ${props => (props.inverted ? '10px' : '20px')};\n border-radius: ${props => (props.inverted ? '0' : '4px 4px 0 0')};\n background-color: ${props =>\n props.inverted ? 'transparent' : props.theme.codeBlock.backgroundColor};\n display: flex;\n white-space: nowrap;\n align-items: center;\n border: ${props => (props.inverted ? '0' : '1px solid transparent')};\n border-bottom: ${props => (props.inverted ? '1px solid #ccc' : '0')};\n transition: border-color 0.25s ease;\n\n ${props =>\n (props.expanded && !props.inverted && `border-color: ${props.theme.colors.border.dark};`) || ''}\n\n .${ServerRelativeURL} {\n color: ${props => (props.inverted ? props.theme.colors.text.primary : '#ffffff')};\n }\n &:focus {\n box-shadow: inset 0 2px 2px rgba(0, 0, 0, 0.45), 0 2px 0 rgba(128, 128, 128, 0.25);\n }\n`;\n\nexport const HttpVerb = styled.span.attrs((props: { type: string; compact?: boolean }) => ({\n className: `http-verb ${props.type}`,\n}))<{ type: string; compact?: boolean }>`\n font-size: ${props => (props.compact ? '0.8em' : '0.929em')};\n line-height: ${props => (props.compact ? '18px' : '20px')};\n background-color: ${props => props.theme.colors.http[props.type] || '#999999'};\n color: #ffffff;\n padding: ${props => (props.compact ? '2px 8px' : '3px 10px')};\n text-transform: uppercase;\n font-family: ${props => props.theme.typography.headings.fontFamily};\n margin: 0;\n`;\n\nexport const ServersOverlay = styled.div<{ expanded: boolean }>`\n position: absolute;\n width: 100%;\n z-index: 100;\n background: ${props => props.theme.rightPanel.servers.overlay.backgroundColor};\n color: ${props => props.theme.rightPanel.servers.overlay.textColor};\n box-sizing: border-box;\n box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.33);\n overflow: hidden;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n transition: all 0.25s ease;\n visibility: hidden;\n ${props => (props.expanded ? 'visibility: visible;' : 'transform: translateY(-50%) scaleY(0);')}\n`;\n\nexport const ServerItem = styled.div`\n padding: 10px;\n`;\n\nexport const ServerUrl = styled.div`\n padding: 5px;\n border: 1px solid #ccc;\n background: ${props => props.theme.rightPanel.servers.url.backgroundColor};\n word-break: break-all;\n color: ${props => props.theme.colors.primary.main};\n > span {\n color: ${props => props.theme.colors.text.primary};\n }\n`;\n","import * as React from 'react';\nimport { ShelfIcon } from '../../common-elements';\nimport { OperationModel } from '../../services';\nimport { Markdown } from '../Markdown/Markdown';\nimport { OptionsContext } from '../OptionsProvider';\nimport { SelectOnClick } from '../SelectOnClick/SelectOnClick';\n\nimport { expandDefaultServerVariables, getBasePath } from '../../utils';\nimport {\n EndpointInfo,\n HttpVerb,\n OperationEndpointWrap,\n ServerItem,\n ServerRelativeURL,\n ServersOverlay,\n ServerUrl,\n} from './styled.elements';\n\nexport interface EndpointProps {\n operation: OperationModel;\n\n hideHostname?: boolean;\n inverted?: boolean;\n compact?: boolean;\n}\n\nexport interface EndpointState {\n expanded: boolean;\n}\n\nexport class Endpoint extends React.Component<EndpointProps, EndpointState> {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n }\n\n toggle = () => {\n this.setState({ expanded: !this.state.expanded });\n };\n\n render() {\n const { operation, inverted, hideHostname } = this.props;\n const { expanded } = this.state;\n\n // TODO: highlight server variables, e.g. https://{user}.test.com\n return (\n <OptionsContext.Consumer>\n {options => (\n <OperationEndpointWrap>\n <EndpointInfo onClick={this.toggle} expanded={expanded} inverted={inverted}>\n <HttpVerb type={operation.httpVerb} compact={this.props.compact}>\n {operation.httpVerb}\n </HttpVerb>\n <ServerRelativeURL>{operation.path}</ServerRelativeURL>\n <ShelfIcon\n float={'right'}\n color={inverted ? 'black' : 'white'}\n size={'20px'}\n direction={expanded ? 'up' : 'down'}\n style={{ marginRight: '-25px' }}\n />\n </EndpointInfo>\n <ServersOverlay expanded={expanded} aria-hidden={!expanded}>\n {operation.servers.map(server => {\n const normalizedUrl = options.expandDefaultServerVariables\n ? expandDefaultServerVariables(server.url, server.variables)\n : server.url;\n const basePath = getBasePath(normalizedUrl);\n return (\n <ServerItem key={normalizedUrl}>\n <Markdown source={server.description || ''} compact={true} />\n <SelectOnClick>\n <ServerUrl>\n <span>\n {hideHostname || options.hideHostname\n ? basePath === '/'\n ? ''\n : basePath\n : normalizedUrl}\n </span>\n {operation.path}\n </ServerUrl>\n </SelectOnClick>\n </ServerItem>\n );\n })}\n </ServersOverlay>\n </OperationEndpointWrap>\n )}\n </OptionsContext.Consumer>\n );\n }\n}\n","import * as React from 'react';\n\nimport { UnderlinedHeader } from '../../common-elements';\nimport { PropertiesTable } from '../../common-elements/fields-layout';\n\nimport { FieldModel } from '../../services/models';\nimport { Field } from '../Fields/Field';\n\nimport { mapWithLast } from '../../utils';\n\nexport interface ParametersGroupProps {\n place: string;\n parameters: FieldModel[];\n}\n\nexport class ParametersGroup extends React.PureComponent<ParametersGroupProps, any> {\n render() {\n const { place, parameters } = this.props;\n if (!parameters || !parameters.length) {\n return null;\n }\n\n return (\n <div key={place}>\n <UnderlinedHeader>{place} Parameters</UnderlinedHeader>\n <PropertiesTable>\n <tbody>\n {mapWithLast(parameters, (field, isLast) => (\n <Field key={field.name} isLast={isLast} field={field} showExamples={true} />\n ))}\n </tbody>\n </PropertiesTable>\n </div>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownOption, DropdownProps } from '../../common-elements/Dropdown';\nimport { MediaContentModel, MediaTypeModel, SchemaModel } from '../../services/models';\nimport { DropdownLabel, DropdownWrapper } from '../PayloadSamples/styled.elements';\n\nexport interface MediaTypeChildProps {\n schema: SchemaModel;\n mime?: string;\n}\n\nexport interface MediaTypesSwitchProps {\n content?: MediaContentModel;\n withLabel?: boolean;\n\n renderDropdown: (props: DropdownProps) => JSX.Element;\n children: (activeMime: MediaTypeModel) => JSX.Element;\n}\n\n@observer\nexport class MediaTypesSwitch extends React.Component<MediaTypesSwitchProps> {\n switchMedia = ({ idx }: DropdownOption) => {\n if (this.props.content && idx !== undefined) {\n this.props.content.activate(idx);\n }\n };\n\n render() {\n const { content } = this.props;\n if (!content || !content.mediaTypes || !content.mediaTypes.length) {\n return null;\n }\n const activeMimeIdx = content.activeMimeIdx;\n\n const options = content.mediaTypes.map((mime, idx) => {\n return {\n value: mime.name,\n idx,\n };\n });\n\n const Wrapper = ({ children }) =>\n this.props.withLabel ? (\n <DropdownWrapper>\n <DropdownLabel>Content type</DropdownLabel>\n {children}\n </DropdownWrapper>\n ) : (\n children\n );\n\n return (\n <>\n <Wrapper>\n {this.props.renderDropdown({\n value: options[activeMimeIdx].value,\n options,\n onChange: this.switchMedia,\n ariaLabel: 'Content type',\n })}\n </Wrapper>\n {this.props.children(content.active)}\n </>\n );\n }\n}\n","import * as React from 'react';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { ParametersGroup } from './ParametersGroup';\n\nimport { UnderlinedHeader } from '../../common-elements';\n\nimport { MediaContentModel } from '../../services';\nimport { FieldModel, RequestBodyModel } from '../../services/models';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { Schema } from '../Schema';\n\nimport { Markdown } from '../Markdown/Markdown';\nimport { ConstraintsView } from '../Fields/FieldContstraints';\n\nfunction safePush(obj, prop, item) {\n if (!obj[prop]) {\n obj[prop] = [];\n }\n obj[prop].push(item);\n}\n\nexport interface ParametersProps {\n parameters?: FieldModel[];\n body?: RequestBodyModel;\n}\n\nconst PARAM_PLACES = ['path', 'query', 'cookie', 'header'];\n\nexport class Parameters extends React.PureComponent<ParametersProps> {\n orderParams(params: FieldModel[]): Record<string, FieldModel[]> {\n const res = {};\n params.forEach(param => {\n safePush(res, param.in, param);\n });\n return res;\n }\n\n render() {\n const { body, parameters = [] } = this.props;\n if (body === undefined && parameters === undefined) {\n return null;\n }\n\n const paramsMap = this.orderParams(parameters);\n\n const paramsPlaces = parameters.length > 0 ? PARAM_PLACES : [];\n\n const bodyContent = body && body.content;\n\n const bodyDescription = body && body.description;\n\n return (\n <>\n {paramsPlaces.map(place => (\n <ParametersGroup key={place} place={place} parameters={paramsMap[place]} />\n ))}\n {bodyContent && <BodyContent content={bodyContent} description={bodyDescription} />}\n </>\n );\n }\n}\n\nfunction DropdownWithinHeader(props) {\n return (\n <UnderlinedHeader key=\"header\">\n Request Body schema: <DropdownOrLabel {...props} />\n </UnderlinedHeader>\n );\n}\n\nexport function BodyContent(props: {\n content: MediaContentModel;\n description?: string;\n}): JSX.Element {\n const { content, description } = props;\n const { isRequestType } = content;\n return (\n <MediaTypesSwitch content={content} renderDropdown={DropdownWithinHeader}>\n {({ schema }) => {\n return (\n <>\n {description !== undefined && <Markdown source={description} />}\n {schema?.type === 'object' && (\n <ConstraintsView constraints={schema?.constraints || []} />\n )}\n <Schema\n skipReadOnly={isRequestType}\n skipWriteOnly={!isRequestType}\n key=\"schema\"\n schema={schema}\n />\n </>\n );\n }}\n </MediaTypesSwitch>\n );\n}\n","import * as React from 'react';\n\nimport { Code } from './styled.elements';\nimport { ShelfIcon } from '../../common-elements';\nimport { Markdown } from '../Markdown/Markdown';\n\nexport interface ResponseTitleProps {\n code: string;\n title: string;\n type: string;\n empty?: boolean;\n opened?: boolean;\n className?: string;\n onClick?: () => void;\n}\n\nfunction ResponseTitleComponent({\n title,\n type,\n empty,\n code,\n opened,\n className,\n onClick,\n}: ResponseTitleProps): React.ReactElement {\n return (\n <button\n className={className}\n onClick={(!empty && onClick) || undefined}\n aria-expanded={opened}\n disabled={empty}\n >\n {!empty && (\n <ShelfIcon\n size={'1.5em'}\n color={type}\n direction={opened ? 'down' : 'right'}\n float={'left'}\n />\n )}\n <Code>{code} </Code>\n <Markdown compact={true} inline={true} source={title} />\n </button>\n );\n}\n\nexport const ResponseTitle = React.memo<ResponseTitleProps>(ResponseTitleComponent);\n","import { UnderlinedHeader } from '../../common-elements';\nimport styled from '../../styled-components';\nimport { ResponseTitle } from './ResponseTitle';\n\nexport const StyledResponseTitle = styled(ResponseTitle)`\n display: block;\n border: 0;\n width: 100%;\n text-align: left;\n padding: 10px;\n border-radius: 2px;\n margin-bottom: 4px;\n line-height: 1.5em;\n cursor: pointer;\n\n color: ${props => props.theme.colors.responses[props.type].color};\n background-color: ${props => props.theme.colors.responses[props.type].backgroundColor};\n &:focus {\n outline: auto ${props => props.theme.colors.responses[props.type].color};\n }\n ${props =>\n (props.empty &&\n `\ncursor: default;\n&::before {\n content: \"—\";\n font-weight: bold;\n width: 1.5em;\n text-align: center;\n display: inline-block;\n vertical-align: top;\n}\n&:focus {\n outline: 0;\n}\n`) ||\n ''};\n`;\n\nexport const ResponseDetailsWrap = styled.div`\n padding: 10px;\n`;\n\nexport const HeadersCaption = styled(UnderlinedHeader.withComponent('caption'))`\n text-align: left;\n margin-top: 1em;\n caption-side: top;\n`;\n\nexport const Code = styled.strong`\n vertical-align: top;\n`;\n","import * as React from 'react';\nimport { PropertiesTable } from '../../common-elements/fields-layout';\n\nimport { FieldModel } from '../../services/models';\nimport { mapWithLast } from '../../utils';\nimport { Field } from '../Fields/Field';\nimport { HeadersCaption } from './styled.elements';\n\nexport interface ResponseHeadersProps {\n headers?: FieldModel[];\n}\n\nexport class ResponseHeaders extends React.PureComponent<ResponseHeadersProps> {\n render() {\n const { headers } = this.props;\n if (headers === undefined || headers.length === 0) {\n return null;\n }\n return (\n <PropertiesTable>\n <HeadersCaption> Response Headers </HeadersCaption>\n <tbody>\n {mapWithLast(headers, (header, isLast) => (\n <Field isLast={isLast} key={header.name} field={header} showExamples={true} />\n ))}\n </tbody>\n </PropertiesTable>\n );\n }\n}\n","import * as React from 'react';\n\nimport { ResponseModel } from '../../services/models';\n\nimport { UnderlinedHeader } from '../../common-elements';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { Schema } from '../Schema';\n\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { ResponseHeaders } from './ResponseHeaders';\nimport { ConstraintsView } from '../Fields/FieldContstraints';\n\nexport class ResponseDetails extends React.PureComponent<{ response: ResponseModel }> {\n render() {\n const { description, extensions, headers, content } = this.props.response;\n return (\n <>\n {description && <Markdown source={description} />}\n <Extensions extensions={extensions} />\n <ResponseHeaders headers={headers} />\n <MediaTypesSwitch content={content} renderDropdown={this.renderDropdown}>\n {({ schema }) => {\n return (\n <>\n {schema?.type === 'object' && (\n <ConstraintsView constraints={schema?.constraints || []} />\n )}\n <Schema skipWriteOnly={true} key=\"schema\" schema={schema} />\n </>\n );\n }}\n </MediaTypesSwitch>\n </>\n );\n }\n\n private renderDropdown = props => {\n return (\n <UnderlinedHeader key=\"header\">\n Response Schema: <DropdownOrLabel {...props} />\n </UnderlinedHeader>\n );\n };\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\n\nimport type { ResponseModel, MediaTypeModel } from '../../services/models';\nimport { ResponseDetails } from './ResponseDetails';\nimport { ResponseDetailsWrap, StyledResponseTitle } from './styled.elements';\n\nexport interface ResponseViewProps {\n response: ResponseModel;\n}\n\nexport const ResponseView = observer(({ response }: ResponseViewProps): React.ReactElement => {\n const { extensions, headers, type, summary, description, code, expanded, content } = response;\n\n const mimes = React.useMemo<MediaTypeModel[]>(\n () =>\n content === undefined ? [] : content.mediaTypes.filter(mime => mime.schema !== undefined),\n [content],\n );\n\n const empty = React.useMemo<boolean>(\n () =>\n (!extensions || Object.keys(extensions).length === 0) &&\n headers.length === 0 &&\n mimes.length === 0 &&\n !description,\n [extensions, headers, mimes, description],\n );\n\n return (\n <div>\n <StyledResponseTitle\n onClick={() => response.toggle()}\n type={type}\n empty={empty}\n title={summary || ''}\n code={code}\n opened={expanded}\n />\n {expanded && !empty && (\n <ResponseDetailsWrap>\n <ResponseDetails response={response} />\n </ResponseDetailsWrap>\n )}\n </div>\n );\n});\n","import * as React from 'react';\nimport { l } from '../../services/Labels';\nimport { ResponseModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { ResponseView } from './Response';\n\nconst ResponsesHeader = styled.h3`\n font-size: 1.3em;\n padding: 0.2em 0;\n margin: 3em 0 1.1em;\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: normal;\n`;\n\nexport interface ResponseListProps {\n responses: ResponseModel[];\n isCallback?: boolean;\n}\n\nexport class ResponsesList extends React.PureComponent<ResponseListProps> {\n render() {\n const { responses, isCallback } = this.props;\n\n if (!responses || responses.length === 0) {\n return null;\n }\n\n return (\n <div>\n <ResponsesHeader>{isCallback ? l('callbackResponses') : l('responses')}</ResponsesHeader>\n {responses.map(response => {\n return <ResponseView key={response.code} response={response} />;\n })}\n </div>\n );\n }\n}\n","import { SecurityRequirementModel } from '../../services/models/SecurityRequirement';\nimport {\n ScopeName,\n SecurityRequirementAndWrap,\n SecurityRequirementOrWrap,\n} from './styled.elements';\nimport * as React from 'react';\nimport { AUTH_TYPES } from '../SecuritySchemes/SecuritySchemes';\n\nexport interface SecurityRequirementProps {\n security: SecurityRequirementModel;\n showSecuritySchemeType?: boolean;\n expanded: boolean;\n}\n\nexport function SecurityHeader(props: SecurityRequirementProps) {\n const { security, showSecuritySchemeType, expanded } = props;\n\n const grouping = security.schemes.length > 1;\n if (security.schemes.length === 0)\n return <SecurityRequirementOrWrap expanded={expanded}>None</SecurityRequirementOrWrap>;\n return (\n <SecurityRequirementOrWrap expanded={expanded}>\n {grouping && '('}\n {security.schemes.map(scheme => {\n return (\n <SecurityRequirementAndWrap key={scheme.id}>\n {showSecuritySchemeType && `${AUTH_TYPES[scheme.type] || scheme.type}: `}\n <i>{scheme.displayName}</i>\n {expanded && scheme.scopes.length\n ? [\n ' (',\n scheme.scopes.map<React.ReactNode>(scope => (\n <ScopeName key={scope}>{scope}</ScopeName>\n )),\n ') ',\n ]\n : null}\n </SecurityRequirementAndWrap>\n );\n })}\n {grouping && ') '}\n </SecurityRequirementOrWrap>\n );\n}\n","import * as React from 'react';\n\nexport const RequiredScopesRow = ({ scopes }: { scopes: string[] }): JSX.Element | null => {\n if (!scopes.length) return null;\n\n return (\n <div>\n <b>Required scopes: </b>\n {scopes.map((scope, idx) => {\n return (\n <React.Fragment key={idx}>\n <code>{scope}</code>{' '}\n </React.Fragment>\n );\n })}\n </div>\n );\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { SecurityRequirementModel } from '../../services/models/SecurityRequirement';\nimport {\n AuthHeader,\n AuthHeaderColumn,\n SecuritiesColumn,\n SecurityDetailsStyle,\n Wrap,\n} from './styled.elements';\nimport { useStore } from '../StoreBuilder';\nimport { SecurityHeader } from './SecurityHeader';\nimport { RequiredScopesRow } from './RequiredScopesRow';\nimport { AUTH_TYPES } from '../SecuritySchemes/SecuritySchemes';\nimport { Markdown } from '../Markdown/Markdown';\nimport { SecurityDetails } from './SecurityDetails';\nimport { ShelfIcon } from '../../common-elements';\n\nexport interface SecurityRequirementsProps {\n securities: SecurityRequirementModel[];\n}\n\nexport function SecurityRequirements(props: SecurityRequirementsProps) {\n const store = useStore();\n const showSecuritySchemeType = store?.options.showSecuritySchemeType;\n const [expanded, setExpanded] = useState(false);\n\n const { securities } = props;\n\n if (!securities?.length || store?.options.hideSecuritySection) {\n return null;\n }\n\n const operationSecuritySchemes = store?.spec.securitySchemes.schemes.filter(({ id }) => {\n return securities.find(security => security.schemes.find(scheme => scheme.id === id));\n });\n\n return (\n <>\n <Wrap expanded={expanded}>\n <AuthHeaderColumn onClick={() => setExpanded(!expanded)}>\n <AuthHeader>Authorizations:</AuthHeader>\n <ShelfIcon size={'1.3em'} direction={expanded ? 'down' : 'right'} />\n </AuthHeaderColumn>\n <SecuritiesColumn expanded={expanded}>\n {securities.map((security, idx) => (\n <SecurityHeader\n key={idx}\n expanded={expanded}\n showSecuritySchemeType={showSecuritySchemeType}\n security={security}\n />\n ))}\n </SecuritiesColumn>\n </Wrap>\n {expanded &&\n operationSecuritySchemes?.length &&\n operationSecuritySchemes.map((scheme, idx) => (\n <SecurityDetailsStyle key={idx}>\n <h5>\n <LockIcon /> {AUTH_TYPES[scheme.type] || scheme.type}: {scheme.id}\n </h5>\n <Markdown source={scheme.description || ''} />\n <SecurityDetails\n key={scheme.id}\n scheme={scheme}\n RequiredScopes={\n <RequiredScopesRow scopes={getRequiredScopes(scheme.id, securities)} />\n }\n />\n </SecurityDetailsStyle>\n ))}\n </>\n );\n}\n\nconst LockIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"11\" height=\"11\">\n <path\n fill=\"currentColor\"\n d=\"M18 10V6A6 6 0 0 0 6 6v4H3v14h18V10h-3zM8 6c0-2.206 1.794-4 4-4s4 1.794 4 4v4H8V6zm11 16H5V12h14v10z\"\n />\n </svg>\n);\n\nfunction getRequiredScopes(id: string, securities: SecurityRequirementModel[]): string[] {\n const allScopes: string[] = [];\n let securitiesLength = securities.length;\n\n while (securitiesLength--) {\n const security = securities[securitiesLength];\n let schemesLength = security.schemes.length;\n while (schemesLength--) {\n const scheme = security.schemes[schemesLength];\n if (scheme.id === id && Array.isArray(scheme.scopes)) {\n allScopes.push(...scheme.scopes);\n }\n }\n }\n\n return Array.from(new Set(allScopes));\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { Endpoint } from '../Endpoint/Endpoint';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { Parameters } from '../Parameters/Parameters';\nimport { ResponsesList } from '../Responses/ResponsesList';\nimport { SecurityRequirements } from '../SecurityRequirement/SecurityRequirement';\nimport { CallbackDetailsWrap } from './styled.elements';\n\nexport interface CallbackDetailsProps {\n operation: OperationModel;\n}\n\n@observer\nexport class CallbackDetails extends React.Component<CallbackDetailsProps> {\n render() {\n const { operation } = this.props;\n const { description, externalDocs } = operation;\n const hasDescription = !!(description || externalDocs);\n\n return (\n <CallbackDetailsWrap>\n {hasDescription && (\n <Description>\n {description !== undefined && <Markdown source={description} />}\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </Description>\n )}\n <Endpoint operation={this.props.operation} inverted={true} compact={true} />\n <Extensions extensions={operation.extensions} />\n <SecurityRequirements securities={operation.security} />\n <Parameters parameters={operation.parameters} body={operation.requestBody} />\n <ResponsesList responses={operation.responses} isCallback={operation.isCallback} />\n </CallbackDetailsWrap>\n );\n }\n}\n\nconst Description = styled.div`\n margin-bottom: ${({ theme }) => theme.spacing.unit * 3}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\nimport { StyledCallbackTitle } from './styled.elements';\nimport { CallbackDetails } from './CallbackDetails';\n\n@observer\nexport class CallbackOperation extends React.Component<{ callbackOperation: OperationModel }> {\n toggle = () => {\n this.props.callbackOperation.toggle();\n };\n\n render() {\n const { name, expanded, httpVerb, deprecated } = this.props.callbackOperation;\n\n return (\n <>\n <StyledCallbackTitle\n onClick={this.toggle}\n name={name}\n opened={expanded}\n httpVerb={httpVerb}\n deprecated={deprecated}\n />\n {expanded && <CallbackDetails operation={this.props.callbackOperation} />}\n </>\n );\n }\n}\n","import * as React from 'react';\n\nimport { CallbackModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { CallbackOperation } from './CallbackOperation';\n\nexport interface CallbacksListProps {\n callbacks: CallbackModel[];\n}\n\nexport class CallbacksList extends React.PureComponent<CallbacksListProps> {\n render() {\n const { callbacks } = this.props;\n\n if (!callbacks || callbacks.length === 0) {\n return null;\n }\n\n return (\n <div>\n <CallbacksHeader> Callbacks </CallbacksHeader>\n {callbacks.map(callback => {\n return callback.operations.map((operation, index) => {\n return (\n <CallbackOperation key={`${callback.name}_${index}`} callbackOperation={operation} />\n );\n });\n })}\n </div>\n );\n }\n}\n\nconst CallbacksHeader = styled.h3`\n font-size: 1.3em;\n padding: 0.2em 0;\n margin: 3em 0 1.1em;\n color: ${({ theme }) => theme.colors.text.primary};\n font-weight: normal;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { DropdownProps, DropdownOption } from '../../common-elements/Dropdown';\nimport { DropdownLabel, DropdownWrapper } from '../PayloadSamples/styled.elements';\n\nexport interface GenericChildrenSwitcherProps<T> {\n items?: T[];\n options: DropdownOption[];\n label?: string;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n children: (activeItem: T) => JSX.Element;\n}\n\nexport interface GenericChildrenSwitcherState {\n activeItemIdx: number;\n}\n/**\n * TODO: Refactor this component:\n * Implement rendering dropdown/label directly in this component\n * Accept as a parameter mapper-function for building dropdown option labels\n */\n@observer\nexport class GenericChildrenSwitcher<T> extends React.Component<\n GenericChildrenSwitcherProps<T>,\n GenericChildrenSwitcherState\n> {\n constructor(props) {\n super(props);\n this.state = {\n activeItemIdx: 0,\n };\n }\n\n switchItem = ({ idx }: DropdownOption) => {\n if (this.props.items && idx !== undefined) {\n this.setState({\n activeItemIdx: idx,\n });\n }\n };\n\n render() {\n const { items } = this.props;\n\n if (!items || !items.length) {\n return null;\n }\n\n const Wrapper = ({ children }) =>\n this.props.label ? (\n <DropdownWrapper>\n <DropdownLabel>{this.props.label}</DropdownLabel>\n {children}\n </DropdownWrapper>\n ) : (\n children\n );\n\n return (\n <>\n <Wrapper>\n {this.props.renderDropdown({\n value: this.props.options[this.state.activeItemIdx].value,\n options: this.props.options,\n onChange: this.switchItem,\n ariaLabel: this.props.label || 'Callback',\n })}\n </Wrapper>\n\n {this.props.children(items[this.state.activeItemIdx])}\n </>\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { MediaTypeSamples } from './MediaTypeSamples';\n\nimport { MediaContentModel } from '../../services/models';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { MediaTypesSwitch } from '../MediaTypeSwitch/MediaTypesSwitch';\nimport { InvertedSimpleDropdown, MimeLabel } from './styled.elements';\n\nexport interface PayloadSamplesProps {\n content: MediaContentModel;\n}\n\n@observer\nexport class PayloadSamples extends React.Component<PayloadSamplesProps> {\n render() {\n const mimeContent = this.props.content;\n if (mimeContent === undefined) {\n return null;\n }\n\n return (\n <MediaTypesSwitch content={mimeContent} renderDropdown={this.renderDropdown} withLabel={true}>\n {mediaType => (\n <MediaTypeSamples\n key=\"samples\"\n mediaType={mediaType}\n renderDropdown={this.renderDropdown}\n />\n )}\n </MediaTypesSwitch>\n );\n }\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n}\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\nimport { DropdownProps } from '../../common-elements';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { OperationModel } from '../../services/models';\nimport { XPayloadSample } from '../../services/models/Operation';\nimport { isPayloadSample } from '../../services';\n\nexport interface PayloadSampleProps {\n callback: OperationModel;\n renderDropdown: (props: DropdownProps) => JSX.Element;\n}\n\nexport class CallbackPayloadSample extends React.Component<PayloadSampleProps> {\n render() {\n const payloadSample = this.props.callback.codeSamples.find(sample =>\n isPayloadSample(sample),\n ) as XPayloadSample | undefined;\n\n if (!payloadSample) {\n return null;\n }\n\n return (\n <PayloadSampleWrapper>\n <PayloadSamples content={payloadSample.requestBodyContent} />\n </PayloadSampleWrapper>\n );\n }\n}\n\nexport const PayloadSampleWrapper = styled.div`\n margin-top: 15px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styled from '../../styled-components';\nimport { RightPanelHeader } from '../../common-elements';\nimport { RedocNormalizedOptions } from '../../services';\nimport { CallbackModel } from '../../services/models';\nimport { OptionsContext } from '../OptionsProvider';\nimport { GenericChildrenSwitcher } from '../GenericChildrenSwitcher/GenericChildrenSwitcher';\nimport { DropdownOrLabel } from '../DropdownOrLabel/DropdownOrLabel';\nimport { InvertedSimpleDropdown, MimeLabel } from '../PayloadSamples/styled.elements';\nimport { CallbackPayloadSample } from './CallbackReqSamples';\n\nexport interface CallbackSamplesProps {\n callbacks: CallbackModel[];\n}\n\n@observer\nexport class CallbackSamples extends React.Component<CallbackSamplesProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n\n private renderDropdown = props => {\n return (\n <DropdownOrLabel\n Label={MimeLabel}\n Dropdown={InvertedSimpleDropdown}\n {...props}\n variant=\"dark\"\n />\n );\n };\n\n render() {\n const { callbacks } = this.props;\n\n if (!callbacks || callbacks.length === 0) {\n return null;\n }\n\n const operations = callbacks\n .map(callback => callback.operations.map(operation => operation))\n .reduce((a, b) => a.concat(b), []);\n\n const hasSamples = operations.some(operation => operation.codeSamples.length > 0);\n\n if (!hasSamples) {\n return null;\n }\n\n const dropdownOptions = operations.map((callback, idx) => {\n return {\n value: `${callback.httpVerb.toUpperCase()}: ${callback.name}`,\n idx,\n };\n });\n\n return (\n <div>\n <RightPanelHeader> Callback payload samples </RightPanelHeader>\n\n <SamplesWrapper>\n <GenericChildrenSwitcher\n items={operations}\n renderDropdown={this.renderDropdown}\n label={'Callback'}\n options={dropdownOptions}\n >\n {callback => (\n <CallbackPayloadSample\n key=\"callbackPayloadSample\"\n callback={callback}\n renderDropdown={this.renderDropdown}\n />\n )}\n </GenericChildrenSwitcher>\n </SamplesWrapper>\n </div>\n );\n }\n}\n\nexport const SamplesWrapper = styled.div`\n background: ${({ theme }) => theme.codeBlock.backgroundColor};\n padding: ${props => props.theme.spacing.unit * 4}px;\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { isPayloadSample, OperationModel, RedocNormalizedOptions } from '../../services';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { SourceCodeWithCopy } from '../SourceCode/SourceCode';\n\nimport { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements';\nimport { OptionsContext } from '../OptionsProvider';\nimport { l } from '../../services/Labels';\n\nexport interface RequestSamplesProps {\n operation: OperationModel;\n}\n\n@observer\nexport class RequestSamples extends React.Component<RequestSamplesProps> {\n static contextType = OptionsContext;\n context: RedocNormalizedOptions;\n operation: OperationModel;\n\n render() {\n const { operation } = this.props;\n const samples = operation.codeSamples;\n\n const hasSamples = samples.length > 0;\n const hideTabList = samples.length === 1 ? this.context.hideSingleRequestSampleTab : false;\n return (\n (hasSamples && (\n <div>\n <RightPanelHeader> {l('requestSamples')} </RightPanelHeader>\n\n <Tabs defaultIndex={0}>\n <TabList hidden={hideTabList}>\n {samples.map(sample => (\n <Tab key={sample.lang + '_' + (sample.label || '')}>\n {sample.label !== undefined ? sample.label : sample.lang}\n </Tab>\n ))}\n </TabList>\n {samples.map(sample => (\n <TabPanel key={sample.lang + '_' + (sample.label || '')}>\n {isPayloadSample(sample) ? (\n <div>\n <PayloadSamples content={sample.requestBodyContent} />\n </div>\n ) : (\n <SourceCodeWithCopy lang={sample.lang} source={sample.source} />\n )}\n </TabPanel>\n ))}\n </Tabs>\n </div>\n )) ||\n null\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OperationModel } from '../../services/models';\n\nimport { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements';\nimport { PayloadSamples } from '../PayloadSamples/PayloadSamples';\nimport { l } from '../../services/Labels';\n\nexport interface ResponseSamplesProps {\n operation: OperationModel;\n}\n\n@observer\nexport class ResponseSamples extends React.Component<ResponseSamplesProps> {\n operation: OperationModel;\n\n render() {\n const { operation } = this.props;\n const responses = operation.responses.filter(response => {\n return response.content && response.content.hasSample;\n });\n\n return (\n (responses.length > 0 && (\n <div>\n <RightPanelHeader> {l('responseSamples')} </RightPanelHeader>\n\n <Tabs defaultIndex={0}>\n <TabList>\n {responses.map(response => (\n <Tab className={'tab-' + response.type} key={response.code}>\n {response.code}\n </Tab>\n ))}\n </TabList>\n {responses.map(response => (\n <TabPanel key={response.code}>\n <div>\n <PayloadSamples content={response.content!} />\n </div>\n </TabPanel>\n ))}\n </Tabs>\n </div>\n )) ||\n null\n );\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { Badge, DarkRightPanel, H2, MiddlePanel, Row } from '../../common-elements';\nimport { ShareLink } from '../../common-elements/linkify';\nimport { OperationModel } from '../../services/models';\nimport styled from '../../styled-components';\nimport { CallbacksList } from '../Callbacks';\nimport { CallbackSamples } from '../CallbackSamples/CallbackSamples';\nimport { Endpoint } from '../Endpoint/Endpoint';\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { Extensions } from '../Fields/Extensions';\nimport { Markdown } from '../Markdown/Markdown';\nimport { OptionsContext } from '../OptionsProvider';\nimport { Parameters } from '../Parameters/Parameters';\nimport { RequestSamples } from '../RequestSamples/RequestSamples';\nimport { ResponsesList } from '../Responses/ResponsesList';\nimport { ResponseSamples } from '../ResponseSamples/ResponseSamples';\nimport { SecurityRequirements } from '../SecurityRequirement/SecurityRequirement';\nimport { SECTION_ATTR } from '../../services';\n\nconst Description = styled.div`\n margin-bottom: ${({ theme }) => theme.spacing.unit * 6}px;\n`;\n\nexport interface OperationProps {\n operation: OperationModel;\n}\n\nexport const Operation = observer(({ operation }: OperationProps): JSX.Element => {\n const { name: summary, description, deprecated, externalDocs, isWebhook, httpVerb } = operation;\n const hasDescription = !!(description || externalDocs);\n const { showWebhookVerb } = React.useContext(OptionsContext);\n return (\n <OptionsContext.Consumer>\n {options => (\n <Row {...{ [SECTION_ATTR]: operation.operationHash }} id={operation.operationHash}>\n <MiddlePanel>\n <H2>\n <ShareLink to={operation.id} />\n {summary} {deprecated && <Badge type=\"warning\"> Deprecated </Badge>}\n {isWebhook && (\n <Badge type=\"primary\">\n {' '}\n Webhook {showWebhookVerb && httpVerb && '| ' + httpVerb.toUpperCase()}\n </Badge>\n )}\n </H2>\n {options.pathInMiddlePanel && !isWebhook && (\n <Endpoint operation={operation} inverted={true} />\n )}\n {hasDescription && (\n <Description>\n {description !== undefined && <Markdown source={description} />}\n {externalDocs && <ExternalDocumentation externalDocs={externalDocs} />}\n </Description>\n )}\n <Extensions extensions={operation.extensions} />\n <SecurityRequirements securities={operation.security} />\n <Parameters parameters={operation.parameters} body={operation.requestBody} />\n <ResponsesList responses={operation.responses} />\n <CallbacksList callbacks={operation.callbacks} />\n </MiddlePanel>\n <DarkRightPanel>\n {!options.pathInMiddlePanel && !isWebhook && <Endpoint operation={operation} />}\n <RequestSamples operation={operation} />\n <ResponseSamples operation={operation} />\n <CallbackSamples callbacks={operation.callbacks} />\n </DarkRightPanel>\n </Row>\n )}\n </OptionsContext.Consumer>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ExternalDocumentation } from '../ExternalDocumentation/ExternalDocumentation';\nimport { AdvancedMarkdown } from '../Markdown/AdvancedMarkdown';\nimport { H1, H2, MiddlePanel, Row, Section, ShareLink } from '../../common-elements';\nimport type { ContentItemModel } from '../../services';\nimport type { GroupModel, OperationModel } from '../../services/models';\nimport { Operation } from '../Operation/Operation';\n\n@observer\nexport class ContentItems extends React.Component<{\n items: ContentItemModel[];\n}> {\n render() {\n const items = this.props.items;\n if (items.length === 0) {\n return null;\n }\n return items.map(item => {\n return <ContentItem key={item.id} item={item} />;\n });\n }\n}\n\nexport interface ContentItemProps {\n item: ContentItemModel;\n}\n\n@observer\nexport class ContentItem extends React.Component<ContentItemProps> {\n render() {\n const item = this.props.item;\n let content;\n const { type } = item;\n switch (type) {\n case 'group':\n content = null;\n break;\n case 'tag':\n case 'section':\n content = <SectionItem {...this.props} />;\n break;\n case 'operation':\n content = <OperationItem item={item as any} />;\n break;\n default:\n content = <SectionItem {...this.props} />;\n }\n\n return (\n <>\n {content && (\n <Section id={item.id} underlined={item.type === 'operation'}>\n {content}\n </Section>\n )}\n {item.items && <ContentItems items={item.items} />}\n </>\n );\n }\n}\n\nconst middlePanelWrap = component => <MiddlePanel compact={true}>{component}</MiddlePanel>;\n\n@observer\nexport class SectionItem extends React.Component<ContentItemProps> {\n render() {\n const { name, description, externalDocs, level } = this.props.item as GroupModel;\n\n const Header = level === 2 ? H2 : H1;\n return (\n <>\n <Row>\n <MiddlePanel compact={false}>\n <Header>\n <ShareLink to={this.props.item.id} />\n {name}\n </Header>\n </MiddlePanel>\n </Row>\n <AdvancedMarkdown\n parentId={this.props.item.id}\n source={description || ''}\n htmlWrap={middlePanelWrap}\n />\n {externalDocs && (\n <Row>\n <MiddlePanel>\n <ExternalDocumentation externalDocs={externalDocs} />\n </MiddlePanel>\n </Row>\n )}\n </>\n );\n }\n}\n\n@observer\nexport class OperationItem extends React.Component<{\n item: OperationModel;\n}> {\n render() {\n return <Operation operation={this.props.item} />;\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ShelfIcon } from '../../common-elements/shelfs';\nimport { OperationModel } from '../../services';\nimport { shortenHTTPVerb } from '../../utils/openapi';\nimport { MenuItems } from './MenuItems';\nimport { MenuItemLabel, MenuItemLi, MenuItemTitle, OperationBadge } from './styled.elements';\nimport { l } from '../../services/Labels';\nimport { scrollIntoViewIfNeeded } from '../../utils';\nimport { OptionsContext } from '../OptionsProvider';\nimport type { IMenuItem } from '../../services';\n\nexport interface MenuItemProps {\n item: IMenuItem;\n onActivate?: (item: IMenuItem) => void;\n withoutChildren?: boolean;\n children?: React.ReactChild;\n}\n\n@observer\nexport class MenuItem extends React.Component<MenuItemProps> {\n ref = React.createRef<HTMLLabelElement>();\n\n activate = (evt: React.MouseEvent<HTMLElement>) => {\n this.props.onActivate!(this.props.item);\n evt.stopPropagation();\n };\n\n componentDidMount() {\n this.scrollIntoViewIfActive();\n }\n\n componentDidUpdate() {\n this.scrollIntoViewIfActive();\n }\n\n scrollIntoViewIfActive() {\n if (this.props.item.active && this.ref.current) {\n scrollIntoViewIfNeeded(this.ref.current);\n }\n }\n\n render() {\n const { item, withoutChildren } = this.props;\n return (\n <MenuItemLi onClick={this.activate} depth={item.depth} data-item-id={item.id}>\n {item.type === 'operation' ? (\n <OperationMenuItemContent {...this.props} item={item as OperationModel} />\n ) : (\n <MenuItemLabel depth={item.depth} active={item.active} type={item.type} ref={this.ref}>\n <MenuItemTitle title={item.sidebarLabel}>\n {item.sidebarLabel}\n {this.props.children}\n </MenuItemTitle>\n {(item.depth > 0 && item.items.length > 0 && (\n <ShelfIcon float={'right'} direction={item.expanded ? 'down' : 'right'} />\n )) ||\n null}\n </MenuItemLabel>\n )}\n {!withoutChildren && item.items && item.items.length > 0 && (\n <MenuItems\n expanded={item.expanded}\n items={item.items}\n onActivate={this.props.onActivate}\n />\n )}\n </MenuItemLi>\n );\n }\n}\n\nexport interface OperationMenuItemContentProps {\n item: OperationModel;\n children?: React.ReactChild;\n}\n\nexport const OperationMenuItemContent = observer((props: OperationMenuItemContentProps) => {\n const { item } = props;\n const ref = React.createRef<HTMLLabelElement>();\n const { showWebhookVerb } = React.useContext(OptionsContext);\n\n React.useEffect(() => {\n if (props.item.active && ref.current) {\n scrollIntoViewIfNeeded(ref.current);\n }\n }, [props.item.active, ref]);\n\n return (\n <MenuItemLabel depth={item.depth} active={item.active} deprecated={item.deprecated} ref={ref}>\n {item.isWebhook ? (\n <OperationBadge type=\"hook\">\n {showWebhookVerb ? item.httpVerb : l('webhook')}\n </OperationBadge>\n ) : (\n <OperationBadge type={item.httpVerb}>{shortenHTTPVerb(item.httpVerb)}</OperationBadge>\n )}\n <MenuItemTitle width=\"calc(100% - 38px)\">\n {item.sidebarLabel}\n {props.children}\n </MenuItemTitle>\n </MenuItemLabel>\n );\n});\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport type { IMenuItem } from '../../services';\n\nimport { MenuItem } from './MenuItem';\nimport { MenuItemUl } from './styled.elements';\n\nexport interface MenuItemsProps {\n items: IMenuItem[];\n expanded?: boolean;\n onActivate?: (item: IMenuItem) => void;\n style?: React.CSSProperties;\n root?: boolean;\n\n className?: string;\n}\n\n@observer\nexport class MenuItems extends React.Component<MenuItemsProps> {\n render() {\n const { items, root, className } = this.props;\n const expanded = this.props.expanded == null ? true : this.props.expanded;\n return (\n <MenuItemUl\n className={className}\n style={this.props.style}\n expanded={expanded}\n {...(root ? { role: 'menu' } : {})}\n >\n {items.map((item, idx) => (\n <MenuItem key={idx} item={item} onActivate={this.props.onActivate} />\n ))}\n </MenuItemUl>\n );\n }\n}\n","import { useEffect, useState } from 'react';\nimport * as React from 'react';\n\nexport default function RedoclyLogo(): JSX.Element | null {\n const [isDisplay, setDisplay] = useState(false);\n\n useEffect(() => {\n setDisplay(true);\n }, []);\n\n return isDisplay ? (\n <img\n alt={'redocly logo'}\n onError={() => setDisplay(false)}\n src={'https://cdn.redoc.ly/redoc/logo-mini.svg'}\n />\n ) : null;\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services';\nimport type { IMenuItem } from '../../services';\nimport { OptionsContext } from '../OptionsProvider';\nimport { MenuItems } from './MenuItems';\n\nimport { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';\nimport { RedocAttribution } from './styled.elements';\nimport RedoclyLogo from './Logo';\n\n@observer\nexport class SideMenu extends React.Component<{ menu: MenuStore; className?: string }> {\n static contextType = OptionsContext;\n private _updateScroll?: () => void;\n\n render() {\n const store = this.props.menu;\n return (\n <PerfectScrollbarWrap\n updateFn={this.saveScrollUpdate}\n className={this.props.className}\n options={{\n wheelPropagation: false,\n }}\n >\n <MenuItems items={store.items} onActivate={this.activate} root={true} />\n <RedocAttribution>\n <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://redocly.com/redoc/\">\n <RedoclyLogo />\n API docs by Redocly\n </a>\n </RedocAttribution>\n </PerfectScrollbarWrap>\n );\n }\n\n activate = (item: IMenuItem) => {\n if (item && item.active && this.context.menuToggle) {\n return item.expanded ? item.collapse() : item.expand();\n }\n this.props.menu.activateAndScroll(item, true);\n setTimeout(() => {\n if (this._updateScroll) {\n this._updateScroll();\n }\n });\n };\n\n private saveScrollUpdate = upd => {\n this._updateScroll = upd;\n };\n}\n","import * as React from 'react';\n\nimport styled from '../../styled-components';\n\nexport const AnimatedChevronButton = ({ open }: { open: boolean }) => {\n const iconOffset = open ? 8 : -4;\n\n return (\n <ChevronContainer>\n <ChevronSvg\n size={15}\n style={{\n transform: `translate(2px, ${iconOffset}px) rotate(180deg)`,\n transition: 'transform 0.2s ease',\n }}\n />\n <ChevronSvg\n size={15}\n style={{\n transform: `translate(2px, ${0 - iconOffset}px)`,\n transition: 'transform 0.2s ease',\n }}\n />\n </ChevronContainer>\n );\n};\n\n// adapted from reactjs.org\nconst ChevronSvg = ({ size = 10, className = '', style }) => (\n <svg\n className={className}\n style={style || {}}\n viewBox=\"0 0 926.23699 573.74994\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n width={size}\n height={size}\n >\n <g transform=\"translate(904.92214,-879.1482)\">\n <path\n d={`\n m -673.67664,1221.6502 -231.2455,-231.24803 55.6165,\n -55.627 c 30.5891,-30.59485 56.1806,-55.627 56.8701,-55.627 0.6894,\n 0 79.8637,78.60862 175.9427,174.68583 l 174.6892,174.6858 174.6892,\n -174.6858 c 96.079,-96.07721 175.253196,-174.68583 175.942696,\n -174.68583 0.6895,0 26.281,25.03215 56.8701,\n 55.627 l 55.6165,55.627 -231.245496,231.24803 c -127.185,127.1864\n -231.5279,231.248 -231.873,231.248 -0.3451,0 -104.688,\n -104.0616 -231.873,-231.248 z\n `}\n fill=\"currentColor\"\n />\n </g>\n </svg>\n);\n\nconst ChevronContainer = styled.div`\n user-select: none;\n width: 20px;\n height: 20px;\n align-self: center;\n display: flex;\n flex-direction: column;\n color: ${props => props.theme.colors.primary.main};\n`;\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MenuStore } from '../../services/MenuStore';\nimport { RedocNormalizedOptions, RedocRawOptions } from '../../services/RedocNormalizedOptions';\nimport styled, { media } from '../../styled-components';\nimport { IS_BROWSER } from '../../utils/index';\nimport { OptionsContext } from '../OptionsProvider';\nimport { AnimatedChevronButton } from './ChevronSvg';\n\nlet Stickyfill;\nif (IS_BROWSER) {\n Stickyfill = require('stickyfill');\n}\n\nexport interface StickySidebarProps {\n className?: string;\n scrollYOffset?: RedocRawOptions['scrollYOffset']; // passed directly or via context\n menu: MenuStore;\n}\n\nexport interface StickySidebarState {\n offsetTop?: string;\n}\n\nconst stickyfill = Stickyfill && Stickyfill();\n\nconst StyledStickySidebar = styled.div<{ open?: boolean }>`\n width: ${props => props.theme.sidebar.width};\n background-color: ${props => props.theme.sidebar.backgroundColor};\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n backface-visibility: hidden;\n /* contain: strict; TODO: breaks layout since Chrome 80*/\n\n height: 100vh;\n position: sticky;\n position: -webkit-sticky;\n top: 0;\n\n ${media.lessThan('small')`\n position: fixed;\n z-index: 20;\n width: 100%;\n background: ${({ theme }) => theme.sidebar.backgroundColor};\n display: ${props => (props.open ? 'flex' : 'none')};\n `};\n\n @media print {\n display: none;\n }\n`;\n\nconst FloatingButton = styled.div`\n outline: none;\n user-select: none;\n background-color: ${({ theme }) => theme.fab.backgroundColor};\n color: ${props => props.theme.colors.primary.main};\n display: none;\n cursor: pointer;\n position: fixed;\n right: 20px;\n z-index: 100;\n border-radius: 50%;\n box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);\n ${media.lessThan('small')`\n display: flex;\n `};\n\n bottom: 44px;\n\n width: 60px;\n height: 60px;\n padding: 0 20px;\n svg {\n color: ${({ theme }) => theme.fab.color};\n }\n\n @media print {\n display: none;\n }\n`;\n\n@observer\nexport class StickyResponsiveSidebar extends React.Component<\n StickySidebarProps,\n StickySidebarState\n> {\n static contextType = OptionsContext;\n context!: React.ContextType<typeof OptionsContext>;\n state: StickySidebarState = { offsetTop: '0px' };\n\n stickyElement: Element;\n\n componentDidMount() {\n if (stickyfill) {\n stickyfill.add(this.stickyElement);\n }\n\n // rerender when hydrating from SSR\n // see https://github.com/facebook/react/issues/8017#issuecomment-256351955\n this.setState({\n offsetTop: this.getScrollYOffset(this.context),\n });\n }\n\n componentWillUnmount() {\n if (stickyfill) {\n stickyfill.remove(this.stickyElement);\n }\n }\n\n getScrollYOffset(options: RedocNormalizedOptions) {\n let top;\n if (this.props.scrollYOffset !== undefined) {\n top = RedocNormalizedOptions.normalizeScrollYOffset(this.props.scrollYOffset)();\n } else {\n top = options.scrollYOffset();\n }\n return top + 'px';\n }\n\n render() {\n const open = this.props.menu.sideBarOpened;\n\n const top = this.state.offsetTop;\n\n return (\n <>\n <StyledStickySidebar\n open={open}\n className={this.props.className}\n style={{\n top,\n height: `calc(100vh - ${top})`,\n }}\n // tslint:disable-next-line\n ref={el => {\n this.stickyElement = el as any;\n }}\n >\n {this.props.children}\n </StyledStickySidebar>\n {!this.context.hideFab && (\n <FloatingButton onClick={this.toggleNavMenu}>\n <AnimatedChevronButton open={open} />\n </FloatingButton>\n )}\n </>\n );\n }\n\n private toggleNavMenu = () => {\n this.props.menu.toggleSidebar();\n };\n}\n","import styled, { media } from '../../styled-components';\n\nexport const RedocWrap = styled.div`\n ${({ theme }) => `\n font-family: ${theme.typography.fontFamily};\n font-size: ${theme.typography.fontSize};\n font-weight: ${theme.typography.fontWeightRegular};\n line-height: ${theme.typography.lineHeight};\n color: ${theme.colors.text.primary};\n display: flex;\n position: relative;\n text-align: left;\n\n -webkit-font-smoothing: ${theme.typography.smoothing};\n font-smoothing: ${theme.typography.smoothing};\n ${(theme.typography.optimizeSpeed && 'text-rendering: optimizeSpeed !important') || ''};\n\n tap-highlight-color: rgba(0, 0, 0, 0);\n text-size-adjust: 100%;\n\n * {\n box-sizing: border-box;\n -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n }\n`};\n`;\n\nexport const ApiContentWrap = styled.div`\n z-index: 1;\n position: relative;\n overflow: hidden;\n width: calc(100% - ${props => props.theme.sidebar.width});\n ${media.lessThan('small', true)`\n width: 100%;\n `};\n\n contain: layout;\n`;\n\nexport const BackgroundStub = styled.div`\n background: ${({ theme }) => theme.rightPanel.backgroundColor};\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n width: ${({ theme }) => {\n if (theme.rightPanel.width.endsWith('%')) {\n const percents = parseInt(theme.rightPanel.width, 10);\n return `calc((100% - ${theme.sidebar.width}) * ${percents / 100})`;\n } else {\n return theme.rightPanel.width;\n }\n }};\n ${media.lessThan('medium', true)`\n display: none;\n `};\n`;\n","import * as React from 'react';\n\nimport { darken, getLuminance, lighten } from 'polished';\nimport styled from '../../styled-components';\nimport { MenuItemLabel } from '../SideMenu/styled.elements';\n\nexport const SearchWrap = styled.div`\n padding: 5px 0;\n`;\n\nexport const SearchInput = styled.input.attrs(() => ({\n className: 'search-input',\n}))`\n width: calc(100% - ${props => props.theme.spacing.unit * 8}px);\n box-sizing: border-box;\n margin: 0 ${props => props.theme.spacing.unit * 4}px;\n padding: 5px ${props => props.theme.spacing.unit * 2}px 5px\n ${props => props.theme.spacing.unit * 4}px;\n border: 0;\n border-bottom: 1px solid\n ${({ theme }) =>\n (getLuminance(theme.sidebar.backgroundColor) > 0.5 ? darken : lighten)(\n 0.1,\n theme.sidebar.backgroundColor,\n )};\n font-family: ${({ theme }) => theme.typography.fontFamily};\n font-weight: bold;\n font-size: 13px;\n color: ${props => props.theme.sidebar.textColor};\n background-color: transparent;\n outline: none;\n`;\n\nexport const SearchIcon = styled((props: { className?: string }) => (\n <svg\n className={props.className}\n version=\"1.1\"\n viewBox=\"0 0 1000 1000\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\"\n >\n <path d=\"M968.2,849.4L667.3,549c83.9-136.5,66.7-317.4-51.7-435.6C477.1-25,252.5-25,113.9,113.4c-138.5,138.3-138.5,362.6,0,501C219.2,730.1,413.2,743,547.6,666.5l301.9,301.4c43.6,43.6,76.9,14.9,104.2-12.4C981,928.3,1011.8,893,968.2,849.4z M524.5,522c-88.9,88.7-233,88.7-321.8,0c-88.9-88.7-88.9-232.6,0-321.3c88.9-88.7,233-88.7,321.8,0C613.4,289.4,613.4,433.3,524.5,522z\" />\n </svg>\n)).attrs({\n className: 'search-icon',\n})`\n position: absolute;\n left: ${props => props.theme.spacing.unit * 4}px;\n height: 1.8em;\n width: 0.9em;\n\n path {\n fill: ${props => props.theme.sidebar.textColor};\n }\n`;\n\nexport const SearchResultsBox = styled.div`\n padding: ${props => props.theme.spacing.unit}px 0;\n background-color: ${({ theme }) => darken(0.05, theme.sidebar.backgroundColor)}};\n color: ${props => props.theme.sidebar.textColor};\n min-height: 150px;\n max-height: 250px;\n border-top: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)}};\n border-bottom: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)}};\n margin-top: 10px;\n line-height: 1.4;\n font-size: 0.9em;\n \n li {\n background-color: inherit;\n }\n\n ${MenuItemLabel} {\n padding-top: 6px;\n padding-bottom: 6px;\n\n &:hover,\n &.active {\n background-color: ${({ theme }) => darken(0.1, theme.sidebar.backgroundColor)};\n }\n\n > svg {\n display: none;\n }\n }\n`;\n\nexport const ClearIcon = styled.i`\n position: absolute;\n display: inline-block;\n width: ${props => props.theme.spacing.unit * 2}px;\n text-align: center;\n right: ${props => props.theme.spacing.unit * 4}px;\n line-height: 2em;\n vertical-align: middle;\n margin-right: 2px;\n cursor: pointer;\n font-style: normal;\n color: '#666';\n`;\n","import * as React from 'react';\n\nimport type { IMenuItem, SearchResult } from '../../services/types';\nimport type { SearchStore } from '../../services/SearchStore';\nimport type { MarkerService } from '../../services/MarkerService';\n\nimport { MenuItem } from '../SideMenu/MenuItem';\nimport { OptionsContext } from '../OptionsProvider';\nimport { bind, debounce } from 'decko';\nimport { PerfectScrollbarWrap } from '../../common-elements/perfect-scrollbar';\nimport {\n ClearIcon,\n SearchIcon,\n SearchInput,\n SearchResultsBox,\n SearchWrap,\n} from './styled.elements';\nimport { l } from '../../services/Labels';\n\nexport interface SearchBoxProps {\n search: SearchStore<string>;\n marker: MarkerService;\n getItemById: (id: string) => IMenuItem | undefined;\n onActivate: (item: IMenuItem) => void;\n\n className?: string;\n}\n\nexport interface SearchBoxState {\n results: SearchResult[];\n noResults: boolean;\n term: string;\n activeItemIdx: number;\n}\n\nexport class SearchBox extends React.PureComponent<SearchBoxProps, SearchBoxState> {\n activeItemRef: MenuItem | null = null;\n\n static contextType = OptionsContext;\n\n constructor(props) {\n super(props);\n this.state = {\n results: [],\n noResults: false,\n term: '',\n activeItemIdx: -1,\n };\n }\n\n clearResults(term: string) {\n this.setState({\n results: [],\n noResults: false,\n term,\n });\n this.props.marker.unmark();\n }\n\n clear = () => {\n this.setState({\n results: [],\n noResults: false,\n term: '',\n activeItemIdx: -1,\n });\n this.props.marker.unmark();\n };\n\n handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.keyCode === 27) {\n // ESQ\n this.clear();\n }\n if (event.keyCode === 40) {\n // Arrow down\n this.setState({\n activeItemIdx: Math.min(this.state.activeItemIdx + 1, this.state.results.length - 1),\n });\n event.preventDefault();\n }\n if (event.keyCode === 38) {\n // Arrow up\n this.setState({\n activeItemIdx: Math.max(0, this.state.activeItemIdx - 1),\n });\n event.preventDefault();\n }\n if (event.keyCode === 13) {\n // enter\n const activeResult = this.state.results[this.state.activeItemIdx];\n if (activeResult) {\n const item = this.props.getItemById(activeResult.meta);\n if (item) {\n this.props.onActivate(item);\n }\n }\n }\n };\n\n setResults(results: SearchResult[], term: string) {\n this.setState({\n results,\n noResults: results.length === 0,\n });\n this.props.marker.mark(term);\n }\n\n @bind\n @debounce(400)\n searchCallback(searchTerm: string) {\n this.props.search.search(searchTerm).then(res => {\n this.setResults(res, searchTerm);\n });\n }\n\n search = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { minCharacterLengthToInitSearch } = this.context;\n const q = event.target.value;\n if (q.length < minCharacterLengthToInitSearch) {\n this.clearResults(q);\n return;\n }\n\n this.setState(\n {\n term: q,\n },\n () => this.searchCallback(this.state.term),\n );\n };\n\n render() {\n const { activeItemIdx } = this.state;\n const results = this.state.results\n .filter(res => this.props.getItemById(res.meta))\n .map(res => ({\n item: this.props.getItemById(res.meta)!,\n score: res.score,\n }))\n .sort((a, b) => b.score - a.score);\n\n return (\n <SearchWrap role=\"search\">\n {this.state.term && <ClearIcon onClick={this.clear}>×</ClearIcon>}\n <SearchIcon />\n <SearchInput\n value={this.state.term}\n onKeyDown={this.handleKeyDown}\n placeholder=\"Search...\"\n aria-label=\"Search\"\n type=\"text\"\n onChange={this.search}\n />\n {results.length > 0 && (\n <PerfectScrollbarWrap\n options={{\n wheelPropagation: false,\n }}\n >\n <SearchResultsBox data-role=\"search:results\">\n {results.map((res, idx) => (\n <MenuItem\n item={Object.create(res.item, {\n active: {\n value: idx === activeItemIdx,\n },\n })}\n onActivate={this.props.onActivate}\n withoutChildren={true}\n key={res.item.id}\n data-role=\"search:result\"\n />\n ))}\n </SearchResultsBox>\n </PerfectScrollbarWrap>\n )}\n {this.state.term && this.state.noResults ? (\n <SearchResultsBox data-role=\"search:results\">{l('noResultsFound')}</SearchResultsBox>\n ) : null}\n </SearchWrap>\n );\n }\n}\n","import * as PropTypes from 'prop-types';\nimport * as React from 'react';\n\nimport { ThemeProvider } from '../../styled-components';\nimport { OptionsProvider } from '../OptionsProvider';\n\nimport { AppStore } from '../../services';\nimport { ApiInfo } from '../ApiInfo/';\nimport { ApiLogo } from '../ApiLogo/ApiLogo';\nimport { ContentItems } from '../ContentItems/ContentItems';\nimport { SideMenu } from '../SideMenu/SideMenu';\nimport { StickyResponsiveSidebar } from '../StickySidebar/StickyResponsiveSidebar';\nimport { ApiContentWrap, BackgroundStub, RedocWrap } from './styled.elements';\n\nimport { SearchBox } from '../SearchBox/SearchBox';\nimport { StoreProvider } from '../StoreBuilder';\n\nexport interface RedocProps {\n store: AppStore;\n}\n\nexport class Redoc extends React.Component<RedocProps> {\n static propTypes = {\n store: PropTypes.instanceOf(AppStore).isRequired,\n };\n\n componentDidMount() {\n this.props.store.onDidMount();\n }\n\n componentWillUnmount() {\n this.props.store.dispose();\n }\n\n render() {\n const {\n store: { spec, menu, options, search, marker },\n } = this.props;\n const store = this.props.store;\n return (\n <ThemeProvider theme={options.theme}>\n <StoreProvider value={store}>\n <OptionsProvider value={options}>\n <RedocWrap className=\"redoc-wrap\">\n <StickyResponsiveSidebar menu={menu} className=\"menu-content\">\n <ApiLogo info={spec.info} />\n {(!options.disableSearch && (\n <SearchBox\n search={search!}\n marker={marker}\n getItemById={menu.getItemById}\n onActivate={menu.activateAndScroll}\n />\n )) ||\n null}\n <SideMenu menu={menu} />\n </StickyResponsiveSidebar>\n <ApiContentWrap className=\"api-content\">\n <ApiInfo store={store} />\n <ContentItems items={menu.items as any} />\n </ApiContentWrap>\n <BackgroundStub />\n </RedocWrap>\n </OptionsProvider>\n </StoreProvider>\n </ThemeProvider>\n );\n }\n}\n","import * as React from 'react';\n\nimport {\n argValueToBoolean,\n RedocNormalizedOptions,\n RedocRawOptions,\n} from '../services/RedocNormalizedOptions';\nimport { ErrorBoundary } from './ErrorBoundary';\nimport { Loading } from './Loading/Loading';\nimport { Redoc } from './Redoc/Redoc';\nimport { StoreBuilder } from './StoreBuilder';\n\nexport interface RedocStandaloneProps {\n spec?: object;\n specUrl?: string;\n options?: RedocRawOptions;\n onLoaded?: (e?: Error) => any;\n}\n\ndeclare let __webpack_nonce__: string;\n\nexport const RedocStandalone = function (props: RedocStandaloneProps) {\n const { spec, specUrl, options = {}, onLoaded } = props;\n const hideLoading = argValueToBoolean(options.hideLoading, false);\n\n const normalizedOpts = new RedocNormalizedOptions(options);\n\n if (normalizedOpts.nonce !== undefined) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __webpack_nonce__ = normalizedOpts.nonce;\n } catch {} // If we have exception, Webpack was not used to run this.\n }\n\n return (\n <ErrorBoundary>\n <StoreBuilder spec={spec} specUrl={specUrl} options={options} onLoaded={onLoaded}>\n {({ loading, store }) =>\n !loading ? (\n <Redoc store={store!} />\n ) : hideLoading ? null : (\n <Loading color={normalizedOpts.theme.colors.primary.main} />\n )\n }\n </StoreBuilder>\n </ErrorBoundary>\n );\n};\n"],"names":["root","factory","exports","module","define","amd","this","___CSS_LOADER_EXPORT___","push","id","cssWithMappingToString","list","toString","map","item","content","concat","join","i","modules","mediaQuery","dedupe","alreadyImportedModules","length","_i","_arrayLikeToArray","arr","len","arr2","Array","_item","isArray","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","call","next","done","value","err","_iterableToArrayLimit","o","minLen","n","Object","prototype","slice","constructor","name","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","sourceURLs","sources","source","sourceRoot","require","Worker","add","search","toJS","load","dispose","fromExternalJS","builder","resolveIndex","index","store","initEmpty","field","ref","pipeline","Promise","resolve","title","description","meta","toLowerCase","build","toJSON","path","exportName","importScripts","self","Error","e","console","error","message","state","q","limit","trim","searchResults","query","t","split","forEach","term","exp","token","expandTerm","res","score","sjs","colour","NODE_DISABLE_COLORS","red","yellow","green","normal","deepEquals","obj1","obj2","_equals","assign","sanitise","s","components","replace","String","toCamelCase","match","group1","toUpperCase","uniqueOnly","indexOf","hasDuplicates","array","Set","size","allSame","distinctArray","result","candidate","find","a","compressArray","firstDupe","hash","chr","charCodeAt","parameterTypeProperties","arrayProperties","httpMethods","sanitiseAll","fs","url","fetch","yaml","jptr","recurse","clone","deRef","isRef","common","resolveAllFragment","obj","context","src","parentPath","base","options","attachPoint","externalRefs","paths","baseUrl","parse","seen","changes","identityDetection","key","startsWith","$fixed","newRef","parent","pkey","$ref","verbose","warn","target","fatal","ex","promise","reject","protocol","failed","filterData","filters","filter","resolveExternal","pointer","callback","u","pop","fragment","fnComponents","effectiveProtocol","input","backup","cache","externalRef","handlers","then","catch","fetchOptions","agent","status","ignoreIOErrors","text","schema","prettyErrors","def","filename","encoding","readFile","readFileAsync","findExternalRefs","rej","inner","$extra","refs","potential","keys","resolved","extras","rewriteRefs","resolvedAt","resolver","depth","openapi","definitions","scanExternalRefs","actions","external","original","updated","externals","localOptions","patch","pointers","sort","b","aComp","bComp","ptr","cdata","loopReferences","funcs","reduce","func","bind","setTimeout","resolveInternal","preserveMiro","setupOptions","srcUrl","optionalResolve","getDefaultState","WeakMap","top","combine","allowRefSiblings","walkSchema","temp","allOf","anyOf","oneOf","has","set","items","property","additionalItems","additionalProperties","properties","prop","subSchema","patternProperties","not","assertPath","normalizeStringPosix","allowAboveRoot","code","lastSegmentLength","lastSlash","dots","lastSlashIndex","lastIndexOf","posix","cwd","resolvedPath","resolvedAbsolute","arguments","undefined","process","normalize","isAbsolute","trailingSeparator","joined","arg","relative","to","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","out","_makeLong","dirname","hasRoot","end","matchedSlash","basename","ext","start","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","format","pathObject","sep","dir","_format","ret","delimiter","win32","nop","shallowClone","p","hasOwnProperty","deepClone","fastClone","circularClone","Function","get","create","getPrototypeOf","dereference","container","defs","master","logger","args","apply","getLogger","entry","jpunescape","newValue","parts","decodeURIComponent","setAndLast","parseInt","isNaN","jpescape","object","payload","identity","oPath","identityPath","newState","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","count","indexByIdentifier","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","api","update","newObj","remove","lastIdentifiers","newList","newLastIdentifiers","_index","memo","style","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","createElement","attributes","styleElement","nonce","setAttribute","needLayer","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","maybe","cclone","sw","statusCodes","ourVersion","targetVersion","componentNames","S2OError","super","throwError","throwOrWarn","warnOnly","warnProperty","fixUpSchema","required","nullable","propertyName","discriminator","mapping","schemaOrRef","fixUpSubSchemaExtensions","patches","type","newSchema","xml","namespace","allowEmptyValue","fixUpSubSchema","fixupRefs","consumes","produces","newKey","schemas","refmap","oldRef","schemaIndex","prefix","substr","suffix","refSuffix","tmpRef","inSchema","refSiblings","processSecurity","securityObject","k","sname","processSecurityScheme","scheme","flow","flowName","authorizationUrl","tokenUrl","scopes","flows","keepParameters","processHeader","header","collectionFormat","explode","fixParamRef","param","refComponents","processParameter","op","method","originalType","singularRequestBody","rbody","parameters","newParam","in","deprecated","example","oldCollectionFormat","allowReserved","contentType","default","copyExtensions","operationId","rbname","mimetype","requestBody","newOp","attachRequestBody","tgt","processResponse","response","examples","headers","h","processPaths","containerName","requestBodyCache","trace","summary","servers","debug","security","responses","defaultResp","r","schemes","server","newServer","serverUrl","se","rh","body","ct","effectiveOperationId","rbName","rbStr","rbHash","p2","extractServerParameters","variables","fixInfo","info","version","logo","termsOfService","URL","fixPaths","convertObj","swagger","WeakSet","anchors","detectObjectReferences","direct","origin","converter","host","basePath","xMsPHost","hostTemplate","paramNames","msp","enum","useSchemePrefix","callbacks","links","requestBodies","securitySchemes","securityDefinitions","dedupeRefs","rb","rbNamesGenerated","counter","main","convertStr","str","sourceYaml","convert","convertUrl","convertFile","sourceFile","convertStream","readable","on","chunk","http","STATUS_CODES","addMethods","methods","w","createObjectURL","Blob","worker","c","addEventListener","d","f","evt","createEvent","initEvent","params","dispatchEvent","_arguments","postMessage","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","defineProperty","enumerable","g","globalThis","toStringTag","nc","defaultTheme","spacing","unit","sectionHorizontal","sectionVertical","breakpoints","small","medium","large","colors","tonalOffset","primary","light","lighten","dark","darken","contrastText","readableColor","success","warning","gray","secondary","border","color","backgroundColor","transparentize","tabTextColor","redirect","post","put","delete","basic","link","linesColor","theme","desaturate","defaultDetailsWidth","typeNameColor","typeTitleColor","requireLabelColor","labelsTextSize","nestingSpacing","nestedBackground","arrow","typography","fontSize","lineHeight","fontWeightRegular","fontWeightBold","fontWeightLight","fontFamily","smoothing","optimizeSpeed","headings","fontWeight","wrap","visited","hover","textDecoration","hoverTextDecoration","sidebar","width","textColor","activeTextColor","groupItems","activeBackgroundColor","textTransform","level1Items","maxHeight","maxWidth","gutter","rightPanel","overlay","codeBlock","fab","IS_BROWSER","selector","html2Str","html","trimmedChunk","scrollIntoViewIfNeeded","el","centerIfNeeded","parentComputedStyle","getComputedStyle","parentBorderTopWidth","getPropertyValue","parentBorderLeftWidth","overTop","offsetTop","scrollTop","overBottom","clientHeight","overLeft","offsetLeft","scrollLeft","overRight","clientWidth","alignWithTop","scrollIntoView","mapWithLast","iteratee","mapValues","flattenByProp","collectionItems","iterate","stripTrailingSlash","endsWith","substring","isNumeric","parseFloat","isFinite","appendToMdHeading","md","heading","testRegex","RegExp","replaceRegex","br","mergeObjects","shift","isMergebleObject","isObject","safeSlugify","isAbsoluteUrl","resolveUrl","urlObj","pathname","href","getBasePath","parseURL","titleize","charAt","removeQueryStringAndHash","escapeHTMLAttrChars","unescapeHTMLChars","_m","fromCharCode","isBoolean","labels","enumSingleValue","enumArray","recursive","arrayOf","webhook","const","noResultsFound","download","downloadSpecification","callbackResponses","requestSamples","responseSamples","l","idx","label","SideNavStyleEnum","argValueToBoolean","val","defaultValue","argValueToNumber","RedocNormalizedOptions","bottom","getBoundingClientRect","SummaryOnly","PathOnly","IdOnly","Math","max","level","Number","ceil","raw","defaults","hook","extensionsHook","_labels","menu","codeSample","resolvedValues","setProxy","currentPath","resolveTheme","scrollYOffset","normalizeScrollYOffset","hideHostname","normalizeHideHostname","expandResponses","normalizeExpandResponses","requiredPropsFirst","sortPropsAlphabetically","sortEnumValuesAlphabetically","sortOperationsAlphabetically","sortTagsAlphabetically","nativeScrollbars","pathInMiddlePanel","untrustedSpec","hideDownloadButton","downloadFileName","downloadDefinitionUrl","disableSearch","onlyRequiredInSamples","showExtensions","normalizeShowExtensions","sideNavStyle","normalizeSideNavStyle","hideSingleRequestSampleTab","menuToggle","jsonSampleExpandLevel","normalizeJsonSampleExpandLevel","enumSkipQuotes","hideSchemaTitles","simpleOneOfTypeLabel","payloadSampleIdx","normalizePayloadSampleIdx","expandSingleSchemaField","schemaExpansionLevel","Infinity","argValueToExpandLevel","showObjectSchemaExamples","showSecuritySchemeType","hideSecuritySection","unstable_ignoreMimeParameters","allowedMdComponents","expandDefaultServerVariables","maxDisplayedEnumValues","ignoreNamedSchemas","hideSchemaPattern","generatedPayloadSamplesMaxDepth","normalizeGeneratedPayloadSamplesMaxDepth","hideFab","minCharacterLengthToInitSearch","showWebhookVerb","styled","createGlobalStyle","keyframes","ThemeProvider","lessThan","breakpoint","print","extra","props","greaterThan","between","firstBreakpoint","secondBreakpoint","styledName","ErrorWrapper","ErrorBoundary","componentDidCatch","setState","render","stack","children","rotate","Spinner","className","height","viewBox","LoadingMessage","Loading","textAlign","OptionsContext","OptionsProvider","Provider","OptionsConsumer","Consumer","specUrlOrObject","config","Config","bundleOpts","location","customFetch","absoluteRef","parsed","bundle","convertSwagger2OpenAPI","spec","origParse","JsonPointer","tokens","fromTokens","resTokens","isWildcardStatusCode","statusCode","isStatusCode","getStatusCodeType","defaultAsError","operationNames","isOperationName","getOperationSummary","operation","pathName","schemaKeywordTypes","multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","contentEncoding","contentMediaType","maxItems","minItems","uniqueItems","maxProperties","minProperties","unevaluatedProperties","detectType","keywords","keyword","isPrimitiveType","if","else","isPrimitive","isArrayType","includes","prefixItems","isJsonLike","isFormUrlEncoded","delimitedEncodeField","fieldVal","fieldName","v","deepObjectEncodeField","serializeFormValue","safeName","expand","urlFormEncodePayload","serializeParameterValueWithMime","mime","serializeParameterValue","parameter","serializationMime","serializePathParameter","serializeQueryParameter","template","serializeHeaderParameter","serializeCookieParameter","getSerializedValue","langFromMime","DEFINITION_NAME_REGEX","isNamedDefinition","getDefinitionName","reverse","humanizeRangeConstraint","min","stringRange","humanizeNumberRange","humanizeConstraints","arrayRange","propertiesRange","multipleOfConstraint","strigifiedMultipleOf","humanizeMultipleOfConstraint","numberRange","sortByRequired","fields","order","unrequiredFields","orderedFields","unorderedFields","sortByField","localeCompare","mergeParams","parser","pathParams","operationParams","operationParamNames","deref","mergeSimilarMediaTypes","types","mergedTypes","normalizedMimeName","normalizeServers","specUrl","getHref","SECURITY_DEFINITIONS_JSX_NAME","OLD_SECURITY_DEFINITIONS_JSX_NAME","SCHEMA_DEFINITION_JSX_NAME","SECURITY_SCHEMES_SECTION_PREFIX","setSecuritySchemePrefix","shortenHTTPVerb","verb","isRedocExtension","extractExtensions","acc","pluralizeType","displayType","getContentWithLegacyExamples","mediaContent","xExamples","xExample","mapLang","lang","json","shell","viml","highlight","DEFAULT_LANG","grammar","Throttle","delay","_","_2","desc","wait","timeout","previous","later","Date","getTime","now","remaining","clearTimeout","throttle","debugTime","debugTimeEnd","lookbehind","SENTINEL","memoize","descriptor","memoizedName","_memoizeMethod","_memoizeGetter","alphabeticallyByProp","sortOrder","EVENT","HistoryService","emit","_emiter","currentId","EventEmitter","linkForId","subscribe","cb","emmiter","addListener","removeListener","removeEventListener","rewriteHistory","history","replaceState","pushState","debounce","MarkerService","Map","prevTerm","addOnly","elements","inst","elem","unmark","clearAll","clear","mark","breaks","extensions","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","encode","unescapeTest","caret","edit","regex","opt","getRegex","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","baseUrls","justDomain","rtrim","relativeBase","domain","encodeURI","noopTest","exec","merge","splitCells","tableRow","cells","offset","escaped","curr","invert","suffLen","currChar","checkSanitizeDeprecation","repeatString","outputLink","cap","lexer","inLink","inlineTokens","Tokenizer","space","rules","block","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","indentCodeCompensation","trimmed","inline","hr","blockquote","blockTokens","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","loose","itemRegex","trimLeft","nextBulletRegex","hrRegex","task","checked","trimRight","spacers","hasMultipleLineBreaks","every","chars","lineBreaks","char","pre","tag","table","align","rows","j","row","lheading","paragraph","escape","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","_escapes","reflink","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","reflinkSearch","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","inlineQueue","static","lex","lastToken","cutSrc","lastParagraphClipped","leading","tabs","repeat","some","extTokenizer","startBlock","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","startInline","Renderer","infostring","quote","slugger","slug","listitem","checkbox","tablerow","tablecell","flags","image","TextRenderer","Slugger","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parseInline","l2","l3","cell","itemBody","renderers","unshift","marked","pending","setOptions","newDefaults","getDefaults","use","opts","childTokens","hasExtensions","pack","prevRenderer","prevTokenizer","lexInline","LEGACY_REGEXP","MDX_COMPONENT_REGEXP","COMPONENT_REGEXP","buildComponentComment","MarkdownRenderer","parentId","headingRule","currentTopHeading","saveHeading","originalHeadingRule","headingEnhanceRenderer","rawText","componentName","headingLinePos","flattenHeadings","attachHeadingsDescriptions","buildRegexp","flatHeadings","prevHeading","prevRegexp","prevPos","regexp","currentPos","renderMd","extractHeadings","renderMdWithComponents","names","componentsRegexp","htmlParts","componentDefs","lasxtIdx","componentMeta","component","propsSelector","parseProps","htmlPart","ApiInfoModel","firstHeadingLinePos","downloadLink","getDownloadLink","getDownloadFileName","blob","SecurityRequirementModel","requirement","displayName","sectionId","CallbackModel","infoOrRef","expanded","operations","makeObservable","operationName","operationInfo","OperationModel","compile","httpVerb","pathParameters","pathServers","toggle","observable","action","pushRef","concatRefStacks","OpenAPIParser","allowMergeRefs","byRef","validate","baseRefsStack","mergeAsAllOf","objRefsStack","schemaName","refsStack","mergeRefs","rest","readOnly","writeOnly","mergeAllOf","hoistOneOfs","receiver","allOfSchemas","uniqByPropIncludeMissing","subRefsStack","subRef","subMerged","child","enumProperty","isCircular","otherConstraints","propRefsStack","mergedProp","receiverItems","subSchemaItems","findDerived","$refs","defName","sub","beforeAllOf","afterAllOf","part","isChild","typePrefix","activeOneOf","newRefsStack","rawSchema","init","activateOneOf","hasType","baseName","externalDocs","constraints","displayFormat","initConditionalOperators","getDiscriminator","initOneOf","oneOfType","buildFields","filteredType","initDiscriminator","variant","derefVariant","merged","uniqueTypes","crawl","values","collectUniqueOneOfTypesDeep","discriminatorProp","implicitInversedMapping","isLimitedToMapping","explicitInversedMapping","inversedMapping","left","right","indexLeft","indexRight","innerSchema","ifOperator","elseOperator","thenOperator","restSchema","groupedOperators","patternProps","additionalProps","itemsProps","FieldModel","kind","fieldsCount","buildAdditionalItems","externalExamplesCache","ExampleModel","externalValue","externalValueUrl","getExternalValue","mimeType","txt","ok","DEFAULT_SERIALIZATION","cookie","fieldSchema","SchemaModel","exampleValue","collapse","MediaTypeModel","isRequestType","generateExample","samplerOptions","skipReadOnly","skipWriteOnly","skipNonRequired","maxSampleDepth","sample","MediaContentModel","activeMimeIdx","mediaTypes","activate","active","hasSample","computed","RequestBodyModel","isEvent","isRequest","ResponseModel","isPayloadSample","requestBodyContent","isCodeSamplesWarningPrinted","operationSpec","isCallback","ready","isWebhook","sidebarLabel","operationHash","deactivate","codeSamples","samples","insertInx","_parameters","paramOrRef","hasSuccessResponses","callbackEventName","WebhookModel","webhooks","initWebhooks","webhookName","resolvedWebhook","SecuritySchemeModel","apiKey","bearerFormat","openId","connectUrl","openIdConnectUrl","SecuritySchemesModel","SpecStore","contentItems","MenuBuilder","buildStructure","webhookPath","GroupModel","tagOrGroup","getTextBeforeHading","GROUP_DEPTH","tagsMap","getTagsWithOperations","addMarkdownItems","getTagGroupsItems","getTagsItems","initialDepth","mapHeadingsDeep","_parent","group","groups","tags","tagNames","tagName","used","getOperationsItems","resolvedPaths","getTags","operationTags","SECTION_ATTR","MenuStore","scroll","activeItemIdx","sideBarOpened","updateOnScroll","isScrolledDown","step","itemIdx","flatItems","getElementAtOrFirstChild","isElementBellow","getElementAt","isElementAbove","updateOnHistory","activateAndScroll","scrollIntoViewBySelector","getItemById","absoluteIdx","_unsubscribe","_hashUnsubscribe","toggleSidebar","closeSidebar","activeItem","updateLocation","menuItem","scrollToActive","ScrollService","_prevOffsetY","_scrollParent","scrollY","handleScroll","removeAllListeners","HTMLElement","pageYOffset","floor","scrollBy","SearchStore","searchWorker","getWorker","indexItems","terminate","compact","Section","underlined","RightPanel","DarkRightPanel","Row","headerFontSize","headerCommonMixin","H1","H2","RightPanelHeader","UnderlinedHeader","StoreContext","createContext","StoreBuilder","onLoaded","resolvedSpec","setResolvedSpec","setError","loadAndBundleSpec","AppStore","loading","useStore","useContext","linkifyMixin","StyledShareLink","clickHandler","event","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","preventDefault","onClick","ShareLink","directionMap","up","down","ShelfIcon","x","xmlns","y","points","float","direction","Badge","deprecatedCss","PropertiesTableCaption","PropertyCell","PropertyCellWithInner","PropertyNameCell","PropertyDetailsCell","PropertyBullet","InnerPropertiesWrap","PropertiesTable","OneOfList","OneOfLabel","OneOfButton","ArrayOpenningLabel","ArrayClosingLabel","Tabs","PrismDiv","SampleControls","SampleControlsWrap","StyledPre","withComponent","PerfectScrollbarConstructor","psStyles","PSStyling","StyledScrollWrapper","PerfectScrollbar","handleRef","_container","componentDidMount","parentElement","scrollTo","componentDidUpdate","componentWillUnmount","destroy","updateFn","PerfectScrollbarWrap","overflow","overscrollBehavior","msOverflowStyle","ArrowIcon","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Dropdown","onChange","placeholder","selectedIndex","disabled","hidden","fullWidth","SimpleDropdown","MimeLabel","DropdownOrLabel","Label","linksCss","StyledMarkdownBlock","StyledMarkdownSpan","SanitizedMarkdownHTML","Wrap","dangerouslySetInnerHTML","__html","Markdown","dataRole","Wrapper","Tip","Content","Arrow","Gap","Tooltip","open","isSupported","queryCommandSupported","ClipboardService","range","selection","createTextRange","moveToElementText","select","createRange","getSelection","selectNodeContents","removeAllRanges","addRange","empty","execCommand","selectElement","copySelected","deselect","textArea","position","padding","outline","boxShadow","background","CopyButtonWrapper","tooltipShown","setTooltipShown","copy","showTooltip","renderCopyButton","jsonToHTML","maxExpandLevel","output","valueToHTML","htmlEncode","stringifyStringLiteral","decorateWithSpan","valueType","collapsed","hasContents","arrayToHTML","toISOString","objectToHTML","jsonStyles","JsonViewerWrap","JsonViewer","setNode","renderInner","showFoldingButtons","expandAll","collapseAll","getElementsByClassName","classList","elementsArr","collapseElement","contains","clickListener","focusListener","SourceCode","SourceCodeWithCopy","ExampleValue","Example","ExternalExample","setIsLoading","useState","useRef","prevRef","current","useEffect","useExternalExample","rel","DropdownLabel","DropdownWrapper","InvertedSimpleDropdown","NoSampleLabel","MediaTypeSamples","activeIdx","switchMedia","mediaType","noSample","examplesNames","SamplesWrapper","renderDropdown","ariaLabel","ClickablePropertyNameCell","FieldLabel","TypePrefix","TypeName","TypeTitle","TypeFormat","RequiredLabel","PropertyLabel","RecursiveLabel","PatternLabel","ExtensionValue","ConstraintItem","ToggleButton","LinkWrap","observer","EnumValues","displayedItems","showToggleButton","toggleButtonText","contextType","Extension","Extensions","exts","Examples","stringifyValue","ExamplesList","ConstraintsView","constraint","FieldDetail","Pattern","isPatternShown","setIsPatternShown","togglePattern","ArrayItemDetails","FieldDetailsComponent","showExamples","renderDiscriminatorSwitch","_in","_const","rawDefault","renderedExamples","Boolean","ExternalDocumentation","FieldDetails","expandByDefault","handleKeyPress","isLast","withSubSchema","paramName","onKeyPress","colSpan","Schema","showTitle","changeActiveChild","option","sortOptions","enumValues","enumOrder","enumItem","activeValue","ObjectSchema","filteredFields","Field","DiscriminatorDropdown","parentSchema","PaddedSchema","ArraySchema","itemsSchema","minMaxItems","activeSchema","RecursiveSchema","OneOfSchema","SchemaDefinition","schemaRef","exampleRef","mediaModel","_mediaModel","getMediaType","showReadOnly","showWriteOnly","MediaSamplesWrap","ScopeName","SecurityRequirementAndWrap","SecurityRequirementOrWrap","AuthHeaderColumn","SecuritiesColumn","AuthHeader","SecurityRow","SecurityDetailsStyle","SeeMore","showMore","setShowMore","showLink","setShowLink","scrollHeight","Container","ButtonContainer","dimmed","ButtonLinkStyled","OAuthFlow","RequiredScopes","scopesNames","refreshUrl","scope","SecurityDetails","AUTH_TYPES","oauth2","openIdConnect","SecurityDefs","createSearchIndex","marker","disposer","rawOptions","DEFAULT_OPTIONS","observe","change","updateMarkOnMenu","searchIndex","onDidMount","$description","$summary","ApiHeader","DownloadButton","InfoSpan","InfoSpanBoxWrap","InfoSpanBox","handleDownloadClick","downloadFilename","license","website","contact","email","terms","LogoImgEl","LogoWrap","logoInfo","logoHref","altText","alt","Component","AdvancedMarkdown","renderWithOptionsAndStore","htmlWrap","PartComponent","OperationBadge","menuItemActive","MenuItemUl","MenuItemLi","menuItemDepth","MenuItemLabel","role","MenuItemTitle","RedocAttribution","CallbackTitleWrapper","CallbackName","OperationBadgeStyled","StyledCallbackTitle","opened","CallbackDetailsWrap","SelectOnClick","onFocus","tabIndex","OperationEndpointWrap","ServerRelativeURL","EndpointInfo","inverted","HttpVerb","ServersOverlay","ServerItem","ServerUrl","Endpoint","marginRight","normalizedUrl","ParametersGroup","place","withLabel","PARAM_PLACES","Parameters","orderParams","paramsMap","paramsPlaces","bodyContent","bodyDescription","BodyContent","DropdownWithinHeader","MediaTypesSwitch","ResponseTitle","Code","StyledResponseTitle","ResponseDetailsWrap","HeadersCaption","ResponseHeaders","ResponseDetails","ResponseView","mimes","ResponsesHeader","ResponsesList","SecurityHeader","grouping","RequiredScopesRow","SecurityRequirements","setExpanded","securities","operationSecuritySchemes","LockIcon","getRequiredScopes","allScopes","securitiesLength","schemesLength","hasDescription","Description","callbackOperation","CallbackDetails","CallbacksList","CallbacksHeader","CallbackOperation","switchItem","mimeContent","CallbackPayloadSample","payloadSample","PayloadSampleWrapper","PayloadSamples","dropdownOptions","GenericChildrenSwitcher","hasSamples","hideTabList","defaultIndex","TabList","Tab","TabPanel","Operation","RequestSamples","ResponseSamples","CallbackSamples","ContentItem","SectionItem","OperationItem","ContentItems","middlePanelWrap","Header","onActivate","stopPropagation","scrollIntoViewIfActive","withoutChildren","OperationMenuItemContent","MenuItems","MenuItem","RedoclyLogo","isDisplay","setDisplay","onError","_updateScroll","saveScrollUpdate","upd","wheelPropagation","AnimatedChevronButton","iconOffset","ChevronContainer","ChevronSvg","transform","transition","Stickyfill","stickyfill","StyledStickySidebar","FloatingButton","toggleNavMenu","stickyElement","getScrollYOffset","RedocWrap","ApiContentWrap","BackgroundStub","percents","SearchWrap","SearchInput","getLuminance","SearchIcon","attrs","SearchResultsBox","ClearIcon","SearchBox","activeItemRef","results","noResults","handleKeyDown","keyCode","activeResult","clearResults","searchCallback","setResults","searchTerm","onKeyDown","Redoc","StickyResponsiveSidebar","ApiLogo","SideMenu","ApiInfo","propTypes","isRequired","RedocStandalone","hideLoading","normalizedOpts"],"sourceRoot":""}
\No newline at end of file