{"version":3,"file":"components/chunks/chunk-num-20.335609a7cbc34b32f33f.js","mappings":"2IACe,SAAS,EAACA,GACvB,IAAIA,EAAKC,MAAT,CAGA,IAAIC,EACY,oBAAqBF,EADjCE,EAEQ,WAAYF,GAAQ,aAAcG,OAF1CD,EAGI,eAAgBF,GAAQ,SAAUA,GAAQ,WAC9C,IAEE,OADA,IAAII,MACG,CACT,CAAE,MAAOC,GACP,OAAO,CACT,CACF,CAPgD,GAH9CH,EAWQ,aAAcF,EAXtBE,EAYW,gBAAiBF,EAEhC,GAAIE,EACF,IAAII,EAAc,CAAC,qBAAsB,sBAAuB,6BAA8B,sBAAuB,uBAAwB,sBAAuB,uBAAwB,wBAAyB,yBACjNC,EAAa,SAAoBC,GACnC,OAAOA,GAAOC,SAASC,UAAUC,cAAcH,EACjD,EACII,EAAoBC,YAAYC,QAAU,SAAUN,GACtD,OAAOA,GAAOF,EAAYS,QAAQC,OAAON,UAAUO,SAASC,KAAKV,KAAS,CAC5E,EAoDFW,EAAQT,UAAUU,OAAS,SAAUC,EAAMC,GACzCD,EAAOE,EAAcF,GACrBC,EAAQE,EAAeF,GACvB,IAAIG,EAAWC,KAAKC,IAAIN,GACxBK,KAAKC,IAAIN,GAAQI,EAAW,GAAGG,OAAOH,EAAU,KAAKG,OAAON,GAASA,CACvE,EACAH,EAAQT,UAAUmB,OAAS,SAAUR,UAC5BK,KAAKC,IAAIJ,EAAcF,GAChC,EACAF,EAAQT,UAAUoB,IAAM,SAAUT,GAEhC,OADAA,EAAOE,EAAcF,GACdK,KAAKK,IAAIV,GAAQK,KAAKC,IAAIN,GAAQ,IAC3C,EACAF,EAAQT,UAAUqB,IAAM,SAAUV,GAChC,OAAOK,KAAKC,IAAIK,eAAeT,EAAcF,GAC/C,EACAF,EAAQT,UAAUuB,IAAM,SAAUZ,EAAMC,GACtCI,KAAKC,IAAIJ,EAAcF,IAASG,EAAeF,EACjD,EACAH,EAAQT,UAAUwB,QAAU,SAAUC,EAAUC,GAC9C,IAAK,IAAIf,KAAQK,KAAKC,IAChBD,KAAKC,IAAIK,eAAeX,IAC1Bc,EAASjB,KAAKkB,EAASV,KAAKC,IAAIN,GAAOA,EAAMK,KAGnD,EACAP,EAAQT,UAAU2B,KAAO,WACvB,IAAIC,EAAQ,GAIZ,OAHAZ,KAAKQ,SAAQ,SAAUZ,EAAOD,GAC5BiB,EAAMC,KAAKlB,EACb,IACOmB,EAAYF,EACrB,EACAnB,EAAQT,UAAU+B,OAAS,WACzB,IAAIH,EAAQ,GAIZ,OAHAZ,KAAKQ,SAAQ,SAAUZ,GACrBgB,EAAMC,KAAKjB,EACb,IACOkB,EAAYF,EACrB,EACAnB,EAAQT,UAAUgC,QAAU,WAC1B,IAAIJ,EAAQ,GAIZ,OAHAZ,KAAKQ,SAAQ,SAAUZ,EAAOD,GAC5BiB,EAAMC,KAAK,CAAClB,EAAMC,GACpB,IACOkB,EAAYF,EACrB,EACIpC,IACFiB,EAAQT,UAAUP,OAAOwC,UAAYxB,EAAQT,UAAUgC,SAiIzD,IAAIE,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAsC3DC,EAAQnC,UAAUoC,MAAQ,WACxB,OAAO,IAAID,EAAQnB,KAAM,CACvBqB,KAAMrB,KAAKsB,WAEf,EA4BAC,EAAK/B,KAAK2B,EAAQnC,WAalBuC,EAAK/B,KAAKgC,EAASxC,WACnBwC,EAASxC,UAAUoC,MAAQ,WACzB,OAAO,IAAII,EAASxB,KAAKsB,UAAW,CAClCG,OAAQzB,KAAKyB,OACbC,WAAY1B,KAAK0B,WACjBC,QAAS,IAAIlC,EAAQO,KAAK2B,SAC1BC,IAAK5B,KAAK4B,KAEd,EACAJ,EAASK,MAAQ,WACf,IAAIC,EAAW,IAAIN,EAAS,KAAM,CAChCC,OAAQ,EACRC,WAAY,KAGd,OADAI,EAASC,KAAO,QACTD,CACT,EACA,IAAIE,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAC5CR,EAASS,SAAW,SAAUL,EAAKH,GACjC,IAA0C,IAAtCO,EAAiB3C,QAAQoC,GAC3B,MAAM,IAAIS,WAAW,uBAEvB,OAAO,IAAIV,EAAS,KAAM,CACxBC,OAAQA,EACRE,QAAS,CACPQ,SAAUP,IAGhB,EACAtD,EAAKmB,QAAUA,EACfnB,EAAK6C,QAAUA,EACf7C,EAAKkD,SAAWA,EAChBlD,EAAKC,MAAQ,SAAU6D,EAAOC,GAC5B,OAAO,IAAIC,GAAQ,SAAUC,EAASC,GACpC,IAAIC,EAAU,IAAItB,EAAQiB,EAAOC,GAC7BK,EAAM,IAAIC,eACdD,EAAIE,OAAS,WACX,IAjEgBC,EAChBlB,EAgEImB,EAAU,CACZrB,OAAQiB,EAAIjB,OACZC,WAAYgB,EAAIhB,WAChBC,SApEckB,EAoEQH,EAAIK,yBAA2B,GAnEvDpB,EAAU,IAAIlC,EAGQoD,EAAWG,QAAQ,eAAgB,KACzCC,MAAM,SAASzC,SAAQ,SAAU0C,GACnD,IAAIC,EAAQD,EAAKD,MAAM,KACnBG,EAAMD,EAAME,QAAQC,OACxB,GAAIF,EAAK,CACP,IAAIxD,EAAQuD,EAAMI,KAAK,KAAKD,OAC5B3B,EAAQjC,OAAO0D,EAAKxD,EACtB,CACF,IACO+B,IAyDHmB,EAAQlB,IAAM,gBAAiBc,EAAMA,EAAIc,YAAcV,EAAQnB,QAAQvB,IAAI,iBAC3E,IAAIiB,EAAO,aAAcqB,EAAMA,EAAIZ,SAAWY,EAAIe,aAClDlB,EAAQ,IAAIf,EAASH,EAAMyB,GAC7B,EACAJ,EAAIgB,QAAU,WACZlB,EAAO,IAAImB,UAAU,0BACvB,EACAjB,EAAIkB,UAAY,WACdpB,EAAO,IAAImB,UAAU,0BACvB,EACAjB,EAAImB,KAAKpB,EAAQqB,OAAQrB,EAAQb,KAAK,GACV,YAAxBa,EAAQsB,YACVrB,EAAIsB,iBAAkB,EACW,SAAxBvB,EAAQsB,cACjBrB,EAAIsB,iBAAkB,GAEpB,iBAAkBtB,GAAOlE,IAC3BkE,EAAIuB,aAAe,QAErBxB,EAAQd,QAAQnB,SAAQ,SAAUZ,EAAOD,GACvC+C,EAAIwB,iBAAiBvE,EAAMC,EAC7B,IACA8C,EAAIyB,UAAkC,IAAtB1B,EAAQnB,UAA4B,KAAOmB,EAAQnB,UACrE,GACF,EACAhD,EAAKC,MAAM6F,UAAW,CAjZtB,CAwBA,SAASvE,EAAcF,GAIrB,GAHoB,iBAATA,IACTA,EAAO0E,OAAO1E,IAEZ,6BAA6B2E,KAAK3E,GACpC,MAAM,IAAIgE,UAAU,0CAEtB,OAAOhE,EAAK4E,aACd,CACA,SAASzE,EAAeF,GAItB,MAHqB,iBAAVA,IACTA,EAAQyE,OAAOzE,IAEVA,CACT,CAGA,SAASkB,EAAYF,GACnB,IAAIK,EAAW,CACbuD,KAAM,WACJ,IAAI5E,EAAQgB,EAAMyC,QAClB,MAAO,CACLoB,UAAgBC,IAAV9E,EACNA,MAAOA,EAEX,GAOF,OALIpB,IACFyC,EAASxC,OAAOwC,UAAY,WAC1B,OAAOA,CACT,GAEKA,CACT,CACA,SAASxB,EAAQkC,GACf3B,KAAKC,IAAM,CAAC,EACR0B,aAAmBlC,EACrBkC,EAAQnB,SAAQ,SAAUZ,EAAOD,GAC/BK,KAAKN,OAAOC,EAAMC,EACpB,GAAGI,MACM2E,MAAMC,QAAQjD,GACvBA,EAAQnB,SAAQ,SAAUqE,GACxB7E,KAAKN,OAAOmF,EAAO,GAAIA,EAAO,GAChC,GAAG7E,MACM2B,GACTrC,OAAOwF,oBAAoBnD,GAASnB,SAAQ,SAAUb,GACpDK,KAAKN,OAAOC,EAAMgC,EAAQhC,GAC5B,GAAGK,KAEP,CAmDA,SAAS+E,EAAS1D,GAChB,GAAIA,EAAK2D,SACP,OAAO1C,EAAQE,OAAO,IAAImB,UAAU,iBAEtCtC,EAAK2D,UAAW,CAClB,CACA,SAASC,EAAgBC,GACvB,OAAO,IAAI5C,GAAQ,SAAUC,EAASC,GACpC0C,EAAOtC,OAAS,WACdL,EAAQ2C,EAAOC,OACjB,EACAD,EAAOxB,QAAU,WACflB,EAAO0C,EAAOrD,MAChB,CACF,GACF,CACA,SAASuD,EAAsBC,GAC7B,IAAIH,EAAS,IAAII,WACbC,EAAUN,EAAgBC,GAE9B,OADAA,EAAOM,kBAAkBH,GAClBE,CACT,CAeA,SAASE,EAAYC,GACnB,GAAIA,EAAIC,MACN,OAAOD,EAAIC,MAAM,GAEnB,IAAIC,EAAO,IAAIC,WAAWH,EAAII,YAE9B,OADAF,EAAKrF,IAAI,IAAIsF,WAAWH,IACjBE,EAAKG,MACd,CACA,SAASxE,IA+EP,OA9EAvB,KAAKgF,UAAW,EAChBhF,KAAKgG,UAAY,SAAU3E,GAEzB,GADArB,KAAKsB,UAAYD,EACZA,EAEE,GAAoB,iBAATA,EAChBrB,KAAKiG,UAAY5E,OACZ,GAAI7C,GAAgBE,KAAKM,UAAUC,cAAcoC,GACtDrB,KAAKkG,UAAY7E,OACZ,GAAI7C,GAAoB2H,SAASnH,UAAUC,cAAcoC,GAC9DrB,KAAKoG,cAAgB/E,OAChB,GAAI7C,GAAwB6H,gBAAgBrH,UAAUC,cAAcoC,GACzErB,KAAKiG,UAAY5E,EAAK9B,gBACjB,GAAIf,GAAuBA,GAAgBK,EAAWwC,GAC3DrB,KAAKsG,iBAAmBb,EAAYpE,EAAK0E,QAEzC/F,KAAKsB,UAAY,IAAI5C,KAAK,CAACsB,KAAKsG,uBAC3B,KAAI9H,IAAwBW,YAAYH,UAAUC,cAAcoC,KAASnC,EAAkBmC,GAGhG,MAAM,IAAIkF,MAAM,6BAFhBvG,KAAKsG,iBAAmBb,EAAYpE,EAGtC,MAjBErB,KAAKiG,UAAY,GAkBdjG,KAAK2B,QAAQvB,IAAI,kBACA,iBAATiB,EACTrB,KAAK2B,QAAQpB,IAAI,eAAgB,4BACxBP,KAAKkG,WAAalG,KAAKkG,UAAUnE,KAC1C/B,KAAK2B,QAAQpB,IAAI,eAAgBP,KAAKkG,UAAUnE,MACvCvD,GAAwB6H,gBAAgBrH,UAAUC,cAAcoC,IACzErB,KAAK2B,QAAQpB,IAAI,eAAgB,mDAGvC,EACI/B,IACFwB,KAAKqF,KAAO,WACV,IAAImB,EAAWzB,EAAS/E,MACxB,GAAIwG,EACF,OAAOA,EAET,GAAIxG,KAAKkG,UACP,OAAO5D,EAAQC,QAAQvC,KAAKkG,WACvB,GAAIlG,KAAKsG,iBACd,OAAOhE,EAAQC,QAAQ,IAAI7D,KAAK,CAACsB,KAAKsG,oBACjC,GAAItG,KAAKoG,cACd,MAAM,IAAIG,MAAM,wCAEhB,OAAOjE,EAAQC,QAAQ,IAAI7D,KAAK,CAACsB,KAAKiG,YAE1C,EACAjG,KAAKyG,YAAc,WACjB,OAAIzG,KAAKsG,iBACAvB,EAAS/E,OAASsC,EAAQC,QAAQvC,KAAKsG,kBAEzCtG,KAAKqF,OAAOqB,KAAKtB,EAC1B,GAEFpF,KAAK2G,KAAO,WACV,IA/EoBtB,EAClBH,EACAK,EA6EEiB,EAAWzB,EAAS/E,MACxB,GAAIwG,EACF,OAAOA,EAET,GAAIxG,KAAKkG,UACP,OApFkBb,EAoFIrF,KAAKkG,UAnF3BhB,EAAS,IAAII,WACbC,EAAUN,EAAgBC,GAC9BA,EAAO0B,WAAWvB,GACXE,EAiFE,GAAIvF,KAAKsG,iBACd,OAAOhE,EAAQC,QAhFrB,SAA+BmD,GAG7B,IAFA,IAAIE,EAAO,IAAIC,WAAWH,GACtBmB,EAAQ,IAAIlC,MAAMiB,EAAKkB,QAClBC,EAAI,EAAGA,EAAInB,EAAKkB,OAAQC,IAC/BF,EAAME,GAAK1C,OAAO2C,aAAapB,EAAKmB,IAEtC,OAAOF,EAAMtD,KAAK,GACpB,CAyE6B0D,CAAsBjH,KAAKsG,mBAC7C,GAAItG,KAAKoG,cACd,MAAM,IAAIG,MAAM,wCAEhB,OAAOjE,EAAQC,QAAQvC,KAAKiG,UAEhC,EACIzH,IACFwB,KAAKkH,SAAW,WACd,OAAOlH,KAAK2G,OAAOD,KAAKS,EAC1B,GAEFnH,KAAKoH,KAAO,WACV,OAAOpH,KAAK2G,OAAOD,KAAKW,KAAKC,MAC/B,EACOtH,IACT,CAQA,SAASmB,EAAQiB,EAAOU,GAEtB,IANuBgB,EACnByD,EAKAlG,GADJyB,EAAUA,GAAW,CAAC,GACHzB,KACnB,GAAIe,aAAiBjB,EAAS,CAC5B,GAAIiB,EAAM4C,SACR,MAAM,IAAIrB,UAAU,gBAEtB3D,KAAK4B,IAAMQ,EAAMR,IACjB5B,KAAK+D,YAAc3B,EAAM2B,YACpBjB,EAAQnB,UACX3B,KAAK2B,QAAU,IAAIlC,EAAQ2C,EAAMT,UAEnC3B,KAAK8D,OAAS1B,EAAM0B,OACpB9D,KAAKwH,KAAOpF,EAAMoF,KACbnG,GAA2B,MAAnBe,EAAMd,YACjBD,EAAOe,EAAMd,UACbc,EAAM4C,UAAW,EAErB,MACEhF,KAAK4B,IAAMyC,OAAOjC,GASpB,GAPApC,KAAK+D,YAAcjB,EAAQiB,aAAe/D,KAAK+D,aAAe,QAC1DjB,EAAQnB,SAAY3B,KAAK2B,UAC3B3B,KAAK2B,QAAU,IAAIlC,EAAQqD,EAAQnB,UAErC3B,KAAK8D,QA7BkBA,EA6BOhB,EAAQgB,QAAU9D,KAAK8D,QAAU,MA5B3DyD,EAAUzD,EAAO2D,cACdvG,EAAQ7B,QAAQkI,IAAY,EAAIA,EAAUzD,GA4BjD9D,KAAKwH,KAAO1E,EAAQ0E,MAAQxH,KAAKwH,MAAQ,KACzCxH,KAAK0H,SAAW,MACK,QAAhB1H,KAAK8D,QAAoC,SAAhB9D,KAAK8D,SAAsBzC,EACvD,MAAM,IAAIsC,UAAU,6CAEtB3D,KAAKgG,UAAU3E,EACjB,CAMA,SAAS8F,EAAO9F,GACd,IAAIsG,EAAO,IAAIxB,SASf,OARA9E,EAAKiC,OAAOL,MAAM,KAAKzC,SAAQ,SAAUoH,GACvC,GAAIA,EAAO,CACT,IAAI3E,EAAQ2E,EAAM3E,MAAM,KACpBtD,EAAOsD,EAAMI,QAAQL,QAAQ,MAAO,KACpCpD,EAAQqD,EAAMM,KAAK,KAAKP,QAAQ,MAAO,KAC3C2E,EAAKjI,OAAOmI,mBAAmBlI,GAAOkI,mBAAmBjI,GAC3D,CACF,IACO+H,CACT,CAiBA,SAASnG,EAASsG,EAAUhF,GACrBA,IACHA,EAAU,CAAC,GAEb9C,KAAK+B,KAAO,UACZ/B,KAAKyB,YAA4BiD,IAAnB5B,EAAQrB,OAAuB,IAAMqB,EAAQrB,OAC3DzB,KAAK+H,GAAK/H,KAAKyB,QAAU,KAAOzB,KAAKyB,OAAS,IAC9CzB,KAAK0B,WAAa,eAAgBoB,EAAUA,EAAQpB,WAAa,KACjE1B,KAAK2B,QAAU,IAAIlC,EAAQqD,EAAQnB,SACnC3B,KAAK4B,IAAMkB,EAAQlB,KAAO,GAC1B5B,KAAKgG,UAAU8B,EACjB,CAqEF,CCtZA,SAASE,EAAQC,GAAgC,OAAOD,EAAU,mBAAqBvJ,QAAU,iBAAmBA,OAAOwC,SAAW,SAAUgH,GAAK,cAAcA,CAAG,EAAI,SAAUA,GAAK,OAAOA,GAAK,mBAAqBxJ,QAAUwJ,EAAEC,cAAgBzJ,QAAUwJ,IAAMxJ,OAAOO,UAAY,gBAAkBiJ,CAAG,EAAGD,EAAQC,EAAI,CAE7T,SAASE,EAAkBxJ,EAAGyJ,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAEtB,OAAQuB,IAAK,CAAE,IAAIJ,EAAIG,EAAEC,GAAIJ,EAAEK,WAAaL,EAAEK,aAAc,EAAIL,EAAEM,cAAe,EAAI,UAAWN,IAAMA,EAAEO,UAAW,GAAKlJ,OAAOmJ,eAAe9J,EAAG+J,EAAeT,EAAE7E,KAAM6E,EAAI,CAAE,CAEvO,SAASS,EAAeL,GAAK,IAAItB,EACjC,SAAsBsB,EAAGD,GAAK,GAAI,UAAYJ,EAAQK,KAAOA,EAAG,OAAOA,EAAG,IAAI1J,EAAI0J,EAAE5J,OAAOkK,aAAc,QAAI,IAAWhK,EAAG,CAAE,IAAIoI,EAAIpI,EAAEa,KAAK6I,EAAGD,GAAK,WAAY,GAAI,UAAYJ,EAAQjB,GAAI,OAAOA,EAAG,MAAM,IAAIpD,UAAU,+CAAiD,CAAE,OAAQ,WAAayE,EAAI/D,OAASuE,QAAQP,EAAI,CADtRQ,CAAaR,EAAG,UAAW,MAAO,UAAYL,EAAQjB,GAAKA,EAAIA,EAAI,EAAI,CAO5G,IA6FA,EA7FgC,WAe9B,OAvBoBpI,EASpB,SAASmK,IAMP,OAjBJ,SAAyBC,EAAGC,GAAK,KAAMD,aAAaC,GAAI,MAAM,IAAIrF,UAAU,oCAAsC,CAY9GsF,CAAgBjJ,KAAM8I,GACjBA,EAAaI,WAChBlJ,KAAKmJ,YAAc,CAAC,EACpBL,EAAaI,SAAWlJ,MAEnB8I,EAAaI,QACtB,GAhBuBd,EAuBW,CAAC,CACjChF,IAAK,aACLxD,MAAO,SAAoBwJ,GACzBpJ,KAAKmJ,YAAYC,EAAQC,IAAM,CAACD,EAAQE,kBAAkBF,EAAQC,IAAKD,EAAQzJ,KACjF,GAOC,CACDyD,IAAK,iBACLxD,MAAO,WACL,OAAOI,KAAKmJ,WACd,GAQC,CACD/F,IAAK,uBACLxD,MAAO,WACL,IAAI2J,EAAQvJ,KAERwJ,EAAuB,GAQ3B,OAPAlK,OAAOqB,KAAKX,KAAKmJ,aAAa3I,SAAQ,SAAUiJ,GAC9CD,EAAqB3I,KAAK,CACxB6I,UAAWD,EACXE,SAAUJ,EAAMJ,YAAYM,GAAW,GACvCG,MAAOL,EAAMJ,YAAYM,GAAW,GAAGzG,QAAQ,UAAW,KAAKA,QAAQ,8BAA+B,IAAI6G,WAAW,OAAQ,KAEjI,IACOL,CACT,GAQC,CACDpG,IAAK,mBACLxD,MAAO,SAA0B6J,GAC/B,QAAOzJ,KAAKmJ,YAAYM,IAAazJ,KAAKmJ,YAAYM,EACxD,GAQC,CACDrG,IAAK,gBACLxD,MAAO,SAAuB6J,GAM5B,OALeK,SAASC,iBAAiB,6BAA8B7J,OAAOuJ,EAAW,OAChFjJ,SAAQ,SAAUwJ,GACzBA,EAAQC,cAAc,0BAA0BrK,MAAQ,CAC1D,WACOI,KAAKmJ,YAAYM,GACjBzJ,KAAKmJ,WACd,GAKC,CACD/F,IAAK,YACLxD,MAAO,WACLI,KAAKmJ,YAAc,CAAC,CACtB,MAlGyChB,EAAkBxJ,EAAEK,UAAWoJ,GAAIC,GAAKF,EAAkBxJ,EAAG0J,GAAI/I,OAAOmJ,eAAe9J,EAAG,YAAa,CAAE6J,UAAU,IAAO7J,EAAvK,IAAsBA,EAAGyJ,EAAGC,CAoG5B,CA5FgC,GCXhC,SAAS,EAAQJ,GAAgC,OAAO,EAAU,mBAAqBxJ,QAAU,iBAAmBA,OAAOwC,SAAW,SAAUgH,GAAK,cAAcA,CAAG,EAAI,SAAUA,GAAK,OAAOA,GAAK,mBAAqBxJ,QAAUwJ,EAAEC,cAAgBzJ,QAAUwJ,IAAMxJ,OAAOO,UAAY,gBAAkBiJ,CAAG,EAAG,EAAQA,EAAI,CAE7T,SAAS,EAAkBtJ,EAAGyJ,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAEtB,OAAQuB,IAAK,CAAE,IAAIJ,EAAIG,EAAEC,GAAIJ,EAAEK,WAAaL,EAAEK,aAAc,EAAIL,EAAEM,cAAe,EAAI,UAAWN,IAAMA,EAAEO,UAAW,GAAKlJ,OAAOmJ,eAAe9J,EAAG,EAAesJ,EAAE7E,KAAM6E,EAAI,CAAE,CAEvO,SAAS,EAAeI,GAAK,IAAItB,EACjC,SAAsBsB,EAAGD,GAAK,GAAI,UAAY,EAAQC,KAAOA,EAAG,OAAOA,EAAG,IAAI1J,EAAI0J,EAAE5J,OAAOkK,aAAc,QAAI,IAAWhK,EAAG,CAAE,IAAIoI,EAAIpI,EAAEa,KAAK6I,EAAGD,GAAK,WAAY,GAAI,UAAY,EAAQrB,GAAI,OAAOA,EAAG,MAAM,IAAIpD,UAAU,+CAAiD,CAAE,OAAQ,WAAayE,EAAI/D,OAASuE,QAAQP,EAAI,CADtR,CAAaA,EAAG,UAAW,MAAO,UAAY,EAAQtB,GAAKA,EAAIA,EAAI,EAAI,CAO5G,IAAImD,EAAyB,WAa3B,OArBoBvL,EAYpB,SAASuL,EAAUC,IAdrB,SAAyBpB,EAAGC,GAAK,KAAMD,aAAaC,GAAI,MAAM,IAAIrF,UAAU,oCAAsC,CAe9G,CAAgB3D,KAAMkK,GACtBlK,KAAKmK,YAAcA,CACrB,EAfuB/B,EAqBQ,CAAC,CAC9BhF,IAAK,WACLxD,MAAO,SAAkBwK,GACvBpK,KAAKmK,YAAYtJ,KAAKuJ,EACxB,GASC,CACDhH,IAAK,kBACLxD,MAAO,WACL,IAAIyK,EAAcC,UAAUxD,OAAS,QAAsBpC,IAAjB4F,UAAU,IAAmBA,UAAU,GAC7EnF,EAAS,CAAC,EAKd,OAJAnF,KAAKmK,YAAY3J,SAAQ,SAAU4J,GACjC,IAAIG,EAAQF,EAAcD,EAAMI,WAAWC,UAAU,GAAKL,EAAMM,aAAa,QAC7EvF,EAAOoF,GAASH,EAAMxK,KACxB,IACOuF,CACT,GAQC,CACD/B,IAAK,iBACLxD,MAAO,WACL,IAAI+K,EAAaL,UAAUxD,OAAS,QAAsBpC,IAAjB4F,UAAU,GAAmBA,UAAU,GAAK,QAEjFM,GAAW,EAef,OAdA5K,KAAKmK,YAAY3J,SAAQ,SAAU4J,GACjCA,EAAMK,UAAUI,OAAOF,IACM,IAAzBP,EAAMQ,SAASE,QACjBF,GAAW,EACXR,EAAMK,UAAUM,IAAIJ,GAGfK,gBAAgBhM,UAAUiM,iBAC7BD,gBAAgBhM,UAAUiM,eAAiB,WAE3C,GAGN,IACOL,CACT,IAzEoCxC,GAAK,EAAkBzJ,EAAEK,UAAWoJ,GAAIC,GAAK,EAAkB1J,EAAG0J,GAAI/I,OAAOmJ,eAAe9J,EAAG,YAAa,CAAE6J,UAAU,IAAO7J,EAAvK,IAAsBA,EAAGyJ,EAAGC,CA2E5B,CAnE6B,GAoE7B,IC/EA,SAAS,EAAQJ,GAAgC,OAAO,EAAU,mBAAqBxJ,QAAU,iBAAmBA,OAAOwC,SAAW,SAAUgH,GAAK,cAAcA,CAAG,EAAI,SAAUA,GAAK,OAAOA,GAAK,mBAAqBxJ,QAAUwJ,EAAEC,cAAgBzJ,QAAUwJ,IAAMxJ,OAAOO,UAAY,gBAAkBiJ,CAAG,EAAG,EAAQA,EAAI,CAE7T,SAAS,EAAkBtJ,EAAGyJ,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAEtB,OAAQuB,IAAK,CAAE,IAAIJ,EAAIG,EAAEC,GAAIJ,EAAEK,WAAaL,EAAEK,aAAc,EAAIL,EAAEM,cAAe,EAAI,UAAWN,IAAMA,EAAEO,UAAW,GAAKlJ,OAAOmJ,eAAe9J,EAAG,EAAesJ,EAAE7E,KAAM6E,EAAI,CAAE,CAEvO,SAAS,EAAeI,GAAK,IAAItB,EACjC,SAAsBsB,EAAGD,GAAK,GAAI,UAAY,EAAQC,KAAOA,EAAG,OAAOA,EAAG,IAAI1J,EAAI0J,EAAE5J,OAAOkK,aAAc,QAAI,IAAWhK,EAAG,CAAE,IAAIoI,EAAIpI,EAAEa,KAAK6I,EAAGD,GAAK,WAAY,GAAI,UAAY,EAAQrB,GAAI,OAAOA,EAAG,MAAM,IAAIpD,UAAU,+CAAiD,CAAE,OAAQ,WAAayE,EAAI/D,OAASuE,QAAQP,EAAI,CADtR,CAAaA,EAAG,UAAW,MAAO,UAAY,EAAQtB,GAAKA,EAAIA,EAAI,EAAI,CAY5G,IAAImE,EAAuB,WAuBzB,OApCoBvM,EAkBpB,SAASuM,EAAQC,GACf,IAAIC,EAAgBd,UAAUxD,OAAS,QAAsBpC,IAAjB4F,UAAU,GAAmBA,UAAU,GAAK,GArB5F,SAAyBvB,EAAGC,GAAK,KAAMD,aAAaC,GAAI,MAAM,IAAIrF,UAAU,oCAAsC,CAsB9G,CAAgB3D,KAAMkL,GACtBlL,KAAKmL,WAAaA,EAClBnL,KAAKoL,cAAgBA,EACrBpL,KAAKqJ,GAAK8B,EAAWT,aAAa,mBAClC1K,KAAKqL,MAAQF,EAAWlB,cAAc,yBAAyBS,aAAa,OAC5E1K,KAAKL,KAAOwL,EAAWlB,cAAc,2BAA2BqB,UAChEtL,KAAKuL,YAAcJ,EAAWlB,cAAc,yBAAyBqB,UAGrEtL,KAAKwL,WACP,GA9BuBpD,EAoCM,CAAC,CAC5BhF,IAAK,YACLxD,MAAO,WAEL,IAAI6L,EAAgBzL,KAAKmL,WAAWlB,cAAc,oBAC9CyB,EAAcD,EAAcxB,cAAc,SAC9CwB,EAAcxB,cAAc,oBAAoB0B,iBAAiB,SAAS,WAEhC,OAApCD,EAAYhB,aAAa,OAC3BgB,EAAY9L,MAAQgM,SAASF,EAAY9L,MAAO,IAAM,EAAIgM,SAASF,EAAYhB,aAAa,OAAQ,IAAMgB,EAAY9L,OAASgM,SAASF,EAAY9L,MAAO,IAAM,GAAGL,WAEpKmM,EAAY9L,OAASgM,SAASF,EAAY9L,MAAO,IAAM,GAAGL,UAE9D,IACAkM,EAAcxB,cAAc,oBAAoB0B,iBAAiB,SAAS,WAEhC,OAApCD,EAAYhB,aAAa,OAC3BgB,EAAY9L,MAAQgM,SAASF,EAAY9L,MAAO,IAAM,EAAIgM,SAASF,EAAYhB,aAAa,OAAQ,IAAMgB,EAAY9L,OAASgM,SAASF,EAAY9L,MAAO,IAAM,GAAGL,WAEpKmM,EAAY9L,OAASgM,SAASF,EAAY9L,MAAO,IAAM,GAAGL,UAE9D,GACF,GAOC,CACD6D,IAAK,oBACLxD,MAAO,SAA2BiM,GAChC,IAAI7B,EAAUF,SAASC,iBAAiB,6BAA8B7J,OAAO2L,EAAQ,OACjFC,EAAY,EAIhB,OAHA9B,EAAQxJ,SAAQ,SAAU4I,GACxB0C,GAAaF,SAASxC,EAAQa,cAAc,0BAA0BrK,MAAO,GAC/E,IACOkM,CACT,GAQC,CACD1I,IAAK,oBACLxD,MAAO,SAA2BmM,GAChC,OAAKnD,OAAOoD,MAAMD,IAAcA,GAAa,IAC3C/L,KAAKmL,WAAWlB,cAAc,4BAA4BrK,MAAQmM,EAC3D/L,KAAKmL,WAAWlB,cAAc,4BAA4BrK,MAGrE,GAKC,CACDwD,IAAK,sBACLxD,MAAO,WACLI,KAAKiM,kBAAkBjM,KAAKoL,cAC9B,MAnGyC,EAAkBzM,EAAEK,UAAWoJ,GAAIC,GAAK,EAAkB1J,EAAG0J,GAAI/I,OAAOmJ,eAAe9J,EAAG,YAAa,CAAE6J,UAAU,IAAO7J,EAAvK,IAAsBA,EAAGyJ,EAAGC,CAqG5B,CAxF2B,GAyF3B,ICzGA,SAAS,EAAQJ,GAAgC,OAAO,EAAU,mBAAqBxJ,QAAU,iBAAmBA,OAAOwC,SAAW,SAAUgH,GAAK,cAAcA,CAAG,EAAI,SAAUA,GAAK,OAAOA,GAAK,mBAAqBxJ,QAAUwJ,EAAEC,cAAgBzJ,QAAUwJ,IAAMxJ,OAAOO,UAAY,gBAAkBiJ,CAAG,EAAG,EAAQA,EAAI,CAE7T,SAAS,EAAkBtJ,EAAGyJ,GAAK,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAEtB,OAAQuB,IAAK,CAAE,IAAIJ,EAAIG,EAAEC,GAAIJ,EAAEK,WAAaL,EAAEK,aAAc,EAAIL,EAAEM,cAAe,EAAI,UAAWN,IAAMA,EAAEO,UAAW,GAAKlJ,OAAOmJ,eAAe9J,EAAG,EAAesJ,EAAE7E,KAAM6E,EAAI,CAAE,CAEvO,SAAS,EAAeI,GAAK,IAAItB,EACjC,SAAsBsB,EAAGD,GAAK,GAAI,UAAY,EAAQC,KAAOA,EAAG,OAAOA,EAAG,IAAI1J,EAAI0J,EAAE5J,OAAOkK,aAAc,QAAI,IAAWhK,EAAG,CAAE,IAAIoI,EAAIpI,EAAEa,KAAK6I,EAAGD,GAAK,WAAY,GAAI,UAAY,EAAQrB,GAAI,OAAOA,EAAG,MAAM,IAAIpD,UAAU,+CAAiD,CAAE,OAAQ,WAAayE,EAAI/D,OAASuE,QAAQP,EAAI,CADtR,CAAaA,EAAG,UAAW,MAAO,UAAY,EAAQtB,GAAKA,EAAIA,EAAI,EAAI,CAE5G,SAASmF,EAAW7D,EAAGJ,EAAGtJ,GAAK,OAAOsJ,EAAIkE,EAAgBlE,GAC1D,SAAoCI,EAAG1J,GAAK,GAAIA,IAAM,UAAY,EAAQA,IAAM,mBAAqBA,GAAI,OAAOA,EAAG,QAAI,IAAWA,EAAG,MAAM,IAAIgF,UAAU,4DAA6D,OACtN,SAAgChF,GAAK,QAAI,IAAWA,EAAG,MAAM,IAAIyN,eAAe,6DAA8D,OAAOzN,CAAG,CADqE0N,CAAuBhE,EAAI,CAD1LiE,CAA2BjE,EAAGkE,IAA8BC,QAAQC,UAAUxE,EAAGtJ,GAAK,GAAIwN,EAAgB9D,GAAGH,aAAeD,EAAEyE,MAAMrE,EAAG1J,GAAK,CAG1M,SAAS4N,IAA8B,IAAM,IAAIlE,GAAKsE,QAAQ3N,UAAU4N,QAAQpN,KAAKgN,QAAQC,UAAUE,QAAS,IAAI,WAAa,IAAK,CAAE,MAAOtE,GAAI,CAAE,OAAQkE,EAA4B,WAAuC,QAASlE,CAAG,IAAM,CAClP,SAAS8D,EAAgB9D,GAAK,OAAO8D,EAAkB7M,OAAOuN,eAAiBvN,OAAOwN,eAAeC,OAAS,SAAU1E,GAAK,OAAOA,EAAE2E,WAAa1N,OAAOwN,eAAezE,EAAI,EAAG8D,EAAgB9D,EAAI,CAEpM,SAAS4E,EAAgB5E,EAAG1J,GAAK,OAAOsO,EAAkB3N,OAAOuN,eAAiBvN,OAAOuN,eAAeE,OAAS,SAAU1E,EAAG1J,GAAK,OAAO0J,EAAE2E,UAAYrO,EAAG0J,CAAG,EAAG4E,EAAgB5E,EAAG1J,EAAI,CAUxL,IAAIuO,EAA+B,SAAUC,GAO3C,SAASD,IACP,IAAI3D,EACA6D,EAAY9C,UAAUxD,OAAS,QAAsBpC,IAAjB4F,UAAU,GAAmBA,UAAU,GAAK,gBAYpF,OA1CJ,SAAyBvB,EAAGC,GAAK,KAAMD,aAAaC,GAAI,MAAM,IAAIrF,UAAU,oCAAsC,CA+B9G,CAAgB3D,KAAMkN,IACtB3D,EAAQ2C,EAAWlM,KAAMkN,EAAiB,CAACE,KACrCC,iBAAmB,OACzB9D,EAAM+D,eAAiB,OACvB/D,EAAMgE,SAAW,CAAC,EAClBhE,EAAMiE,aAAe,IAAI,EACzBjE,EAAMkE,sBAAwB,KAC9BlE,EAAMmE,UAAY,CAAC,EACnBnE,EAAMoE,WAAa,KACnBpE,EAAMqE,WAAa,KACnBrP,EAAasP,QACNtE,CACT,CAOA,OAxCF,SAAmBlB,EAAG1J,GAAK,GAAI,mBAAqBA,GAAK,OAASA,EAAG,MAAM,IAAIgF,UAAU,sDAAuD0E,EAAErJ,UAAYM,OAAOwO,OAAOnP,GAAKA,EAAEK,UAAW,CAAEkJ,YAAa,CAAEtI,MAAOyI,EAAGG,UAAU,EAAID,cAAc,KAASjJ,OAAOmJ,eAAeJ,EAAG,YAAa,CAAEG,UAAU,IAAO7J,GAAKsO,EAAgB5E,EAAG1J,EAAI,CAuCjVoP,CAAUb,EAAiBC,GA/CPxO,EAgDAuO,GAhDG9E,EAgDc,CAAC,CACpChF,IAAK,OACLxD,MAAO,SAAcoO,GACnB,IAAIC,EAASjO,KAEbA,KAAK2N,WAAaK,EAAU/D,cAAc,gBAC1CjK,KAAK4N,WAAaI,EAAU/D,cAAc,gBAC1CjK,KAAKyN,sBAAwBO,EAAU/D,cAAc,4BAA4BqB,UAEjFtL,KAAK0N,UAAY,IAAI,EAAU1N,KAAK2N,WAAW5D,iBAAiB,wCAChE/J,KAAK2N,WAAWlD,UAAUM,IAAI/K,KAAKqN,kBAGnCrN,KAAK2N,WAAW5D,iBAAiB,uCAAuCvJ,SAAQ,SAAU4I,GAExF6E,EAAOV,SAASnE,EAAQsB,aAAa,oBAAsB,IAAI,EAAQtB,EACzE,IAGI4E,EAAUvD,UAAUyD,SAAS,qBAC/BF,EAAUjE,iBAAiB,WAAWvJ,SAAQ,SAAUwJ,GACtDA,EAAQmE,MAAMC,QAAU,MAC1B,IACAJ,EAAU/D,cAAc,0BAA0BoE,UAAW,EAC7DL,EAAU/D,cAAc,0BAA0BrK,MAAQ,GAE5DI,KAAKsO,iBACLtO,KAAKuO,eAAeP,EACtB,GAOC,CACD5K,IAAK,iBACLxD,MAAO,SAAwBoO,GAC7B,IAAIQ,EAASxO,KAEbA,KAAK4N,WAAW7D,iBAAiB,oDAAoDvJ,SAAQ,SAAUwJ,GACrGA,EAAQ2B,iBAAiB,SAAS,WAEhC6C,EAAOC,cAAcD,EAAOb,WAC9B,GACF,IAIA,IAAIe,EAAS1O,KAAK2O,eAClB3O,KAAK4N,WAAW3D,cAAc,gCAAgC0B,iBAAiB,SAAS,WAGtF,GADA6C,EAAOZ,WAAW3D,cAAc,8BAA8BQ,UAAUI,OAAO2D,EAAOlB,gBAClFkB,EAAOZ,WAAW3D,cAAc,iCAAiC2E,QAAS,CAC5E,IAAIhN,EAAMoM,EAAUtD,aAAa,iBAC7BmE,EAAUL,EAAOd,UAAUoB,kBAC/BD,EAAQE,eAAiBP,EAAOhB,aAAawB,uBAC7CR,EAAOZ,WAAW3D,cAAc,+BAA+BO,WAAWyE,aAAaP,EAAQF,EAAOZ,WAAW3D,cAAc,gCAC/HuE,EAAOZ,WAAW3D,cAAc,gCAAgCQ,UAAUM,IAAI,YAC9EyD,EAAOU,YAAYL,EAASjN,EAC9B,MACE4M,EAAOZ,WAAW3D,cAAc,8BAA8BQ,UAAUM,IAAIyD,EAAOlB,gBACnFkB,EAAOZ,WAAW3D,cAAc,8BAA8BkF,eAAe,CAC3EC,SAAU,UAGhB,GACF,GACC,CACDhM,IAAK,eACLxD,MAAO,WACL,IAAI8O,EAAS5E,SAASuF,cAAc,OAClCC,EAAiBxF,SAASuF,cAAc,OACxCE,EAAiBzF,SAASuF,cAAc,OACxCG,EAAiB1F,SAASuF,cAAc,OACxCI,EAAiB3F,SAASuF,cAAc,OAG1C,OAFAX,EAAOhP,OAAO4P,EAAgBC,EAAgBC,EAAgBC,GAC9Df,EAAOjE,UAAUM,IAAI,UACd2D,CACT,GACC,CACDtL,IAAK,aACLxD,MAAO,WACDI,KAAK4N,WAAW3D,cAAc,kCAChCjK,KAAK4N,WAAW3D,cAAc,gCAAgCQ,UAAUI,OAAO,YAC/E7K,KAAK4N,WAAW3D,cAAc,gCAAgCY,SAElE,GAKC,CACDzH,IAAK,iBACLxD,MAAO,WACL,IAAI8P,EAAS1P,KACT2P,EAAmB3P,KAAK2N,WAAW1D,cAAc,gCACjD2F,EAAmB5P,KAAK4N,WAAW3D,cAAc,4BACrD0F,EAAiBhE,iBAAiB,SAAS,WAEzC+D,EAAOlC,aAAaqC,YACpBvQ,OAAOqB,KAAK+O,EAAOnC,UAAU/M,SAAQ,SAAUiJ,GAC7C,IAAIL,EAAUsG,EAAOnC,SAAS9D,GAC1BL,EAAQE,kBAAkBG,GAAa,GACzCiG,EAAOlC,aAAasC,WAAW1G,EAEnC,IACIsG,EAAOK,uBAETL,EAAOM,kBAAkBN,EAAO9B,YAEhC8B,EAAOjB,cAAciB,EAAO9B,YAC5BC,OAAOoC,SAAS,EAAGL,EAAiBM,WAExC,GACF,GAQC,CACD9M,IAAK,cACLxD,MAAO,SAAqBiP,EAASjN,GACnC,IAAIuO,EAASnQ,KAEbA,KAAK4N,WAAW3D,cAAc,+BAA+BQ,UAAUI,OAAO7K,KAAKsN,gBACnFO,OAAOtP,MAAMqD,EAAK,CAChBkC,OAAQ,OACRzC,KAAMgG,KAAK+I,UAAUvB,GACrBlN,QAAS,IAAIlC,QAAQ,CACnB,eAAgB,uBAEjBiH,MAAK,SAAU5E,GAChB,OAAOA,EAASsF,MAClB,IAAGiJ,OAAM,SAAUxO,GAEjBsO,EAAOvC,WAAW3D,cAAc,+BAA+BQ,UAAUM,IAAIoF,EAAO7C,gBACpF6C,EAAOG,aACHzO,GAEF0O,QAAQC,IAAI3O,EAEhB,IAAG6E,MAAK,SAAU+J,GAChBN,EAAOG,aACHG,GAAgBA,EAAaC,qBAA4D,KAArCD,EAAaC,oBACnE7C,OAAO1L,SAASwO,KAAOF,EAAaC,qBAEpCP,EAAOvC,WAAW3D,cAAc,+BAA+BQ,UAAUM,IAAIoF,EAAO7C,gBAClD,KAA9BmD,EAAaG,cAEfL,QAAQC,IAAIC,EAAaG,cAG/B,GACF,GAMC,CACDxN,IAAK,oBACLxD,MAAO,WACL,IAAIiR,EAAS7Q,KAEbV,OAAOqB,KAAKX,KAAKuN,UAAU/M,SAAQ,SAAUiJ,GAC3C,IAAIqH,EAAoBD,EAAOrD,aAAauD,iBAAiBtH,IACnC,IAAtBqH,EACFD,EAAOtD,SAAS9D,GAAWwC,kBAAkB6E,GAE7CD,EAAOtD,SAAS9D,GAAWuH,qBAE/B,GACF,GAMC,CACD5N,IAAK,qBACLxD,MAAO,WACL,IAAIqR,EAASjR,KACTkR,GAAU,EAGdlR,KAAK2N,WAAW5D,iBAAiB,kBAAkBvJ,SAAQ,SAAUwJ,GACnEA,EAAQS,UAAUI,OAAOoG,EAAO3D,eAClC,IAGKhO,OAAOqB,KAAKX,KAAKwN,aAAa2D,kBAAkBrK,SACnD9G,KAAK2N,WAAW1D,cAAc,gCAAgCQ,UAAUM,IAAI/K,KAAKsN,gBACjF4D,GAAU,GAIPlR,KAAK0N,UAAU0D,mBAClBpR,KAAK2N,WAAW1D,cAAc,gCAAgCQ,UAAUM,IAAI/K,KAAKsN,gBACjF4D,GAAU,GAIRpH,SAASG,cAAc,6BACpBjK,KAAKqR,uBACRH,GAAU,IAKd,IAAII,EAAoBtR,KAAK2N,WAAW5D,iBAAiB,kBAAkB7J,OAAOF,KAAKsN,iBAAiB,GACxG,GAAIgE,GAA2C,KAAtBA,EAA0B,CACjD,IAAIC,EAAezH,SAASG,cAAc,sBACxBqH,EAAdC,EAAkCD,EAAkBpB,UAAYqB,EAAaC,aAAsCF,EAAkBpB,UACzIrC,OAAOoC,SAAS,EAAGqB,EACrB,CACA,OAAOJ,CACT,GACC,CACD9N,IAAK,qBACLxD,MAAO,WACL,IACI6R,EAAkB9M,MAAM+M,KAAK1R,KAAK0N,UAAUvD,aAAawH,MAAK,SAAU3H,GAC1E,MAAwB,eAAjBA,EAAQrK,IACjB,IACIiS,EAAe5R,KAAK2N,WAAW1D,cAAc,8BAC7CiH,GAAU,EAed,OAdIU,IACEH,EAAgB7R,OAPT,YAOyB0E,KAAKmN,EAAgB7R,QACvD6R,EAAgBhH,UAAUM,IAAI,SAC9B6G,EAAanH,UAAUM,IAAI/K,KAAKsN,gBAChC4D,GAAU,GACAO,EAAgB7R,OAK1B6R,EAAgBhH,UAAUI,OAAO,SACjC+G,EAAanH,UAAUI,OAAO7K,KAAKsN,kBALnCmE,EAAgBhH,UAAUM,IAAI,SAC9B6G,EAAanH,UAAUI,OAAO7K,KAAKsN,gBACnC4D,GAAU,IAMPA,CACT,GAKC,CACD9N,IAAK,oBACLxD,MAAO,WACL,IAAIiS,EAAS7R,KAET8R,EAAc9R,KAAK4N,WAAW3D,cAAc,2BAC5C8H,EAAa/R,KAAK4N,WAAW3D,cAAc,yBAG/CjK,KAAK4N,WAAW7D,iBAAiB,kBAAkBvJ,SAAQ,SAAUwJ,GACnEA,EAAQS,UAAUI,OAAOgH,EAAOvE,eAClC,IACAwE,EAAYxG,UAAY,GAExB,IAAIkC,EAAexN,KAAKwN,aAAa2D,iBACrC7R,OAAOqB,KAAK6M,GAAchN,SAAQ,SAAUiJ,GAE1C,IAAIL,EAAUyI,EAAOtE,SAAS9D,GAC1B3G,EAAU,CACZnD,KAAMyJ,EAAQzJ,KACd0L,MAAOjC,EAAQiC,MACfE,YAAanC,EAAQmC,YACrBlC,GAAID,EAAQC,GACZ2I,OAAQxE,EAAa/D,GAAW,IAAM+D,EAAa/D,IAEjDwI,EAAWJ,EAAOpE,sBACtBqE,EAAYxG,YAAa,QAAgB2G,EAAUnP,EACrD,IAEAgP,EAAY/H,iBAAiB,2BAA2BvJ,SAAQ,SAAUwJ,GACxEA,EAAQ2B,iBAAiB,SAAS,WAChC,IAAIlC,EAAYO,EAAQkI,cAAcxH,aAAa,mBAEnD,GADA6F,QAAQC,IAAI,QAAS/G,GACjBA,EAAW,CAEb,IAAI0I,EAAqBN,EAAOrE,aAAa4E,cAAc3I,GAEG,IAA1DnK,OAAOwF,oBAAoBqN,GAAoBrL,SACjD+K,EAAOQ,oBACPR,EAAOpD,cAAcoD,EAAOlE,aAI9B3D,EAAQkI,cAAcI,UAAY,EACpC,CACF,GACF,IAGA,IAAIC,EAAcvS,KAAK0N,UAAUoB,iBAAgB,GACjDxP,OAAOqB,KAAK4R,GAAa/R,SAAQ,SAAUgS,GACzC,IAAIC,EAAgBV,EAAW9H,cAAc,IAAI/J,OAAOsS,EAAW,qBAC/DC,IACFA,EAAcnH,UAAYiH,EAAYC,GAE1C,GACF,GAOC,CACDpP,IAAK,gBACLxD,MAAO,SAAuB8S,GAC5B,OAAQA,GACN,KAAK1S,KAAK2N,WACR3N,KAAK2N,WAAWlD,UAAUM,IAAI/K,KAAKqN,kBACnCrN,KAAK4N,WAAWnD,UAAUI,OAAO7K,KAAKqN,kBACtC,MACF,KAAKrN,KAAK4N,WACR5N,KAAK2N,WAAWlD,UAAUI,OAAO7K,KAAKqN,kBACtCrN,KAAK4N,WAAWnD,UAAUM,IAAI/K,KAAKqN,kBAMzC,MAzXyC,EAAkB1O,EAAEK,UAAWoJ,GAAIC,GAAK,EAAkB1J,EAAG0J,GAAI/I,OAAOmJ,eAAe9J,EAAG,YAAa,CAAE6J,UAAU,IAAO7J,EAAvK,IAAsBA,EAAGyJ,EAAGC,CA2X5B,CAxWmC,CAwWjC,OC7XiB,ID8XnB,GC7XasK,MACb,IAAIC,EAAqB,CAKvBC,mBAAmB,EACnBC,YAAa,iBACbC,gBAAiB,YACjBC,aAAc,2BACdC,aAAa,EACbC,eAAgB,CAAC,QAAS,YAC1BC,WAAY,CACVC,SAAU,CACRC,UAAW,YACXC,SAAU,WACVC,MAAO,QACPC,SAAU,YAEZC,YAAa,CACXC,KAAM,OACNC,QAAS,WACTC,OAAQ,cACRC,WAAY,aACZC,UAAW,YACXC,MAAO,cACPC,WAAY,WACZC,aAAc,cACdC,SAAU,aACVC,KAAM,SAGVC,YAAa,CAAC,EACdC,WAAYxG,OAAO1L,SAASwO,KAC5BtO,KAAM,WACAyH,SAASwK,uBAAuB,iBAAiBxN,SACnD9G,KAAKuU,gBACLvU,KAAKwU,mBAEiB,oBAAXC,QACTzU,KAAK0U,UAGX,EACAA,QAAS,WACP,IAAInL,EAAQvJ,MAEC,IAAIyU,OAAOE,gBACjBC,iBAAiBlO,MAAK,SAAUvB,GACrCoE,EAAM6K,YAAcjP,EAAO0P,KAC3BtL,EAAMuL,cAAcvL,EAAM6K,YAC5B,GACF,EACAU,cAAe,SAAuBD,GACpC,IAAI5G,EAASjO,KACbV,OAAOqB,KAAKkU,GAAMrU,SAAQ,SAAU4C,GAClC6K,EAAO8G,SAAS9G,EAAOkF,WAAW/P,GAAMyR,EAAKzR,GAC/C,GACF,EACA2R,SAAU,SAAkBC,EAAeZ,GACzC9U,OAAOqB,KAAKqU,GAAexU,SAAQ,SAAU4C,GAC3C,IAAI2R,EAAWX,EAAYY,EAAc5R,IACzC0G,SAASC,iBAAiB,6BAA6B7J,OAAOkD,EAAK,MAAM,GAAGxD,MAAQmV,GAAY,EAClG,GACF,EACAP,iBAAkB,WAChBxU,KAAKiV,sBACLjV,KAAKkV,oBACLlV,KAAKmV,uBACP,EACAF,oBAAqB,WACNnL,SAASC,iBAAiB,4CAChCvJ,SAAQ,SAAU4U,GACvB,IAAIhT,EAAQgT,EAAMnL,cAAc,SAC5BoL,EAAOvL,SAASuF,cAAc,QAClCgG,EAAKC,UAAYF,EAAME,UACvBF,EAAMnG,aAAaoG,EAAMjT,EAC3B,GACF,EACA8S,kBAAmB,WACJpL,SAASC,iBAAiB,4CAChCvJ,SAAQ,SAAU4B,GACH,KAAhBA,EAAMxC,OACRwC,EAAMoI,WAAWC,UAAUM,IAAI,aAEjC3I,EAAMuJ,iBAAiB,SAAS,WAC9BvJ,EAAMoI,WAAWC,UAAUM,IAAI,YACjC,IACA3I,EAAMuJ,iBAAiB,QAAQ,WACT,KAAhBvJ,EAAMxC,MACRwC,EAAMoI,WAAWC,UAAUM,IAAI,aAE/B3I,EAAMoI,WAAWC,UAAUI,OAAO,YAEtC,GACF,GACF,EACAsK,sBAAuB,WACrB,GAAIrL,SAASwK,uBAAuB,kBAAkBxN,OAAQ,CAC5D,IAAIyO,EAAYzL,SAASG,cAAc,uCACV,CAAC,YAAa,SAAU,gBAAiB,QAAS,OAAQ,QAAS,SACzEhK,KAAI,SAAUmN,GACnC,IAAIpD,EAAUuL,EAAUjB,uBAAuBlH,GAAW,GAC1DmI,EAAUC,YAAYxL,EACxB,IACAF,SAASC,iBAAiB,yBAAyBvJ,SAAQ,SAAUwJ,GAClD,CAAC,SAAU,YAAa,OAAQ,cAAe,gBAAiB,aAAc,aAAc,aAC9FyL,MAAK,SAAUC,GAC5B,OAAO1L,EAAQS,UAAUyD,SAASwH,EACpC,KACE1L,EAAQD,iBAAiB,SAASvJ,SAAQ,SAAUmV,GAClDA,EAAaC,gBAAgB,WAC/B,GAEJ,GACF,CACF,EACArB,cAAe,WACbvU,KAAK6V,2BACL7V,KAAK8V,gCACD9V,KAAK+V,oBACP/V,KAAKgW,SACLhW,KAAKiW,oBACLjW,KAAKkW,iBAET,EACAA,eAAgB,WACd,IAAI1H,EAASxO,KACTmW,EAAaC,IAAIC,kBAAkB,SAAUxI,OAAO1L,SAASwO,MAC7D2F,GAAU,EACVH,IACFA,EAAaA,EAAW5R,cAAcvB,QAAQ,IAAK,KACnD8G,SAASC,iBAAiB,4BAA4BvJ,SAAQ,SAAUwJ,IAEd,GADpCuM,EAAEvM,GAASwM,KAAK,sBAClBjS,cAAclF,QAAQ8W,IAAsBG,EAM5DC,EAAEvM,GAASyM,YAAY,mBALvBF,EAAEvM,GAAS0M,SAAS,kBACpBH,EAAEvM,GAASyM,YAAY,qBACvBjI,EAAOmI,gBAAgB3M,GACvBsM,GAAU,EAId,IAEJ,EACAM,oBAAqB,SAA6BC,GAChDN,EAAEM,GAAeH,SAAS,qBAC1B5M,SAASC,iBAAiB,sBAAsB,GAAG4B,iBAAiB,SAAS,SAAUhN,GACrFA,EAAEmY,cAAcrM,UAAUI,OAAO,oBACnC,IACAf,SAASiN,eAAe,WAAW5I,MAAM6I,WAAa,sBACxD,EACAnB,yBAA0B,WACxB/L,SAASC,iBAAiB,uBAAuBvJ,SAAQ,SAAUwJ,GACjE,IAAIiN,EAAgBV,EAAEvM,GAASkN,SAASV,KAAK,sBACzCW,EAAcF,EAAc5X,QAAQ,mBAAqB,EAAI4X,EAAcjU,QAAQ,kBAAmB,IAAMiU,EAChHV,EAAEvM,GAASoN,KAAK,6CAA+ClX,OAAOiX,GACxE,GACF,EACArB,8BAA+B,WAC7BhM,SAASC,iBAAiB,4BAA4BvJ,SAAQ,SAAUwJ,GACtE,IAAIqN,EAASvN,SAASuF,cAAc,UAChCiI,EAAMtN,EAAQC,cAAc,uBAChCoN,EAAO5M,UAAUM,IAAI,uBACrBsM,EAAO1L,iBAAiB,SAAS,SAAUhN,GACzCA,EAAE4Y,iBACFD,EAAIE,OACN,IACAxN,EAAQwL,YAAY6B,EACtB,GACF,EACAV,gBAAiB,SAAyBc,GACxClB,EAAE,cAAcmB,QAAQ,CACtBC,UAAWpB,EAAEkB,GAAgBG,SAASC,IAAMtB,EAAE,eAAeuB,cAAgB,IAC5E,IACL,EACA9B,OAAQ,WACN,IAAItG,EAAS1P,KACb8J,SAASC,iBAAiB,uBAAuBvJ,SAAQ,SAAUwJ,GACjEA,EAAQ2B,iBAAiB,SAAS,SAAUhN,GAC1C,IAAI8Y,EAAiB9Y,EAAEmY,cAClBW,EAAevF,cAAczH,UAAUyD,SAASwB,EAAOoD,cAC1DhJ,SAASC,iBAAiB,iBAAiB7J,OAAOwP,EAAOsD,eAAexS,SAAQ,SAAUiW,GACxFA,EAAYhM,UAAUI,OAAO6E,EAAOoD,YACtC,IAEF2E,EAAevF,cAAczH,UAAUsN,OAAOrI,EAAOoD,aACrDpD,EAAOiH,gBAAgBc,EACzB,GACF,IACA3N,SAASC,iBAAiB/J,KAAKgT,cAAcxS,SAAQ,SAAUwJ,GAC7DA,EAAQ2B,iBAAiB,SAAS,SAAUhN,GACrBA,EAAEmY,cACH5E,cAAczH,UAAUyD,SAASwB,EAAOoD,cAC1DhJ,SAASC,iBAAiB,+CAA+C7J,OAAOwP,EAAOoD,YAAa,MAAMtS,SAAQ,SAAUiW,GAC1HuB,YAAW,WACTvB,EAAYhM,UAAUI,OAAO6E,EAAOoD,YACtC,GAAG,IACL,GAEJ,GACF,IACAhJ,SAASC,iBAAiB,yCAAyCvJ,SAAQ,SAAUwJ,GACnF0F,EAAOwD,eAAe1S,SAAQ,SAAUyX,GACtCjO,EAAQ2B,iBAAiBsM,GAAW,SAAUtZ,GAC5C,IAAI8Y,EAAiB9Y,EAAEmY,cACoB,OAAvCW,EAAe/M,aAAa,OAC9B+M,EAAe7X,MAAQgM,SAAS6L,EAAe7X,MAAO,IAAMgM,SAAS6L,EAAe/M,aAAa,OAAQ,IAAM+M,EAAe/M,aAAa,OAAS+M,EAAe7X,MAEnK6X,EAAe7X,OAASgM,SAAS6L,EAAe7X,MAAO,IAAM,GAAGL,UAEpE,GACF,GACF,IACAuK,SAASC,iBAAiB,oBAAoBvJ,SAAQ,SAAUwJ,GAC9D,IAAIkO,EAAiBlO,EAAQC,cAAc,oBACvCkO,EAAiBnO,EAAQC,cAAc,oBACvC7H,EAAQ4H,EAAQC,cAAc,wBAC9B2B,SAASxJ,EAAMxC,MAAO,IAAM,GAC9BuY,EAAe1N,UAAUM,IAAI,YAE/BmN,EAAevM,iBAAiB,SAAS,WACvCwM,EAAe1N,UAAUI,OAAO,YAChC,IAAIuN,EAAaxM,SAASxJ,EAAMxC,MAAO,KAAOgM,SAASxJ,EAAMsI,aAAa,OAAQ,IAChD,OAA9BtI,EAAMsI,aAAa,QAAmB0N,GACxCF,EAAezN,UAAUM,IAAI,WAEjC,IACAoN,EAAexM,iBAAiB,SAAS,WACvCuM,EAAezN,UAAUI,OAAO,YAC5Be,SAASxJ,EAAMxC,MAAO,IAAM,GAC9BuY,EAAe1N,UAAUM,IAAI,WAEjC,GACF,GACF,EACAgL,gBAAiB,WAEf,OADAjM,SAASC,iBAAiB/J,KAAKgT,cAAc,GAAGvI,UAAUM,IAAI,kBAC1DjB,SAASC,iBAAiB/J,KAAKgT,cAAclM,OAAS,IACxD9G,KAAK6S,mBAAoB,EACzB/I,SAASC,iBAAiB,iBAAiB,GAAGU,UAAUM,IAAI,+BAC5D/K,KAAK4W,oBAAoB9M,SAASC,iBAAiB/J,KAAKgT,cAAc,KAC/D,EAGX,EACAiD,kBAAmB,WACjBM,EAAE,qDAAqDG,SAAS,mBAChEH,EAAE,uCAAuC8B,KAAK,YAAY,EAC5D,GAMCC,OAAQzK,OAAOuI,IAHZmC,OAAOC,cAAcC,UAAS,WAChC7F,EAAmBvQ,MACrB,G","sources":["webpack://bernafon/../../wdh-feature/wdh-product-order/src/js/fetch.js","webpack://bernafon/../../wdh-feature/wdh-product-order/src/js/shopping-cart.js","webpack://bernafon/../../wdh-feature/wdh-product-order/src/js/order-form.js","webpack://bernafon/../../wdh-feature/wdh-product-order/src/js/product.js","webpack://bernafon/../../wdh-feature/wdh-product-order/src/js/wdh-product-order.js","webpack://bernafon/./js/feature/product-order.js"],"sourcesContent":["/* eslint-disable */\nexport default function (self) {\n if (self.fetch) {\n return;\n }\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && function () {\n try {\n new Blob();\n return true;\n } catch (e) {\n return false;\n }\n }(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n if (support.arrayBuffer) {\n var viewClasses = ['[object Int8Array]', '[object Uint8Array]', '[object Uint8ClampedArray]', '[object Int16Array]', '[object Uint16Array]', '[object Int32Array]', '[object Uint32Array]', '[object Float32Array]', '[object Float64Array]'];\n var isDataView = function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj);\n };\n var isArrayBufferView = ArrayBuffer.isView || function (obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;\n };\n }\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name');\n }\n return name.toLowerCase();\n }\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function next() {\n var value = items.shift();\n return {\n done: value === undefined,\n value: value\n };\n }\n };\n if (support.iterable) {\n iterator[Symbol.iterator] = function () {\n return iterator;\n };\n }\n return iterator;\n }\n function Headers(headers) {\n this.map = {};\n if (headers instanceof Headers) {\n headers.forEach(function (value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n Headers.prototype.append = function (name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? \"\".concat(oldValue, \",\").concat(value) : value;\n };\n Headers.prototype.delete = function (name) {\n delete this.map[normalizeName(name)];\n };\n Headers.prototype.get = function (name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n };\n Headers.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name));\n };\n Headers.prototype.set = function (name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n Headers.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n Headers.prototype.keys = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push(name);\n });\n return iteratorFor(items);\n };\n Headers.prototype.values = function () {\n var items = [];\n this.forEach(function (value) {\n items.push(value);\n });\n return iteratorFor(items);\n };\n Headers.prototype.entries = function () {\n var items = [];\n this.forEach(function (value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n };\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'));\n }\n body.bodyUsed = true;\n }\n function fileReaderReady(reader) {\n return new Promise(function (resolve, reject) {\n reader.onload = function () {\n resolve(reader.result);\n };\n reader.onerror = function () {\n reject(reader.error);\n };\n });\n }\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise;\n }\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise;\n }\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('');\n }\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0);\n }\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer;\n }\n function Body() {\n this.bodyUsed = false;\n this._initBody = function (body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n throw new Error('unsupported BodyInit type');\n }\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n if (support.blob) {\n this.blob = function () {\n var rejected = consumed(this);\n if (rejected) {\n return rejected;\n }\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob);\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]));\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob');\n } else {\n return Promise.resolve(new Blob([this._bodyText]));\n }\n };\n this.arrayBuffer = function () {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer);\n }\n return this.blob().then(readBlobAsArrayBuffer);\n };\n }\n this.text = function () {\n var rejected = consumed(this);\n if (rejected) {\n return rejected;\n }\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob);\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text');\n } else {\n return Promise.resolve(this._bodyText);\n }\n };\n if (support.formData) {\n this.formData = function () {\n return this.text().then(decode);\n };\n }\n this.json = function () {\n return this.text().then(JSON.parse);\n };\n return this;\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method;\n }\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read');\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n this.credentials = options.credentials || this.credentials || 'omit';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.referrer = null;\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests');\n }\n this._initBody(body);\n }\n Request.prototype.clone = function () {\n return new Request(this, {\n body: this._bodyInit\n });\n };\n function decode(body) {\n var form = new FormData();\n body.trim().split('&').forEach(function (bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form;\n }\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function (line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers;\n }\n Body.call(Request.prototype);\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n Body.call(Response.prototype);\n Response.prototype.clone = function () {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n });\n };\n Response.error = function () {\n var response = new Response(null, {\n status: 0,\n statusText: ''\n });\n response.type = 'error';\n return response;\n };\n var redirectStatuses = [301, 302, 303, 307, 308];\n Response.redirect = function (url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code');\n }\n return new Response(null, {\n status: status,\n headers: {\n location: url\n }\n });\n };\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n self.fetch = function (input, init) {\n return new Promise(function (resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n xhr.onerror = function () {\n reject(new TypeError('Network request failed'));\n };\n xhr.ontimeout = function () {\n reject(new TypeError('Network request failed'));\n };\n xhr.open(request.method, request.url, true);\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n request.headers.forEach(function (value, name) {\n xhr.setRequestHeader(name, value);\n });\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n });\n };\n self.fetch.polyfill = true;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Uses the singleton pattern to represents the state of the selected products.\n * It also has some helper methods related with the format of products.\n * @private\n */\nvar ShoppingCart = /*#__PURE__*/function () {\n function ShoppingCart() {\n _classCallCheck(this, ShoppingCart);\n if (!ShoppingCart.instance) {\n this.productList = {};\n ShoppingCart.instance = this;\n }\n return ShoppingCart.instance;\n }\n\n /**\n * Adds a product to the shopping cart.\n *\n * @param {Product} product Product object\n */\n return _createClass(ShoppingCart, [{\n key: \"addProduct\",\n value: function addProduct(product) {\n this.productList[product.id] = [product.getSelectedAmount(product.id), product.name];\n }\n\n /**\n * Returns a list of products from the cart, where on each position of the list is the product id.\n *\n * @returns {{}} Returns an object containing the cart products\n */\n }, {\n key: \"getProductList\",\n value: function getProductList() {\n return this.productList;\n }\n\n /**\n * Returns a formatted array of products with the following format:\n * [{'ProductId': X, 'Quantity': Y}, ....]\n *\n * @returns {Array} Array of formatted products\n */\n }, {\n key: \"getFormattedProducts\",\n value: function getFormattedProducts() {\n var _this = this;\n // Format it as the backend expects it\n var formattedProductList = [];\n Object.keys(this.productList).forEach(function (productId) {\n formattedProductList.push({\n ProductId: productId,\n Quantity: _this.productList[productId][0],\n Title: _this.productList[productId][1].replace(/[\"„“]+/g, \"'\").replace(/[`~!@#$%^&*()_|+\\-=?;:<>]+/g, \"\").replaceAll(\"
\", \"\")\n });\n });\n return formattedProductList;\n }\n\n /**\n * Returns registered amount of a product from the shoppingCart\n *\n * @param {int} productId Id of the product to get how many amount there is in the shoppingCart\n * @returns {boolean|int} Returns the amount of a registered product by ID, or false if the product is not in the shoppingCart\n */\n }, {\n key: \"getProductAmount\",\n value: function getProductAmount(productId) {\n return this.productList[productId] ? this.productList[productId] : false;\n }\n\n /**\n * Removes a product from the shoppingCart and update in DOM\n *\n * @param {int} productId Id of the product to remove\n * @returns {{}} Returns the list of products without the removed product.\n */\n }, {\n key: \"removeProduct\",\n value: function removeProduct(productId) {\n var elements = document.querySelectorAll(\".product[data-product-id=\\\"\".concat(productId, \"\\\"]\"));\n elements.forEach(function (element) {\n element.querySelector('.product__amount input').value = 0;\n });\n delete this.productList[productId];\n return this.productList;\n }\n\n /**\n * Empties the cart.\n */\n }, {\n key: \"clearCart\",\n value: function clearCart() {\n this.productList = {};\n }\n }]);\n}();\nexport default ShoppingCart;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Represents the order form fields, in this way we can retrieve the value of the fields and manipulate their format\n * Notice that it basically reads from section-one, and writes to section-two, maintaining consistency between both\n * @private\n */\nvar OrderForm = /*#__PURE__*/function () {\n /**\n * @param {array} inputFields Array containing the input field HTMLNode elements\n */\n function OrderForm(inputFields) {\n _classCallCheck(this, OrderForm);\n this.inputFields = inputFields;\n }\n\n /**\n * Add an extra field to be part of the Order Form field\n * @param field HTMLNode element\n */\n return _createClass(OrderForm, [{\n key: \"addField\",\n value: function addField(field) {\n this.inputFields.push(field);\n }\n\n /**\n * Get the form field values\n *\n * @param {boolean} parentClass Default to false, where the key will be the current field attribute 'name'.\n * Pass true if you want the key to be the parent class. (Backend format)\n * @returns {{}} Returns the current status of the fields, as a key value object\n */\n }, {\n key: \"getFieldsValues\",\n value: function getFieldsValues() {\n var parentClass = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var result = {};\n this.inputFields.forEach(function (field) {\n var index = parentClass ? field.parentNode.classList[0] : field.getAttribute('name');\n result[index] = field.value;\n });\n return result;\n }\n\n /**\n * Validates the form fields using their HTML5 attributes. Adds the class @errorClass if the fields are not valid\n *\n * @param {string} errorClass Class to be added if the field is invalid\n * @returns {boolean} Returns true if ALL fields are valid. Otherwise false\n */\n }, {\n key: \"validateFields\",\n value: function validateFields() {\n var errorClass = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'error';\n // NOTE: Add extra validations when required\n var validity = true;\n this.inputFields.forEach(function (field) {\n field.classList.remove(errorClass);\n if (field.validity.valid !== true) {\n validity = false;\n field.classList.add(errorClass);\n\n // Triggers field validation - supports IE as well\n if (!HTMLFormElement.prototype.reportValidity) {\n HTMLFormElement.prototype.reportValidity = function () {\n return;\n };\n }\n }\n });\n return validity;\n }\n }]);\n}();\nexport default OrderForm;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Holds information of a products mapping to his backend structure and includes his HTMLNode reference.\n * Most of the information is retrieved from the product HTMLNode\n *\n * @param {int} id Id of the product\n * @param {string} image Url of the product image\n * @param {string} name Name of the product (also know an title)\n * @param {string} description Description of the product\n * @private\n */\nvar Product = /*#__PURE__*/function () {\n /**\n * @param {Element} productDom HTML Element of the product\n * @param {int} initialAmount The initial amount of the product\n */\n function Product(productDom) {\n var initialAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n _classCallCheck(this, Product);\n this.productDom = productDom;\n this.initialAmount = initialAmount;\n this.id = productDom.getAttribute('data-product-id');\n this.image = productDom.querySelector('.product__image > img').getAttribute('src');\n this.name = productDom.querySelector('.product__headline > h4').innerHTML;\n this.description = productDom.querySelector('.product__description').innerHTML;\n\n // Call initialing events\n this.addEvents();\n }\n\n /**\n * Adds events to the increase/decrease icons of the amount for the product box\n * @private\n */\n return _createClass(Product, [{\n key: \"addEvents\",\n value: function addEvents() {\n // For now just add the elements with JS\n var productAmount = this.productDom.querySelector('.product__amount');\n var inputAmount = productAmount.querySelector('input');\n productAmount.querySelector('.increase-amount').addEventListener('click', function () {\n // inputAmount.stepUp(); // TODO: Refactor this shit\n if (inputAmount.getAttribute('max') !== null) {\n inputAmount.value = parseInt(inputAmount.value, 10) + 1 > parseInt(inputAmount.getAttribute('max'), 10) ? inputAmount.value : (parseInt(inputAmount.value, 10) + 1).toString();\n } else {\n inputAmount.value = (parseInt(inputAmount.value, 10) + 1).toString();\n }\n });\n productAmount.querySelector('.decrease-amount').addEventListener('click', function () {\n // inputAmount.stepDown();\n if (inputAmount.getAttribute('min') !== null) {\n inputAmount.value = parseInt(inputAmount.value, 10) - 1 < parseInt(inputAmount.getAttribute('min'), 10) ? inputAmount.value : (parseInt(inputAmount.value, 10) - 1).toString();\n } else {\n inputAmount.value = (parseInt(inputAmount.value, 10) - 1).toString();\n }\n });\n }\n\n /**\n * Gets the selected amount of the product.\n *\n * @returns {number} Selected amount of the product\n */\n }, {\n key: \"getSelectedAmount\",\n value: function getSelectedAmount(itemId) {\n var element = document.querySelectorAll(\".product[data-product-id=\\\"\".concat(itemId, \"\\\"]\"));\n var amountVal = 0;\n element.forEach(function (product) {\n amountVal += parseInt(product.querySelector('.product__amount input').value, 10);\n });\n return amountVal;\n }\n\n /**\n * Sets the selected amount of the product\n *\n * @param {int} newAmount It has to be a positive number, to set as amount selected of product\n * @returns {boolean|int} Returns the new amount of the product, or FALSE if the @newAmount is invalid\n */\n }, {\n key: \"setSelectedAmount\",\n value: function setSelectedAmount(newAmount) {\n if (!Number.isNaN(newAmount) && newAmount >= 0) {\n this.productDom.querySelector('.product__amount > input').value = newAmount;\n return this.productDom.querySelector('.product__amount > input').value;\n }\n return false;\n }\n\n /**\n * This function is just a wrapper for setSelectedAmount to reset the amount to the defined @initialAmount value\n */\n }, {\n key: \"resetSelectedAmount\",\n value: function resetSelectedAmount() {\n this.setSelectedAmount(this.initialAmount);\n }\n }]);\n}();\nexport default Product;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nimport { WDHComponent, resolveTemplate } from '../../../../wdh-foundation/wdh';\nimport fetchFactory from './fetch';\nimport ShoppingCart from './shopping-cart';\nimport OrderForm from './order-form';\nimport Product from './product';\n\n/**\n * @module wdh-product-order\n */\nvar WDHProductOrder = /*#__PURE__*/function (_WDHComponent) {\n /**\n * @param className\n * @constructor\n * @augments WDHComponent\n * @inheritDoc\n */\n function WDHProductOrder() {\n var _this;\n var className = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'product-order';\n _classCallCheck(this, WDHProductOrder);\n _this = _callSuper(this, WDHProductOrder, [className]);\n _this.showSectionClass = 'show';\n _this.showErrorClass = 'show';\n _this.products = {};\n _this.shoppingCart = new ShoppingCart();\n _this.productReviewTemplate = null;\n _this.orderForm = {};\n _this.sectionOne = null;\n _this.sectionTwo = null;\n fetchFactory(window);\n return _this;\n }\n\n /**\n * Set up class variables and call specific section init methods\n * @param component\n */\n _inherits(WDHProductOrder, _WDHComponent);\n return _createClass(WDHProductOrder, [{\n key: \"init\",\n value: function init(component) {\n var _this2 = this;\n // Initialize some required attributes of the class\n this.sectionOne = component.querySelector('.section-one');\n this.sectionTwo = component.querySelector('.section-two');\n this.productReviewTemplate = component.querySelector('.product-review-template').innerHTML;\n // Add the form fields to the OrderForm object\n this.orderForm = new OrderForm(this.sectionOne.querySelectorAll('.product-form__form > label > input'));\n this.sectionOne.classList.add(this.showSectionClass); // Show by default section one\n\n // Parse all the products of a product group\n this.sectionOne.querySelectorAll('.product-order__products > .product').forEach(function (product) {\n // Fill the product class\n _this2.products[product.getAttribute('data-product-id')] = new Product(product);\n });\n\n //postal code hidden for oticon-DE, style variation added in sitecore\n if (component.classList.contains('hide-postalcode')) {\n component.querySelectorAll('.postnr').forEach(function (element) {\n element.style.display = 'none';\n });\n component.querySelector(\"input[name=PostalCode]\").required = false;\n component.querySelector(\"input[name=PostalCode]\").value = 0;\n }\n this.initSectionOne();\n this.initSectionTwo(component);\n }\n\n /**\n * Initializes specific section two events, including the last submit\n *\n * @param component Each instance of the current component\n */\n }, {\n key: \"initSectionTwo\",\n value: function initSectionTwo(component) {\n var _this3 = this;\n // Attach events to the edit buttons on the section-two\n this.sectionTwo.querySelectorAll('.form-summary__edit > input, .edit-order > input').forEach(function (element) {\n element.addEventListener('click', function () {\n // Show section one\n _this3.changeSection(_this3.sectionOne);\n });\n });\n\n // IMPORTANT THE SUBMIT IS HERE\n\n var loader = this.createLoader();\n this.sectionTwo.querySelector('.section-two__submit > input').addEventListener('click', function () {\n // Remove the error messages\n _this3.sectionTwo.querySelector('.accept-tos .error-message').classList.remove(_this3.showErrorClass);\n if (_this3.sectionTwo.querySelector('.accept-tos__checkbox > input').checked) {\n var url = component.getAttribute('data-endpoint');\n var payload = _this3.orderForm.getFieldsValues();\n payload.productDetails = _this3.shoppingCart.getFormattedProducts();\n _this3.sectionTwo.querySelector('.error-message.submit-error').parentNode.insertBefore(loader, _this3.sectionTwo.querySelector('.error-message.submit-error'));\n _this3.sectionTwo.querySelector('.section-two__submit > input').classList.add('disabled');\n _this3.sendPayload(payload, url); // The redirect happens in the payload\n } else {\n _this3.sectionTwo.querySelector('.accept-tos .error-message').classList.add(_this3.showErrorClass);\n _this3.sectionTwo.querySelector('.accept-tos .error-message').scrollIntoView({\n behavior: 'smooth'\n });\n }\n });\n }\n }, {\n key: \"createLoader\",\n value: function createLoader() {\n var loader = document.createElement('div'),\n loaderElement1 = document.createElement('div'),\n loaderElement2 = document.createElement('div'),\n loaderElement3 = document.createElement('div'),\n loaderElement4 = document.createElement('div');\n loader.append(loaderElement1, loaderElement2, loaderElement3, loaderElement4);\n loader.classList.add('loader');\n return loader;\n }\n }, {\n key: \"hideLoader\",\n value: function hideLoader() {\n if (this.sectionTwo.querySelector('.section-two__submit .loader')) {\n this.sectionTwo.querySelector('.section-two__submit > input').classList.remove('disabled');\n this.sectionTwo.querySelector('.section-two__submit .loader').remove();\n }\n }\n\n /**\n * Initializes the section one specific events and behavior\n */\n }, {\n key: \"initSectionOne\",\n value: function initSectionOne() {\n var _this4 = this;\n var sectionOneSubmit = this.sectionOne.querySelector('.section-one__submit > input');\n var sectionTwoHeader = this.sectionTwo.querySelector('.review-products__header');\n sectionOneSubmit.addEventListener('click', function () {\n // First we add product to the cart, so we don't have to go through them again later\n _this4.shoppingCart.clearCart();\n Object.keys(_this4.products).forEach(function (productId) {\n var product = _this4.products[productId];\n if (product.getSelectedAmount(productId) > 0) {\n _this4.shoppingCart.addProduct(product);\n }\n });\n if (_this4.validateSectionOne()) {\n // Add the products to the shoppingCart\n _this4.prepareSectionTwo(_this4.sectionTwo);\n // Finally show section two\n _this4.changeSection(_this4.sectionTwo);\n window.scrollTo(0, sectionTwoHeader.offsetTop);\n }\n });\n }\n\n /**\n * Sends the payload to the backend and redirects to the returned URL\n *\n * @param {{}} payload Object containing the required information for the payload\n * @param {string} url URL pointing to the endpoint where the payload needs to be send\n */\n }, {\n key: \"sendPayload\",\n value: function sendPayload(payload, url) {\n var _this5 = this;\n // Hide the error messages.\n this.sectionTwo.querySelector('.error-message.submit-error').classList.remove(this.showErrorClass);\n window.fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n headers: new Headers({\n 'Content-Type': 'application/json'\n })\n }).then(function (response) {\n return response.json();\n }).catch(function (error) {\n // Also show the error message if there is an error in the request\n _this5.sectionTwo.querySelector('.error-message.submit-error').classList.add(_this5.showErrorClass);\n _this5.hideLoader();\n if (error) {\n // This is for debug purposes\n console.log(error); // eslint-disable-line no-console\n }\n }).then(function (responseData) {\n _this5.hideLoader();\n if (responseData && responseData.ConfirmationPageUrl && responseData.ConfirmationPageUrl !== '') {\n window.location.href = responseData.ConfirmationPageUrl;\n } else {\n _this5.sectionTwo.querySelector('.error-message.submit-error').classList.add(_this5.showErrorClass);\n if (responseData.ErrorMessage !== '') {\n // This is for debug purposes\n console.log(responseData.ErrorMessage); // eslint-disable-line no-console\n }\n }\n });\n }\n\n /**\n * Prepares section one to show.\n * NOTE: This is only used when coming from another section, not when the page loads\n */\n }, {\n key: \"prepareSectionOne\",\n value: function prepareSectionOne() {\n var _this6 = this;\n // Update the product amount with the cart state\n Object.keys(this.products).forEach(function (productId) {\n var cartProductAmount = _this6.shoppingCart.getProductAmount(productId);\n if (cartProductAmount !== false) {\n _this6.products[productId].setSelectedAmount(cartProductAmount);\n } else {\n _this6.products[productId].resetSelectedAmount();\n }\n });\n }\n /**\n * Validates the section one and adds the corresponding error message\n *\n * @returns {boolean} True if the section is valid, or false if is not\n */\n }, {\n key: \"validateSectionOne\",\n value: function validateSectionOne() {\n var _this7 = this;\n var isValid = true;\n\n // Clear the error messages\n this.sectionOne.querySelectorAll('.error-message').forEach(function (element) {\n element.classList.remove(_this7.showErrorClass);\n });\n\n // First the product list, checking that there is at least one product.\n if (!Object.keys(this.shoppingCart.getProductList()).length) {\n this.sectionOne.querySelector('.product-grid .error-message').classList.add(this.showErrorClass);\n isValid = false;\n }\n\n // Then the product form\n if (!this.orderForm.validateFields()) {\n this.sectionOne.querySelector('.product-form .error-message').classList.add(this.showErrorClass);\n isValid = false;\n }\n\n // Validate postal code\n if (document.querySelector('.postal-code-validation')) {\n if (!this.validatePostalCode()) {\n isValid = false;\n }\n }\n\n // Scroll the page to the first error\n var firstErrorMessage = this.sectionOne.querySelectorAll(\".error-message.\".concat(this.showErrorClass))[0];\n if (firstErrorMessage && firstErrorMessage !== '') {\n var stickyHeader = document.querySelector('.sticky-navigation');\n if (stickyHeader) firstErrorMessage = firstErrorMessage.offsetTop - stickyHeader.offsetHeight;else firstErrorMessage = firstErrorMessage.offsetTop;\n window.scrollTo(0, firstErrorMessage);\n }\n return isValid;\n }\n }, {\n key: \"validatePostalCode\",\n value: function validatePostalCode() {\n var regExp = /[a-zA-Z]/g;\n var postalCodeInput = Array.from(this.orderForm.inputFields).find(function (element) {\n return element.name === 'PostalCode';\n });\n var errorMessage = this.sectionOne.querySelector('.error-message.postal-code');\n var isValid = true;\n if (errorMessage) {\n if (postalCodeInput.value && regExp.test(postalCodeInput.value)) {\n postalCodeInput.classList.add('error');\n errorMessage.classList.add(this.showErrorClass);\n isValid = false;\n } else if (!postalCodeInput.value) {\n postalCodeInput.classList.add('error');\n errorMessage.classList.remove(this.showErrorClass);\n isValid = false;\n } else {\n postalCodeInput.classList.remove('error');\n errorMessage.classList.remove(this.showErrorClass);\n }\n }\n return isValid;\n }\n\n /**\n * Prepares the section two with the correct information to show\n */\n }, {\n key: \"prepareSectionTwo\",\n value: function prepareSectionTwo() {\n var _this8 = this;\n // Use cart items to fill the overview section\n var reviewTable = this.sectionTwo.querySelector('.review-products__table');\n var reviewForm = this.sectionTwo.querySelector('.form-summary__fields');\n\n // Hide the error message\n this.sectionTwo.querySelectorAll('.error-message').forEach(function (element) {\n element.classList.remove(_this8.showErrorClass);\n });\n reviewTable.innerHTML = ''; // Empty the inner html\n\n var shoppingCart = this.shoppingCart.getProductList();\n Object.keys(shoppingCart).forEach(function (productId) {\n // Add to the\n var product = _this8.products[productId];\n var options = {\n name: product.name,\n image: product.image,\n description: product.description,\n id: product.id,\n amount: shoppingCart[productId][0] || shoppingCart[productId]\n };\n var template = _this8.productReviewTemplate;\n reviewTable.innerHTML += resolveTemplate(template, options);\n });\n // Attach event for the REMOVE button\n reviewTable.querySelectorAll('.review-product__delete').forEach(function (element) {\n element.addEventListener('click', function () {\n var productId = element.parentElement.getAttribute('data-product-id');\n console.log('click', productId);\n if (productId) {\n // First remove the item from the shoppingCart\n var updatedProductList = _this8.shoppingCart.removeProduct(productId);\n // Check if is the last product, and redirect to page 1\n if (Object.getOwnPropertyNames(updatedProductList).length === 0) {\n _this8.prepareSectionOne();\n _this8.changeSection(_this8.sectionOne);\n }\n\n // Then remove the DOM element\n element.parentElement.outerHTML = '';\n }\n });\n });\n\n // Now fill the review form\n var fieldValues = this.orderForm.getFieldsValues(true);\n Object.keys(fieldValues).forEach(function (fieldName) {\n var selectedValue = reviewForm.querySelector(\".\".concat(fieldName, \" .selected-value\"));\n if (selectedValue) {\n selectedValue.innerHTML = fieldValues[fieldName];\n }\n });\n }\n\n /**\n * Adds the @_showSectionClass to the given @section and removes it from the other sections.\n *\n * @param {Element} section Element matching the section to change to.\n */\n }, {\n key: \"changeSection\",\n value: function changeSection(section) {\n switch (section) {\n case this.sectionOne:\n this.sectionOne.classList.add(this.showSectionClass);\n this.sectionTwo.classList.remove(this.showSectionClass);\n break;\n case this.sectionTwo:\n this.sectionOne.classList.remove(this.showSectionClass);\n this.sectionTwo.classList.add(this.showSectionClass);\n break;\n default:\n // console.log('Invalid section: ', section); // Enable this to debug\n break;\n }\n }\n }]);\n}(WDHComponent);\nexport default WDHProductOrder;","import { WDHProductOrder } from '../../../../wdh-feature/wdh-product-order';\nvar productOrder = new WDHProductOrder();\nproductOrder.run();\nvar marketingOrderForm = {\n /**\n * key= input name\n * value= data object key\n */\n isMultipleDevices: false,\n activeClass: 'active-product',\n outAnimateClass: 'slide-out',\n productGroup: '.product-order__products',\n defaultInit: true,\n checkboxEvents: ['keyup', 'onchange'],\n dictionary: {\n userInfo: {\n FirstName: 'firstName',\n LastName: 'lastName',\n Email: 'email',\n FullName: 'fullName'\n },\n accountInfo: {\n City: 'city',\n Company: 'nameLine',\n Street: 'addressLine',\n PostalCode: 'postalCode',\n AccountNo: 'accountId',\n Phone: 'phoneNumber',\n ClinicName: 'nameLine',\n AddressLine1: 'addressLine',\n PostCode: 'postalCode',\n Town: 'city'\n }\n },\n accountData: {},\n currentUrl: window.location.href,\n init: function init() {\n if (document.getElementsByClassName('product-order').length) {\n this.initAccordion();\n this.handleFormLayout();\n // check global e-commerce object is defined (for cases when you use component out of professional section)\n if (typeof ShopUI !== 'undefined') {\n this.getData();\n }\n }\n },\n getData: function getData() {\n var _this = this;\n // ShopUI - e-commerce api\n var client = new ShopUI.ExternalClient();\n client.getCurrentUser().then(function (result) {\n _this.accountData = result.data;\n _this.preFillInputs(_this.accountData);\n });\n },\n preFillInputs: function preFillInputs(data) {\n var _this2 = this;\n Object.keys(data).forEach(function (key) {\n _this2.fillData(_this2.dictionary[key], data[key]);\n });\n },\n fillData: function fillData(dictionaryObj, accountData) {\n Object.keys(dictionaryObj).forEach(function (key) {\n var fillData = accountData[dictionaryObj[key]];\n document.querySelectorAll(\".product-order input[name=\".concat(key, \"]\"))[0].value = fillData || '';\n });\n },\n handleFormLayout: function handleFormLayout() {\n this.wrapLabelTextInSpan();\n this.handleFormOnFocus();\n this.handleFormLayoutForAU();\n },\n wrapLabelTextInSpan: function wrapLabelTextInSpan() {\n var labels = document.querySelectorAll(\".product-order .product-form__form label\");\n labels.forEach(function (label) {\n var input = label.querySelector('input');\n var span = document.createElement('span');\n span.innerText = label.innerText;\n label.insertBefore(span, input);\n });\n },\n handleFormOnFocus: function handleFormOnFocus() {\n var inputs = document.querySelectorAll(\".product-order .product-form__form input\");\n inputs.forEach(function (input) {\n if (input.value !== '') {\n input.parentNode.classList.add('completed');\n }\n input.addEventListener('focus', function () {\n input.parentNode.classList.add('completed');\n });\n input.addEventListener('blur', function () {\n if (input.value !== '') {\n input.parentNode.classList.add('completed');\n } else {\n input.parentNode.classList.remove('completed');\n }\n });\n });\n },\n handleFormLayoutForAU: function handleFormLayoutForAU() {\n if (document.getElementsByClassName('au-hide-fields').length) {\n var container = document.querySelector('.au-hide-fields .product-form__form');\n var personalInfoLabelOrder = ['full-name', 'postnr', 'address-line1', 'phone', 'town', 'email', 'state'];\n personalInfoLabelOrder.map(function (className) {\n var element = container.getElementsByClassName(className)[0];\n container.appendChild(element);\n });\n document.querySelectorAll('.au-hide-fields label').forEach(function (element) {\n var hideLables = ['street', 'post-code', 'city', 'clinic-name', 'address-line2', 'salutation', 'first-name', 'last-name'];\n if (hideLables.some(function (lables) {\n return element.classList.contains(lables);\n })) {\n element.querySelectorAll('input').forEach(function (inputElement) {\n inputElement.removeAttribute(\"required\");\n });\n }\n });\n }\n },\n initAccordion: function initAccordion() {\n this.renderDecorationElements();\n this.renderCloseProductGroupButton();\n if (this.multipleDevices()) {\n this.events();\n this.fixMaxOrderAmount();\n this.findQueryparam();\n }\n },\n findQueryparam: function findQueryparam() {\n var _this3 = this;\n var queryParam = DGS.getQueryParameter('expand', window.location.href);\n var elFound = false;\n if (queryParam) {\n queryParam = queryParam.toLowerCase().replace('-', ' ');\n document.querySelectorAll('.product-order__products').forEach(function (element) {\n var groupNameData = $(element).attr('data-product-group');\n if (groupNameData.toLowerCase().indexOf(queryParam) != -1 && !elFound) {\n $(element).addClass('active-product');\n $(element).removeClass('initialize-shadow');\n _this3.scrollToElement(element);\n elFound = true;\n } else {\n $(element).removeClass('active-product');\n }\n });\n }\n },\n makeLongListShorter: function makeLongListShorter(activeElement) {\n $(activeElement).addClass('initialize-shadow');\n document.querySelectorAll('.initialize-shadow')[0].addEventListener('click', function (e) {\n e.currentTarget.classList.remove('initialize-shadow');\n });\n document.getElementById('content').style.transition = 'all 0.3s ease-in-out';\n },\n renderDecorationElements: function renderDecorationElements() {\n document.querySelectorAll('.product-group-name').forEach(function (element) {\n var groupNameData = $(element).parent().attr('data-product-group');\n var nameProduct = groupNameData.indexOf('ProductGroup -') > -1 ? groupNameData.replace('ProductGroup - ', '') : groupNameData;\n $(element).html(\"
\".concat(nameProduct));\n });\n },\n renderCloseProductGroupButton: function renderCloseProductGroupButton() {\n document.querySelectorAll('.product-order__products').forEach(function (element) {\n var button = document.createElement('button');\n var tab = element.querySelector('.product-group-name');\n button.classList.add('product-close-group');\n button.addEventListener(\"click\", function (e) {\n e.preventDefault();\n tab.click();\n });\n element.appendChild(button);\n });\n },\n scrollToElement: function scrollToElement(currentElement) {\n $('html, body').animate({\n scrollTop: $(currentElement).offset().top - $('.navigation').outerHeight() - 50\n }, 350);\n },\n events: function events() {\n var _this4 = this;\n document.querySelectorAll('.product-group-name').forEach(function (element) {\n element.addEventListener('click', function (e) {\n var currentElement = e.currentTarget;\n if (!currentElement.parentElement.classList.contains(_this4.activeClass)) {\n document.querySelectorAll(\".product-grid \".concat(_this4.productGroup)).forEach(function (removeClass) {\n removeClass.classList.remove(_this4.activeClass);\n });\n }\n currentElement.parentElement.classList.toggle(_this4.activeClass);\n _this4.scrollToElement(currentElement);\n });\n });\n document.querySelectorAll(this.productGroup).forEach(function (element) {\n element.addEventListener('click', function (e) {\n var currentElement = e.currentTarget;\n if (!currentElement.parentElement.classList.contains(_this4.activeClass)) {\n document.querySelectorAll(\".product-grid .product-order__products:not(.\".concat(_this4.activeClass, \")\")).forEach(function (removeClass) {\n setTimeout(function () {\n removeClass.classList.remove(_this4.activeClass);\n }, 100);\n });\n }\n });\n });\n document.querySelectorAll('.product__amount input[type=\"number\"]').forEach(function (element) {\n _this4.checkboxEvents.forEach(function (eventType) {\n element.addEventListener(eventType, function (e) {\n var currentElement = e.currentTarget;\n if (currentElement.getAttribute('max') !== null) {\n currentElement.value = parseInt(currentElement.value, 10) > parseInt(currentElement.getAttribute('max'), 10) ? currentElement.getAttribute('max') : currentElement.value;\n } else {\n currentElement.value = (parseInt(currentElement.value, 10) + 1).toString();\n }\n });\n });\n });\n document.querySelectorAll('.product__amount').forEach(function (element) {\n var increaseButton = element.querySelector('.increase-amount');\n var decreaseButton = element.querySelector('.decrease-amount');\n var input = element.querySelector('input[type=\"number\"]');\n if (parseInt(input.value, 10) < 1) {\n decreaseButton.classList.add('disabled');\n }\n increaseButton.addEventListener('click', function () {\n decreaseButton.classList.remove('disabled');\n var isMaxValue = parseInt(input.value, 10) == parseInt(input.getAttribute('max'), 10);\n if (input.getAttribute('max') !== null && isMaxValue) {\n increaseButton.classList.add('disabled');\n }\n });\n decreaseButton.addEventListener('click', function () {\n increaseButton.classList.remove('disabled');\n if (parseInt(input.value, 10) < 1) {\n decreaseButton.classList.add('disabled');\n }\n });\n });\n },\n multipleDevices: function multipleDevices() {\n document.querySelectorAll(this.productGroup)[0].classList.add('active-product');\n if (document.querySelectorAll(this.productGroup).length > 1) {\n this.isMultipleDevices = true;\n document.querySelectorAll('.product-grid')[0].classList.add('multiple-products-container');\n this.makeLongListShorter(document.querySelectorAll(this.productGroup)[0]);\n return true;\n }\n return false;\n },\n fixMaxOrderAmount: function fixMaxOrderAmount() {\n $('.product:has(input[type=\"number\"][max=\"1000000\"])').addClass('block-order-fix');\n $('input[type=\"number\"][max=\"1000000\"]').prop('disabled', true);\n }\n};\n(function ($, DGS) {\n DGS.OnLoad.getInstance().register(function () {\n marketingOrderForm.init();\n });\n})(jQuery, window.DGS);"],"names":["self","fetch","support","Symbol","Blob","e","viewClasses","isDataView","obj","DataView","prototype","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","indexOf","Object","toString","call","Headers","append","name","value","normalizeName","normalizeValue","oldValue","this","map","concat","delete","get","has","hasOwnProperty","set","forEach","callback","thisArg","keys","items","push","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","type","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","rawHeaders","options","getAllResponseHeaders","replace","split","line","parts","key","shift","trim","join","responseURL","responseText","onerror","TypeError","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","undefined","Array","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","result","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","arrayBuffer","then","text","readAsText","chars","length","i","fromCharCode","readArrayBufferAsText","formData","decode","json","JSON","parse","upcased","mode","toUpperCase","referrer","form","bytes","decodeURIComponent","bodyInit","ok","_typeof","o","constructor","_defineProperties","r","t","enumerable","configurable","writable","defineProperty","_toPropertyKey","toPrimitive","Number","_toPrimitive","ShoppingCart","a","n","_classCallCheck","instance","productList","product","id","getSelectedAmount","_this","formattedProductList","productId","ProductId","Quantity","Title","replaceAll","document","querySelectorAll","element","querySelector","OrderForm","inputFields","field","parentClass","arguments","index","parentNode","classList","getAttribute","errorClass","validity","remove","valid","add","HTMLFormElement","reportValidity","Product","productDom","initialAmount","image","innerHTML","description","addEvents","productAmount","inputAmount","addEventListener","parseInt","itemId","amountVal","newAmount","isNaN","setSelectedAmount","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","apply","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_setPrototypeOf","WDHProductOrder","_WDHComponent","className","showSectionClass","showErrorClass","products","shoppingCart","productReviewTemplate","orderForm","sectionOne","sectionTwo","window","create","_inherits","component","_this2","contains","style","display","required","initSectionOne","initSectionTwo","_this3","changeSection","loader","createLoader","checked","payload","getFieldsValues","productDetails","getFormattedProducts","insertBefore","sendPayload","scrollIntoView","behavior","createElement","loaderElement1","loaderElement2","loaderElement3","loaderElement4","_this4","sectionOneSubmit","sectionTwoHeader","clearCart","addProduct","validateSectionOne","prepareSectionTwo","scrollTo","offsetTop","_this5","stringify","catch","hideLoader","console","log","responseData","ConfirmationPageUrl","href","ErrorMessage","_this6","cartProductAmount","getProductAmount","resetSelectedAmount","_this7","isValid","getProductList","validateFields","validatePostalCode","firstErrorMessage","stickyHeader","offsetHeight","postalCodeInput","from","find","errorMessage","_this8","reviewTable","reviewForm","amount","template","parentElement","updatedProductList","removeProduct","prepareSectionOne","outerHTML","fieldValues","fieldName","selectedValue","section","run","marketingOrderForm","isMultipleDevices","activeClass","outAnimateClass","productGroup","defaultInit","checkboxEvents","dictionary","userInfo","FirstName","LastName","Email","FullName","accountInfo","City","Company","Street","PostalCode","AccountNo","Phone","ClinicName","AddressLine1","PostCode","Town","accountData","currentUrl","getElementsByClassName","initAccordion","handleFormLayout","ShopUI","getData","ExternalClient","getCurrentUser","data","preFillInputs","fillData","dictionaryObj","wrapLabelTextInSpan","handleFormOnFocus","handleFormLayoutForAU","label","span","innerText","container","appendChild","some","lables","inputElement","removeAttribute","renderDecorationElements","renderCloseProductGroupButton","multipleDevices","events","fixMaxOrderAmount","findQueryparam","queryParam","DGS","getQueryParameter","elFound","$","attr","removeClass","addClass","scrollToElement","makeLongListShorter","activeElement","currentTarget","getElementById","transition","groupNameData","parent","nameProduct","html","button","tab","preventDefault","click","currentElement","animate","scrollTop","offset","top","outerHeight","toggle","setTimeout","eventType","increaseButton","decreaseButton","isMaxValue","prop","jQuery","OnLoad","getInstance","register"],"sourceRoot":""}